diff --git a/.gitignore b/.gitignore index 4efc3f2..d4d8fe5 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /nbproject/ /node_modules *.idea +.DS_Store \ No newline at end of file diff --git a/dist/cfg/locales.js b/dist/cfg/locales.js new file mode 100644 index 0000000..c624b38 --- /dev/null +++ b/dist/cfg/locales.js @@ -0,0 +1,15 @@ +/* +* @author Niklas von Hertzen +* @created 17.7.2012 +* @website http://hertzen.com + */ + +PHP.Locales = { + + de_DE: { + decimal_point: ",", + thousands_sep: "." + } + + +}; diff --git a/dist/cfg/php.ini b/dist/cfg/php.ini new file mode 100644 index 0000000..5cdabbb --- /dev/null +++ b/dist/cfg/php.ini @@ -0,0 +1,1859 @@ +[PHP] + +;;;;;;;;;;;;;;;;;;; +; About php.ini ; +;;;;;;;;;;;;;;;;;;; +; PHP's initialization file, generally called php.ini, is responsible for +; configuring many of the aspects of PHP's behavior. + +; PHP attempts to find and load this configuration from a number of locations. +; The following is a summary of its search order: +; 1. SAPI module specific location. +; 2. The PHPRC environment variable. (As of PHP 5.2.0) +; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) +; 4. Current working directory (except CLI) +; 5. The web server's directory (for SAPI modules), or directory of PHP +; (otherwise in Windows) +; 6. The directory from the --with-config-file-path compile time option, or the +; Windows directory (C:\windows or C:\winnt) +; See the PHP docs for more specific information. +; http://php.net/configuration.file + +; The syntax of the file is extremely simple. Whitespace and Lines +; beginning with a semicolon are silently ignored (as you probably guessed). +; Section headers (e.g. [Foo]) are also silently ignored, even though +; they might mean something in the future. + +; Directives following the section heading [PATH=/www/mysite] only +; apply to PHP files in the /www/mysite directory. Directives +; following the section heading [HOST=www.example.com] only apply to +; PHP files served from www.example.com. Directives set in these +; special sections cannot be overridden by user-defined INI files or +; at runtime. Currently, [PATH=] and [HOST=] sections only work under +; CGI/FastCGI. +; http://php.net/ini.sections + +; Directives are specified using the following syntax: +; directive = value +; Directive names are *case sensitive* - foo=bar is different from FOO=bar. +; Directives are variables used to configure PHP or PHP extensions. +; There is no name validation. If PHP can't find an expected +; directive because it is not set or is mistyped, a default value will be used. + +; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one +; of the INI constants (On, Off, True, False, Yes, No and None) or an expression +; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a +; previously set variable or directive (e.g. ${foo}) + +; Expressions in the INI file are limited to bitwise operators and parentheses: +; | bitwise OR +; ^ bitwise XOR +; & bitwise AND +; ~ bitwise NOT +; ! boolean NOT + +; Boolean flags can be turned on using the values 1, On, True or Yes. +; They can be turned off using the values 0, Off, False or No. + +; An empty string can be denoted by simply not writing anything after the equal +; sign, or by using the None keyword: + +; foo = ; sets foo to an empty string +; foo = None ; sets foo to an empty string +; foo = "None" ; sets foo to the string 'None' + +; If you use constants in your value, and these constants belong to a +; dynamically loaded extension (either a PHP extension or a Zend extension), +; you may only use these constants *after* the line that loads the extension. + +;;;;;;;;;;;;;;;;;;; +; About this file ; +;;;;;;;;;;;;;;;;;;; +; PHP comes packaged with two INI files. One that is recommended to be used +; in production environments and one that is recommended to be used in +; development environments. + +; php.ini-production contains settings which hold security, performance and +; best practices at its core. But please be aware, these settings may break +; compatibility with older or less security conscience applications. We +; recommending using the production ini in production and testing environments. + +; php.ini-development is very similar to its production variant, except it's +; much more verbose when it comes to errors. We recommending using the +; development version only in development environments as errors shown to +; application users can inadvertently leak otherwise secure information. + +;;;;;;;;;;;;;;;;;;; +; Quick Reference ; +;;;;;;;;;;;;;;;;;;; +; The following are all the settings which are different in either the production +; or development versions of the INIs with respect to PHP's default behavior. +; Please see the actual settings later in the document for more details as to why +; we recommend these changes in PHP's behavior. + +; display_errors +; Default Value: On +; Development Value: On +; Production Value: Off + +; display_startup_errors +; Default Value: Off +; Development Value: On +; Production Value: Off + +; error_reporting +; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED +; Development Value: E_ALL +; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT + +; html_errors +; Default Value: On +; Development Value: On +; Production value: On + +; log_errors +; Default Value: Off +; Development Value: On +; Production Value: On + +; max_input_time +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) + +; output_buffering +; Default Value: Off +; Development Value: 4096 +; Production Value: 4096 + +; register_argc_argv +; Default Value: On +; Development Value: Off +; Production Value: Off + +; request_order +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" + +; session.bug_compat_42 +; Default Value: On +; Development Value: On +; Production Value: Off + +; session.bug_compat_warn +; Default Value: On +; Development Value: On +; Production Value: Off + +; session.gc_divisor +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 + +; session.hash_bits_per_character +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 + +; short_open_tag +; Default Value: On +; Development Value: Off +; Production Value: Off + +; track_errors +; Default Value: Off +; Development Value: On +; Production Value: Off + +; url_rewriter.tags +; Default Value: "a=href,area=href,frame=src,form=,fieldset=" +; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" +; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" + +; variables_order +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS" + +;;;;;;;;;;;;;;;;;;;; +; php.ini Options ; +;;;;;;;;;;;;;;;;;;;; +; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" +;user_ini.filename = ".user.ini" + +; To disable this feature set this option to empty value +;user_ini.filename = + +; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) +;user_ini.cache_ttl = 300 + +;;;;;;;;;;;;;;;;;;;; +; Language Options ; +;;;;;;;;;;;;;;;;;;;; + +; Enable the PHP scripting language engine under Apache. +; http://php.net/engine +engine = On + +; This directive determines whether or not PHP will recognize code between +; tags as PHP source which should be processed as such. It's been +; recommended for several years that you not use the short tag "short cut" and +; instead to use the full tag combination. With the wide spread use +; of XML and use of these tags by other languages, the server can become easily +; confused and end up parsing the wrong code in the wrong context. But because +; this short cut has been a feature for such a long time, it's currently still +; supported for backwards compatibility, but we recommend you don't use them. +; Default Value: On +; Development Value: Off +; Production Value: Off +; http://php.net/short-open-tag +short_open_tag = Off + +; Allow ASP-style <% %> tags. +; http://php.net/asp-tags +asp_tags = Off + +; The number of significant digits displayed in floating point numbers. +; http://php.net/precision +precision = 14 + +; Output buffering is a mechanism for controlling how much output data +; (excluding headers and cookies) PHP should keep internally before pushing that +; data to the client. If your application's output exceeds this setting, PHP +; will send that data in chunks of roughly the size you specify. +; Turning on this setting and managing its maximum buffer size can yield some +; interesting side-effects depending on your application and web server. +; You may be able to send headers and cookies after you've already sent output +; through print or echo. You also may see performance benefits if your server is +; emitting less packets due to buffered output versus PHP streaming the output +; as it gets it. On production servers, 4096 bytes is a good setting for performance +; reasons. +; Note: Output buffering can also be controlled via Output Buffering Control +; functions. +; Possible Values: +; On = Enabled and buffer is unlimited. (Use with caution) +; Off = Disabled +; Integer = Enables the buffer and sets its maximum size in bytes. +; Note: This directive is hardcoded to Off for the CLI SAPI +; Default Value: Off +; Development Value: 4096 +; Production Value: 4096 +; http://php.net/output-buffering +output_buffering = 4096 + +; You can redirect all of the output of your scripts to a function. For +; example, if you set output_handler to "mb_output_handler", character +; encoding will be transparently converted to the specified encoding. +; Setting any output handler automatically turns on output buffering. +; Note: People who wrote portable scripts should not depend on this ini +; directive. Instead, explicitly set the output handler using ob_start(). +; Using this ini directive may cause problems unless you know what script +; is doing. +; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler" +; and you cannot use both "ob_gzhandler" and "zlib.output_compression". +; Note: output_handler must be empty if this is set 'On' !!!! +; Instead you must use zlib.output_handler. +; http://php.net/output-handler +;output_handler = + +; Transparent output compression using the zlib library +; Valid values for this option are 'off', 'on', or a specific buffer size +; to be used for compression (default is 4KB) +; Note: Resulting chunk size may vary due to nature of compression. PHP +; outputs chunks that are few hundreds bytes each as a result of +; compression. If you prefer a larger chunk size for better +; performance, enable output_buffering in addition. +; Note: You need to use zlib.output_handler instead of the standard +; output_handler, or otherwise the output will be corrupted. +; http://php.net/zlib.output-compression +zlib.output_compression = Off + +; http://php.net/zlib.output-compression-level +;zlib.output_compression_level = -1 + +; You cannot specify additional output handlers if zlib.output_compression +; is activated here. This setting does the same as output_handler but in +; a different order. +; http://php.net/zlib.output-handler +;zlib.output_handler = + +; Implicit flush tells PHP to tell the output layer to flush itself +; automatically after every output block. This is equivalent to calling the +; PHP function flush() after each and every call to print() or echo() and each +; and every HTML block. Turning this option on has serious performance +; implications and is generally recommended for debugging purposes only. +; http://php.net/implicit-flush +; Note: This directive is hardcoded to On for the CLI SAPI +implicit_flush = Off + +; The unserialize callback function will be called (with the undefined class' +; name as parameter), if the unserializer finds an undefined class +; which should be instantiated. A warning appears if the specified function is +; not defined, or if the function doesn't include/implement the missing class. +; So only set this entry, if you really want to implement such a +; callback-function. +unserialize_callback_func = + +; When floats & doubles are serialized store serialize_precision significant +; digits after the floating point. The default value ensures that when floats +; are decoded with unserialize, the data will remain the same. +serialize_precision = 17 + +; open_basedir, if set, limits all file operations to the defined directory +; and below. This directive makes most sense if used in a per-directory +; or per-virtualhost web server configuration file. This directive is +; *NOT* affected by whether Safe Mode is turned On or Off. +; http://php.net/open-basedir +;open_basedir = + +; This directive allows you to disable certain functions for security reasons. +; It receives a comma-delimited list of function names. This directive is +; *NOT* affected by whether Safe Mode is turned On or Off. +; http://php.net/disable-functions +disable_functions = + +; This directive allows you to disable certain classes for security reasons. +; It receives a comma-delimited list of class names. This directive is +; *NOT* affected by whether Safe Mode is turned On or Off. +; http://php.net/disable-classes +disable_classes = + +; Colors for Syntax Highlighting mode. Anything that's acceptable in +; would work. +; http://php.net/syntax-highlighting +;highlight.string = #DD0000 +;highlight.comment = #FF9900 +;highlight.keyword = #007700 +;highlight.default = #0000BB +;highlight.html = #000000 + +; If enabled, the request will be allowed to complete even if the user aborts +; the request. Consider enabling it if executing long requests, which may end up +; being interrupted by the user or a browser timing out. PHP's default behavior +; is to disable this feature. +; http://php.net/ignore-user-abort +;ignore_user_abort = On + +; Determines the size of the realpath cache to be used by PHP. This value should +; be increased on systems where PHP opens many files to reflect the quantity of +; the file operations performed. +; http://php.net/realpath-cache-size +;realpath_cache_size = 16k + +; Duration of time, in seconds for which to cache realpath information for a given +; file or directory. For systems with rarely changing files, consider increasing this +; value. +; http://php.net/realpath-cache-ttl +;realpath_cache_ttl = 120 + +; Enables or disables the circular reference collector. +; http://php.net/zend.enable-gc +zend.enable_gc = On + +; If enabled, scripts may be written in encodings that are incompatible with +; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such +; encodings. To use this feature, mbstring extension must be enabled. +; Default: Off +;zend.multibyte = Off + +; Allows to set the default encoding for the scripts. This value will be used +; unless "declare(encoding=...)" directive appears at the top of the script. +; Only affects if zend.multibyte is set. +; Default: "" +;zend.script_encoding = + +;;;;;;;;;;;;;;;;; +; Miscellaneous ; +;;;;;;;;;;;;;;;;; + +; Decides whether PHP may expose the fact that it is installed on the server +; (e.g. by adding its signature to the Web server header). It is no security +; threat in any way, but it makes it possible to determine whether you use PHP +; on your server or not. +; http://php.net/expose-php +expose_php = On + +;;;;;;;;;;;;;;;;;;; +; Resource Limits ; +;;;;;;;;;;;;;;;;;;; + +; Maximum execution time of each script, in seconds +; http://php.net/max-execution-time +; Note: This directive is hardcoded to 0 for the CLI SAPI +max_execution_time = 30 + +; Maximum amount of time each script may spend parsing request data. It's a good +; idea to limit this time on productions servers in order to eliminate unexpectedly +; long running scripts. +; Note: This directive is hardcoded to -1 for the CLI SAPI +; Default Value: -1 (Unlimited) +; Development Value: 60 (60 seconds) +; Production Value: 60 (60 seconds) +; http://php.net/max-input-time +max_input_time = 60 + +; Maximum input variable nesting level +; http://php.net/max-input-nesting-level +;max_input_nesting_level = 64 + +; How many GET/POST/COOKIE input variables may be accepted +; max_input_vars = 1000 + +; Maximum amount of memory a script may consume (128MB) +; http://php.net/memory-limit +memory_limit = 128M + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Error handling and logging ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; This directive informs PHP of which errors, warnings and notices you would like +; it to take action for. The recommended way of setting values for this +; directive is through the use of the error level constants and bitwise +; operators. The error level constants are below here for convenience as well as +; some common settings and their meanings. +; By default, PHP is set to take action on all errors, notices and warnings EXCEPT +; those related to E_NOTICE and E_STRICT, which together cover best practices and +; recommended coding standards in PHP. For performance reasons, this is the +; recommend error reporting setting. Your production server shouldn't be wasting +; resources complaining about best practices and coding standards. That's what +; development servers and development settings are for. +; Note: The php.ini-development file has this setting as E_ALL. This +; means it pretty much reports everything which is exactly what you want during +; development and early testing. +; +; Error Level Constants: +; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) +; E_ERROR - fatal run-time errors +; E_RECOVERABLE_ERROR - almost fatal run-time errors +; E_WARNING - run-time warnings (non-fatal errors) +; E_PARSE - compile-time parse errors +; E_NOTICE - run-time notices (these are warnings which often result +; from a bug in your code, but it's possible that it was +; intentional (e.g., using an uninitialized variable and +; relying on the fact it's automatically initialized to an +; empty string) +; E_STRICT - run-time notices, enable to have PHP suggest changes +; to your code which will ensure the best interoperability +; and forward compatibility of your code +; E_CORE_ERROR - fatal errors that occur during PHP's initial startup +; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's +; initial startup +; E_COMPILE_ERROR - fatal compile-time errors +; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) +; E_USER_ERROR - user-generated error message +; E_USER_WARNING - user-generated warning message +; E_USER_NOTICE - user-generated notice message +; E_DEPRECATED - warn about code that will not work in future versions +; of PHP +; E_USER_DEPRECATED - user-generated deprecation warnings +; +; Common Values: +; E_ALL (Show all errors, warnings and notices including coding standards.) +; E_ALL & ~E_NOTICE (Show all errors, except for notices) +; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) +; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) +; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED +; Development Value: E_ALL +; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT +; http://php.net/error-reporting +error_reporting = E_ALL + +; This directive controls whether or not and where PHP will output errors, +; notices and warnings too. Error output is very useful during development, but +; it could be very dangerous in production environments. Depending on the code +; which is triggering the error, sensitive information could potentially leak +; out of your application such as database usernames and passwords or worse. +; It's recommended that errors be logged on production servers rather than +; having the errors sent to STDOUT. +; Possible Values: +; Off = Do not display any errors +; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) +; On or stdout = Display errors to STDOUT +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/display-errors +display_errors = On + +; The display of errors which occur during PHP's startup sequence are handled +; separately from display_errors. PHP's default behavior is to suppress those +; errors from clients. Turning the display of startup errors on can be useful in +; debugging configuration problems. But, it's strongly recommended that you +; leave this setting off on production servers. +; Default Value: Off +; Development Value: On +; Production Value: Off +; http://php.net/display-startup-errors +display_startup_errors = Off + +; Besides displaying errors, PHP can also log errors to locations such as a +; server-specific log, STDERR, or a location specified by the error_log +; directive found below. While errors should not be displayed on productions +; servers they should still be monitored and logging is a great way to do that. +; Default Value: Off +; Development Value: On +; Production Value: On +; http://php.net/log-errors +log_errors = Off + +; Set maximum length of log_errors. In error_log information about the source is +; added. The default is 1024 and 0 allows to not apply any maximum length at all. +; http://php.net/log-errors-max-len +log_errors_max_len = 1024 + +; Do not log repeated messages. Repeated errors must occur in same file on same +; line unless ignore_repeated_source is set true. +; http://php.net/ignore-repeated-errors +ignore_repeated_errors = Off + +; Ignore source of message when ignoring repeated messages. When this setting +; is On you will not log errors with repeated messages from different files or +; source lines. +; http://php.net/ignore-repeated-source +ignore_repeated_source = Off + +; If this parameter is set to Off, then memory leaks will not be shown (on +; stdout or in the log). This has only effect in a debug compile, and if +; error reporting includes E_WARNING in the allowed list +; http://php.net/report-memleaks +report_memleaks = On + +; This setting is on by default. +;report_zend_debug = 0 + +; Store the last error/warning message in $php_errormsg (boolean). Setting this value +; to On can assist in debugging and is appropriate for development servers. It should +; however be disabled on production servers. +; Default Value: Off +; Development Value: On +; Production Value: Off +; http://php.net/track-errors +track_errors = On + +; Turn off normal error reporting and emit XML-RPC error XML +; http://php.net/xmlrpc-errors +;xmlrpc_errors = 0 + +; An XML-RPC faultCode +;xmlrpc_error_number = 0 + +; When PHP displays or logs an error, it has the capability of formatting the +; error message as HTML for easier reading. This directive controls whether +; the error message is formatted as HTML or not. +; Note: This directive is hardcoded to Off for the CLI SAPI +; Default Value: On +; Development Value: On +; Production value: On +; http://php.net/html-errors +html_errors = On + +; If html_errors is set to On *and* docref_root is not empty, then PHP +; produces clickable error messages that direct to a page describing the error +; or function causing the error in detail. +; You can download a copy of the PHP manual from http://php.net/docs +; and change docref_root to the base URL of your local copy including the +; leading '/'. You must also specify the file extension being used including +; the dot. PHP's default behavior is to leave these settings empty, in which +; case no links to documentation are generated. +; Note: Never use this feature for production boxes. +; http://php.net/docref-root +; Examples +;docref_root = "/phpmanual/" + +; http://php.net/docref-ext +;docref_ext = .html + +; String to output before an error message. PHP's default behavior is to leave +; this setting blank. +; http://php.net/error-prepend-string +; Example: +;error_prepend_string = "" + +; String to output after an error message. PHP's default behavior is to leave +; this setting blank. +; http://php.net/error-append-string +; Example: +;error_append_string = "" + +; Log errors to specified file. PHP's default behavior is to leave this value +; empty. +; http://php.net/error-log +; Example: +;error_log = php_errors.log +; Log errors to syslog (Event Log on NT, not valid in Windows 95). +;error_log = syslog + +;windows.show_crt_warning +; Default value: 0 +; Development value: 0 +; Production value: 0 + +;;;;;;;;;;;;;;;;; +; Data Handling ; +;;;;;;;;;;;;;;;;; + +; The separator used in PHP generated URLs to separate arguments. +; PHP's default setting is "&". +; http://php.net/arg-separator.output +; Example: +;arg_separator.output = "&" + +; List of separator(s) used by PHP to parse input URLs into variables. +; PHP's default setting is "&". +; NOTE: Every character in this directive is considered as separator! +; http://php.net/arg-separator.input +; Example: +;arg_separator.input = ";&" + +; This directive determines which super global arrays are registered when PHP +; starts up. G,P,C,E & S are abbreviations for the following respective super +; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty +; paid for the registration of these arrays and because ENV is not as commonly +; used as the others, ENV is not recommended on productions servers. You +; can still get access to the environment variables through getenv() should you +; need to. +; Default Value: "EGPCS" +; Development Value: "GPCS" +; Production Value: "GPCS"; +; http://php.net/variables-order +variables_order = "GPCS" + +; This directive determines which super global data (G,P,C,E & S) should +; be registered into the super global array REQUEST. If so, it also determines +; the order in which that data is registered. The values for this directive are +; specified in the same manner as the variables_order directive, EXCEPT one. +; Leaving this value empty will cause PHP to use the value set in the +; variables_order directive. It does not mean it will leave the super globals +; array REQUEST empty. +; Default Value: None +; Development Value: "GP" +; Production Value: "GP" +; http://php.net/request-order +request_order = "GP" + +; This directive determines whether PHP registers $argv & $argc each time it +; runs. $argv contains an array of all the arguments passed to PHP when a script +; is invoked. $argc contains an integer representing the number of arguments +; that were passed when the script was invoked. These arrays are extremely +; useful when running scripts from the command line. When this directive is +; enabled, registering these variables consumes CPU cycles and memory each time +; a script is executed. For performance reasons, this feature should be disabled +; on production servers. +; Note: This directive is hardcoded to On for the CLI SAPI +; Default Value: On +; Development Value: Off +; Production Value: Off +; http://php.net/register-argc-argv +register_argc_argv = Off + +; When enabled, the ENV, REQUEST and SERVER variables are created when they're +; first used (Just In Time) instead of when the script starts. If these +; variables are not used within a script, having this directive on will result +; in a performance gain. The PHP directive register_argc_argv must be disabled +; for this directive to have any affect. +; http://php.net/auto-globals-jit +auto_globals_jit = On + +; Whether PHP will read the POST data. +; This option is enabled by default. +; Most likely, you won't want to disable this option globally. It causes $_POST +; and $_FILES to always be empty; the only way you will be able to read the +; POST data will be through the php://input stream wrapper. This can be useful +; to proxy requests or to process the POST data in a memory efficient fashion. +; http://php.net/enable-post-data-reading +;enable_post_data_reading = Off + +; Maximum size of POST data that PHP will accept. +; Its value may be 0 to disable the limit. It is ignored if POST data reading +; is disabled through enable_post_data_reading. +; http://php.net/post-max-size +post_max_size = 8M + +; Automatically add files before PHP document. +; http://php.net/auto-prepend-file +auto_prepend_file = + +; Automatically add files after PHP document. +; http://php.net/auto-append-file +auto_append_file = + +; By default, PHP will output a character encoding using +; the Content-type: header. To disable sending of the charset, simply +; set it to be empty. +; +; PHP's built-in default is text/html +; http://php.net/default-mimetype +default_mimetype = "text/html" + +; PHP's default character set is set to empty. +; http://php.net/default-charset +;default_charset = "UTF-8" + +; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is +; to disable this feature. If post reading is disabled through +; enable_post_data_reading, $HTTP_RAW_POST_DATA is *NOT* populated. +; http://php.net/always-populate-raw-post-data +;always_populate_raw_post_data = On + +;;;;;;;;;;;;;;;;;;;;;;;;; +; Paths and Directories ; +;;;;;;;;;;;;;;;;;;;;;;;;; + +; UNIX: "/path1:/path2" +;include_path = ".:/php/includes" +; +; Windows: "\path1;\path2" +;include_path = ".;c:\php\includes" +; +; PHP's default setting for include_path is ".;/path/to/php/pear" +; http://php.net/include-path + +; The root of the PHP pages, used only if nonempty. +; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root +; if you are running php as a CGI under any web server (other than IIS) +; see documentation for security issues. The alternate is to use the +; cgi.force_redirect configuration below +; http://php.net/doc-root +doc_root = + +; The directory under which PHP opens the script using /~username used only +; if nonempty. +; http://php.net/user-dir +user_dir = + +; Directory in which the loadable extensions (modules) reside. +; http://php.net/extension-dir +; extension_dir = "./" +; On windows: +; extension_dir = "ext" + +; Whether or not to enable the dl() function. The dl() function does NOT work +; properly in multithreaded servers, such as IIS or Zeus, and is automatically +; disabled on them. +; http://php.net/enable-dl +enable_dl = Off + +; cgi.force_redirect is necessary to provide security running PHP as a CGI under +; most web servers. Left undefined, PHP turns this on by default. You can +; turn it off here AT YOUR OWN RISK +; **You CAN safely turn this off for IIS, in fact, you MUST.** +; http://php.net/cgi.force-redirect +;cgi.force_redirect = 1 + +; if cgi.nph is enabled it will force cgi to always sent Status: 200 with +; every request. PHP's default behavior is to disable this feature. +;cgi.nph = 1 + +; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape +; (iPlanet) web servers, you MAY need to set an environment variable name that PHP +; will look for to know it is OK to continue execution. Setting this variable MAY +; cause security issues, KNOW WHAT YOU ARE DOING FIRST. +; http://php.net/cgi.redirect-status-env +;cgi.redirect_status_env = ; + +; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's +; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok +; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting +; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting +; of zero causes PHP to behave as before. Default is 1. You should fix your scripts +; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. +; http://php.net/cgi.fix-pathinfo +;cgi.fix_pathinfo=1 + +; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate +; security tokens of the calling client. This allows IIS to define the +; security context that the request runs under. mod_fastcgi under Apache +; does not currently support this feature (03/17/2002) +; Set to 1 if running under IIS. Default is zero. +; http://php.net/fastcgi.impersonate +;fastcgi.impersonate = 1; + +; Disable logging through FastCGI connection. PHP's default behavior is to enable +; this feature. +;fastcgi.logging = 0 + +; cgi.rfc2616_headers configuration option tells PHP what type of headers to +; use when sending HTTP response code. If it's set 0 PHP sends Status: header that +; is supported by Apache. When this option is set to 1 PHP will send +; RFC2616 compliant header. +; Default is zero. +; http://php.net/cgi.rfc2616-headers +;cgi.rfc2616_headers = 0 + +;;;;;;;;;;;;;;;; +; File Uploads ; +;;;;;;;;;;;;;;;; + +; Whether to allow HTTP file uploads. +; http://php.net/file-uploads +file_uploads = On + +; Temporary directory for HTTP uploaded files (will use system default if not +; specified). +; http://php.net/upload-tmp-dir +upload_tmp_dir = "tmp_files/" + +; Maximum allowed size for uploaded files. +; http://php.net/upload-max-filesize +upload_max_filesize = 2M + +; Maximum number of files that can be uploaded via a single request +max_file_uploads = 20 + +;;;;;;;;;;;;;;;;;; +; Fopen wrappers ; +;;;;;;;;;;;;;;;;;; + +; Whether to allow the treatment of URLs (like http:// or ftp://) as files. +; http://php.net/allow-url-fopen +allow_url_fopen = On + +; Whether to allow include/require to open URLs (like http:// or ftp://) as files. +; http://php.net/allow-url-include +allow_url_include = Off + +; Define the anonymous ftp password (your email address). PHP's default setting +; for this is empty. +; http://php.net/from +;from="john@doe.com" + +; Define the User-Agent string. PHP's default setting for this is empty. +; http://php.net/user-agent +;user_agent="PHP" + +; Default timeout for socket based streams (seconds) +; http://php.net/default-socket-timeout +default_socket_timeout = 60 + +; If your scripts have to deal with files from Macintosh systems, +; or you are running on a Mac and need to deal with files from +; unix or win32 systems, setting this flag will cause PHP to +; automatically detect the EOL character in those files so that +; fgets() and file() will work regardless of the source of the file. +; http://php.net/auto-detect-line-endings +;auto_detect_line_endings = Off + +;;;;;;;;;;;;;;;;;;;;;; +; Dynamic Extensions ; +;;;;;;;;;;;;;;;;;;;;;; + +; If you wish to have an extension loaded automatically, use the following +; syntax: +; +; extension=modulename.extension +; +; For example, on Windows: +; +; extension=msql.dll +; +; ... or under UNIX: +; +; extension=msql.so +; +; ... or with a path: +; +; extension=/path/to/extension/msql.so +; +; If you only provide the name of the extension, PHP will look for it in its +; default extension directory. +; +; Windows Extensions +; Note that ODBC support is built in, so no dll is needed for it. +; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5) +; extension folders as well as the separate PECL DLL download (PHP 5). +; Be sure to appropriately set the extension_dir directive. +; +;extension=php_bz2.dll +;extension=php_curl.dll +;extension=php_fileinfo.dll +;extension=php_gd2.dll +;extension=php_gettext.dll +;extension=php_gmp.dll +;extension=php_intl.dll +;extension=php_imap.dll +;extension=php_interbase.dll +;extension=php_ldap.dll +;extension=php_mbstring.dll +;extension=php_exif.dll ; Must be after mbstring as it depends on it +;extension=php_mysql.dll +;extension=php_mysqli.dll +;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client +;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client +;extension=php_openssl.dll +;extension=php_pdo_firebird.dll +;extension=php_pdo_mysql.dll +;extension=php_pdo_oci.dll +;extension=php_pdo_odbc.dll +;extension=php_pdo_pgsql.dll +;extension=php_pdo_sqlite.dll +;extension=php_pgsql.dll +;extension=php_pspell.dll +;extension=php_shmop.dll + +; The MIBS data available in the PHP distribution must be installed. +; See http://www.php.net/manual/en/snmp.installation.php +;extension=php_snmp.dll + +;extension=php_soap.dll +;extension=php_sockets.dll +;extension=php_sqlite3.dll +;extension=php_sybase_ct.dll +;extension=php_tidy.dll +;extension=php_xmlrpc.dll +;extension=php_xsl.dll +;extension=php_zip.dll + +;;;;;;;;;;;;;;;;;;; +; Module Settings ; +;;;;;;;;;;;;;;;;;;; + +[CLI Server] +; Whether the CLI web server uses ANSI color coding in its terminal output. +cli_server.color = On + +[Date] +; Defines the default timezone used by the date functions +; http://php.net/date.timezone +;date.timezone = + +; http://php.net/date.default-latitude +;date.default_latitude = 31.7667 + +; http://php.net/date.default-longitude +;date.default_longitude = 35.2333 + +; http://php.net/date.sunrise-zenith +;date.sunrise_zenith = 90.583333 + +; http://php.net/date.sunset-zenith +;date.sunset_zenith = 90.583333 + +[filter] +; http://php.net/filter.default +;filter.default = unsafe_raw + +; http://php.net/filter.default-flags +;filter.default_flags = + +[iconv] +;iconv.input_encoding = ISO-8859-1 +;iconv.internal_encoding = ISO-8859-1 +;iconv.output_encoding = ISO-8859-1 + +[intl] +;intl.default_locale = +; This directive allows you to produce PHP errors when some error +; happens within intl functions. The value is the level of the error produced. +; Default is 0, which does not produce any errors. +;intl.error_level = E_WARNING + +[sqlite] +; http://php.net/sqlite.assoc-case +;sqlite.assoc_case = 0 + +[sqlite3] +;sqlite3.extension_dir = + +[Pcre] +;PCRE library backtracking limit. +; http://php.net/pcre.backtrack-limit +;pcre.backtrack_limit=100000 + +;PCRE library recursion limit. +;Please note that if you set this value to a high number you may consume all +;the available process stack and eventually crash PHP (due to reaching the +;stack size limit imposed by the Operating System). +; http://php.net/pcre.recursion-limit +;pcre.recursion_limit=100000 + +[Pdo] +; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" +; http://php.net/pdo-odbc.connection-pooling +;pdo_odbc.connection_pooling=strict + +;pdo_odbc.db2_instance_name + +[Pdo_mysql] +; If mysqlnd is used: Number of cache slots for the internal result set cache +; http://php.net/pdo_mysql.cache_size +pdo_mysql.cache_size = 2000 + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; http://php.net/pdo_mysql.default-socket +pdo_mysql.default_socket= + +[Phar] +; http://php.net/phar.readonly +;phar.readonly = On + +; http://php.net/phar.require-hash +;phar.require_hash = On + +;phar.cache_list = + +[mail function] +; For Win32 only. +; http://php.net/smtp +SMTP = localhost +; http://php.net/smtp-port +smtp_port = 25 + +; For Win32 only. +; http://php.net/sendmail-from +;sendmail_from = me@example.com + +; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). +; http://php.net/sendmail-path +;sendmail_path = + +; Force the addition of the specified parameters to be passed as extra parameters +; to the sendmail binary. These parameters will always replace the value of +; the 5th parameter to mail(), even in safe mode. +;mail.force_extra_parameters = + +; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename +mail.add_x_header = On + +; The path to a log file that will log all mail() calls. Log entries include +; the full path of the script, line number, To address and headers. +;mail.log = + +[SQL] +; http://php.net/sql.safe-mode +sql.safe_mode = Off + +[ODBC] +; http://php.net/odbc.default-db +;odbc.default_db = Not yet implemented + +; http://php.net/odbc.default-user +;odbc.default_user = Not yet implemented + +; http://php.net/odbc.default-pw +;odbc.default_pw = Not yet implemented + +; Controls the ODBC cursor model. +; Default: SQL_CURSOR_STATIC (default). +;odbc.default_cursortype + +; Allow or prevent persistent links. +; http://php.net/odbc.allow-persistent +odbc.allow_persistent = On + +; Check that a connection is still valid before reuse. +; http://php.net/odbc.check-persistent +odbc.check_persistent = On + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/odbc.max-persistent +odbc.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; http://php.net/odbc.max-links +odbc.max_links = -1 + +; Handling of LONG fields. Returns number of bytes to variables. 0 means +; passthru. +; http://php.net/odbc.defaultlrl +odbc.defaultlrl = 4096 + +; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. +; See the documentation on odbc_binmode and odbc_longreadlen for an explanation +; of odbc.defaultlrl and odbc.defaultbinmode +; http://php.net/odbc.defaultbinmode +odbc.defaultbinmode = 1 + +;birdstep.max_links = -1 + +[Interbase] +; Allow or prevent persistent links. +ibase.allow_persistent = 1 + +; Maximum number of persistent links. -1 means no limit. +ibase.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +ibase.max_links = -1 + +; Default database name for ibase_connect(). +;ibase.default_db = + +; Default username for ibase_connect(). +;ibase.default_user = + +; Default password for ibase_connect(). +;ibase.default_password = + +; Default charset for ibase_connect(). +;ibase.default_charset = + +; Default timestamp format. +ibase.timestampformat = "%Y-%m-%d %H:%M:%S" + +; Default date format. +ibase.dateformat = "%Y-%m-%d" + +; Default time format. +ibase.timeformat = "%H:%M:%S" + +[MySQL] +; Allow accessing, from PHP's perspective, local files with LOAD DATA statements +; http://php.net/mysql.allow_local_infile +mysql.allow_local_infile = On + +; Allow or prevent persistent links. +; http://php.net/mysql.allow-persistent +mysql.allow_persistent = On + +; If mysqlnd is used: Number of cache slots for the internal result set cache +; http://php.net/mysql.cache_size +mysql.cache_size = 2000 + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/mysql.max-persistent +mysql.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; http://php.net/mysql.max-links +mysql.max_links = -1 + +; Default port number for mysql_connect(). If unset, mysql_connect() will use +; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the +; compile-time value defined MYSQL_PORT (in that order). Win32 will only look +; at MYSQL_PORT. +; http://php.net/mysql.default-port +mysql.default_port = + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; http://php.net/mysql.default-socket +mysql.default_socket = + +; Default host for mysql_connect() (doesn't apply in safe mode). +; http://php.net/mysql.default-host +mysql.default_host = + +; Default user for mysql_connect() (doesn't apply in safe mode). +; http://php.net/mysql.default-user +mysql.default_user = + +; Default password for mysql_connect() (doesn't apply in safe mode). +; Note that this is generally a *bad* idea to store passwords in this file. +; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password") +; and reveal this password! And of course, any users with read access to this +; file will be able to reveal the password as well. +; http://php.net/mysql.default-password +mysql.default_password = + +; Maximum time (in seconds) for connect timeout. -1 means no limit +; http://php.net/mysql.connect-timeout +mysql.connect_timeout = 60 + +; Trace mode. When trace_mode is active (=On), warnings for table/index scans and +; SQL-Errors will be displayed. +; http://php.net/mysql.trace-mode +mysql.trace_mode = Off + +[MySQLi] + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/mysqli.max-persistent +mysqli.max_persistent = -1 + +; Allow accessing, from PHP's perspective, local files with LOAD DATA statements +; http://php.net/mysqli.allow_local_infile +;mysqli.allow_local_infile = On + +; Allow or prevent persistent links. +; http://php.net/mysqli.allow-persistent +mysqli.allow_persistent = On + +; Maximum number of links. -1 means no limit. +; http://php.net/mysqli.max-links +mysqli.max_links = -1 + +; If mysqlnd is used: Number of cache slots for the internal result set cache +; http://php.net/mysqli.cache_size +mysqli.cache_size = 2000 + +; Default port number for mysqli_connect(). If unset, mysqli_connect() will use +; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the +; compile-time value defined MYSQL_PORT (in that order). Win32 will only look +; at MYSQL_PORT. +; http://php.net/mysqli.default-port +mysqli.default_port = 3306 + +; Default socket name for local MySQL connects. If empty, uses the built-in +; MySQL defaults. +; http://php.net/mysqli.default-socket +mysqli.default_socket = + +; Default host for mysql_connect() (doesn't apply in safe mode). +; http://php.net/mysqli.default-host +mysqli.default_host = + +; Default user for mysql_connect() (doesn't apply in safe mode). +; http://php.net/mysqli.default-user +mysqli.default_user = + +; Default password for mysqli_connect() (doesn't apply in safe mode). +; Note that this is generally a *bad* idea to store passwords in this file. +; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") +; and reveal this password! And of course, any users with read access to this +; file will be able to reveal the password as well. +; http://php.net/mysqli.default-pw +mysqli.default_pw = + +; Allow or prevent reconnect +mysqli.reconnect = Off + +[mysqlnd] +; Enable / Disable collection of general statistics by mysqlnd which can be +; used to tune and monitor MySQL operations. +; http://php.net/mysqlnd.collect_statistics +mysqlnd.collect_statistics = On + +; Enable / Disable collection of memory usage statistics by mysqlnd which can be +; used to tune and monitor MySQL operations. +; http://php.net/mysqlnd.collect_memory_statistics +mysqlnd.collect_memory_statistics = Off + +; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. +; http://php.net/mysqlnd.net_cmd_buffer_size +;mysqlnd.net_cmd_buffer_size = 2048 + +; Size of a pre-allocated buffer used for reading data sent by the server in +; bytes. +; http://php.net/mysqlnd.net_read_buffer_size +;mysqlnd.net_read_buffer_size = 32768 + +[OCI8] + +; Connection: Enables privileged connections using external +; credentials (OCI_SYSOPER, OCI_SYSDBA) +; http://php.net/oci8.privileged-connect +;oci8.privileged_connect = Off + +; Connection: The maximum number of persistent OCI8 connections per +; process. Using -1 means no limit. +; http://php.net/oci8.max-persistent +;oci8.max_persistent = -1 + +; Connection: The maximum number of seconds a process is allowed to +; maintain an idle persistent connection. Using -1 means idle +; persistent connections will be maintained forever. +; http://php.net/oci8.persistent-timeout +;oci8.persistent_timeout = -1 + +; Connection: The number of seconds that must pass before issuing a +; ping during oci_pconnect() to check the connection validity. When +; set to 0, each oci_pconnect() will cause a ping. Using -1 disables +; pings completely. +; http://php.net/oci8.ping-interval +;oci8.ping_interval = 60 + +; Connection: Set this to a user chosen connection class to be used +; for all pooled server requests with Oracle 11g Database Resident +; Connection Pooling (DRCP). To use DRCP, this value should be set to +; the same string for all web servers running the same application, +; the database pool must be configured, and the connection string must +; specify to use a pooled server. +;oci8.connection_class = + +; High Availability: Using On lets PHP receive Fast Application +; Notification (FAN) events generated when a database node fails. The +; database must also be configured to post FAN events. +;oci8.events = Off + +; Tuning: This option enables statement caching, and specifies how +; many statements to cache. Using 0 disables statement caching. +; http://php.net/oci8.statement-cache-size +;oci8.statement_cache_size = 20 + +; Tuning: Enables statement prefetching and sets the default number of +; rows that will be fetched automatically after statement execution. +; http://php.net/oci8.default-prefetch +;oci8.default_prefetch = 100 + +; Compatibility. Using On means oci_close() will not close +; oci_connect() and oci_new_connect() connections. +; http://php.net/oci8.old-oci-close-semantics +;oci8.old_oci_close_semantics = Off + +[PostgreSQL] +; Allow or prevent persistent links. +; http://php.net/pgsql.allow-persistent +pgsql.allow_persistent = On + +; Detect broken persistent links always with pg_pconnect(). +; Auto reset feature requires a little overheads. +; http://php.net/pgsql.auto-reset-persistent +pgsql.auto_reset_persistent = Off + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/pgsql.max-persistent +pgsql.max_persistent = -1 + +; Maximum number of links (persistent+non persistent). -1 means no limit. +; http://php.net/pgsql.max-links +pgsql.max_links = -1 + +; Ignore PostgreSQL backends Notice message or not. +; Notice message logging require a little overheads. +; http://php.net/pgsql.ignore-notice +pgsql.ignore_notice = 0 + +; Log PostgreSQL backends Notice message or not. +; Unless pgsql.ignore_notice=0, module cannot log notice message. +; http://php.net/pgsql.log-notice +pgsql.log_notice = 0 + +[Sybase-CT] +; Allow or prevent persistent links. +; http://php.net/sybct.allow-persistent +sybct.allow_persistent = On + +; Maximum number of persistent links. -1 means no limit. +; http://php.net/sybct.max-persistent +sybct.max_persistent = -1 + +; Maximum number of links (persistent + non-persistent). -1 means no limit. +; http://php.net/sybct.max-links +sybct.max_links = -1 + +; Minimum server message severity to display. +; http://php.net/sybct.min-server-severity +sybct.min_server_severity = 10 + +; Minimum client message severity to display. +; http://php.net/sybct.min-client-severity +sybct.min_client_severity = 10 + +; Set per-context timeout +; http://php.net/sybct.timeout +;sybct.timeout= + +;sybct.packet_size + +; The maximum time in seconds to wait for a connection attempt to succeed before returning failure. +; Default: one minute +;sybct.login_timeout= + +; The name of the host you claim to be connecting from, for display by sp_who. +; Default: none +;sybct.hostname= + +; Allows you to define how often deadlocks are to be retried. -1 means "forever". +; Default: 0 +;sybct.deadlock_retry_count= + +[bcmath] +; Number of decimal digits for all bcmath functions. +; http://php.net/bcmath.scale +bcmath.scale = 0 + +[browscap] +; http://php.net/browscap +;browscap = extra/browscap.ini + +[Session] +; Handler used to store/retrieve data. +; http://php.net/session.save-handler +session.save_handler = files + +; Argument passed to save_handler. In the case of files, this is the path +; where data files are stored. Note: Windows users have to change this +; variable in order to use PHP's session functions. +; +; The path can be defined as: +; +; session.save_path = "N;/path" +; +; where N is an integer. Instead of storing all the session files in +; /path, what this will do is use subdirectories N-levels deep, and +; store the session data in those directories. This is useful if you +; or your OS have problems with lots of files in one directory, and is +; a more efficient layout for servers that handle lots of sessions. +; +; NOTE 1: PHP will not create this directory structure automatically. +; You can use the script in the ext/session dir for that purpose. +; NOTE 2: See the section on garbage collection below if you choose to +; use subdirectories for session storage +; +; The file storage module creates files using mode 600 by default. +; You can change that by using +; +; session.save_path = "N;MODE;/path" +; +; where MODE is the octal representation of the mode. Note that this +; does not overwrite the process's umask. +; http://php.net/session.save-path +;session.save_path = "/tmp" + +; Whether to use cookies. +; http://php.net/session.use-cookies +session.use_cookies = 1 + +; http://php.net/session.cookie-secure +;session.cookie_secure = + +; This option forces PHP to fetch and use a cookie for storing and maintaining +; the session id. We encourage this operation as it's very helpful in combating +; session hijacking when not specifying and managing your own session id. It is +; not the end all be all of session hijacking defense, but it's a good start. +; http://php.net/session.use-only-cookies +session.use_only_cookies = 1 + +; Name of the session (used as cookie name). +; http://php.net/session.name +session.name = PHPSESSID + +; Initialize session on request startup. +; http://php.net/session.auto-start +session.auto_start = 0 + +; Lifetime in seconds of cookie or, if 0, until browser is restarted. +; http://php.net/session.cookie-lifetime +session.cookie_lifetime = 0 + +; The path for which the cookie is valid. +; http://php.net/session.cookie-path +session.cookie_path = / + +; The domain for which the cookie is valid. +; http://php.net/session.cookie-domain +session.cookie_domain = + +; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript. +; http://php.net/session.cookie-httponly +session.cookie_httponly = + +; Handler used to serialize data. php is the standard serializer of PHP. +; http://php.net/session.serialize-handler +session.serialize_handler = php + +; Defines the probability that the 'garbage collection' process is started +; on every session initialization. The probability is calculated by using +; gc_probability/gc_divisor. Where session.gc_probability is the numerator +; and gc_divisor is the denominator in the equation. Setting this value to 1 +; when the session.gc_divisor value is 100 will give you approximately a 1% chance +; the gc will run on any give request. +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; http://php.net/session.gc-probability +session.gc_probability = 1 + +; Defines the probability that the 'garbage collection' process is started on every +; session initialization. The probability is calculated by using the following equation: +; gc_probability/gc_divisor. Where session.gc_probability is the numerator and +; session.gc_divisor is the denominator in the equation. Setting this value to 1 +; when the session.gc_divisor value is 100 will give you approximately a 1% chance +; the gc will run on any give request. Increasing this value to 1000 will give you +; a 0.1% chance the gc will run on any give request. For high volume production servers, +; this is a more efficient approach. +; Default Value: 100 +; Development Value: 1000 +; Production Value: 1000 +; http://php.net/session.gc-divisor +session.gc_divisor = 1000 + +; After this number of seconds, stored data will be seen as 'garbage' and +; cleaned up by the garbage collection process. +; http://php.net/session.gc-maxlifetime +session.gc_maxlifetime = 1440 + +; NOTE: If you are using the subdirectory option for storing session files +; (see session.save_path above), then garbage collection does *not* +; happen automatically. You will need to do your own garbage +; collection through a shell script, cron entry, or some other method. +; For example, the following script would is the equivalent of +; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): +; find /path/to/sessions -cmin +24 | xargs rm + +; PHP 4.2 and less have an undocumented feature/bug that allows you to +; to initialize a session variable in the global scope. +; PHP 4.3 and later will warn you, if this feature is used. +; You can disable the feature and the warning separately. At this time, +; the warning is only displayed, if bug_compat_42 is enabled. This feature +; introduces some serious security problems if not handled correctly. It's +; recommended that you do not use this feature on production servers. But you +; should enable this on development servers and enable the warning as well. If you +; do not enable the feature on development servers, you won't be warned when it's +; used and debugging errors caused by this can be difficult to track down. +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/session.bug-compat-42 +session.bug_compat_42 = Off + +; This setting controls whether or not you are warned by PHP when initializing a +; session value into the global space. session.bug_compat_42 must be enabled before +; these warnings can be issued by PHP. See the directive above for more information. +; Default Value: On +; Development Value: On +; Production Value: Off +; http://php.net/session.bug-compat-warn +session.bug_compat_warn = Off + +; Check HTTP Referer to invalidate externally stored URLs containing ids. +; HTTP_REFERER has to contain this substring for the session to be +; considered as valid. +; http://php.net/session.referer-check +session.referer_check = + +; How many bytes to read from the file. +; http://php.net/session.entropy-length +;session.entropy_length = 32 + +; Specified here to create the session id. +; http://php.net/session.entropy-file +; Defaults to /dev/urandom +; On systems that don't have /dev/urandom but do have /dev/arandom, this will default to /dev/arandom +; If neither are found at compile time, the default is no entropy file. +; On windows, setting the entropy_length setting will activate the +; Windows random source (using the CryptoAPI) +;session.entropy_file = /dev/urandom + +; Set to {nocache,private,public,} to determine HTTP caching aspects +; or leave this empty to avoid sending anti-caching headers. +; http://php.net/session.cache-limiter +session.cache_limiter = nocache + +; Document expires after n minutes. +; http://php.net/session.cache-expire +session.cache_expire = 180 + +; trans sid support is disabled by default. +; Use of trans sid may risk your users security. +; Use this option with caution. +; - User may send URL contains active session ID +; to other person via. email/irc/etc. +; - URL that contains active session ID may be stored +; in publicly accessible computer. +; - User may access your site with the same session ID +; always using URL stored in browser's history or bookmarks. +; http://php.net/session.use-trans-sid +session.use_trans_sid = 0 + +; Select a hash function for use in generating session ids. +; Possible Values +; 0 (MD5 128 bits) +; 1 (SHA-1 160 bits) +; This option may also be set to the name of any hash function supported by +; the hash extension. A list of available hashes is returned by the hash_algos() +; function. +; http://php.net/session.hash-function +session.hash_function = 0 + +; Define how many bits are stored in each character when converting +; the binary hash data to something readable. +; Possible values: +; 4 (4 bits: 0-9, a-f) +; 5 (5 bits: 0-9, a-v) +; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") +; Default Value: 4 +; Development Value: 5 +; Production Value: 5 +; http://php.net/session.hash-bits-per-character +session.hash_bits_per_character = 5 + +; The URL rewriter will look for URLs in a defined set of HTML tags. +; form/fieldset are special; if you include them here, the rewriter will +; add a hidden field with the info which is otherwise appended +; to URLs. If you want XHTML conformity, remove the form entry. +; Note that all valid entries require a "=", even if no value follows. +; Default Value: "a=href,area=href,frame=src,form=,fieldset=" +; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" +; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" +; http://php.net/url-rewriter.tags +url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" + +; Enable upload progress tracking in $_SESSION +; Default Value: On +; Development Value: On +; Production Value: On +; http://php.net/session.upload-progress.enabled +;session.upload_progress.enabled = On + +; Cleanup the progress information as soon as all POST data has been read +; (i.e. upload completed). +; Default Value: On +; Development Value: On +; Production Value: On +; http://php.net/session.upload-progress.cleanup +;session.upload_progress.cleanup = On + +; A prefix used for the upload progress key in $_SESSION +; Default Value: "upload_progress_" +; Development Value: "upload_progress_" +; Production Value: "upload_progress_" +; http://php.net/session.upload-progress.prefix +;session.upload_progress.prefix = "upload_progress_" + +; The index name (concatenated with the prefix) in $_SESSION +; containing the upload progress information +; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" +; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" +; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" +; http://php.net/session.upload-progress.name +;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" + +; How frequently the upload progress should be updated. +; Given either in percentages (per-file), or in bytes +; Default Value: "1%" +; Development Value: "1%" +; Production Value: "1%" +; http://php.net/session.upload-progress.freq +;session.upload_progress.freq = "1%" + +; The minimum delay between updates, in seconds +; Default Value: 1 +; Development Value: 1 +; Production Value: 1 +; http://php.net/session.upload-progress.min-freq +;session.upload_progress.min_freq = "1" + +[MSSQL] +; Allow or prevent persistent links. +mssql.allow_persistent = On + +; Maximum number of persistent links. -1 means no limit. +mssql.max_persistent = -1 + +; Maximum number of links (persistent+non persistent). -1 means no limit. +mssql.max_links = -1 + +; Minimum error severity to display. +mssql.min_error_severity = 10 + +; Minimum message severity to display. +mssql.min_message_severity = 10 + +; Compatibility mode with old versions of PHP 3.0. +mssql.compatability_mode = Off + +; Connect timeout +;mssql.connect_timeout = 5 + +; Query timeout +;mssql.timeout = 60 + +; Valid range 0 - 2147483647. Default = 4096. +;mssql.textlimit = 4096 + +; Valid range 0 - 2147483647. Default = 4096. +;mssql.textsize = 4096 + +; Limits the number of records in each batch. 0 = all records in one batch. +;mssql.batchsize = 0 + +; Specify how datetime and datetim4 columns are returned +; On => Returns data converted to SQL server settings +; Off => Returns values as YYYY-MM-DD hh:mm:ss +;mssql.datetimeconvert = On + +; Use NT authentication when connecting to the server +mssql.secure_connection = Off + +; Specify max number of processes. -1 = library default +; msdlib defaults to 25 +; FreeTDS defaults to 4096 +;mssql.max_procs = -1 + +; Specify client character set. +; If empty or not set the client charset from freetds.conf is used +; This is only used when compiled with FreeTDS +;mssql.charset = "ISO-8859-1" + +[Assertion] +; Assert(expr); active by default. +; http://php.net/assert.active +;assert.active = On + +; Issue a PHP warning for each failed assertion. +; http://php.net/assert.warning +;assert.warning = On + +; Don't bail out by default. +; http://php.net/assert.bail +;assert.bail = Off + +; User-function to be called if an assertion fails. +; http://php.net/assert.callback +;assert.callback = 0 + +; Eval the expression with current error_reporting(). Set to true if you want +; error_reporting(0) around the eval(). +; http://php.net/assert.quiet-eval +;assert.quiet_eval = 0 + +[COM] +; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs +; http://php.net/com.typelib-file +;com.typelib_file = + +; allow Distributed-COM calls +; http://php.net/com.allow-dcom +;com.allow_dcom = true + +; autoregister constants of a components typlib on com_load() +; http://php.net/com.autoregister-typelib +;com.autoregister_typelib = true + +; register constants casesensitive +; http://php.net/com.autoregister-casesensitive +;com.autoregister_casesensitive = false + +; show warnings on duplicate constant registrations +; http://php.net/com.autoregister-verbose +;com.autoregister_verbose = true + +; The default character set code-page to use when passing strings to and from COM objects. +; Default: system ANSI code page +;com.code_page= + +[mbstring] +; language for internal character representation. +; http://php.net/mbstring.language +;mbstring.language = Japanese + +; internal/script encoding. +; Some encoding cannot work as internal encoding. +; (e.g. SJIS, BIG5, ISO-2022-*) +; http://php.net/mbstring.internal-encoding +;mbstring.internal_encoding = EUC-JP + +; http input encoding. +; http://php.net/mbstring.http-input +;mbstring.http_input = auto + +; http output encoding. mb_output_handler must be +; registered as output buffer to function +; http://php.net/mbstring.http-output +;mbstring.http_output = SJIS + +; enable automatic encoding translation according to +; mbstring.internal_encoding setting. Input chars are +; converted to internal encoding by setting this to On. +; Note: Do _not_ use automatic encoding translation for +; portable libs/applications. +; http://php.net/mbstring.encoding-translation +;mbstring.encoding_translation = Off + +; automatic encoding detection order. +; auto means +; http://php.net/mbstring.detect-order +;mbstring.detect_order = auto + +; substitute_character used when character cannot be converted +; one from another +; http://php.net/mbstring.substitute-character +;mbstring.substitute_character = none; + +; overload(replace) single byte functions by mbstring functions. +; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), +; etc. Possible values are 0,1,2,4 or combination of them. +; For example, 7 for overload everything. +; 0: No overload +; 1: Overload mail() function +; 2: Overload str*() functions +; 4: Overload ereg*() functions +; http://php.net/mbstring.func-overload +;mbstring.func_overload = 0 + +; enable strict encoding detection. +;mbstring.strict_detection = Off + +; This directive specifies the regex pattern of content types for which mb_output_handler() +; is activated. +; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) +;mbstring.http_output_conv_mimetype= + +[gd] +; Tell the jpeg decode to ignore warnings and try to create +; a gd image. The warning will then be displayed as notices +; disabled by default +; http://php.net/gd.jpeg-ignore-warning +;gd.jpeg_ignore_warning = 0 + +[exif] +; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. +; With mbstring support this will automatically be converted into the encoding +; given by corresponding encode setting. When empty mbstring.internal_encoding +; is used. For the decode settings you can distinguish between motorola and +; intel byte order. A decode setting cannot be empty. +; http://php.net/exif.encode-unicode +;exif.encode_unicode = ISO-8859-15 + +; http://php.net/exif.decode-unicode-motorola +;exif.decode_unicode_motorola = UCS-2BE + +; http://php.net/exif.decode-unicode-intel +;exif.decode_unicode_intel = UCS-2LE + +; http://php.net/exif.encode-jis +;exif.encode_jis = + +; http://php.net/exif.decode-jis-motorola +;exif.decode_jis_motorola = JIS + +; http://php.net/exif.decode-jis-intel +;exif.decode_jis_intel = JIS + +[Tidy] +; The path to a default tidy configuration file to use when using tidy +; http://php.net/tidy.default-config +;tidy.default_config = /usr/local/lib/php/default.tcfg + +; Should tidy clean and repair output automatically? +; WARNING: Do not use this option if you are generating non-html content +; such as dynamic images +; http://php.net/tidy.clean-output +tidy.clean_output = Off + +[soap] +; Enables or disables WSDL caching feature. +; http://php.net/soap.wsdl-cache-enabled +soap.wsdl_cache_enabled=1 + +; Sets the directory name where SOAP extension will put cache files. +; http://php.net/soap.wsdl-cache-dir +soap.wsdl_cache_dir="/tmp" + +; (time to live) Sets the number of second while cached file will be used +; instead of original one. +; http://php.net/soap.wsdl-cache-ttl +soap.wsdl_cache_ttl=86400 + +; Sets the size of the cache limit. (Max. number of WSDL files to cache) +soap.wsdl_cache_limit = 5 + +[sysvshm] +; A default size of the shared memory segment +;sysvshm.init_mem = 10000 + +[ldap] +; Sets the maximum number of open links or -1 for unlimited. +ldap.max_links = -1 + +[mcrypt] +; For more information about mcrypt settings see http://php.net/mcrypt-module-open + +; Directory where to load mcrypt algorithms +; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) +;mcrypt.algorithms_dir= + +; Directory where to load mcrypt modes +; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) +;mcrypt.modes_dir= + +[dba] +;dba.default_handler= + +; Local Variables: +; tab-width: 4 +; End: \ No newline at end of file diff --git a/dist/php.js b/dist/php.js index 75b587d..8d63ba4 100644 --- a/dist/php.js +++ b/dist/php.js @@ -1,10 +1,184 @@ +/* php.js ZhengLinLei */ +const __PHPINI__ = ` +[PHP] +engine = On +short_open_tag = Off +asp_tags = Off +precision = 14 +output_buffering = 4096 +zlib.output_compression = Off +implicit_flush = Off +unserialize_callback_func = +serialize_precision = 17 +disable_functions = +disable_classes = +zend.enable_gc = On +expose_php = On +max_execution_time = 30 +max_input_time = 60 +memory_limit = 128M +error_reporting = E_ALL +display_errors = On +display_startup_errors = Off +log_errors = Off +log_errors_max_len = 1024 +ignore_repeated_errors = Off +ignore_repeated_source = Off +report_memleaks = On +track_errors = On +html_errors = On +variables_order = "GPCS" +request_order = "GP" +register_argc_argv = Off +auto_globals_jit = On +post_max_size = 8M +auto_prepend_file = +auto_append_file = +default_mimetype = "text/html" +doc_root = +user_dir = +enable_dl = Off +file_uploads = On +upload_tmp_dir = "tmp_files/" +upload_max_filesize = 2M +max_file_uploads = 20 +allow_url_fopen = On +allow_url_include = Off +default_socket_timeout = 60 +[CLI Server] +cli_server.color = On +[Date] +[filter] +[iconv] +[intl] +[sqlite] +[sqlite3] +[Pcre] +[Pdo] +[Pdo_mysql] +pdo_mysql.cache_size = 2000 +pdo_mysql.default_socket= +[Phar] +[mail function] +SMTP = localhost +smtp_port = 25 +mail.add_x_header = On +[SQL] +sql.safe_mode = Off +[ODBC] +odbc.allow_persistent = On +odbc.check_persistent = On +odbc.max_persistent = -1 +odbc.max_links = -1 +odbc.defaultlrl = 4096 +odbc.defaultbinmode = 1 +[Interbase] +ibase.allow_persistent = 1 +ibase.max_persistent = -1 +ibase.max_links = -1 +ibase.timestampformat = "%Y-%m-%d %H:%M:%S" +ibase.dateformat = "%Y-%m-%d" +ibase.timeformat = "%H:%M:%S" +[MySQL] +mysql.allow_local_infile = On +mysql.allow_persistent = On +mysql.cache_size = 2000 +mysql.max_persistent = -1 +mysql.max_links = -1 +mysql.default_port = +mysql.default_socket = +mysql.default_host = +mysql.default_user = +mysql.default_password = +mysql.connect_timeout = 60 +mysql.trace_mode = Off +[MySQLi] +mysqli.max_persistent = -1 +mysqli.allow_persistent = On +mysqli.max_links = -1 +mysqli.cache_size = 2000 +mysqli.default_port = 3306 +mysqli.default_socket = +mysqli.default_host = +mysqli.default_user = +mysqli.default_pw = +mysqli.reconnect = Off +[mysqlnd] +mysqlnd.collect_statistics = On +mysqlnd.collect_memory_statistics = Off +[OCI8] +[PostgreSQL] +pgsql.allow_persistent = On +pgsql.auto_reset_persistent = Off +pgsql.max_persistent = -1 +pgsql.max_links = -1 +pgsql.ignore_notice = 0 +pgsql.log_notice = 0 +[Sybase-CT] +sybct.allow_persistent = On +sybct.max_persistent = -1 +sybct.max_links = -1 +sybct.min_server_severity = 10 +sybct.min_client_severity = 10 +[bcmath] +bcmath.scale = 0 +[browscap] +[Session] +session.save_handler = files +session.use_cookies = 1 +session.use_only_cookies = 1 +session.name = PHPSESSID +session.auto_start = 0 +session.cookie_lifetime = 0 +session.cookie_path = / +session.cookie_domain = +session.cookie_httponly = +session.serialize_handler = php +session.gc_probability = 1 +session.gc_divisor = 1000 +session.gc_maxlifetime = 1440 +session.bug_compat_42 = Off +session.bug_compat_warn = Off +session.referer_check = +session.cache_limiter = nocache +session.cache_expire = 180 +session.use_trans_sid = 0 +session.hash_function = 0 +session.hash_bits_per_character = 5 +url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" +[MSSQL] +mssql.allow_persistent = On +mssql.max_persistent = -1 +mssql.max_links = -1 +mssql.min_error_severity = 10 +mssql.min_message_severity = 10 +mssql.compatability_mode = Off +mssql.secure_connection = Off +[Assertion] +[COM] +[mbstring] +[gd] +[exif] +[Tidy] +tidy.clean_output = Off +[soap] +soap.wsdl_cache_dir="/tmp" +soap.wsdl_cache_ttl=86400 +soap.wsdl_cache_limit = 5 +[sysvshm] +[ldap] +ldap.max_links = -1 +[mcrypt] +[dba] +`; + var PHP = function( code, opts ) { var opts = opts || {}; opts.filesystem = opts.filesystem || typeof(window) !== "undefined" ? new PHP.Adapters.XHRFileSystem() : require('fs'); opts.SERVER = opts.SERVER || {}; opts.SERVER.SCRIPT_FILENAME = opts.SERVER.SCRIPT_FILENAME || ""; - var iniContent = opts.filesystem.readFileSync( "cfg/php.ini" ), + var iniContent = (opts.filesystem.readFileSync( "./cfg/php.ini" ) || __PHPINI__), iniSet = opts.ini || {}; opts.ini = PHP.ini( iniContent ); @@ -11899,7 +12073,7 @@ PHP.VM = function( src, opts ) { ENV[ PHP.Compiler.prototype.RESOURCES ] = PHP.VM.ResourceManager( ENV ); ENV.$Array = new PHP.VM.Array( ENV ); - var variables_order = this.$ini.variables_order; + var variables_order = this.$ini.PHP.variables_order; this.FUNCTION_REFS = {}; $('php_errormsg').$ = new PHP.VM.Variable(); @@ -11914,8 +12088,8 @@ PHP.VM = function( src, opts ) { // todo add error reporting level parser - if (isNaN( this.$ini.error_reporting - 0)) { - var lvl = this.$ini.error_reporting; + if (isNaN( this.$ini.PHP.error_reporting - 0)) { + var lvl = this.$ini.PHP.error_reporting; ["E_ERROR", "E_RECOVERABLE_ERROR", "E_WARNING", @@ -11934,11 +12108,11 @@ PHP.VM = function( src, opts ) { "E_ALL"].forEach(function( err ){ lvl = lvl.replace(err, PHP.Constants[ err ]); }); - this.$ini.error_reporting = eval(lvl); + this.$ini.PHP.error_reporting = eval(lvl); } - this.error_reporting(new PHP.VM.Variable( this.$ini.error_reporting )); + this.error_reporting(new PHP.VM.Variable( this.$ini.PHP.error_reporting )); @@ -11948,7 +12122,7 @@ PHP.VM = function( src, opts ) { var post_max_size; - if ( (post_max_size = PHP.Utils.Filesize(this.$ini.post_max_size)) > opts.RAW_POST.length || post_max_size == 0 ) { + if ( (post_max_size = PHP.Utils.Filesize(this.$ini.PHP.post_max_size)) > opts.RAW_POST.length || post_max_size == 0 ) { if (this.$ini.enable_post_data_reading != 0) { $('_POST').$ = PHP.VM.Array.fromObject.call( this, ( variables_order.indexOf("P") !== -1 ) ? opts.POST : {} ).$; $('HTTP_RAW_POST_DATA').$ = opts.RAW_POST; @@ -15401,4 +15575,4 @@ PHP.Locales = { } -}; +}; \ No newline at end of file diff --git a/dist/php.min.js b/dist/php.min.js index eae3aa0..1df8ff0 100644 --- a/dist/php.min.js +++ b/dist/php.min.js @@ -1,10 +1 @@ -/*! php.js 2014-08-25 */ -var PHP=function(a,b){var b=b||{};b.filesystem=b.filesystem||"undefined"!=typeof window?new PHP.Adapters.XHRFileSystem:require("fs"),b.SERVER=b.SERVER||{},b.SERVER.SCRIPT_FILENAME=b.SERVER.SCRIPT_FILENAME||"";var c=b.filesystem.readFileSync("cfg/php.ini"),d=b.ini||{};b.ini=PHP.ini(c),Object.keys(d).forEach(function(a){this[a]=d[a]},b.ini),this.tokens=PHP.Lexer(a,b.ini);try{this.AST=new PHP.Parser(this.tokens)}catch(e){return this.vm={},this.vm.OUTPUT_BUFFER="Parse error: "+e.message+" in "+b.SERVER.SCRIPT_FILENAME+" on line "+e.line,this}var f=b.POST,g=b.RAW_POST,h=void 0!==g?PHP.RAWPost(g):{};b.POST=void 0!==f?PHP.Utils.QueryString(f):void 0!==g?h.Post():{},b.RAW_POST=void 0!==g?h.Raw():void 0!==f?f.trim():"",b.GET=void 0!==b.GET?PHP.Utils.QueryString(b.GET):{},b.FILES=void 0!==g?h.Files(b.ini.upload_max_filesize,b.ini.max_file_uploads,b.ini.upload_tmp_dir):{},void 0!==g&&h.WriteFiles(b.filesystem.writeFileSync),this.compiler=new PHP.Compiler(this.AST,b.SERVER.SCRIPT_FILENAME),this.vm=new PHP.VM(this.compiler.src,b),void 0!==g&&h.Error(this.vm[PHP.Compiler.prototype.ERROR].bind(this.vm),b.SERVER.SCRIPT_FILENAME),this.vm.Run()};PHP.Constants={},PHP.Modules=function(){this.OUTPUT_BUFFER=""},PHP.Adapters={},PHP.Utils={},PHP.Utils.$A=function(a){return Array.prototype.slice.call(a)},PHP.Utils.ClassName=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype;return a instanceof PHP.VM.Variable?a[c.TYPE]===c.STRING?a[b.VARIABLE_VALUE]:a[b.VARIABLE_VALUE][b.CLASS_NAME]:void 0},PHP.Utils.Merge=function(a,b){return Object.keys(b).forEach(function(c){a[c]=b[c]}),a},PHP.Utils.Path=function(a){return a=a.substring(0,a.lastIndexOf("/"))},PHP.Utils.Visible=function(a,b,c){function d(a,c){var d=b[g+a];return void 0===d?!0:"PUBLIC"===c?(d&PHP.VM.Class[c])===PHP.VM.Class[c]||d===PHP.VM.Class.STATIC:(d&PHP.VM.Class[c])===PHP.VM.Class[c]}function e(a,b){for(;void 0!==a&&void 0!==a[PHP.VM.Class.PROPERTY+b];)a=Object.getPrototypeOf(a);return a}{var f=PHP.Compiler.prototype,g=PHP.VM.Class.PROPERTY_TYPE;PHP.VM.Variable.prototype}if(c instanceof PHP.VM.ClassPrototype&&b[f.CLASS_NAME]===c[f.CLASS_NAME])return!0;if(c instanceof PHP.VM.ClassPrototype&&this.$Class.Inherits(b,c[f.CLASS_NAME])&&d(a,"PROTECTED"))return!0;if(c instanceof PHP.VM.ClassPrototype&&this.$Class.Inherits(b,c[f.CLASS_NAME])&&d(a,"PRIVATE")){if(e(c,a)===c)return!0}else if(d(a,"PUBLIC"))return!0;return!1},PHP.Utils.ArgumentHandler=function(a,b,c,d,e,f){var g=PHP.Compiler.prototype,h=PHP.VM.Variable.prototype;c[g.PARAM_BYREF]===!0?(a.FUNCTION_REFS[f]===!0||d[h.CLASS_CONSTANT]!==!0&&d[h.CONSTANT]!==!0&&d[g.NAV]!==!0||a[PHP.Compiler.prototype.ERROR]("Only variables can be passed by reference",PHP.Constants.E_ERROR,!0),d[h.VARIABLE_TYPE]===h.FUNCTION&&(a[PHP.Compiler.prototype.ERROR]("Only variables should be passed by reference",PHP.Constants.E_STRICT,!0),d[h.VARIABLE_TYPE]=void 0,d=new PHP.VM.Variable(d[g.VARIABLE_VALUE])),d[h.DEFINED]!==!0&&(d[g.VARIABLE_VALUE]=null),b[h.REF](d)):b[g.VARIABLE_VALUE]=void 0!==d?d instanceof PHP.VM.VariableProto?d[h.TYPE]===h.ARRAY?d[g.METHOD_CALL]({},g.ARRAY_CLONE):d[g.VARIABLE_VALUE]:d:void 0!==c[g.PROPERTY_DEFAULT]?c[g.PROPERTY_DEFAULT][g.VARIABLE_VALUE]:(new PHP.VM.Variable)[g.VARIABLE_VALUE],void 0!==c[g.PROPERTY_TYPE]&&a[g.TYPE_CHECK](b,c[g.PROPERTY_TYPE],c[g.PROPERTY_DEFAULT],e,f)},PHP.Utils.StaticHandler=function(a,b,c,d){var e=PHP.Compiler.prototype,f=PHP.VM.Variable.prototype;return a[e.FUNCTION_STATIC_SET]=function(d,f){return void 0===b[d]?(b[d]={def:f[e.VARIABLE_VALUE],val:f},c(d,f)):f[e.VARIABLE_VALUE]===b[d].def?c(d,b[d].val):(b[d]={def:f[e.VARIABLE_VALUE],val:f},c(d,f)),a},a[e.FUNCTION_GLOBAL]=function(a){a.forEach(function(a){var b=d(a);b[f.DEFINED]=!0,c(a,b)})},a},PHP.Utils.CheckRef=function(a,b){var c=(PHP.Compiler.prototype,PHP.VM.Variable.prototype);a instanceof PHP.VM.Variable&&(b!==!0?a[c.VARIABLE_TYPE]=c.FUNCTION:b===!0&&(void 0!==a[c.REFERRING]||a[c.VARIABLE_TYPE]!==c.NEW_VARIABLE&&a[c.VARIABLE_TYPE]!==c.FUNCTION||this[PHP.Compiler.prototype.ERROR]("Only variable references should be returned by reference",PHP.Constants.E_NOTICE,!0),a[c.VARIABLE_TYPE]=void 0))},PHP.Utils.TokenName=function(a){var b=["T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INSTANCEOF","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_DOUBLE_COLON","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR"],c="UNKNOWN";return b.some(function(b){return PHP.Constants[b]===a?(c=b,!0):!1}),c},PHP.Utils.Filesize=function(a){return/^\d+M$/i.test(a)?1024*(a.replace(/M/g,"")-0)*1024:/^\d+K$/i.test(a)?1024*(a.replace(/K/g,"")-0):a},PHP.Utils.QueryString=function(a){a=a.trim();var b=a.split(/&/),c={};return b.forEach(function(a){var b=a.split(/=/),d=decodeURIComponent(b[0]),e=b.length>1?decodeURIComponent(b[1]):null,f=function(a,b,c){var d=b.match(/^\[([a-z0-9+_\-\[]*)\]/i);if(null!==d){var e=void 0===d[1]?Object.keys(a).length:d[1];if(0===e.length&&(e=Object.keys(a).length),b=b.substring(d[0].length),b.length>0){"object"!=typeof a[e]&&null!==a[e]&&(a[e]={});var g=f(a[e],b,c);void 0!==g&&(a[e]=g)}else a[e]=null!==c?c.replace(/\+/g," "):null}else if("]"===b)return a=c,c},g=d.match(/^(.*?)((\[[a-z+0-9_\-\[\]]*\])+)$/i);null!==g?(d=g[1],"object"!=typeof c[d]&&(c[d]={}),f(c[d],g[2],e)):c[d]=null!==e?e.replace(/\+/g," "):null},this),c},PHP.Halt=function(a,b,c,d){this.msg=a,this.level=b,this.lineAppend=c,this.catchable=d},PHP.Compiler=function(a,b,c){this.file=b,this.src="",this.FOREACH_COUNT=0,c=c||{},this.FUNC_NUM=0,this.dimVars="",this.tmpDimVars="",this.DEPRECATED=[],this.dimPrev="",this.INSIDE_METHOD=void 0!==c.INSIDE_METHOD?c.INSIDE_METHOD:!1,this.src+=this.stmts(a,!0),void 0!==this.FATAL_ERROR&&(this.src='this[ PHP.Compiler.prototype.ERROR ]("'+this.FATAL_ERROR+'", '+(void 0===this.ERROR_TYPE?"PHP.Constants.E_ERROR":this.ERROR_TYPE)+");");var d="";this.DEPRECATED.forEach(function(a){d+='this[ PHP.Compiler.prototype.ERROR ]("'+a[0]+" in "+this.file+" on line "+a[1]+'", PHP.Constants.E_DEPRECATED);'},this),this.src=d+this.src};var COMPILER=PHP.Compiler.prototype;COMPILER.getName=function(a){var b=a.parts;return Array.isArray(b)?b[0]:b},COMPILER.stmts=function(a){var b="";return a.forEach(function(a){if(void 0===this.FATAL_ERROR){var c=this.source(a);(this.dimVars.length>0||this.tmpDimVars.length>0)&&(b+=this.dimVars+this.tmpDimVars,this.dimVars=this.tmpDimVars=""),b+=c,"Node_Expr_New"===a.type&&(b+="."+this.UNSET+"()"),/^Node_Expr_Post(Inc|Dec)$/.test(a.type)&&(b+="."+this.VARIABLE_VALUE),b+=";\n"}},this),b},COMPILER.source=function(a){return null===a?"undefined":"string"==typeof a?a:void 0===a?void 0:"Node_Name"===a.type?this.getName(a):Array.isArray(a)?this[a[0].type](a[0]):this[a.type](a)},COMPILER.FILE_PATH="$FILE_PATH",COMPILER.NAV="$NaV",COMPILER.FILESYSTEM="$FS",COMPILER.RESOURCES="π",COMPILER.TIMER="$Timer",COMPILER.ENV="ENV",COMPILER.OUTPUT_BUFFER="OUTPUT_BUFFER",COMPILER.OUTPUT_BUFFERS="OUTPUT_BUFFERS",COMPILER.CTX=COMPILER.ENV+".",COMPILER.PARAM_NAME="n",COMPILER.PARAM_BYREF="r",COMPILER.CATCH="$Catch",COMPILER.EXCEPTION="$Exception",COMPILER.SUPPRESS="$Suppress",COMPILER.CONSTANTS="$Constants",COMPILER.CONSTANT_GET="get",COMPILER.CLASS_CONSTANT_GET="$Class.ConstantGet",COMPILER.CONSTANT_SET="set",COMPILER.CONSTANT_DEFINED="defined",COMPILER.MAGIC_CONSTANTS="$MConstants",COMPILER.ASSIGN="_",COMPILER.ASSIGN_PLUS="_Plus",COMPILER.ASSIGN_MINUS="_Minus",COMPILER.ASSIGN_CONCAT="_Concat",COMPILER.NEG="$Neg",COMPILER.ADD="$Add",COMPILER.MUL="$Mul",COMPILER.MOD="$Mod",COMPILER.DIV="$Div",COMPILER.FUNCTION="$F",COMPILER.FUNCTION_HANDLER="$FHandler",COMPILER.FUNCTION_STATIC="$Static",COMPILER.FUNCTION_GLOBAL="$Global",COMPILER.FUNCTION_STATIC_SET="$Set",COMPILER.BOOLEAN_OR="$Or",COMPILER.PRE_INC="$PreInc",COMPILER.PRE_DEC="$PreDec",COMPILER.POST_INC="$PostInc",COMPILER.POST_DEC="$PostDec",COMPILER.MINUS="$Minus",COMPILER.CONCAT="$Concat",COMPILER.UNSET="$Unset",COMPILER.NOT_IDENTICAL="$NIdentical",COMPILER.IDENTICAL="$Identical",COMPILER.BOOLEAN_NOT="$Not",COMPILER.BOOLEAN_AND="$And",COMPILER.EQUAL="$Equal",COMPILER.NOT_EQUAL="$Equal",COMPILER.SMALLER="$Smaller",COMPILER.SMALLER_OR_EQUAL="$S_Equal",COMPILER.GREATER="$Greater",COMPILER.GREATER_OR_EQUAL="$G_Equal",COMPILER.LABEL="LABEL",COMPILER.LABEL_COUNT=0,COMPILER.VARIABLE="$",COMPILER.VARIABLE_VALUE="$",COMPILER.CREATE_VARIABLE="$$",COMPILER.ARRAY_CLONE="$AClone",COMPILER.VARIABLE_CLONE="$VClone",COMPILER.ARRAY_GET="offsetGet",COMPILER.ARRAY_SET="offsetSet",COMPILER.METHOD_CALL="$Call",COMPILER.DIM_FETCH="$Dim",COMPILER.DIM_ISSET="$DimIsset",COMPILER.DIM_UNSET="$DimUnset",COMPILER.DIM_EMPTY="$DimEmpty",COMPILER.STATIC_CALL="$StaticCall",COMPILER.CLASS_NAME="$Name",COMPILER.INTERFACE_NEW="$Class.INew",COMPILER.CLASS_NEW="$Class.New",COMPILER.CLASS_GET="$Class.Get",COMPILER.CLASS_STORED="$StoredIn",COMPILER.CLASS_CLONE="$CClone",COMPILER.CLASS_PROPERTY_GET="$Prop",COMPILER.CLASS_PROPERTY_ISSET="$PropIsset",COMPILER.CLASS_STATIC_PROPERTY_ISSET="$SPropIsset",COMPILER.STATIC_PROPERTY_GET="$SProp",COMPILER.CLASS_METHOD="Method",COMPILER.CLASS_CONSTANT="Constant",COMPILER.CLASS_CONSTANT_FETCH="$Constant",COMPILER.PROPERTY_TYPE="p",COMPILER.PROPERTY_DEFAULT="d",COMPILER.CLASS_PROPERTY="Variable",COMPILER.CLASS_DECLARE="Create",COMPILER.CLASS_NAMES="$CLASSNAMES",COMPILER.CLASS_DESTRUCT="$Destruct",COMPILER.CLASS_TYPE="$CType",COMPILER.ARRAY_VALUE="v",COMPILER.ARRAY_KEY="k",COMPILER.ERROR="$ERROR",COMPILER.GLOBAL="$Global",COMPILER.SIGNATURE="$SIGNATURE",COMPILER.DISPLAY_HANDLER="$DisplayHandler",COMPILER.TYPE_CHECK="$TypeCheck",COMPILER.INSTANCEOF="$InstanceOf",COMPILER.fixString=function(a){if(null===a.match(/^("|')/)&&(a='"'+a+'"'),null!==a.match(/\r\n/)){var b=a.substring(0,1);a=a.replace(/\r\n"$/,'"'),a="["+a.split(/\r\n/).map(function(a){var b=a.replace(/\r/g,"").replace(/\n/,"\\n");return b}).join(b+","+b)+'].join("\\n")'}return a=a.replace(/([^\\])\\([^\\nrt\$'"])/g,"$1\\\\$2")},PHP.Compiler.prototype.Node_Expr_ArrayDimFetch=function(a){var b;if(void 0!==a.dim&&null!==a.dim&&/^Node_Expr_(FuncCall|Plus)$/.test(a.dim.type)){var c="var dim"+ ++this.FUNC_NUM+" = "+this.CREATE_VARIABLE+"("+this.source(a.dim)+"."+this.VARIABLE_VALUE+");";0===this.tmpDimVars.length?this.tmpDimVars+=c:(this.dimVars+="Node_Expr_Plus"===this.dimPrev?this.tmpDimVars+c:c+this.tmpDimVars,this.tmpDimVars=""),this.dimPrev=a.dim.type,b="dim"+this.FUNC_NUM}else b=this.source(a.dim);var d,e="";return d="Node_Expr_PropertyFetch"===a.variable.type?this.Node_Expr_PropertyFetch(a.variable,!0):this.source(a.variable),e+=d+"."+this.DIM_FETCH+"( this, "+b+" )"},PHP.Compiler.prototype.Node_Expr_Assign=function(a){"Node_Expr_Variable"===a.variable.type&&"this"===a.variable.name&&(this.FATAL_ERROR="Cannot re-assign $this in "+this.file+" on line "+a.attributes.startLine);var b=this.source(a.variable)+"."+this.ASSIGN;return b+=void 0!==a.expr?"Node_Expr_Assign"!==a.expr.type?"("+this.source(a.expr)+")":"("+this.source(a.expr.variable)+", "+this.source(a.expr.expr)+")":"("+this.source(a.refVar)+")"},PHP.Compiler.prototype.Node_Expr_AssignMinus=function(a){var b=this.source(a.variable)+"."+this.ASSIGN_MINUS+"("+this.source(a.expr)+")";return b},PHP.Compiler.prototype.Node_Expr_AssignPlus=function(a){var b=this.source(a.variable)+"."+this.ASSIGN_PLUS+"("+this.source(a.expr)+")";return b},PHP.Compiler.prototype.Node_Expr_AssignMul=function(a){var b=this.source(a.variable)+"."+this.VARIABLE_VALUE+" *= "+this.source(a.expr);return/Node_Expr_(Plus|Mul|Div|Minus|BitwiseOr|BitwiseAnd)/.test(a.expr.type)||(b+="."+this.VARIABLE_VALUE),b},PHP.Compiler.prototype.Node_Expr_AssignDiv=function(a){var b=this.source(a.variable)+"."+this.VARIABLE_VALUE+" /= "+this.source(a.expr);return/Node_Expr_(Plus|Mul|Div|Minus|BitwiseOr|BitwiseAnd)/.test(a.expr.type)||(b+="."+this.VARIABLE_VALUE),b},PHP.Compiler.prototype.Node_Expr_AssignConcat=function(a){var b=this.source(a.variable)+"."+this.ASSIGN_CONCAT+"("+this.source(a.expr)+")";return b},PHP.Compiler.prototype.Node_Expr_AssignRef=function(a){"Node_Expr_New"===a.refVar.type&&this.DEPRECATED.push(["Assigning the return value of new by reference is deprecated",a.attributes.startLine]);var b="";return b+="Node_Expr_StaticPropertyFetch"===a.variable.type?this.Node_Expr_StaticPropertyFetch(a.variable,!0):this.source(a.variable),b+="."+PHP.VM.Variable.prototype.REF+"("+this.source(a.refVar)+")"},PHP.Compiler.prototype.Node_Expr_Ternary=function(a){var b="(( "+this.source(a.cond)+"."+this.VARIABLE_VALUE+" ) ? "+this.source(a.If)+" : "+this.source(a.Else)+")";return b},PHP.Compiler.prototype.Node_Expr_ErrorSuppress=function(a){var b=this.CTX+this.SUPPRESS+"(function() { return "+this.source(a.expr)+" })";return b},PHP.Compiler.prototype.Node_Expr_FuncCall=function(a){var b="("+this.CTX+this.FUNCTION+"(";return"Node_Name"!==a.func.type?b+=this.source(a.func)+"."+this.VARIABLE_VALUE+", arguments":(b+='"'+this.getName(a.func)+'", arguments',"eval"===this.getName(a.func)&&(b+=", $, $Static, this",b+=this.INSIDE_METHOD?", ctx":", undefined",b+=", ENV")),a.args.forEach(function(a){b+="Node_Expr_PropertyFetch"===a.value.type?", "+this.Node_Expr_PropertyFetch(a.value,!0):", "+this.source(a.value)},this),b+="))"},PHP.Compiler.prototype.Node_Expr_Exit=function(a){var b=this.CTX+"exit( "+this.source(a.expr)+" )";return b},PHP.Compiler.prototype.Node_Expr_AssignList=function(a){var b=this.CTX+"list( ",c=function(a){var d="";a.forEach(function(a){Array.isArray(a)?(b+=d+" [",c(a),b+="]"):b+=d+" "+this.source(a),d=", "},this)}.bind(this);return c(a.assignList),b+=", "+this.source(a.expr)+" )"},PHP.Compiler.prototype.Node_Expr_Isset=function(a){var b=this.CTX+"$isset( ",c=[];return a.variables.forEach(function(a){switch(a.type){case"Node_Expr_ArrayDimFetch":c.push(this.source(a.variable)+"."+this.DIM_ISSET+"( this, "+this.source(a.dim)+" )");break;case"Node_Expr_PropertyFetch":c.push(this.source(a.variable)+"."+this.VARIABLE_VALUE+"."+this.CLASS_PROPERTY_ISSET+'( this, "'+this.source(a.name)+'" )');break;case"Node_Expr_StaticPropertyFetch":c.push(this.Node_Expr_StaticPropertyFetch(a,void 0,!0));break;default:c.push(this.source(a))}},this),b+=c.join(", ")+" )"},PHP.Compiler.prototype.Node_Expr_Empty=function(a){var b=this.CTX+"$empty( ";switch(a.variable.type){case"Node_Expr_ArrayDimFetch":b+=this.source(a.variable.variable)+"."+this.DIM_EMPTY+"( this, "+this.source(a.variable.dim)+" )";break;default:b+=this.source(a.variable)}return b+=" )"},PHP.Compiler.prototype.Node_Expr_Instanceof=function(a){var b;return b="Node_Name"===a.right.type?'"'+this.source(a.right)+'"':this.source(a.right)+"."+this.VARIABLE_VALUE,this.source(a.left)+"."+this.INSTANCEOF+"("+b+")"},PHP.Compiler.prototype.Node_Expr_UnaryPlus=function(a){return this.source(a.expr)},PHP.Compiler.prototype.Node_Expr_UnaryMinus=function(a){return this.source(a.expr)+"."+this.NEG+"()"},PHP.Compiler.prototype.Node_Expr_BitwiseOr=function(a){return this.CREATE_VARIABLE+"("+this.source(a.left)+"."+this.VARIABLE_VALUE+" | "+this.source(a.right)+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_BitwiseAnd=function(a){return this.CREATE_VARIABLE+"("+this.source(a.left)+"."+this.VARIABLE_VALUE+" & "+this.source(a.right)+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_BitwiseNot=function(a){return this.CREATE_VARIABLE+"(~"+this.source(a.expr)+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_Div=function(a){return this.source(a.left)+"."+this.DIV+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_Minus=function(a){return this.source(a.left)+"."+this.MINUS+"("+this.source(a.right)+(/^Node_Expr_Post/.test(a.right.type)?", true":"")+")"},PHP.Compiler.prototype.Node_Expr_Mul=function(a){return this.source(a.left)+"."+this.MUL+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_Mod=function(a){return this.source(a.left)+"."+this.MOD+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_Plus=function(a){var b="";return b+=/^Node_Expr_((Static)?Property|ArrayDim)Fetch$/.test(a.left.type)?this.CREATE_VARIABLE+"("+this.source(a.left)+"."+PHP.VM.Variable.prototype.CAST_DOUBLE+"."+this.VARIABLE_VALUE+")":this.source(a.left),b+="."+this.ADD+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_Equal=function(a){return this.source(a.left)+"."+this.EQUAL+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_NotEqual=function(a){return this.source(a.left)+"."+this.NOT_EQUAL+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_NotIdentical=function(a){return this.source(a.left)+"."+this.NOT_IDENTICAL+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_Identical=function(a){return this.source(a.left)+"."+this.IDENTICAL+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_LogicalOr=function(a){return this.CREATE_VARIABLE+"("+this.source(a.left)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+" || "+this.source(a.right)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_LogicalAnd=function(a){return this.CREATE_VARIABLE+"("+this.source(a.left)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+" && "+this.source(a.right)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_LogicalXor=function(a){return this.CREATE_VARIABLE+"(!"+this.source(a.left)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+" != !"+this.source(a.right)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_BooleanOr=function(a){return this.CREATE_VARIABLE+"("+this.source(a.left)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+" || "+this.source(a.right)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_BooleanAnd=function(a){return this.CREATE_VARIABLE+"("+this.source(a.left)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+" && "+this.source(a.right)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_BooleanNot=function(a){return this.CREATE_VARIABLE+"(!"+this.source(a.expr)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Expr_Smaller=function(a){return this.source(a.left)+"."+this.SMALLER+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_Greater=function(a){return this.source(a.left)+"."+this.GREATER+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_GreaterOrEqual=function(a){return this.source(a.left)+"."+this.GREATER_OR_EQUAL+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_SmallerOrEqual=function(a){return this.source(a.left)+"."+this.SMALLER_OR_EQUAL+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_PreInc=function(a){return this.source(a.variable)+"."+this.PRE_INC+"()"},PHP.Compiler.prototype.Node_Expr_PreDec=function(a){return this.source(a.variable)+"."+this.PRE_DEC+"()"},PHP.Compiler.prototype.Node_Expr_PostInc=function(a){return this.source(a.variable)+"."+this.POST_INC+"()"},PHP.Compiler.prototype.Node_Expr_PostDec=function(a){return this.source(a.variable)+"."+this.POST_DEC+"()"},PHP.Compiler.prototype.Node_Expr_Concat=function(a){var b="";return b+=/^Node_Expr_((Static)?Property|ArrayDim)Fetch$/.test(a.left.type)?this.CREATE_VARIABLE+"("+this.source(a.left)+"."+PHP.VM.Variable.prototype.CAST_STRING+"."+this.VARIABLE_VALUE+")":this.source(a.left),b+="."+this.CONCAT+"("+this.source(a.right)+")"},PHP.Compiler.prototype.Node_Expr_Print=function(a){var b=this.CTX+"print( ";return b+=this.source(a.expr),b+=" )"},PHP.Compiler.prototype.Node_Expr_Variable=function(a){var b=this.VARIABLE+"(";return b+="this"===a.name?'"'+this.source(a.name)+'"':"string"==typeof a.name?'"'+this.source(a.name)+'"':this.source(a.name)+"."+this.VARIABLE_VALUE,b+")"},PHP.Compiler.prototype.Node_Expr_Cast_String=function(a){return this.source(a.expr)+"."+PHP.VM.Variable.prototype.CAST_STRING},PHP.Compiler.prototype.Node_Expr_Cast_Int=function(a){return this.source(a.expr)+"."+PHP.VM.Variable.prototype.CAST_INT},PHP.Compiler.prototype.Node_Expr_Cast_Double=function(a){return this.source(a.expr)+"."+PHP.VM.Variable.prototype.CAST_DOUBLE},PHP.Compiler.prototype.Node_Expr_Cast_Bool=function(a){return this.source(a.expr)+"."+PHP.VM.Variable.prototype.CAST_BOOL},PHP.Compiler.prototype.Node_Expr_Include=function(a){return this.CTX+"include( "+this.VARIABLE+", "+this.FUNCTION_STATIC+", "+this.source(a.expr)+" )"},PHP.Compiler.prototype.Node_Expr_IncludeOnce=function(a){return this.CTX+"include_once( "+this.VARIABLE+", "+this.FUNCTION_STATIC+", "+this.source(a.expr)+" )"},PHP.Compiler.prototype.Node_Expr_Require=function(a){return this.CTX+"require( "+this.VARIABLE+", "+this.FUNCTION_STATIC+", "+this.source(a.expr)+" )"},PHP.Compiler.prototype.Node_Expr_RequireOnce=function(a){return this.CTX+"require_once( "+this.VARIABLE+", "+this.FUNCTION_STATIC+", "+this.source(a.expr)+" )"},PHP.Compiler.prototype.Node_Expr_New=function(a){var b,c="";return b="Node_Name"===a.Class.type?'"'+this.source(a.Class)+'"':this.source(a.Class)+"."+this.VARIABLE_VALUE,c+=this.CREATE_VARIABLE+"(new ("+this.CTX+this.CLASS_GET+"("+b+"))( this",a.args.forEach(function(a){c+="Node_Expr_PropertyFetch"===a.value.type?", "+this.Node_Expr_PropertyFetch(a.value,!0):", "+this.source(a.value)},this),c+=" ))"},PHP.Compiler.prototype.Node_Expr_ConstFetch=function(a){return/true|false|null/i.test(a.name.parts)?this.CREATE_VARIABLE+"("+a.name.parts.toString().toLowerCase()+")":this.CTX+this.CONSTANTS+"."+this.CONSTANT_GET+'("'+this.source(a.name)+'")'},PHP.Compiler.prototype.Node_Expr_MethodCall=function(a){var b,c="";return b=void 0===a.name.type?'"'+a.name+'"':this.source(a.name)+"."+this.VARIABLE_VALUE,c+=this.source(a.variable)+"."+this.METHOD_CALL+"( ",c+="this"===a.variable.name?"ctx":"this",c+=", "+b,a.args.forEach(function(a){c+="Node_Expr_PropertyFetch"===a.value.type?", "+this.Node_Expr_PropertyFetch(a.value,!0):", "+this.source(a.value)},this),c+=")"},PHP.Compiler.prototype.Node_Expr_PropertyFetch=function(a,b){var c="";c+="string"==typeof a.name?'"'+this.source(a.name)+'"':this.source(a.name)+"."+this.VARIABLE_VALUE;var d="";b===!0&&(d=", true");var e;return e="Node_Expr_PropertyFetch"===a.variable.type?this.Node_Expr_PropertyFetch(a.variable,b):this.source(a.variable),"this"!==a.variable.name?e+"."+this.CLASS_PROPERTY_GET+"( this, "+c+d+" )":e+"."+this.CLASS_PROPERTY_GET+"( ctx, "+c+d+" )"},PHP.Compiler.prototype.Node_Expr_ClassConstFetch=function(a){var b;return b="Node_Name"===a.Class.type?'"'+this.source(a.Class)+'"':this.source(a.Class)+"."+this.VARIABLE_VALUE,this.CTX+this.CLASS_CONSTANT_GET+"("+b+', this, "'+a.name+'" )'},PHP.Compiler.prototype.Node_Expr_StaticCall=function(a){var b,c,d="";return b="Node_Name"===a.Class.type?'"'+this.source(a.Class)+'"':this.source(a.Class)+"."+this.VARIABLE_VALUE,c="string"==typeof a.func?'"'+this.source(a.func)+'"':this.source(a.func)+"."+this.VARIABLE_VALUE,d+=/^(parent|self)$/i.test(a.Class.parts)?"this."+this.STATIC_CALL+"( "+(this.INSIDE_METHOD===!0?"ctx":"this")+", "+b+", "+c:this.CTX+this.CLASS_GET+"("+b+", this)."+this.STATIC_CALL+"( "+(this.INSIDE_METHOD===!0?"ctx":"this")+", "+b+", "+c,a.args.forEach(function(a){d+="Node_Expr_PropertyFetch"===a.value.type?", "+this.Node_Expr_PropertyFetch(a.value,!0):", "+this.source(a.value)},this),d+=")"},PHP.Compiler.prototype.Node_Expr_StaticPropertyFetch=function(a,b,c){var d,e="",f="",g="";return g+="string"==typeof a.name?'"'+this.source(a.name)+'"':this.source(a.name)+"."+this.VARIABLE_VALUE,d="Node_Name"===a.Class.type?'"'+this.source(a.Class)+'"':this.source(a.Class)+"."+this.VARIABLE_VALUE,b===!0&&(f=", true"),e+=/^(parent|self)$/i.test(a.Class.parts)?"this."+(c===!0?this.CLASS_STATIC_PROPERTY_ISSET:this.STATIC_PROPERTY_GET)+"( "+(this.INSIDE_METHOD===!0?"ctx":"this")+", "+d+", "+g:this.CTX+this.CLASS_GET+"("+d+", this)."+(c===!0?this.CLASS_STATIC_PROPERTY_ISSET:this.STATIC_PROPERTY_GET)+"( "+(this.INSIDE_METHOD===!0?"ctx":"this")+", "+d+", "+g,e+=f+")"},PHP.Compiler.prototype.Node_Expr_Array=function(a){var b=this.CTX+"array([",c=[];return(Array.isArray(a.items)?a.items:[a.items]).forEach(function(a){void 0!==a.value&&c.push("{"+this.ARRAY_VALUE+":"+this.source(a.value)+(void 0!==a.key?", "+this.ARRAY_KEY+":"+this.source(a.key):"")+"}")},this),b+=c.join(", ")+"])"},PHP.Compiler.prototype.Node_Expr_Clone=function(a){var b="";return b+=this.source(a.expr)+"."+this.VARIABLE_VALUE+"."+this.CLASS_CLONE+"( this )"},PHP.Compiler.prototype.Node_Stmt_Interface=function(a){function b(a){a.forEach(function(a){Array.isArray(a)?b(a):d.push('"'+a.parts+'"')})}a.stmts.forEach(function(b){"Node_Stmt_ClassMethod"===b.type&&null!==b.stmts&&(this.FATAL_ERROR="Interface function "+a.name+"::"+b.name+"() cannot contain body {} on line "+a.attributes.startLine)},this);var c=this.CTX+this.INTERFACE_NEW+'( "'+a.name+'", [',d=[];return b(a.Extends),c+=d.join(", "),c+="], function( M, $, $$ ){\n M",this.currentClass=a.name,a.stmts.forEach(function(a){c+=this.source(a)},this),c+="."+this.CLASS_DECLARE+"()})"},PHP.Compiler.prototype.Node_Stmt_Class=function(a){function b(a){a.forEach(function(a){Array.isArray(a)?b(a):d.push('"'+a.parts+'"')})}var c=this.CTX+this.CLASS_NEW+'( "'+a.name+'", '+a.Type+", {";if(null!==a.Extends&&(c+='Extends: "'+this.source(a.Extends)+'"'),a.Implements.length>0){null!==a.Extends&&(c+=", "),c+="Implements: [";var d=[];b(a.Implements),c+=d.join(", "),c+="]"}return c+="}, function( M, $, $$ ){\n M",this.currentClass=a.name,a.stmts.forEach(function(a){c+=this.source(a)},this),c+="."+this.CLASS_DECLARE+"()",c+="})"},PHP.Compiler.prototype.Node_Stmt_Echo=function(a){var b=this.CTX+"echo( ",c=[];return Array.isArray(a.exprs)?(a.exprs.forEach(function(a){c.push(this.source(a))},this),b+=c.join(", ")):b+=this.source(a.exprs),b+=" )"},PHP.Compiler.prototype.Node_Stmt_For=function(a){var b=this.LABEL+this.LABEL_COUNT++ +":\n";return b+="for( ",Array.isArray(a.init)&&0===a.init.length||(b+=this.source(a.init)),b+="; ",Array.isArray(a.cond)&&0===a.cond.length||(b+="("+this.source(a.cond)+")."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE),b+="; ",a.loop.length>0&&(b+=this.source(a.loop)+"."+this.VARIABLE_VALUE),b+=" ) { ",b+=this.CTX+this.TIMER+"();\n",b+=this.stmts(a.stmts),b+="}"},PHP.Compiler.prototype.Node_Stmt_While=function(a){var b=this.LABEL+this.LABEL_COUNT++ +":\n";return b+="while( "+this.source(a.cond)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+") {",b+=this.CTX+this.TIMER+"(); \n",b+=this.stmts(a.stmts),b+="}"},PHP.Compiler.prototype.Node_Stmt_Do=function(a){var b=this.LABEL+this.LABEL_COUNT++ +":\n";return b+="do {\n",b+=this.stmts(a.stmts),b+="} while( "+this.source(a.cond)+"."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+")"},PHP.Compiler.prototype.Node_Stmt_Switch=function(a){var b=this.LABEL+this.LABEL_COUNT++ +":\n";return b+="switch("+this.source(a.cond)+"."+this.VARIABLE_VALUE+") {\n",a.cases.forEach(function(a){b+=this.source(a)+";\n"},this),b+="}"},PHP.Compiler.prototype.Node_Stmt_Case=function(a){var b="";return b+=null===a.cond?"default:\n":"case ("+this.source(a.cond)+"."+this.VARIABLE_VALUE+"):\n",a.stmts.forEach(function(a){b+=this.source(a)+";\n"},this),b},PHP.Compiler.prototype.Node_Stmt_Foreach=function(a){if("Node_Expr_Array"===a.expr.type&&a.byRef===!0)return void(null===a.keyVar?(this.FATAL_ERROR="syntax error, unexpected '&' in "+this.file+" on line "+a.attributes.startLine,this.ERROR_TYPE=PHP.Constants.E_PARSE):this.FATAL_ERROR="Cannot create references to elements of a temporary array expression in "+this.file+" on line "+a.attributes.startLine);var b=++this.FOREACH_COUNT,c="var iterator"+b+" = "+this.CTX+"$foreachInit("+this.source(a.expr)+", "+(this.INSIDE_METHOD===!0?"ctx":"this")+");\n";return c+="while("+this.CTX+"foreach( iterator"+b+", "+a.byRef+", "+this.source(a.valueVar),null!==a.keyVar&&(c+=", "+this.source(a.keyVar)),c+=")) {\n",c+=this.stmts(a.stmts),c+="} ",c+=this.CTX+"$foreachEnd( iterator"+b+" )"},PHP.Compiler.prototype.Node_Stmt_Continue=function(){var a="continue";return a},PHP.Compiler.prototype.Node_Stmt_Break=function(a){var b="break";return null!==a.num&&(b+=" "+this.LABEL+(this.LABEL_COUNT-a.num.value)),b},PHP.Compiler.prototype.Node_Stmt_Function=function(a){var b=this.CTX+a.name+" = Function.prototype.bind.apply( function( "+this.VARIABLE+", "+this.FUNCTION_STATIC+", "+this.FUNCTION_GLOBAL+" ) {\n";b+=this.VARIABLE+" = "+this.VARIABLE+"([";var c=[];return(void 0!==a.params[0]&&Array.isArray(a.params[0])?a.params[0]:a.params).forEach(function(a){if("Node_Param"===a.type){var b="{"+this.PARAM_NAME+':"'+a.name+'"';a.byRef===!0&&(b+=","+this.PARAM_BYREF+":true"),null!==a.def&&(b+=", "+this.PROPERTY_DEFAULT+": "+this.source(a.def)),null!==a.Type&&(b+=", "+this.PROPERTY_TYPE+': "'+this.source(a.Type)+'"'),b+="}",c.push(b)}},this),b+=c.join(", ")+"], arguments);\n",b+=this.stmts(a.stmts),b+="}, ("+this.CTX+this.FUNCTION_HANDLER+')( ENV, "'+a.name+'", '+a.byRef+" ))"},PHP.Compiler.prototype.Node_Stmt_Static=function(a){var b=this.FUNCTION_STATIC;return a.vars.forEach(function(a){b+=this.source(a)},this),b},PHP.Compiler.prototype.Node_Stmt_Global=function(a){var b=this.FUNCTION_STATIC+"."+this.FUNCTION_GLOBAL+"([",c=[];return a.vars.forEach(function(a){c.push('"'+a.name+'"')},this),b+=c.join(", ")+"])"},PHP.Compiler.prototype.Node_Stmt_StaticVar=function(a){var b="."+this.FUNCTION_STATIC_SET+'("'+a.name+'", '+(null===a.def?"new PHP.VM.Variable()":this.source(a.def))+")";return b},PHP.Compiler.prototype.Node_Stmt_Property=function(a){var b="";return a.props.forEach(function(c){b+="."+this.CLASS_PROPERTY+'( "'+c.name+'", '+a.Type,null!==c.def&&(b+=", "+this.source(c.def)),b+=" )\n"},this),b},PHP.Compiler.prototype.Node_Stmt_Unset=function(a){var b=this.CTX+"unset( ",c=[];return a.variables.forEach(function(a){switch(a.type){case"Node_Expr_ArrayDimFetch":c.push(this.source(a.variable)+"."+this.DIM_UNSET+"( this, "+this.source(a.dim)+" )");break;default:c.push(this.source(a))}},this),b+=c.join(", ")+" )"},PHP.Compiler.prototype.Node_Stmt_InlineHTML=function(a){var b=this.CTX+'$ob("'+a.value.replace(/[\\"]/g,"\\$&").replace(/\n/g,"\\n").replace(/\r/g,"")+'")';return b},PHP.Compiler.prototype.Node_Stmt_If=function(a){var b="if ( ("+this.source(a.cond)+")."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+") {\n";return a.stmts.forEach(function(a){b+=this.source(a)+";\n" -},this),a.elseifs.forEach(function(a){b+=this.source(a)+"\n"},this),null!==a.Else&&(b+="} else {\n",a.Else.stmts.forEach(function(a){b+=this.source(a)+";\n"},this)),b+="}"},PHP.Compiler.prototype.Node_Stmt_ElseIf=function(a){var b="} else if ( ("+this.source(a.cond)+")."+PHP.VM.Variable.prototype.CAST_BOOL+"."+this.VARIABLE_VALUE+") {\n";return a.stmts.forEach(function(a){b+=this.source(a)+";\n"},this),b},PHP.Compiler.prototype.Node_Stmt_Throw=function(a){var b="throw "+this.source(a.expr);return b},PHP.Compiler.prototype.Node_Stmt_TryCatch=function(a){var b="try {\n";return b+=this.stmts(a.stmts)+"} catch( emAll ) {\n",b+=this.CTX+this.EXCEPTION+"( emAll )",a.catches.forEach(function(a){b+=this.source(a)},this),b+=";\n }",this.source(a.expr),b},PHP.Compiler.prototype.Node_Stmt_Catch=function(a){var b="."+this.CATCH+'( "'+a.variable+'", "'+a.Type.parts+'", '+this.VARIABLE+", function() {\n";return b+=this.stmts(a.stmts),b+="})"},PHP.Compiler.prototype.Node_Stmt_ClassMethod=function(a){this.INSIDE_METHOD=!0;var b="."+this.CLASS_METHOD+'( "'+a.name+'", '+a.Type+", [",c=[];return(Array.isArray(a.params[0])?a.params[0]:a.params).forEach(function(a){var b='{name:"'+a.name+'"';null!==a.def&&(b+=", "+this.PROPERTY_DEFAULT+": "+this.source(a.def)),null!==a.Type&&(b+=", "+this.PROPERTY_TYPE+': "'+this.source(a.Type)+'"'),a.byRef===!0&&(b+=", "+this.PARAM_BYREF+": true"),b+="}",c.push(b)},this),b+=c.join(", ")+"], "+a.byRef+", function( "+this.VARIABLE+", ctx, $Static ) {\n",null!==a.stmts&&(b+=this.stmts(a.stmts)),b+="})\n",this.INSIDE_METHOD=!1,b},PHP.Compiler.prototype.Node_Stmt_ClassConst=function(a){var b="";return(Array.isArray(a.consts[0])?a.consts[0]:a.consts).forEach(function(a){b+="."+this.CLASS_CONSTANT+'("'+a.name+'", '+this.source(a.value)+")\n"},this),b},PHP.Compiler.prototype.Node_Stmt_Return=function(a){return"return "+this.source(a.expr)},PHP.Compiler.prototype.Node_Scalar_String=function(a){return this.CREATE_VARIABLE+"("+this.fixString(a.value)+")"},PHP.Compiler.prototype.Node_Scalar_Encapsed=function(a){var b=[],c=PHP.VM.Variable.prototype;a.parts.forEach(function(a){b.push("string"==typeof a?this.fixString(a):this.source(void 0===a[0]?a:a[0])+"."+c.CAST_STRING+"."+this.VARIABLE_VALUE)},this);var d=this.CREATE_VARIABLE+"("+b.join(" + ")+")";return d},PHP.Compiler.prototype.Node_Scalar_LNumber=function(a){return this.CREATE_VARIABLE+"("+a.value+")"},PHP.Compiler.prototype.Node_Scalar_DNumber=function(a){return this.CREATE_VARIABLE+"("+a.value+")"},PHP.Compiler.prototype.Node_Scalar_LNumber=function(a){return this.CREATE_VARIABLE+"("+a.value+")"},PHP.Compiler.prototype.Node_Scalar_MethodConst=function(){return this.VARIABLE+'("$__METHOD__")'},PHP.Compiler.prototype.Node_Scalar_FuncConst=function(){return this.VARIABLE+'("$__FUNCTION__")'},PHP.Compiler.prototype.Node_Scalar_ClassConst=function(){return this.VARIABLE+'("$__CLASS__")'},PHP.Compiler.prototype.Node_Scalar_FileConst=function(){return this.VARIABLE+'("$__FILE__")'},PHP.Compiler.prototype.Node_Scalar_LineConst=function(){return this.VARIABLE+'("$__LINE__")'},PHP.Compiler.prototype.Node_Scalar_DirConst=function(){return this.VARIABLE+'("$__DIR__")'},PHP.Modules.prototype[PHP.Compiler.prototype.FUNCTION_HANDLER]=function(a,b,c){var d,e=[null],f=PHP.Compiler.prototype,g=(PHP.VM.Variable.prototype,{}),h=this[f.GLOBAL],i="$__FILE__",j={};return a.FUNCTION_REFS[b]=c,e.push(function(c,e){d=PHP.VM.VariableHandler(a);var k=Array.prototype.slice.call(e,2);return c.forEach(function(c,g){var h=d(c[f.PARAM_NAME]);PHP.Utils.ArgumentHandler(a,h,c,k[g],g,b),e[g+2]=c[f.PARAM_BYREF]===!0?h:new PHP.VM.Variable(h[f.VARIABLE_VALUE])}),d("GLOBALS",h("GLOBALS")),d("$__FILE__")[f.VARIABLE_VALUE]=h(i)[f.VARIABLE_VALUE],d("$__METHOD__")[f.VARIABLE_VALUE]=b,d("$__FUNCTION__")[f.VARIABLE_VALUE]=b,PHP.Utils.StaticHandler(g,j,d,a[f.GLOBAL]),d}),e.push(g),e},PHP.Modules.prototype[PHP.Compiler.prototype.FUNCTION]=function(a,b){var c,d=PHP.Compiler.prototype,e=PHP.VM.Variable.prototype,f="func_num_args",g="(): Called from the global scope - no function context",h="func_get_arg",i="func_get_args",j=PHP.VM.Array.arrayItem;if(/^func_(get_args?|num_args)$/.test(a)&&b[2]instanceof PHP.VM)return this[PHP.Compiler.prototype.ERROR](a+g,PHP.Constants.E_CORE_WARNING,!0),new PHP.VM.Variable(a===f?-1:!1);if(a===f)return new PHP.VM.Variable(b.length-2);if(a===h)return this[d.SIGNATURE](Array.prototype.slice.call(arguments,2),h,1,[e.INT])?arguments[2][d.VARIABLE_VALUE]<0?(this[PHP.Compiler.prototype.ERROR](h+"(): The argument number should be >= 0",PHP.Constants.E_WARNING,!0),new PHP.VM.Variable(!1)):void 0===b[arguments[2][d.VARIABLE_VALUE]+2]?(this[PHP.Compiler.prototype.ERROR](h+"(): Argument "+arguments[2][d.VARIABLE_VALUE]+" not passed to function",PHP.Constants.E_CORE_WARNING,!0),new PHP.VM.Variable(!1)):b[arguments[2][d.VARIABLE_VALUE]+2]:new PHP.VM.Variable(!1);if(a===i){var k=[];return Array.prototype.slice.call(b,2).forEach(function(a,b){k.push(j(b,a))}),this.array(k)}return"function"==typeof a?c=a.apply(this,Array.prototype.slice.call(arguments,2)):void 0===this[a]?this[PHP.Compiler.prototype.ERROR]("Call to undefined function "+a+"()",PHP.Constants.E_ERROR,!0):c=this[a].apply(this,Array.prototype.slice.call(arguments,2)),PHP.Utils.CheckRef.call(this,c,this.FUNCTION_REFS[a]),c},PHP.Modules.prototype[PHP.Compiler.prototype.TYPE_CHECK]=function(a,b,c,d,e){var f,g=PHP.Compiler.prototype,h=PHP.VM.Variable.prototype,i=!1;if(f=a[g.VARIABLE_VALUE],void 0===c||c[h.TYPE]!==h.NULL||a[h.TYPE]!==h.NULL){var j,k,l="Argument "+(d+1)+" passed to "+e+"() must ",m=a[h.TYPE];switch(m){case h.OBJECT:j=", instance of "+f[g.CLASS_NAME]+" given";break;case h.INT:j=", integer given";break;case h.NULL:j=", none given"}switch(this.$Class.Exists(b)&&this.$Class.Get(b).prototype[g.CLASS_TYPE]===PHP.VM.Class.INTERFACE&&(i=!0),b.toLowerCase()){case"array":h.ARRAY!==m&&(k=l+"be of the type array"+j);break;default:null===f?k=l+"be an instance of "+b+j:i||f[g.CLASS_NAME]===b?i&&-1===f[PHP.VM.Class.INTERFACES].indexOf(b)&&(k=l+"implement interface "+b+j):k=l+"be an instance of "+b+j}void 0!==k&&this[g.ERROR](k,PHP.Constants.E_RECOVERABLE_ERROR,!1)}},PHP.Modules.prototype[PHP.Compiler.prototype.SIGNATURE]=function(a,b,c,d){var e=PHP.Compiler.prototype,f=this[e.GLOBAL],g="$__FILE__",h=PHP.VM.Variable.prototype,i={};if(i[h.NULL]="null",i[h.BOOL]="boolean",i[h.INT]="long",i[h.FLOAT]="float",i[h.STRING]="string",i[h.ARRAY]="array",i[h.OBJECT]="object",i[h.RESOURCE]="resource",0>c&&a.length>-c)return c=-c,this[e.ERROR](b+"() expects at most "+c+" parameter"+(1!==c?"s":"")+", "+a.length+" given",PHP.Constants.E_WARNING,!0),!1;if(a.length!==c&&c>=0)return this[e.ERROR](b+"() expects exactly "+c+" parameter"+(1!==c?"s":"")+", "+a.length+" given",PHP.Constants.E_WARNING,!0),!1;if(Array.isArray(d)){var j=!1;if(d.forEach(function(c,d){if(Array.isArray(c))-1===c.indexOf(a[d][h.TYPE])&&(-1===c.indexOf(h.STRING)||a[d][h.CAST_STRING][h.TYPE]!==h.STRING)&&(this[e.ERROR](b+"() expects parameter "+(d+1)+" to be "+i[c[0]]+", "+i[a[d][h.TYPE]]+" given in "+f(g)[e.VARIABLE_VALUE]+" on line 0",PHP.Constants.E_CORE_WARNING),j=!0);else if(void 0!==a[d]&&c!==a[d][h.TYPE]&&null!==c){if(c===h.INT&&a[d][h.TYPE]===h.BOOL)return;(c!==h.STRING||"function"!=typeof a[d][h.CAST_STRING])&&(this[e.ERROR](b+"() expects parameter "+(d+1)+" to be "+i[c]+", "+i[a[d][h.TYPE]]+" given in "+f(g)[e.VARIABLE_VALUE]+" on line 0",PHP.Constants.E_CORE_WARNING),j=!0)}},this),j===!0)return!1}return!0},function(a){var b,c,d,e,f=PHP.Compiler.prototype,g=32767,h=!1;a.$ErrorReset=function(){b=void 0,c=void 0,d=void 0,e=void 0,h=!1,g=32767},a.register_shutdown_function=function(a){d=a,e=Array.prototype.slice.call(arguments,1)},a.$shutdown=function(){this.$Class.Shutdown(),void 0!==d&&this.call_user_func.apply(this,[d].concat(arguments))},a[f.SUPPRESS]=function(a){h=!0;var b=a();return void 0===b&&(b=new PHP.VM.Variable),b[f.SUPPRESS]=!0,h=!1,b},a[f.EXCEPTION]=function(a){var b={},c=PHP.VM.Variable.prototype,d=!1;return b[f.CATCH]=function(e,g,h,i){if(d)return b;if(a[c.TYPE]===c.OBJECT){var j=a[f.VARIABLE_VALUE];(this.$Class.Inherits(j,g)||-1!==j[PHP.VM.Class.INTERFACES].indexOf(g))&&(h(e,a),d=!0,i())}else if(a instanceof PHP.Halt&&/^Exception$/i.test(g)){if(a.catchable===!0)throw a;h(e,new(this.$Class.Get("Exception"))(this,new PHP.VM.Variable(a.msg))),d=!0,i()}return b}.bind(this),b},a.error_get_last=function(){var a=PHP.VM.Array.arrayItem;return this.array([a("type",b.type),a("message",b.message),a("file",b.file),a("line",b.line)])},a.error_reporting=function(a){g=a[f.VARIABLE_VALUE]},a.set_error_handler=function(a){c=a},a[f.ERROR]=function(a,d,e,i,j){function k(a){return(g&l[a])===l[a]}var l=PHP.Constants,m=this[f.GLOBAL],n="$__FILE__";if(b={message:a,line:1,type:d,file:m(n)[f.VARIABLE_VALUE]},e=e===!1?", called in "+m(n)[f.VARIABLE_VALUE]+" on line 1 and defined in "+m(n)[f.VARIABLE_VALUE]+" on line 1":e===!0?this.EVALING===!0?" in "+m(n)[f.VARIABLE_VALUE]+"(1) : eval()'d code on line 1":" in "+m(n)[f.VARIABLE_VALUE]+" on line 1":"",(1==this.$ini.track_errors||"On"==this.$ini.track_errors)&&(m("php_errormsg")[f.VARIABLE_VALUE]=a),0!==g&&h===!1)if(void 0!==c)this.call_user_func(c,new PHP.VM.Variable(d),new PHP.VM.Variable(a),new PHP.VM.Variable(m(n)[f.VARIABLE_VALUE]),new PHP.VM.Variable(1),this.array([]));else switch(d){case l.E_ERROR:throw this[f.DISPLAY_HANDLER]=!1,new PHP.Halt(a,d,e,j);case l.E_RECOVERABLE_ERROR:throw this[f.DISPLAY_HANDLER]=!1,new PHP.Halt(a,d,e,j);case l.E_WARNING:case l.E_CORE_WARNING:case l.E_COMPILE_WARNING:case l.E_USER_WARNING:return void(0!=this.$ini.display_errors&&"Off"!=this.$ini.display_errors&&this.echo(new PHP.VM.Variable("\nWarning: "+a+e+"\n")));case l.E_PARSE:return void this.echo(new PHP.VM.Variable("\nParse error: "+a+e+"\n"));case l.E_CORE_NOTICE:case l.E_NOTICE:if(k("E_NOTICE"))return void this.echo(new PHP.VM.Variable("\nNotice: "+a+e+"\n"));break;case l.E_STRICT:return void(k("E_STRICT")&&(i?this.$strict+="Strict Standards: "+a+e+"\n":this.echo(new PHP.VM.Variable("\nStrict Standards: "+a+e+"\n"))));case l.E_DEPRECATED:if(k("E_DEPRECATED"))return void this.echo(new PHP.VM.Variable("\nDeprecated: "+a+e+"\n"));break;default:return void this.echo(new PHP.VM.Variable("\nDefault Warning: "+a+e+"\n"))}}}(PHP.Modules.prototype),PHP.Modules.prototype.array=function(){var a;return a=Array.isArray(arguments[0])?new(this.$Class.Get("ArrayObject"))(this,arguments[0]):new(this.$Class.Get("ArrayObject"))(this),new PHP.VM.Variable(a)},PHP.Modules.prototype.array_key_exists=function(a,b){var c=PHP.Compiler.prototype,d=PHP.VM.Variable.prototype;if(b[d.TYPE]===d.ARRAY){var e=b[c.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.KEYS][c.VARIABLE_VALUE],f=-1,g=a[c.VARIABLE_VALUE];return e.some(function(a,b){return a instanceof PHP.VM.Variable&&(a=a[c.VARIABLE_VALUE]),a===g?(f=b,!0):!1}),new PHP.VM.Variable(-1!==f)}},PHP.Modules.prototype.$array_merge=function(){{var a=PHP.Compiler.prototype,b=(PHP.VM.Variable.prototype,PHP.VM.Array.prototype),c=PHP.VM.Class.PROPERTY,d=this.array([]);d[a.VARIABLE_VALUE][c+b.VALUES][a.VARIABLE_VALUE].pop(),d[a.VARIABLE_VALUE][c+b.KEYS][a.VARIABLE_VALUE].pop()}return d},PHP.Modules.prototype.array_pop=function(a){{var b=PHP.Compiler.prototype,c=(PHP.VM.Variable.prototype,PHP.VM.Array.prototype),d=PHP.VM.Class.PROPERTY,e=a[b.VARIABLE_VALUE][d+c.VALUES][b.VARIABLE_VALUE].pop();a[b.VARIABLE_VALUE][d+c.KEYS][b.VARIABLE_VALUE].pop()}return this.reset(a),e},PHP.Modules.prototype.array_push=function(a){{var b=PHP.Compiler.prototype;PHP.VM.Variable.prototype}a[b.VARIABLE_VALUE][b.METHOD_CALL](this,"append",arguments[1])},PHP.Modules.prototype.array_search=function(a,b){var c=PHP.Compiler.prototype,d=PHP.VM.Variable.prototype;if(b[d.TYPE]===d.ARRAY){var e=b[c.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.VALUES][c.VARIABLE_VALUE],f=b[c.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.KEYS][c.VARIABLE_VALUE],g=-1,h=a[c.VARIABLE_VALUE];return e.some(function(a,b){return a instanceof PHP.VM.Variable&&(a=a[c.VARIABLE_VALUE]),a===h?(g=b,!0):!1}),new PHP.VM.Variable(-1!==g?f[g]:!1)}},PHP.Modules.prototype.array_shift=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype,d=PHP.VM.Array.prototype,e=PHP.VM.Class.PROPERTY;a[c.VARIABLE_TYPE]===c.FUNCTION&&this.ENV[b.ERROR]("Only variables should be passed by reference",PHP.Constants.E_STRICT,!0);{var f=a[b.VARIABLE_VALUE][e+d.VALUES][b.VARIABLE_VALUE].shift();a[b.VARIABLE_VALUE][e+d.KEYS][b.VARIABLE_VALUE].shift()}return this.reset(a),a[b.VARIABLE_VALUE][PHP.VM.Class.METHOD+"remap"](),f},PHP.Modules.prototype.array_unshift=function(a){var b,c=PHP.Compiler.prototype,d=PHP.VM.Variable.prototype,e=PHP.VM.Array.prototype,f=PHP.VM.Class.PROPERTY,g=Array.prototype.slice.call(arguments,1),h=[],i=[];g.forEach(function(a,e){h.push(a[d.IS_REF]?a:new PHP.VM.Variable(a[c.VARIABLE_VALUE])),i.push(e),b=e}),b++;var j=Array.prototype.unshift.apply(a[c.VARIABLE_VALUE][f+e.VALUES][c.VARIABLE_VALUE],h);return a[c.VARIABLE_VALUE][f+e.KEYS][c.VARIABLE_VALUE].forEach(function(d,g){"number"==typeof d&&d%1===0&&(a[c.VARIABLE_VALUE][f+e.KEYS][c.VARIABLE_VALUE][g]=d+b)}),Array.prototype.unshift.apply(a[c.VARIABLE_VALUE][f+e.KEYS][c.VARIABLE_VALUE],i),a[c.VARIABLE_VALUE][f+e.POINTER][c.VARIABLE_VALUE]-=h.length,new PHP.VM.Variable(j.length)},PHP.Modules.prototype.count=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype;if(a[c.TYPE]===c.ARRAY){var d=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.VALUES][b.VARIABLE_VALUE];return new PHP.VM.Variable(d.length)}},PHP.Modules.prototype.current=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype,d=PHP.VM.Array.prototype;if(a[c.TYPE]===c.ARRAY){var e=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.POINTER],f=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.VALUES][b.VARIABLE_VALUE];return new PHP.VM.Variable(e[b.VARIABLE_VALUE]>=f.length?!1:f[e[b.VARIABLE_VALUE]])}},PHP.Modules.prototype.each=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype,d=PHP.VM.Array.prototype,e=PHP.VM.Array.arrayItem;if(a[c.TYPE]===c.ARRAY){var f=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.POINTER],g=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.VALUES][b.VARIABLE_VALUE];if(f[b.VARIABLE_VALUE]>=g.length)return new PHP.VM.Variable(!1);var h=this.current(a),i=this.key(a);return this.next(a),this.array([e(0,i),e(1,h)])}},PHP.Modules.prototype.is_array=function(a){var b=(PHP.Compiler.prototype,PHP.VM.Variable.prototype);return new PHP.VM.Variable(a[b.TYPE]===b.ARRAY)},PHP.Modules.prototype.key=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype,d=PHP.VM.Array.prototype;if(a[c.TYPE]===c.ARRAY){var e=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.POINTER],f=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.KEYS][b.VARIABLE_VALUE];return new PHP.VM.Variable(e[b.VARIABLE_VALUE]>=f.length?!1:f[e[b.VARIABLE_VALUE]])}},PHP.Modules.prototype.list=function(){var a=PHP.Compiler.prototype,b=PHP.VM.Variable.prototype,c=PHP.VM.Array.prototype,d=Array.prototype.pop.call(arguments);if(d[b.TYPE]===b.ARRAY){var e=(d[a.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+c.POINTER],d[a.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+c.VALUES][a.VARIABLE_VALUE]);return Array.prototype.slice.call(arguments,0).forEach(function(b,c){b instanceof PHP.VM.Variable?void 0!==e[c]?b[a.VARIABLE_VALUE]=e[c][a.VARIABLE_VALUE]:(this.ENV[a.ERROR]("Undefined offset: "+c,PHP.Constants.E_NOTICE,!0),b[a.VARIABLE_VALUE]=new PHP.VM.Variable):Array.isArray(b)&&this.list.apply(this,b.concat(e[c]))},this),d}return Array.prototype.slice.call(arguments,0).forEach(function(b){b instanceof PHP.VM.Variable&&(b[a.VARIABLE_VALUE]=(new PHP.VM.Variable)[a.VARIABLE_VALUE])}),new PHP.VM.Variable(!1)},PHP.Modules.prototype.next=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype,d=PHP.VM.Array.prototype;if(a[c.TYPE]===c.ARRAY){var e=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.POINTER],f=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.VALUES][b.VARIABLE_VALUE];return e[b.VARIABLE_VALUE]++,new PHP.VM.Variable(e[b.VARIABLE_VALUE]>=f.length?!1:f[e[b.VARIABLE_VALUE]])}},PHP.Modules.prototype.reset=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype,d=PHP.VM.Array.prototype;if(a[c.TYPE]===c.ARRAY){var e=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.POINTER],f=a[b.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+d.VALUES][b.VARIABLE_VALUE];return e[b.VARIABLE_VALUE]=0,0===f.length?new PHP.VM.Variable(!1):f[0]}},PHP.Modules.prototype.class_exists=function(a,b){var c=PHP.Compiler.prototype;return new PHP.VM.Variable(void 0!==b&&b[c.VARIABLE_VALUE]!==!0||this.$Class.Exists(a[c.VARIABLE_VALUE])?this.$Class.Exists(a[c.VARIABLE_VALUE]):this.$Class.__autoload(a[c.VARIABLE_VALUE]))},PHP.Modules.prototype.get_class=function(a){var b=PHP.Compiler.prototype;return new PHP.VM.Variable(a instanceof PHP.VM.Variable?a[b.VARIABLE_VALUE][b.CLASS_NAME]:a[b.CLASS_NAME])},PHP.Modules.prototype.get_declared_classes=function(){var a=(PHP.Compiler.prototype,PHP.VM.Variable.prototype,PHP.VM.Array.arrayItem),b=[];return this.$Class.DeclaredClasses().forEach(function(c,d){b.push(a(d,c))}),this.array(b)},PHP.Modules.prototype.get_class_methods=function(a){var b,c=PHP.Compiler.prototype,d=PHP.VM.Variable.prototype,e=PHP.VM.Class.METHOD,f=[],g=0;a[d.TYPE]===d.STRING?b=this.$Class.Get(a[c.VARIABLE_VALUE]).prototype:a[d.TYPE]===d.OBJECT&&(b=a[c.VARIABLE_VALUE]);var h=PHP.VM.Array.arrayItem;for(var i in b)if(i.substring(0,e.length)===e){var j=i.substring(e.length);f.push(h(g++,b[PHP.VM.Class.METHOD_REALNAME+j]))}return this.array(f)},PHP.Modules.prototype.get_parent_class=function(a){var b,c,d=PHP.Compiler.prototype,e=PHP.VM.Variable.prototype;return b=a[e.TYPE]===e.STRING?this.$Class.Get(a[d.VARIABLE_VALUE]).prototype:Object.getPrototypeOf(a[d.VARIABLE_VALUE]),new PHP.VM.Variable(void 0===(c=Object.getPrototypeOf(b)[d.CLASS_NAME])?!1:c)},PHP.Modules.prototype.interface_exists=function(a,b){var c=PHP.Compiler.prototype;return new PHP.VM.Variable(void 0!==b&&b[c.VARIABLE_VALUE]!==!0||this.$Class.Exists(a[c.VARIABLE_VALUE])?this.$Class.Exists(a[c.VARIABLE_VALUE]):this.$Class.__autoload(a[c.VARIABLE_VALUE]))},PHP.Modules.prototype.is_subclass_of=function(a,b){var c,d,e=PHP.Compiler.prototype,f=PHP.VM.Variable.prototype,g=b[e.VARIABLE_VALUE];for(c=a[f.TYPE]===f.STRING?this.$Class.Get(a[e.VARIABLE_VALUE]).prototype:Object.getPrototypeOf(a[e.VARIABLE_VALUE]);void 0!==(d=Object.getPrototypeOf(c)[e.CLASS_NAME])&&d!==g;);return new PHP.VM.Variable(void 0===d?!1:!0)},PHP.Modules.prototype.method_exists=function(a,b){var c=PHP.VM.Variable.prototype,d=PHP.Compiler.prototype;return a instanceof PHP.VM.Variable&&a[c.TYPE]===c.STRING&&(a=this.$Class.Get(a[d.VARIABLE_VALUE]).prototype),a instanceof PHP.VM.Variable?(a[c.TYPE]===c.STRING&&(a=this.$Class.Get(a[d.VARIABLE_VALUE]).prototype),new PHP.VM.Variable(void 0!==a[d.VARIABLE_VALUE][PHP.VM.Class.METHOD+b[d.VARIABLE_VALUE].toLowerCase()])):new PHP.VM.Variable(void 0!==a[PHP.VM.Class.METHOD+b[d.VARIABLE_VALUE].toLowerCase()])},PHP.Modules.prototype.$foreachInit=function(a,b){var c=PHP.Compiler.prototype,d=PHP.VM.Variable.prototype,e=PHP.VM.Array.prototype,f=a[c.VARIABLE_VALUE];if(a[d.TYPE]===d.ARRAY){var g=f[PHP.VM.Class.PROPERTY+e.POINTER];return g[c.VARIABLE_VALUE]=0,{len:f[PHP.VM.Class.PROPERTY+e.VALUES][c.VARIABLE_VALUE].length,expr:a,clone:f[c.METHOD_CALL](this,c.ARRAY_CLONE)}}if(a[d.TYPE]===d.OBJECT){var h=f;if(-1!==h[PHP.VM.Class.INTERFACES].indexOf("Traversable")){var i=h;try{for(;i instanceof PHP.VM.ClassPrototype&&-1===i[PHP.VM.Class.INTERFACES].indexOf("Iterator");)i=i[c.METHOD_CALL](this,"getIterator")[c.VARIABLE_VALUE]}catch(j){}return i instanceof PHP.VM.ClassPrototype&&-1!==i[PHP.VM.Class.INTERFACES].indexOf("Iterator")?(i[c.METHOD_CALL](this,"rewind"),{expr:a,Class:i}):void this[c.ERROR]("Objects returned by "+h[c.CLASS_NAME]+"::getIterator() must be traversable or implement interface Iterator",PHP.Constants.E_ERROR,!0)}var k=PHP.VM.Class.PROPERTY;return{expr:a,pointer:0,keys:function(a){var c=[],d=!1;for(var e in a){if(e.substring(0,k.length)===k){var f=e.substring(k.length);PHP.Utils.Visible.call(this,f,a,b)&&c.push(f)}(a[PHP.VM.Class.PROPERTY_TYPE+f]&PHP.VM.Class.PUBLIC)===PHP.VM.Class.PUBLIC||void 0===a[PHP.VM.Class.PROPERTY_TYPE+f]||(d=!0)}return d&&c.sort(),c}.bind(this)(h)}}this[c.ERROR]("Invalid argument supplied for foreach()",PHP.Constants.E_CORE_WARNING,!0)},PHP.Modules.prototype.$foreachEnd=function(a){var b=PHP.Compiler.prototype;void 0!==a&&void 0!==a.Class&&a.Class[b.CLASS_DESTRUCT]()},PHP.Modules.prototype.foreach=function(a,b,c,d){var e,f=PHP.Compiler.prototype,g=PHP.VM.Variable.prototype,h=PHP.VM.Array.prototype;if(void 0===a||void 0===a.expr)return!1;if(e=a.expr,void 0===a.count&&(a.count=0),e[g.TYPE]===g.ARRAY){var i,j,k=a.clone[PHP.VM.Class.PROPERTY+h.VALUES][f.VARIABLE_VALUE],l=a.clone[PHP.VM.Class.PROPERTY+h.KEYS][f.VARIABLE_VALUE],m=e[f.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+h.VALUES][f.VARIABLE_VALUE],n=e[f.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+h.KEYS][f.VARIABLE_VALUE],o=(b===!0||a.expr[g.IS_REF]===!0?m.length:a.len,(b===!0||a.expr[g.IS_REF]===!0?e[f.VARIABLE_VALUE]:a.clone)[PHP.VM.Class.PROPERTY+h.POINTER]),p=b===!0||a.expr[g.IS_REF]===!0?m:k,q=function(a){for(;void 0===p[--a]&&a>0;);return a};return a.breakNext===!0?!1:(j=o[f.VARIABLE_VALUE]!==a.count?void 0!==a.last&&a.last!==p[o[f.VARIABLE_VALUE]]?o[f.VARIABLE_VALUE]:void 0!==p[a.count]?a.count:void 0!==p[o[f.VARIABLE_VALUE]]?o[f.VARIABLE_VALUE]:q(o[f.VARIABLE_VALUE]):void 0!==p[a.count]?a.count:q(o[f.VARIABLE_VALUE]),i=b===!0||a.expr[g.IS_REF]===!0?void 0!==m[o[f.VARIABLE_VALUE]]&&(a.count<=m.length||a.diff||a.first!==m[0]):void 0!==k[a.count],a.first=m[0],a.last=p[j],a.diff=a.count===m.length,i===!0&&(b===!0||a.expr[g.IS_REF]===!0?c[g.REF](m[j]):c[f.VARIABLE_VALUE]=k[a.count][f.VARIABLE_VALUE],d instanceof PHP.VM.Variable&&(d[f.VARIABLE_VALUE]=b===!0||a.expr[g.IS_REF]===!0?n[j]:l[j]),a.prev=m[j],a.count++,e[f.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+h.POINTER][f.VARIABLE_VALUE]++,a.clone[PHP.VM.Class.PROPERTY+h.POINTER][f.VARIABLE_VALUE]++,(b===!0||a.expr[g.IS_REF]===!0)&&e[f.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+h.POINTER][f.VARIABLE_VALUE]>=m.length&&(a.breakNext=!0)),i)}if(e[g.TYPE]===g.OBJECT){var r=e[f.VARIABLE_VALUE];if(-1!==r[PHP.VM.Class.INTERFACES].indexOf("Traversable")){b===!0&&this.ENV[PHP.Compiler.prototype.ERROR]("An iterator cannot be used with foreach by reference",PHP.Constants.E_ERROR,!0),void 0===a.first?a.first=!0:a.Class[f.METHOD_CALL](this,"next")[g.DEFINED]!==!0&&this.ENV[PHP.Compiler.prototype.ERROR]("Undefined offset: 3",PHP.Constants.E_NOTICE,!0);var i=a.Class[f.METHOD_CALL](this,"valid")[g.CAST_BOOL][f.VARIABLE_VALUE];return i===!0&&(c[f.VARIABLE_VALUE]=a.Class[f.METHOD_CALL](this,"current")[f.VARIABLE_VALUE],d instanceof PHP.VM.Variable&&(d[f.VARIABLE_VALUE]=a.Class[f.METHOD_CALL](this,"key")[f.VARIABLE_VALUE])),i}return a.pointer=j){this[d.DISPLAY_HANDLER]=!0;var g=this[l[e]].call(this,new PHP.VM.Variable(a),new PHP.VM.Variable(h[e]));if(j=0,this[d.DISPLAY_HANDLER]=void 0,g[f.TYPE]!==f.NULL)return g[d.VARIABLE_VALUE]}return""}return a},a.ob_clean=function(){if(!this[d.SIGNATURE](arguments,"ob_clean",0,[]))return new PHP.VM.Variable(null);var a=i.length-1;return i[a]===!1?(this[d.ERROR]("ob_clean(): failed to delete buffer of "+l[a]+" (0)",PHP.Constants.E_CORE_NOTICE,!0),new PHP.VM.Variable(!1)):this[d.OUTPUT_BUFFERS].length>1?(this[d.OUTPUT_BUFFERS].pop(),this[d.OUTPUT_BUFFERS].push(""),new PHP.VM.Variable(!0)):(this[d.ERROR]("ob_clean(): failed to delete buffer. No buffer to delete",PHP.Constants.E_CORE_NOTICE,!0),new PHP.VM.Variable(!1))},a.$obflush=function(){var a=this[d.OUTPUT_BUFFERS].length-1,b=(PHP.VM.Variable.prototype,this[d.OUTPUT_BUFFERS][a]);this[d.OUTPUT_BUFFERS][a]="";var c=this.$flush.call(this,b);this[d.OUTPUT_BUFFERS][a]=c},a.ob_start=function(a,b,j){var k="ob_start",m=PHP.VM.Variable.prototype;if(!this[PHP.Compiler.prototype.SIGNATURE](arguments,k,-3,[null,m.INT,m.INT]))return new PHP.VM.Variable(null);if(void 0!==a){var n,o=!1;if(a[m.TYPE]!==m.STRING&&a[m.TYPE]!==m.ARRAY&&a[m.TYPE]!==m.LAMBDA)this[d.ERROR](k+"(): no array or string given",PHP.Constants.E_WARNING,!0),o=!0;else if(a[m.TYPE]===m.ARRAY||a[m.TYPE]===m.STRING&&(n=a[d.VARIABLE_VALUE].split("::")).length>1){var p,q;a[m.TYPE]===m.STRING?(p=new PHP.VM.Variable(n[0]),q=new PHP.VM.Variable(n[1])):(p=a[d.DIM_FETCH](this,new PHP.VM.Variable(0)),q=a[d.DIM_FETCH](this,new PHP.VM.Variable(1)),2!==this.count(a)[d.VARIABLE_VALUE]&&(this[d.ERROR](k+"(): array must have exactly two members",PHP.Constants.E_WARNING,!0),o=!0)),o||(p[m.TYPE]===m.STRING&&this.class_exists(p)[d.VARIABLE_VALUE]===!1?(this[d.ERROR](k+"(): class '"+PHP.Utils.ClassName(p)+"' not found",PHP.Constants.E_WARNING,!0),o=!0):this.method_exists(p,q)[d.VARIABLE_VALUE]===!1&&(this[d.ERROR](k+"(): class '"+PHP.Utils.ClassName(p)+"' does not have a method '"+q[d.VARIABLE_VALUE]+"'",PHP.Constants.E_WARNING,!0),o=!0))}else a[m.TYPE]===m.STRING&&this.function_exists(a)[d.VARIABLE_VALUE]===!1&&(this[d.ERROR](k+"(): function '"+a[d.VARIABLE_VALUE]+"' not found or invalid function name",PHP.Constants.E_WARNING,!0),o=!0);if(o)return this[d.ERROR](k+"(): failed to create buffer",PHP.Constants.E_CORE_NOTICE,!0),new PHP.VM.Variable(!1)}var r,s=c;return void 0!==a?(s=a[d.VARIABLE_VALUE],r=f.PHP_OUTPUT_HANDLER_START):r=f.PHP_OUTPUT_HANDLER_WRITE,this[e].push(""),h.push(r),g.push(f.PHP_OUTPUT_HANDLER_STDFLAGS|r),l.push(s),i.push(void 0===j||j[d.VARIABLE_VALUE]===!0?!0:!1),new PHP.VM.Variable(!0)},a.ob_end_clean=function(){var a="ob_end_clean";if(!this[PHP.Compiler.prototype.SIGNATURE](arguments,a,0,[]))return new PHP.VM.Variable(null);var c=i.length-1;return i[c]===!1?(this[d.ERROR](a+"(): failed to discard buffer of "+l[c]+" (0)",PHP.Constants.E_CORE_NOTICE,!0),new PHP.VM.Variable(!1)):this[d.OUTPUT_BUFFERS].length>1?(this[e].pop(),b(),new PHP.VM.Variable(!0)):(this[d.ERROR](a+k,PHP.Constants.E_CORE_NOTICE,!0),new PHP.VM.Variable(!1))},a.ob_end_flush=function(){var a="ob_end_flush";if(!this[PHP.Compiler.prototype.SIGNATURE](arguments,a,0,[]))return new PHP.VM.Variable(null);var c=i.length-1;if(i[c]===!1)return this[d.ERROR](a+"(): failed to send buffer of "+l[c]+" (0)",PHP.Constants.E_CORE_NOTICE,!0),new PHP.VM.Variable(!1);if(this[d.OUTPUT_BUFFERS].length>1){var f=this[e].pop();return this[e][this[e].length-1]+=this.$flush(f,1),b(),new PHP.VM.Variable(!0)}return this[d.ERROR](a+"(): failed to delete and flush buffer. No buffer to delete or flush",PHP.Constants.E_CORE_NOTICE,!0),new PHP.VM.Variable(!1)},a.ob_get_flush=function(){var a="ob_get_flush";this[d.DISPLAY_HANDLER]===!0&&this[d.ERROR]("ob_get_flush(): Cannot use output buffering in output buffering display handlers",PHP.Constants.E_ERROR,!0);var c=i.length-1,f=this[e][this[e].length-1];return i[c]===!1?(this[d.ERROR](a+"(): failed to send buffer of "+l[c]+" (0)",PHP.Constants.E_CORE_NOTICE,!0),this[d.ERROR](a+"(): failed to delete buffer of "+l[c]+" (0)",PHP.Constants.E_CORE_NOTICE,!0)):(this[e].pop(),this[e][this[e].length-1]+=this.$flush(f,1),b()),new PHP.VM.Variable(f)},a.ob_get_clean=function(){var a="ob_get_clean";if(!this[PHP.Compiler.prototype.SIGNATURE](arguments,a,0,[]))return new PHP.VM.Variable(null);var c=i.length-1;if(this[e].length>1){var f=this[e][this[e].length-1];return i[c]===!1?(this[d.ERROR](a+"(): failed to discard buffer of "+l[c]+" (0)",PHP.Constants.E_CORE_NOTICE,!0),this[d.ERROR](a+"(): failed to delete buffer of "+l[c]+" (0)",PHP.Constants.E_CORE_NOTICE,!0)):(this[e].pop(),b()),new PHP.VM.Variable(f)}return new PHP.VM.Variable(!1)},a.ob_list_handlers=function(){return PHP.VM.Array.fromObject.call(this,l)},a.ob_get_status=function(a){var b=PHP.VM.Array.arrayItem,c=function(a){return[b("name",l[a]),b("type",h[a]),b("flags",g[a]),b("level",a),b("chunk_size",0),b("buffer_size",16384),b("buffer_used",this[e][a+1].length)]}.bind(this);if(1===this[e].length)return this.array([]);if(void 0!==a&&a[d.VARIABLE_VALUE]===!0){var f=[];return l.forEach(function(a,d){f.push(b(d,this.array(c(d))))},this),this.array(f)}return this.array(c(l.length-1))},a.ob_implicit_flush=function(){var a="ob_implicit_flush";return this[PHP.Compiler.prototype.SIGNATURE](arguments,a,-1,[])?new PHP.VM.Variable:new PHP.VM.Variable(null)}}(PHP.Modules.prototype),PHP.Modules.prototype.ob_flush=function(){var a="ob_flush",b=PHP.Compiler.prototype;if(!this[PHP.Compiler.prototype.SIGNATURE](arguments,a,0,[]))return new PHP.VM.Variable(null);if(this[b.OUTPUT_BUFFERS].length>1){var c=this[PHP.Compiler.prototype.OUTPUT_BUFFERS].pop();return this[PHP.Compiler.prototype.OUTPUT_BUFFERS][this[PHP.Compiler.prototype.OUTPUT_BUFFERS].length-1]+=c,this[PHP.Compiler.prototype.OUTPUT_BUFFERS].push(""),this.$obflush(),new PHP.VM.Variable(!0)}return this.ENV[b.ERROR](a+"(): failed to flush buffer. No buffer to flush",PHP.Constants.E_CORE_NOTICE,!0),new PHP.VM.Variable(!1)},PHP.Modules.prototype.ob_get_contents=function(){var a="ob_get_contents",b=PHP.Compiler.prototype;return new PHP.VM.Variable(this[PHP.Compiler.prototype.SIGNATURE](arguments,a,0,[])?this[b.OUTPUT_BUFFERS].length>1?this[PHP.Compiler.prototype.OUTPUT_BUFFERS][this[PHP.Compiler.prototype.OUTPUT_BUFFERS].length-1]:!1:null)},PHP.Modules.prototype.ob_get_length=function(){var a="ob_get_length",b=PHP.Compiler.prototype;return new PHP.VM.Variable(this[PHP.Compiler.prototype.SIGNATURE](arguments,a,0,[])?this[b.OUTPUT_BUFFERS].length>1?this[PHP.Compiler.prototype.OUTPUT_BUFFERS][this[PHP.Compiler.prototype.OUTPUT_BUFFERS].length-1].length:!1:null)},PHP.Modules.prototype.ob_get_level=function(){var a="ob_get_level",b=PHP.Compiler.prototype;return new PHP.VM.Variable(this[b.SIGNATURE](arguments,a,0,[])?this[b.OUTPUT_BUFFERS].length-1:null)},PHP.Modules.prototype.preg_match=function(a,b){var c=PHP.Compiler.prototype,d=new RegExp(a[c.VARIABLE_VALUE].substr(1,a[c.VARIABLE_VALUE].length-2)),e=b[c.VARIABLE_VALUE].toString().match(d);return new PHP.VM.Variable(null===e?0:e.length)},PHP.Modules.prototype.echo=function(){var a=PHP.Compiler.prototype,b=PHP.VM.Variable.prototype;Array.prototype.slice.call(arguments).forEach(function(c){if(c instanceof PHP.VM.VariableProto){var d=c[b.CAST_STRING][a.VARIABLE_VALUE];if(c[b.TYPE]===b.FLOAT)this.$ob(d.toString().replace(/\./,this.$locale.decimal_point));else{if(c[b.TYPE]===b.BOOL&&1!=d)return;c[b.TYPE]!==b.NULL&&this.$ob(d)}}else this.$ob(c)},this)},PHP.Modules.prototype.explode=function(a,b){var c=PHP.VM.Variable.prototype,d=PHP.Compiler.prototype,e=PHP.VM.Array.arrayItem;if(b[c.TYPE]===c.STRING){var f=b[d.VARIABLE_VALUE].split(a[d.VARIABLE_VALUE]),g=[];return f.forEach(function(a,b){g.push(e(b,a))}),this.array(g)}},PHP.Modules.prototype.implode=function(a,b){var c=PHP.VM.Variable.prototype,d=PHP.Compiler.prototype;a[c.TYPE]===c.ARRAY?(b=a,a=""):a=a[d.VARIABLE_VALUE];var e=b[d.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.VALUES][d.VARIABLE_VALUE];return new PHP.VM.Variable(e.map(function(a){return a[d.VARIABLE_VALUE]}).join(a))},PHP.Modules.prototype.localeconv=function(){var a=(PHP.Compiler.prototype,PHP.VM.Variable.prototype,PHP.VM.Array.arrayItem),b=this.$locale;return this.array([a("decimal_point",b.decimal_point),a("thousands_sep",b.thousands_sep)])},PHP.Modules.prototype.parse_str=function(){},PHP.Modules.prototype.print=function(a){return this.echo(a),new PHP.VM.Variable(1)},PHP.Modules.prototype.printf=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype;if(a instanceof PHP.VM.VariableProto){var d=a[c.CAST_STRING][b.VARIABLE_VALUE];"stdClass"===a[b.VARIABLE_VALUE][b.CLASS_NAME]&&(this.ENV[b.ERROR]("Object of class stdClass to string conversion",PHP.Constants.E_NOTICE,!0),d="Object"),a[c.TYPE]!==c.NULL&&(Array.prototype.slice.call(arguments,1).forEach(function(a){d=d.replace(/%./,a[b.VARIABLE_VALUE])}),this.$ob(d))}},PHP.Modules.prototype.setlocale=function(a){{var b,c,d=PHP.Compiler.prototype;PHP.VM.Variable.prototype,a[d.VARIABLE_VALUE]}return Array.prototype.slice.call(arguments,1).some(function(a){var e=a[d.VARIABLE_VALUE];return Object.keys(PHP.Locales).some(function(a){return a===e?(c=a,b=PHP.Locales[a],!0):!1})}),void 0===b?new PHP.VM.Variable(!1):(Object.keys(this.$locale).forEach(function(a){void 0!==b[a]&&(this.$locale[a]=b[a])},this),new PHP.VM.Variable(c))},PHP.Modules.prototype.sprintf=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype;if(a instanceof PHP.VM.VariableProto){var d=a[c.CAST_STRING][b.VARIABLE_VALUE];if(a[c.TYPE]!==c.NULL)return Array.prototype.slice.call(arguments,1).forEach(function(a){d=d.replace(/%./,a[c.CAST_STRING][b.VARIABLE_VALUE])}),new PHP.VM.Variable(d)}},PHP.Modules.prototype.str_repeat=function(a,b){for(var c=PHP.Compiler.prototype,d=(PHP.VM.Variable.prototype,a[c.VARIABLE_VALUE]),e="",f=0,g=b[c.VARIABLE_VALUE];g>f;f++)e+=d;return new PHP.VM.Variable(e)},PHP.Modules.prototype.str_replace=function(a,b,c){var d=PHP.Compiler.prototype,e=new RegExp(a[d.VARIABLE_VALUE],"g");return new PHP.VM.Variable(c[d.VARIABLE_VALUE].replace(e,b[d.VARIABLE_VALUE]))},PHP.Modules.prototype.str_rot13=function(){var a="str_rot13";return this[PHP.Compiler.prototype.SIGNATURE](arguments,a,1,[])?void 0:new PHP.VM.Variable(null)},PHP.Modules.prototype.strlen=function(a){var b=PHP.Compiler.prototype;return new PHP.VM.Variable(a[b.VARIABLE_VALUE].length)},PHP.Modules.prototype.strncmp=function(a,b,c){var d=PHP.Compiler.prototype,e=PHP.VM.Variable.prototype;return new PHP.VM.Variable(a[e.CAST_STRING][d.VARIABLE_VALUE].substring(0,c[d.VARIABLE_VALUE])===b[e.CAST_STRING][d.VARIABLE_VALUE].substring(0,c[d.VARIABLE_VALUE])?0:1)},PHP.Modules.prototype.strtolower=function(a){var b=(PHP.VM.Variable.prototype,PHP.Compiler.prototype);return new PHP.VM.Variable(a[b.VARIABLE_VALUE].toLowerCase())},PHP.Modules.prototype.strtoupper=function(a){var b=(PHP.VM.Variable.prototype,PHP.Compiler.prototype);return new PHP.VM.Variable(a[b.VARIABLE_VALUE].toUpperCase())},PHP.Modules.prototype.trim=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype;return a[c.TYPE]!==c.STRING&&(a=a[c.CAST_STRING]),new PHP.VM.Variable(a[b.VARIABLE_VALUE].toString().trim())},PHP.Constants.T_INCLUDE=262,PHP.Constants.T_INCLUDE_ONCE=261,PHP.Constants.T_EVAL=260,PHP.Constants.T_REQUIRE=259,PHP.Constants.T_REQUIRE_ONCE=258,PHP.Constants.T_LOGICAL_OR=263,PHP.Constants.T_LOGICAL_XOR=264,PHP.Constants.T_LOGICAL_AND=265,PHP.Constants.T_PRINT=266,PHP.Constants.T_PLUS_EQUAL=277,PHP.Constants.T_MINUS_EQUAL=276,PHP.Constants.T_MUL_EQUAL=275,PHP.Constants.T_DIV_EQUAL=274,PHP.Constants.T_CONCAT_EQUAL=273,PHP.Constants.T_MOD_EQUAL=272,PHP.Constants.T_AND_EQUAL=271,PHP.Constants.T_OR_EQUAL=270,PHP.Constants.T_XOR_EQUAL=269,PHP.Constants.T_SL_EQUAL=268,PHP.Constants.T_SR_EQUAL=267,PHP.Constants.T_BOOLEAN_OR=278,PHP.Constants.T_BOOLEAN_AND=279,PHP.Constants.T_IS_EQUAL=283,PHP.Constants.T_IS_NOT_EQUAL=282,PHP.Constants.T_IS_IDENTICAL=281,PHP.Constants.T_IS_NOT_IDENTICAL=280,PHP.Constants.T_IS_SMALLER_OR_EQUAL=285,PHP.Constants.T_IS_GREATER_OR_EQUAL=284,PHP.Constants.T_SL=287,PHP.Constants.T_SR=286,PHP.Constants.T_INSTANCEOF=288,PHP.Constants.T_INC=297,PHP.Constants.T_DEC=296,PHP.Constants.T_INT_CAST=295,PHP.Constants.T_DOUBLE_CAST=294,PHP.Constants.T_STRING_CAST=293,PHP.Constants.T_ARRAY_CAST=292,PHP.Constants.T_OBJECT_CAST=291,PHP.Constants.T_BOOL_CAST=290,PHP.Constants.T_UNSET_CAST=289,PHP.Constants.T_NEW=299,PHP.Constants.T_CLONE=298,PHP.Constants.T_EXIT=300,PHP.Constants.T_IF=301,PHP.Constants.T_ELSEIF=302,PHP.Constants.T_ELSE=303,PHP.Constants.T_ENDIF=304,PHP.Constants.T_LNUMBER=305,PHP.Constants.T_DNUMBER=306,PHP.Constants.T_STRING=307,PHP.Constants.T_STRING_VARNAME=308,PHP.Constants.T_VARIABLE=309,PHP.Constants.T_NUM_STRING=310,PHP.Constants.T_INLINE_HTML=311,PHP.Constants.T_CHARACTER=312,PHP.Constants.T_BAD_CHARACTER=313,PHP.Constants.T_ENCAPSED_AND_WHITESPACE=314,PHP.Constants.T_CONSTANT_ENCAPSED_STRING=315,PHP.Constants.T_ECHO=316,PHP.Constants.T_DO=317,PHP.Constants.T_WHILE=318,PHP.Constants.T_ENDWHILE=319,PHP.Constants.T_FOR=320,PHP.Constants.T_ENDFOR=321,PHP.Constants.T_FOREACH=322,PHP.Constants.T_ENDFOREACH=323,PHP.Constants.T_DECLARE=324,PHP.Constants.T_ENDDECLARE=325,PHP.Constants.T_AS=326,PHP.Constants.T_SWITCH=327,PHP.Constants.T_ENDSWITCH=328,PHP.Constants.T_CASE=329,PHP.Constants.T_DEFAULT=330,PHP.Constants.T_BREAK=331,PHP.Constants.T_CONTINUE=332,PHP.Constants.T_GOTO=333,PHP.Constants.T_FUNCTION=334,PHP.Constants.T_CONST=335,PHP.Constants.T_RETURN=336,PHP.Constants.T_TRY=337,PHP.Constants.T_CATCH=338,PHP.Constants.T_THROW=339,PHP.Constants.T_USE=340,PHP.Constants.T_GLOBAL=341,PHP.Constants.T_STATIC=347,PHP.Constants.T_ABSTRACT=346,PHP.Constants.T_FINAL=345,PHP.Constants.T_PRIVATE=344,PHP.Constants.T_PROTECTED=343,PHP.Constants.T_PUBLIC=342,PHP.Constants.T_VAR=348,PHP.Constants.T_UNSET=349,PHP.Constants.T_ISSET=350,PHP.Constants.T_EMPTY=351,PHP.Constants.T_HALT_COMPILER=352,PHP.Constants.T_CLASS=353,PHP.Constants.T_TRAIT=382,PHP.Constants.T_INTERFACE=354,PHP.Constants.T_EXTENDS=355,PHP.Constants.T_IMPLEMENTS=356,PHP.Constants.T_OBJECT_OPERATOR=357,PHP.Constants.T_DOUBLE_ARROW=358,PHP.Constants.T_LIST=359,PHP.Constants.T_ARRAY=360,PHP.Constants.T_CLASS_C=361,PHP.Constants.T_TRAIT_C=381,PHP.Constants.T_METHOD_C=362,PHP.Constants.T_FUNC_C=363,PHP.Constants.T_LINE=364,PHP.Constants.T_FILE=365,PHP.Constants.T_COMMENT=366,PHP.Constants.T_DOC_COMMENT=367,PHP.Constants.T_OPEN_TAG=368,PHP.Constants.T_OPEN_TAG_WITH_ECHO=369,PHP.Constants.T_CLOSE_TAG=370,PHP.Constants.T_WHITESPACE=371,PHP.Constants.T_START_HEREDOC=372,PHP.Constants.T_END_HEREDOC=373,PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES=374,PHP.Constants.T_CURLY_OPEN=375,PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM=376,PHP.Constants.T_DOUBLE_COLON=376,PHP.Constants.T_NAMESPACE=377,PHP.Constants.T_NS_C=378,PHP.Constants.T_DIR=379,PHP.Constants.T_NS_SEPARATOR=380,PHP.Modules.prototype.token_get_all=function(a){var b=PHP.VM.Variable.prototype,c=PHP.Compiler.prototype;if(!this[c.SIGNATURE](arguments,"token_get_all",1,[[b.STRING,b.NULL]]))return new PHP.VM.Variable(null);switch(a[b.TYPE]){case b.BOOL:return a[c.VARIABLE_VALUE]===!0?PHP.VM.Array.fromObject.call(this,PHP.Lexer("1")):PHP.VM.Array.fromObject.call(this,PHP.Lexer(null));case b.STRING:case b.NULL:return PHP.VM.Array.fromObject.call(this,PHP.Lexer(a[c.VARIABLE_VALUE]));default:return PHP.VM.Array.fromObject.call(this,PHP.Lexer(a[b.CAST_STRING][c.VARIABLE_VALUE]))}},PHP.Modules.prototype.token_name=function(a){if(!this[PHP.Compiler.prototype.SIGNATURE](arguments,"token_name",1,[PHP.VM.Variable.prototype.INT]))return new PHP.VM.Variable(null);var b={};b.T_INCLUDE=262,b.T_INCLUDE_ONCE=261,b.T_EVAL=260,b.T_REQUIRE=259,b.T_REQUIRE_ONCE=258,b.T_LOGICAL_OR=263,b.T_LOGICAL_XOR=264,b.T_LOGICAL_AND=265,b.T_PRINT=266,b.T_PLUS_EQUAL=277,b.T_MINUS_EQUAL=276,b.T_MUL_EQUAL=275,b.T_DIV_EQUAL=274,b.T_CONCAT_EQUAL=273,b.T_MOD_EQUAL=272,b.T_AND_EQUAL=271,b.T_OR_EQUAL=270,b.T_XOR_EQUAL=269,b.T_SL_EQUAL=268,b.T_SR_EQUAL=267,b.T_BOOLEAN_OR=278,b.T_BOOLEAN_AND=279,b.T_IS_EQUAL=283,b.T_IS_NOT_EQUAL=282,b.T_IS_IDENTICAL=281,b.T_IS_NOT_IDENTICAL=280,b.T_IS_SMALLER_OR_EQUAL=285,b.T_IS_GREATER_OR_EQUAL=284,b.T_SL=287,b.T_SR=286,b.T_INSTANCEOF=288,b.T_INC=297,b.T_DEC=296,b.T_INT_CAST=295,b.T_DOUBLE_CAST=294,b.T_STRING_CAST=293,b.T_ARRAY_CAST=292,b.T_OBJECT_CAST=291,b.T_BOOL_CAST=290,b.T_UNSET_CAST=289,b.T_NEW=299,b.T_CLONE=298,b.T_EXIT=300,b.T_IF=301,b.T_ELSEIF=302,b.T_ELSE=303,b.T_ENDIF=304,b.T_LNUMBER=305,b.T_DNUMBER=306,b.T_STRING=307,b.T_STRING_VARNAME=308,b.T_VARIABLE=309,b.T_NUM_STRING=310,b.T_INLINE_HTML=311,b.T_CHARACTER=312,b.T_BAD_CHARACTER=313,b.T_ENCAPSED_AND_WHITESPACE=314,b.T_CONSTANT_ENCAPSED_STRING=315,b.T_ECHO=316,b.T_DO=317,b.T_WHILE=318,b.T_ENDWHILE=319,b.T_FOR=320,b.T_ENDFOR=321,b.T_FOREACH=322,b.T_ENDFOREACH=323,b.T_DECLARE=324,b.T_ENDDECLARE=325,b.T_AS=326,b.T_SWITCH=327,b.T_ENDSWITCH=328,b.T_CASE=329,b.T_DEFAULT=330,b.T_BREAK=331,b.T_CONTINUE=332,b.T_GOTO=333,b.T_FUNCTION=334,b.T_CONST=335,b.T_RETURN=336,b.T_TRY=337,b.T_CATCH=338,b.T_THROW=339,b.T_USE=340,b.T_GLOBAL=341,b.T_STATIC=347,b.T_ABSTRACT=346,b.T_FINAL=345,b.T_PRIVATE=344,b.T_PROTECTED=343,b.T_PUBLIC=342,b.T_VAR=348,b.T_UNSET=349,b.T_ISSET=350,b.T_EMPTY=351,b.T_HALT_COMPILER=352,b.T_CLASS=353,b.T_INTERFACE=354,b.T_EXTENDS=355,b.T_IMPLEMENTS=356,b.T_OBJECT_OPERATOR=357,b.T_DOUBLE_ARROW=358,b.T_LIST=359,b.T_ARRAY=360,b.T_CLASS_C=361,b.T_METHOD_C=362,b.T_FUNC_C=363,b.T_LINE=364,b.T_FILE=365,b.T_COMMENT=366,b.T_DOC_COMMENT=367,b.T_OPEN_TAG=368,b.T_OPEN_TAG_WITH_ECHO=369,b.T_CLOSE_TAG=370,b.T_WHITESPACE=371,b.T_START_HEREDOC=372,b.T_END_HEREDOC=373,b.T_DOLLAR_OPEN_CURLY_BRACES=374,b.T_CURLY_OPEN=375,b.T_DOUBLE_COLON=376,b.T_PAAMAYIM_NEKUDOTAYIM=376,b.T_NAMESPACE=377,b.T_NS_C=378,b.T_DIR=379,b.T_NS_SEPARATOR=380;for(var c in b)if(b[c]===a[PHP.Compiler.prototype.VARIABLE_VALUE])return new PHP.VM.Variable(c);return new PHP.VM.Variable("UNKNOWN")},PHP.Constants.CONNECTION_ABORTED=1,PHP.Constants.CONNECTION_NORMAL=0,PHP.Constants.CONNECTION_TIMEOUT=2,PHP.Constants.INI_USER=1,PHP.Constants.INI_PERDIR=2,PHP.Constants.INI_SYSTEM=4,PHP.Constants.INI_ALL=7,PHP.Constants.INI_SCANNER_NORMAL=0,PHP.Constants.INI_SCANNER_RAW=1,PHP.Constants.PHP_URL_SCHEME=0,PHP.Constants.PHP_URL_HOST=1,PHP.Constants.PHP_URL_PORT=2,PHP.Constants.PHP_URL_USER=3,PHP.Constants.PHP_URL_PASS=4,PHP.Constants.PHP_URL_PATH=5,PHP.Constants.PHP_URL_QUERY=6,PHP.Constants.PHP_URL_FRAGMENT=7,PHP.Constants.PHP_QUERY_RFC1738=1,PHP.Constants.PHP_QUERY_RFC3986=2,PHP.Constants.M_E=2.718281828459,PHP.Constants.M_LOG2E=1.442695040889,PHP.Constants.M_LOG10E=.43429448190325,PHP.Constants.M_LN2=.69314718055995,PHP.Constants.M_LN10=2.302585092994,PHP.Constants.M_PI=3.1415926535898,PHP.Constants.M_PI_2=1.5707963267949,PHP.Constants.M_PI_4=.78539816339745,PHP.Constants.M_1_PI=.31830988618379,PHP.Constants.M_2_PI=.63661977236758,PHP.Constants.M_SQRTPI=1.7724538509055,PHP.Constants.M_2_SQRTPI=1.1283791670955,PHP.Constants.M_LNPI=1.1447298858494,PHP.Constants.M_EULER=.57721566490153,PHP.Constants.M_SQRT2=1.4142135623731,PHP.Constants.M_SQRT1_2=.70710678118655,PHP.Constants.M_SQRT3=1.7320508075689,PHP.Constants.INF="INF",PHP.Constants.NAN="NAN",PHP.Constants.PHP_ROUND_HALF_UP=1,PHP.Constants.PHP_ROUND_HALF_DOWN=2,PHP.Constants.PHP_ROUND_HALF_EVEN=3,PHP.Constants.PHP_ROUND_HALF_ODD=4,PHP.Constants.INFO_GENERAL=1,PHP.Constants.INFO_CREDITS=2,PHP.Constants.INFO_CONFIGURATION=4,PHP.Constants.INFO_MODULES=8,PHP.Constants.INFO_ENVIRONMENT=16,PHP.Constants.INFO_VARIABLES=32,PHP.Constants.INFO_LICENSE=64,PHP.Constants.INFO_ALL=-1,PHP.Constants.CREDITS_GROUP=1,PHP.Constants.CREDITS_GENERAL=2,PHP.Constants.CREDITS_SAPI=4,PHP.Constants.CREDITS_MODULES=8,PHP.Constants.CREDITS_DOCS=16,PHP.Constants.CREDITS_FULLPAGE=32,PHP.Constants.CREDITS_QA=64,PHP.Constants.CREDITS_ALL=-1,PHP.Constants.HTML_SPECIALCHARS=0,PHP.Constants.HTML_ENTITIES=1,PHP.Constants.ENT_COMPAT=2,PHP.Constants.ENT_QUOTES=3,PHP.Constants.ENT_NOQUOTES=0,PHP.Constants.ENT_IGNORE=4,PHP.Constants.ENT_SUBSTITUTE=8,PHP.Constants.ENT_DISALLOWED=128,PHP.Constants.ENT_HTML401=0,PHP.Constants.ENT_XML1=16,PHP.Constants.ENT_XHTML=32,PHP.Constants.ENT_HTML5=48,PHP.Constants.STR_PAD_LEFT=0,PHP.Constants.STR_PAD_RIGHT=1,PHP.Constants.STR_PAD_BOTH=2,PHP.Constants.PATHINFO_DIRNAME=1,PHP.Constants.PATHINFO_BASENAME=2,PHP.Constants.PATHINFO_EXTENSION=4,PHP.Constants.PATHINFO_FILENAME=8,PHP.Constants.CHAR_MAX=127,PHP.Constants.LC_CTYPE=2,PHP.Constants.LC_NUMERIC=4,PHP.Constants.LC_TIME=5,PHP.Constants.LC_COLLATE=1,PHP.Constants.LC_MONETARY=3,PHP.Constants.LC_ALL=0,PHP.Constants.SEEK_SET=0,PHP.Constants.SEEK_CUR=1,PHP.Constants.SEEK_END=2,PHP.Constants.LOCK_SH=1,PHP.Constants.LOCK_EX=2,PHP.Constants.LOCK_UN=3,PHP.Constants.LOCK_NB=4,PHP.Constants.STREAM_NOTIFY_CONNECT=2,PHP.Constants.STREAM_NOTIFY_AUTH_REQUIRED=3,PHP.Constants.STREAM_NOTIFY_AUTH_RESULT=10,PHP.Constants.STREAM_NOTIFY_MIME_TYPE_IS=4,PHP.Constants.STREAM_NOTIFY_FILE_SIZE_IS=5,PHP.Constants.STREAM_NOTIFY_REDIRECTED=6,PHP.Constants.STREAM_NOTIFY_PROGRESS=7,PHP.Constants.STREAM_NOTIFY_FAILURE=9,PHP.Constants.STREAM_NOTIFY_COMPLETED=8,PHP.Constants.STREAM_NOTIFY_RESOLVE=1,PHP.Constants.STREAM_NOTIFY_SEVERITY_INFO=0,PHP.Constants.STREAM_NOTIFY_SEVERITY_WARN=1,PHP.Constants.STREAM_NOTIFY_SEVERITY_ERR=2,PHP.Constants.STREAM_FILTER_READ=1,PHP.Constants.STREAM_FILTER_WRITE=2,PHP.Constants.STREAM_FILTER_ALL=3,PHP.Constants.STREAM_CLIENT_PERSISTENT=1,PHP.Constants.STREAM_CLIENT_ASYNC_CONNECT=2,PHP.Constants.STREAM_CLIENT_CONNECT=4,PHP.Constants.STREAM_CRYPTO_METHOD_SSLv2_CLIENT=0,PHP.Constants.STREAM_CRYPTO_METHOD_SSLv3_CLIENT=1,PHP.Constants.STREAM_CRYPTO_METHOD_SSLv23_CLIENT=2,PHP.Constants.STREAM_CRYPTO_METHOD_TLS_CLIENT=3,PHP.Constants.STREAM_CRYPTO_METHOD_SSLv2_SERVER=4,PHP.Constants.STREAM_CRYPTO_METHOD_SSLv3_SERVER=5,PHP.Constants.STREAM_CRYPTO_METHOD_SSLv23_SERVER=6,PHP.Constants.STREAM_CRYPTO_METHOD_TLS_SERVER=7,PHP.Constants.STREAM_SHUT_RD=0,PHP.Constants.STREAM_SHUT_WR=1,PHP.Constants.STREAM_SHUT_RDWR=2,PHP.Constants.STREAM_PF_INET=2,PHP.Constants.STREAM_PF_UNIX=1,PHP.Constants.STREAM_IPPROTO_IP=0,PHP.Constants.STREAM_IPPROTO_TCP=6,PHP.Constants.STREAM_IPPROTO_UDP=17,PHP.Constants.STREAM_IPPROTO_ICMP=1,PHP.Constants.STREAM_IPPROTO_RAW=255,PHP.Constants.STREAM_SOCK_STREAM=1,PHP.Constants.STREAM_SOCK_DGRAM=2,PHP.Constants.STREAM_SOCK_RAW=3,PHP.Constants.STREAM_SOCK_SEQPACKET=5,PHP.Constants.STREAM_SOCK_RDM=4,PHP.Constants.STREAM_PEEK=2,PHP.Constants.STREAM_OOB=1,PHP.Constants.STREAM_SERVER_BIND=4,PHP.Constants.STREAM_SERVER_LISTEN=8,PHP.Constants.FILE_USE_INCLUDE_PATH=1,PHP.Constants.FILE_IGNORE_NEW_LINES=2,PHP.Constants.FILE_SKIP_EMPTY_LINES=4,PHP.Constants.FILE_APPEND=8,PHP.Constants.FILE_NO_DEFAULT_CONTEXT=16,PHP.Constants.FILE_TEXT=0,PHP.Constants.FILE_BINARY=0,PHP.Constants.FNM_NOESCAPE=1,PHP.Constants.FNM_PATHNAME=2,PHP.Constants.FNM_PERIOD=4,PHP.Constants.FNM_CASEFOLD=16,PHP.Constants.PSFS_PASS_ON=2,PHP.Constants.PSFS_FEED_ME=1,PHP.Constants.PSFS_ERR_FATAL=0,PHP.Constants.PSFS_FLAG_NORMAL=0,PHP.Constants.PSFS_FLAG_FLUSH_INC=1,PHP.Constants.PSFS_FLAG_FLUSH_CLOSE=2,PHP.Constants.CRYPT_SALT_LENGTH=123,PHP.Constants.CRYPT_STD_DES=1,PHP.Constants.CRYPT_EXT_DES=1,PHP.Constants.CRYPT_MD5=1,PHP.Constants.CRYPT_BLOWFISH=1,PHP.Constants.CRYPT_SHA256=1,PHP.Constants.CRYPT_SHA512=1,PHP.Constants.DIRECTORY_SEPARATOR="\\",PHP.Constants.PATH_SEPARATOR=";",PHP.Constants.SCANDIR_SORT_ASCENDING=0,PHP.Constants.SCANDIR_SORT_DESCENDING=1,PHP.Constants.SCANDIR_SORT_NONE=2,PHP.Constants.GLOB_BRACE=128,PHP.Constants.GLOB_MARK=8,PHP.Constants.GLOB_NOSORT=32,PHP.Constants.GLOB_NOCHECK=16,PHP.Constants.GLOB_NOESCAPE=4096,PHP.Constants.GLOB_ERR=4,PHP.Constants.GLOB_ONLYDIR=1073741824,PHP.Constants.GLOB_AVAILABLE_FLAGS=1073746108,PHP.Constants.LOG_EMERG=1,PHP.Constants.LOG_ALERT=1,PHP.Constants.LOG_CRIT=1,PHP.Constants.LOG_ERR=4,PHP.Constants.LOG_WARNING=5,PHP.Constants.LOG_NOTICE=6,PHP.Constants.LOG_INFO=6,PHP.Constants.LOG_DEBUG=6,PHP.Constants.LOG_KERN=0,PHP.Constants.LOG_USER=8,PHP.Constants.LOG_MAIL=16,PHP.Constants.LOG_DAEMON=24,PHP.Constants.LOG_AUTH=32,PHP.Constants.LOG_SYSLOG=40,PHP.Constants.LOG_LPR=48,PHP.Constants.LOG_NEWS=56,PHP.Constants.LOG_UUCP=64,PHP.Constants.LOG_CRON=72,PHP.Constants.LOG_AUTHPRIV=80,PHP.Constants.LOG_PID=1,PHP.Constants.LOG_CONS=2,PHP.Constants.LOG_ODELAY=4,PHP.Constants.LOG_NDELAY=8,PHP.Constants.LOG_NOWAIT=16,PHP.Constants.LOG_PERROR=32,PHP.Constants.EXTR_OVERWRITE=0,PHP.Constants.EXTR_SKIP=1,PHP.Constants.EXTR_PREFIX_SAME=2,PHP.Constants.EXTR_PREFIX_ALL=3,PHP.Constants.EXTR_PREFIX_INVALID=4,PHP.Constants.EXTR_PREFIX_IF_EXISTS=5,PHP.Constants.EXTR_IF_EXISTS=6,PHP.Constants.EXTR_REFS=256,PHP.Constants.SORT_ASC=4,PHP.Constants.SORT_DESC=3,PHP.Constants.SORT_REGULAR=0,PHP.Constants.SORT_NUMERIC=1,PHP.Constants.SORT_STRING=2,PHP.Constants.SORT_LOCALE_STRING=5,PHP.Constants.SORT_NATURAL=6,PHP.Constants.SORT_FLAG_CASE=8,PHP.Constants.CASE_LOWER=0,PHP.Constants.CASE_UPPER=1,PHP.Constants.COUNT_NORMAL=0,PHP.Constants.COUNT_RECURSIVE=1,PHP.Constants.ASSERT_ACTIVE=1,PHP.Constants.ASSERT_CALLBACK=2,PHP.Constants.ASSERT_BAIL=3,PHP.Constants.ASSERT_WARNING=4,PHP.Constants.ASSERT_QUIET_EVAL=5,PHP.Constants.STREAM_USE_PATH=1,PHP.Constants.STREAM_IGNORE_URL=2,PHP.Constants.STREAM_REPORT_ERRORS=8,PHP.Constants.STREAM_MUST_SEEK=16,PHP.Constants.STREAM_URL_STAT_LINK=1,PHP.Constants.STREAM_URL_STAT_QUIET=2,PHP.Constants.STREAM_MKDIR_RECURSIVE=1,PHP.Constants.STREAM_IS_URL=1,PHP.Constants.STREAM_OPTION_BLOCKING=1,PHP.Constants.STREAM_OPTION_READ_TIMEOUT=4,PHP.Constants.STREAM_OPTION_READ_BUFFER=2,PHP.Constants.STREAM_OPTION_WRITE_BUFFER=3,PHP.Constants.STREAM_BUFFER_NONE=0,PHP.Constants.STREAM_BUFFER_LINE=1,PHP.Constants.STREAM_BUFFER_FULL=2,PHP.Constants.STREAM_CAST_AS_STREAM=0,PHP.Constants.STREAM_CAST_FOR_SELECT=3,PHP.Constants.STREAM_META_TOUCH=1,PHP.Constants.STREAM_META_OWNER=3,PHP.Constants.STREAM_META_OWNER_NAME=2,PHP.Constants.STREAM_META_GROUP=5,PHP.Constants.STREAM_META_GROUP_NAME=4,PHP.Constants.STREAM_META_ACCESS=6,PHP.Constants.IMAGETYPE_GIF=1,PHP.Constants.IMAGETYPE_JPEG=2,PHP.Constants.IMAGETYPE_PNG=3,PHP.Constants.IMAGETYPE_SWF=4,PHP.Constants.IMAGETYPE_PSD=5,PHP.Constants.IMAGETYPE_BMP=6,PHP.Constants.IMAGETYPE_TIFF_II=7,PHP.Constants.IMAGETYPE_TIFF_MM=8,PHP.Constants.IMAGETYPE_JPC=9,PHP.Constants.IMAGETYPE_JP2=10,PHP.Constants.IMAGETYPE_JPX=11,PHP.Constants.IMAGETYPE_JB2=12,PHP.Constants.IMAGETYPE_SWC=13,PHP.Constants.IMAGETYPE_IFF=14,PHP.Constants.IMAGETYPE_WBMP=15,PHP.Constants.IMAGETYPE_JPEG2000=9,PHP.Constants.IMAGETYPE_XBM=16,PHP.Constants.IMAGETYPE_ICO=17,PHP.Constants.IMAGETYPE_UNKNOWN=0,PHP.Constants.IMAGETYPE_COUNT=18,PHP.Constants.DNS_A=1,PHP.Constants.DNS_NS=2,PHP.Constants.DNS_CNAME=16,PHP.Constants.DNS_SOA=32,PHP.Constants.DNS_PTR=2048,PHP.Constants.DNS_HINFO=4096,PHP.Constants.DNS_MX=16384,PHP.Constants.DNS_TXT=32768,PHP.Constants.DNS_SRV=33554432,PHP.Constants.DNS_NAPTR=67108864,PHP.Constants.DNS_AAAA=134217728,PHP.Constants.DNS_A6=16777216,PHP.Constants.DNS_ANY=268435456,PHP.Constants.DNS_ALL=251713587,PHP.Modules.prototype.$empty=function(a){var a,b=(arguments.length,PHP.Compiler.prototype),c=PHP.VM.Variable.prototype;if(a instanceof PHP.VM.Variable){var d=a[b.VARIABLE_VALUE];return new PHP.VM.Variable(a[c.TYPE]===c.NULL||""===d||0==d||d===!1)}return new PHP.VM.Variable(a)},PHP.Modules.prototype.gettype=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype,d=(a[b.VARIABLE_VALUE],"unknown type");switch(a[c.TYPE]){case c.BOOL:d="boolean";break;case c.INT:d="integer";break;case c.FLOAT:d="double";break;case c.STRING:d="string";break;case c.ARRAY:d="array";break;case c.OBJECT:d="object";break;case c.RESOURCE:d="resource";break;case c.NULL:d="NULL"}return new PHP.VM.Variable(d)},PHP.Modules.prototype.is_callable=function(a){var b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype;if(a[c.TYPE]===c.ARRAY){var d=a[b.VARIABLE_VALUE][b.METHOD_CALL](this,b.ARRAY_GET,0)[b.VARIABLE_VALUE],e=a[b.VARIABLE_VALUE][b.METHOD_CALL](this,b.ARRAY_GET,1)[b.VARIABLE_VALUE];return new PHP.VM.Variable("function"==typeof d[PHP.VM.Class.METHOD+e.toLowerCase()])}},PHP.Modules.prototype.is_float=function(a){var b=(PHP.Compiler.prototype,PHP.VM.Variable.prototype); -return new PHP.VM.Variable(a[b.TYPE]===b.FLOAT)},PHP.Modules.prototype.is_null=function(a){var b=(PHP.Compiler.prototype,PHP.VM.Variable.prototype);return new PHP.VM.Variable(a[b.TYPE]===b.NULL)},PHP.Modules.prototype.is_string=function(a){var b=(PHP.Compiler.prototype,PHP.VM.Variable.prototype);return new PHP.VM.Variable(a[b.TYPE]===b.STRING)},PHP.Modules.prototype.$isset=function(){for(var a,b=arguments.length,c=-1,d=PHP.VM.Variable.prototype;++c ",j+=g(o[r],i+8),j+="\n");var s=o;do s.hasOwnProperty(r)&&((Object.getPrototypeOf(s)[PHP.VM.Class.PROPERTY_TYPE+r.substring(e.length)]&c)===c?(j+=h(i+4)+"["+r.substring(e.length)+":"+Object.getPrototypeOf(s)[b.CLASS_NAME]+":private] => ",j+=g(s[r],i+8),j+="\n"):(Object.getPrototypeOf(s)[PHP.VM.Class.PROPERTY_TYPE+r.substring(e.length)]&d)===d&&-1===p.indexOf(r)?(j+=h(i+4)+"["+r.substring(e.length)+":"+Object.getPrototypeOf(s)[b.CLASS_NAME]+":protected] => ",j+=g(s[r],i+8),j+="\n",p.push(r)):-1===p.indexOf(r)&&(j+=h(i+4)+"["+r.substring(e.length)+"] => ",j+=g(s[r],i+8),j+="\n",p.push(r))),s=Object.getPrototypeOf(s);while(s instanceof PHP.VM.ClassPrototype)}j+=q,j+=h(i)+")\n"}else l===f.NULL?j+=h(i)+"NULL":l===f.STRING?j+=k:l===f.INT&&(j+=k);return j},h=function(a){var b,c="";for(b=0;a>b;b++)c+=" ";return c};PHP.Utils.$A(arguments).forEach(function(b){a+=g(b,0)},this),this.echo(a)},PHP.Modules.prototype.serialize=function(a){var b,c=PHP.Compiler.prototype,d="serialize",e="__sleep",f=PHP.VM.Variable.prototype,g="",h=function(a){var b=a[c.VARIABLE_VALUE],d="";switch(a[f.TYPE]){case f.NULL:d+="N;";break;case f.STRING:d+=b.length+":{"+b+"}"}return d}.bind(this),i=a[c.VARIABLE_VALUE];if(void 0!==i[PHP.VM.Class.METHOD+d]){if(b=i[c.METHOD_CALL](this,d),b[f.TYPE]!==f.NULL&&b[f.TYPE]!==f.STRING)return this.ENV[c.ERROR](i[c.CLASS_NAME]+"::"+d+"() must return a string or NULL",PHP.Constants.E_ERROR,!0),new PHP.VM.Variable}else if(b=i,void 0!==i[PHP.VM.Class.METHOD+e]){if(b=i[c.METHOD_CALL](this,e),b[f.TYPE]!==f.ARRAY)return this.ENV[c.ERROR](i[c.CLASS_NAME]+"::"+d+"() must return a string or NULL",PHP.Constants.E_ERROR,!0),new PHP.VM.Variable;b[c.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.VALUES][c.VARIABLE_VALUE].forEach(function(a){void 0===i[PHP.VM.Class.PROPERTY+a[c.VARIABLE_VALUE]]&&this.ENV[c.ERROR](d+'(): "'+a[c.VARIABLE_VALUE]+'" returned as member variable from '+e+"() but does not exist",PHP.Constants.E_NOTICE,!0)},this),g+="O:"+i[c.CLASS_NAME].length+':"'+i[c.CLASS_NAME]+'":'}if(b instanceof PHP.VM.Variable)if(b[f.TYPE]===f.ARRAY){var j=b[c.VARIABLE_VALUE][PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.VALUES][c.VARIABLE_VALUE];g+=j.length+":{",j.forEach(function(a){(i[PHP.VM.Class.PROPERTY_TYPE+a[c.VARIABLE_VALUE]]&PHP.VM.Class.PRIVATE)===PHP.VM.Class.PRIVATE?(g+="s:"+(2+i[c.CLASS_NAME].length+a[c.VARIABLE_VALUE].length)+":",g+='"\\0'+i[c.CLASS_NAME]+"\\0"+a[c.VARIABLE_VALUE]+'";'):(i[PHP.VM.Class.PROPERTY_TYPE+a[c.VARIABLE_VALUE]]&PHP.VM.Class.PROTECTED)===PHP.VM.Class.PROTECTED?(g+="s:"+(3+a[c.VARIABLE_VALUE].length)+":",g+='"\\0*\\0'+a[c.VARIABLE_VALUE]+'";'):(g+="s:"+a[c.VARIABLE_VALUE].length+":",g+='"'+a[c.VARIABLE_VALUE]+'";');var b=i[PHP.VM.Class.PROPERTY+a[c.VARIABLE_VALUE]];void 0!==b?(b=b[c.VARIABLE_VALUE],g+="s:"+b.length+':"'+b+'";'):g+="N;"}),g+="}"}else g+=b[f.TYPE]!==f.NULL?"C:"+i[c.CLASS_NAME].length+':"'+i[c.CLASS_NAME]+'":'+h(b):"N;";return new PHP.VM.Variable(g)},PHP.Modules.prototype.unserialize=function(a){for(var b,c,d,e,f=PHP.Compiler.prototype,g="unserialize",h=(PHP.VM.Variable.prototype,a[f.VARIABLE_VALUE]),i=h.split(":");h.length>0;){var c=h.indexOf(":");if(-1===c)break;if(void 0===b)switch(d=h.substring(0,c)){case"O":{var j=i[2].substring(1,i[2].length-1);this.$Class.__autoload(j)}b=new(this.$Class.Get("__PHP_Incomplete_Class"))(this,j),h=h.substring(100);break;case"C":b=new(this.$Class.Get(i[2].substring(1,i[2].length-1)))(!0),c=6+i[1].length+(i[1]-0),h=h.substring(c);continue;case"N;":b=null,c=2,h=h.substring(c);continue}else d=h.substring(0,c);h=h.substring(d.length+1),e=h.substr(1,d),h=h.substring(e.length+2)}return null!==b&&void 0!==b&&void 0!==b[PHP.VM.Class.METHOD+g]&&b[f.METHOD_CALL](this,g,new PHP.VM.Variable(e)),new PHP.VM.Variable(b)},PHP.Modules.prototype.unset=function(){PHP.Utils.$A(arguments).forEach(function(a){void 0!==a&&a[PHP.Compiler.prototype.UNSET]()},this)},PHP.Modules.prototype.var_dump=function(){var a="",b=PHP.Compiler.prototype,c=PHP.VM.Variable.prototype,d=function(a,f){var g="",h=a[b.VARIABLE_VALUE],i=a[c.TYPE];if(g+=e(f),i!==c.NULL&&(a[c.DEFINED]===!0||a instanceof PHP.VM.ClassPrototype))if(i===c.ARRAY){g+="array(";var j=h[PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.VALUES][b.VARIABLE_VALUE],k=h[PHP.VM.Class.PROPERTY+PHP.VM.Array.prototype.KEYS][b.VARIABLE_VALUE];g+=j.length,g+=") {\n",k.forEach(function(a,c){a instanceof PHP.VM.Variable&&(a=a[b.VARIABLE_VALUE]),g+=e(f+2)+"[",g+="string"==typeof a?'"'+a+'"':a,g+="]=>\n",g+=d(j[c],f+2)},this),g+=e(f)+"}\n"}else if(i===c.BOOL)g+="bool("+h+")\n";else if(i===c.STRING)g+="string("+h.length+') "'+h+'"\n';else if(i===c.INT)g+="int("+h+")\n";else if(a instanceof PHP.VM.ClassPrototype||i===c.OBJECT){i===c.OBJECT&&(a=h),g+="object("+a[b.CLASS_NAME]+")#1 ";var l="",m=0;for(var n in a){var o,p=!1;n.substring(0,PHP.VM.Class.PROPERTY.length)===PHP.VM.Class.PROPERTY&&((a[PHP.VM.Class.PROPERTY_TYPE+n.substring(PHP.VM.Class.PROPERTY.length)]&PHP.VM.Class.PRIVATE)!==PHP.VM.Class.PRIVATE&&(a[PHP.VM.Class.PROPERTY_TYPE+n.substring(PHP.VM.Class.PROPERTY.length)]&PHP.VM.Class.PROTECTED)!==PHP.VM.Class.PROTECTED?(l+=e(f+2)+'["'+n.substring(PHP.VM.Class.PROPERTY.length),l+='"]=>\n',l+=d(a[n],f+2),m++):p=!0),o=a;do(a[n]!==o[n]||p)&&o[n]instanceof PHP.VM.Variable&&o.hasOwnProperty(n)&&(l+=e(f+2)+'["'+n.substring(PHP.VM.Class.PROPERTY.length)+'":',l+=(a[PHP.VM.Class.PROPERTY_TYPE+n.substring(PHP.VM.Class.PROPERTY.length)]&PHP.VM.Class.PRIVATE)===PHP.VM.Class.PRIVATE?'"'+Object.getPrototypeOf(o)[b.CLASS_NAME]+'":private':"protected",l+="]=>\n",l+=d(o[n],f+2),m++),o=Object.getPrototypeOf(o);while(o instanceof PHP.VM.ClassPrototype)}g+="("+m+") {\n"+l,g+=e(f)+"}\n"}else i===c.FLOAT&&(g+="float("+h+")\n");else g+="NULL\n";return g}.bind(this),e=function(a){var b,c="";for(b=0;a>b;b++)c+=" ";return c};PHP.Utils.$A(arguments).forEach(function(b){a+=d(b,0)},this),this.echo(a)},PHP.Modules.prototype.var_export=function(a,b){var c=PHP.Compiler.prototype,d=PHP.VM.Variable.prototype,e="";switch(a[d.TYPE]){case d.STRING:e+="'"+a[c.VARIABLE_VALUE]+"'"}return e=new PHP.VM.Variable(e),void 0!==b&&b[c.VARIABLE_VALUE]!==!1?e:(this.echo(e),new PHP.VM.Variable)},PHP.Lexer=function(a,b){var c,d=void 0===b||/^(on|true|1)$/i.test(b.short_open_tag)?/(\<\?php\s|\<\?|\<\%|\