emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/php-mode 7e4905a6e9 9/9: Merge pull request #708 from emac


From: ELPA Syncer
Subject: [nongnu] elpa/php-mode 7e4905a6e9 9/9: Merge pull request #708 from emacs-php/feature/php-completion
Date: Sat, 1 Oct 2022 23:59:04 -0400 (EDT)

branch: elpa/php-mode
commit 7e4905a6e98c275d259a1e899b79d78b6b4cca2a
Merge: 6513efaf6f 836663957b
Author: USAMI Kenta <tadsan@pixiv.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #708 from emacs-php/feature/php-completion
    
    New feature: php-completion.el
---
 .gitignore                         |    1 +
 CHANGELOG.md                       |    6 +
 Makefile                           |    4 +-
 lisp/php-complete.el               |  124 ++
 lisp/php-defs.el                   | 3892 ++++++++++++++++++++++++++++++++++++
 lisp/php-mode.el                   |    3 +-
 lisp/php.el                        |  128 +-
 script/README.md                   |   40 +
 script/data/module_id_prefixes.php |  846 ++++++++
 script/extract_functions.php       |  118 ++
 script/module_id_prefixes.php      |  806 ++++++++
 11 files changed, 5946 insertions(+), 22 deletions(-)

diff --git a/.gitignore b/.gitignore
index 783efce946..f1e2797e02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
 /.keg/*
 /.php-cs-fixer.cache
 php-mode-autoloads.el
+php_manual_en.json
diff --git a/CHANGELOG.md b/CHANGELOG.md
index be5eb0448c..426174e365 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,11 @@ All notable changes of the PHP Mode 1.19.1 release series are 
documented in this
 
 ## Unreleased
 
+### Added
+
+ * **New feature: `php-complete`**
+   * Add `php-complete-complete-function` to autocomplete function names 
([#708])
+
 ### Changed
 
  * Make continued expressions inside lists (arguments and arrays, etc.) have 
the same indent width as outside the list ([#703])
@@ -16,6 +21,7 @@ All notable changes of the PHP Mode 1.19.1 release series are 
documented in this
 [#703]: https://github.com/emacs-php/php-mode/pull/703
 [#704]: https://github.com/emacs-php/php-mode/pull/704
 [#707]: https://github.com/emacs-php/php-mode/pull/707
+[#708]: https://github.com/emacs-php/php-mode/pull/708
 
 ## [1.24.1] - 2022-10-08
 
diff --git a/Makefile b/Makefile
index 42fcf641e5..97922d2a50 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 EMACS ?= emacs
 CASK ?= cask
-ELS = lisp/php.el lisp/php-align.el lisp/php-face.el lisp/php-project.el 
lisp/php-local-manual.el lisp/php-mode.el lisp/php-mode-debug.el
+ELS = lisp/php.el lisp/php-align.el lisp/php-complete.el lisp/php-defs.el 
lisp/php-face.el lisp/php-project.el lisp/php-local-manual.el lisp/php-mode.el 
lisp/php-mode-debug.el
 AUTOLOADS = php-mode-autoloads.el
 ELCS = $(ELS:.el=.elc)
 
@@ -24,7 +24,7 @@ AUTHORS.md: etc/git/AUTHORS.md.in .mailmap
 
 autoloads: $(AUTOLOADS)
 
-$(AUTOLOADS): lisp/php.el lisp/php-align.el lisp/php-face.el 
lisp/php-project.el lisp/php-local-manual.el lisp/php-mode-debug.el 
lisp/php-mode.el
+$(AUTOLOADS): $(ELS)
        $(EMACS) --batch -L lisp/ --eval \
        "(let ((user-emacs-directory default-directory)) \
           (require 'package) \
diff --git a/lisp/php-complete.el b/lisp/php-complete.el
new file mode 100644
index 0000000000..588efa7852
--- /dev/null
+++ b/lisp/php-complete.el
@@ -0,0 +1,124 @@
+;;; php-complete.el --- PHP auto-compiletion functions         -*- 
lexical-binding: t; -*-
+
+;; Copyright (C) 2022  Friends of Emacs-PHP development
+;; Copyright (C) 2021, 2022  Free Software Foundation, Inc.
+
+;; Author: USAMI Kenta <tadsan@zonu.me>
+
+;; Created: 18 Sep 2022
+;; Version: 1.24.1
+;; Keywords: languages, php
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Provide auto-compiletion functions.
+
+;; These functions are copied function from GNU ELPA.
+;;
+;; - cape--table-with-properties (cape.el)
+;; - cape--bounds (cape.el)
+;; - cape--interactive (cape.el)
+
+;;; Code:
+(eval-when-compile
+  (require 'cl-lib))
+(require 'php)
+(require 'php-defs)
+
+;;;###autoload
+(defgroup php-complete nil
+  "Auto completion for PHP edition."
+  :tag "PHP Completion"
+  :group 'php-mode)
+
+;;;###autoload
+(defcustom php-complete-function-modules '(bcmath core gmp libxml intl 
mbstring pcntl posix sodium xml xmlwriter)
+  "Module names for function names completion."
+  :tag "PHP Complete Function Modules"
+  :type (eval-when-compile `(set ,@(mapcar (lambda (elm) (list 'const (car 
elm)))
+                                           php-defs-functions-alist)))
+  :safe (lambda (value) (and (listp value) (cl-loop for v in values
+                                                    always (assq v 
php-defs-functions-alist))))
+  :group 'php-complete)
+
+;;; Cape functions:
+
+;; These functions are copied from cape.el package.  
https://github.com/minad/cape
+;; Thanks to original author Daniel Mendler (@minad)
+
+(cl-defun php-complete--cape-table-with-properties (table &key category (sort 
t) &allow-other-keys)
+  "Create completion TABLE with properties.
+CATEGORY is the optional completion category.
+SORT should be nil to disable sorting."
+  (if (or (not table) (and (not category) sort))
+      table
+    (let ((metadata `(metadata
+                      ,@(and category `((category . ,category)))
+                      ,@(and (not sort) '((display-sort-function . identity)
+                                          (cycle-sort-function . identity))))))
+      (lambda (str pred action)
+        (if (eq action 'metadata)
+            metadata
+          (complete-with-action action table str pred))))))
+
+(defun php-complete--cape-bounds (thing)
+  "Return bounds of THING."
+  (or (bounds-of-thing-at-point thing) (cons (point) (point))))
+
+(defun php-complete--cape-interactive (capf)
+  "Complete with CAPF."
+  (let ((completion-at-point-functions (list capf)))
+    (or (completion-at-point) (user-error "%s: No completions" capf))))
+
+;;; Variables:
+(defvar php-complete--functions-cache (make-hash-table :test #'equal))
+
+;;; Data source functions:
+(defun php-complete--functions ()
+  "Return PHP function names."
+  (let* ((modules (sort php-complete-function-modules #'string<))
+         (functions (gethash modules php-complete--functions-cache)))
+    (unless functions
+      (setq functions (sort (cl-loop for module in modules
+                                     append (assq module 
php-defs-functions-alist))
+                            #'string<))
+      (puthash modules functions php-complete--functions-cache))
+    functions))
+
+;;; Compiletion function:
+
+;;;###autoload
+(defun php-complete-complete-function (&optional interactive)
+  "Complete PHP keyword at point.
+
+If INTERACTIVE is nil the function acts like a capf."
+  (interactive (list t))
+  (if interactive
+      (php-complete--cape-interactive #'php-complete-complete-function)
+    (let ((bounds (php-complete--cape-bounds 'symbol))
+          (tokens (nreverse (php-leading-tokens 2))))
+      `(,(car bounds) ,(cdr bounds)
+        ,(php-complete--cape-table-with-properties
+          (unless (or (member (nth 0 tokens) '("->" "::"))
+                      (string-prefix-p "$" (nth 1 tokens)))
+            (php-complete--functions))
+          :category 'cape-keyword)
+        :annotation-function (lambda (_) " PHP functions")
+        :company-kind (lambda (_) 'keyword)
+        :exclusive 'no))))
+
+(provide 'php-complete)
+;;; php-complete.el ends here
diff --git a/lisp/php-defs.el b/lisp/php-defs.el
new file mode 100644
index 0000000000..9352ec84c6
--- /dev/null
+++ b/lisp/php-defs.el
@@ -0,0 +1,3892 @@
+;;; php-defs.el --- Provide PHP keyword definitions  -*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2022  Friends of Emacs-PHP development
+
+;; Author: USAMI Kenta <tadsan@zonu.me>
+;; Created: 5 Mar 2022
+;; Version: 1.24.1
+;; Keywords: languages, php
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file provides common functions for PHP codes.
+
+;;; Code:
+
+(defvar php-defs-functions-alist
+  '((apache
+     "apache_child_terminate"
+     "apache_get_modules"
+     "apache_get_version"
+     "apache_getenv"
+     "apache_lookup_uri"
+     "apache_note"
+     "apache_request_headers"
+     "apache_response_headers"
+     "apache_setenv"
+     "virtual")
+    (apcu
+     "apcu_add"
+     "apcu_cache_info"
+     "apcu_cas"
+     "apcu_clear_cache"
+     "apcu_dec"
+     "apcu_delete"
+     "apcu_enabled"
+     "apcu_entry"
+     "apcu_exists"
+     "apcu_fetch"
+     "apcu_inc"
+     "apcu_key_info"
+     "apcu_sma_info"
+     "apcu_store")
+    (bcmath
+     "bcadd"
+     "bccomp"
+     "bcdiv"
+     "bcmod"
+     "bcmul"
+     "bcpow"
+     "bcpowmod"
+     "bcscale"
+     "bcsqrt"
+     "bcsub")
+    (bzip2
+     "bzclose"
+     "bzcompress"
+     "bzdecompress"
+     "bzerrno"
+     "bzerror"
+     "bzerrstr"
+     "bzflush"
+     "bzopen"
+     "bzread"
+     "bzwrite")
+    (calendar
+     "cal_days_in_month"
+     "cal_from_jd"
+     "cal_info"
+     "cal_to_jd"
+     "easter_date"
+     "easter_days"
+     "frenchtojd"
+     "gregoriantojd"
+     "jddayofweek"
+     "jdmonthname"
+     "jdtofrench"
+     "jdtogregorian"
+     "jdtojewish"
+     "jdtojulian"
+     "jdtounix"
+     "jewishtojd"
+     "unixtojd")
+    (com_dotnet
+     "com_create_guid"
+     "com_event_sink"
+     "com_get_active_object"
+     "com_load_typelib"
+     "com_message_pump"
+     "com_print_typeinfo"
+     "variant_abs"
+     "variant_add"
+     "variant_and"
+     "variant_cast"
+     "variant_cat"
+     "variant_cmp"
+     "variant_date_from_timestamp"
+     "variant_date_to_timestamp"
+     "variant_div"
+     "variant_eqv"
+     "variant_fix"
+     "variant_get_type"
+     "variant_idiv"
+     "variant_imp"
+     "variant_int"
+     "variant_mod"
+     "variant_mul"
+     "variant_neg"
+     "variant_not"
+     "variant_or"
+     "variant_pow"
+     "variant_round"
+     "variant_set"
+     "variant_set_type"
+     "variant_sub"
+     "variant_xor")
+    (commonmark
+     "CommonMark\\Parse"
+     "CommonMark\\Render"
+     "CommonMark\\Render\\HTML"
+     "CommonMark\\Render\\Latex"
+     "CommonMark\\Render\\Man"
+     "CommonMark\\Render\\XML")
+    (componere
+     "Componere\\cast"
+     "Componere\\cast_by_ref")
+    (core
+     "abs"
+     "acos"
+     "acosh"
+     "addcslashes"
+     "addslashes"
+     "array_change_key_case"
+     "array_chunk"
+     "array_column"
+     "array_combine"
+     "array_count_values"
+     "array_diff"
+     "array_diff_assoc"
+     "array_diff_key"
+     "array_diff_uassoc"
+     "array_diff_ukey"
+     "array_fill"
+     "array_fill_keys"
+     "array_filter"
+     "array_flip"
+     "array_intersect"
+     "array_intersect_assoc"
+     "array_intersect_key"
+     "array_intersect_uassoc"
+     "array_intersect_ukey"
+     "array_is_list"
+     "array_key_exists"
+     "array_key_first"
+     "array_key_last"
+     "array_keys"
+     "array_map"
+     "array_merge"
+     "array_merge_recursive"
+     "array_multisort"
+     "array_pad"
+     "array_pop"
+     "array_product"
+     "array_push"
+     "array_rand"
+     "array_reduce"
+     "array_replace"
+     "array_replace_recursive"
+     "array_reverse"
+     "array_search"
+     "array_shift"
+     "array_slice"
+     "array_splice"
+     "array_sum"
+     "array_udiff"
+     "array_udiff_assoc"
+     "array_udiff_uassoc"
+     "array_uintersect"
+     "array_uintersect_assoc"
+     "array_uintersect_uassoc"
+     "array_unique"
+     "array_unshift"
+     "array_values"
+     "array_walk"
+     "array_walk_recursive"
+     "arsort"
+     "asin"
+     "asinh"
+     "asort"
+     "assert_options"
+     "atan"
+     "atan2"
+     "atanh"
+     "base64_decode"
+     "base64_encode"
+     "base_convert"
+     "basename"
+     "bin2hex"
+     "bindec"
+     "boolval"
+     "call_user_func"
+     "call_user_func_array"
+     "ceil"
+     "chdir"
+     "checkdate"
+     "checkdnsrr"
+     "chgrp"
+     "chmod"
+     "chop"
+     "chown"
+     "chr"
+     "chroot"
+     "chunk_split"
+     "class_alias"
+     "class_exists"
+     "class_implements"
+     "class_parents"
+     "class_uses"
+     "clearstatcache"
+     "cli_get_process_title"
+     "cli_set_process_title"
+     "closedir"
+     "closelog"
+     "compact"
+     "connection_aborted"
+     "connection_status"
+     "constant"
+     "convert_cyr_string"
+     "convert_uudecode"
+     "convert_uuencode"
+     "copy"
+     "cos"
+     "cosh"
+     "count"
+     "count_chars"
+     "crc32"
+     "create_function"
+     "crypt"
+     "ctype_alnum"
+     "ctype_alpha"
+     "ctype_cntrl"
+     "ctype_digit"
+     "ctype_graph"
+     "ctype_lower"
+     "ctype_print"
+     "ctype_punct"
+     "ctype_space"
+     "ctype_upper"
+     "ctype_xdigit"
+     "current"
+     "date"
+     "date_add"
+     "date_create"
+     "date_create_from_format"
+     "date_create_immutable"
+     "date_create_immutable_from_format"
+     "date_date_set"
+     "date_default_timezone_get"
+     "date_default_timezone_set"
+     "date_diff"
+     "date_format"
+     "date_get_last_errors"
+     "date_interval_create_from_date_string"
+     "date_interval_format"
+     "date_isodate_set"
+     "date_modify"
+     "date_offset_get"
+     "date_parse"
+     "date_parse_from_format"
+     "date_sub"
+     "date_sun_info"
+     "date_sunrise"
+     "date_sunset"
+     "date_time_set"
+     "date_timestamp_get"
+     "date_timestamp_set"
+     "date_timezone_get"
+     "date_timezone_set"
+     "debug_backtrace"
+     "debug_print_backtrace"
+     "debug_zval_dump"
+     "decbin"
+     "dechex"
+     "decoct"
+     "define"
+     "defined"
+     "deg2rad"
+     "delete"
+     "die"
+     "dir"
+     "dirname"
+     "disk_free_space"
+     "disk_total_space"
+     "diskfreespace"
+     "dl"
+     "dns_check_record"
+     "dns_get_mx"
+     "dns_get_record"
+     "doubleval"
+     "each"
+     "enum_exists"
+     "error_clear_last"
+     "error_get_last"
+     "error_log"
+     "error_reporting"
+     "escapeshellarg"
+     "escapeshellcmd"
+     "eval"
+     "exec"
+     "exit"
+     "exp"
+     "explode"
+     "expm1"
+     "extension_loaded"
+     "extract"
+     "fastcgi_finish_request"
+     "fclose"
+     "fdatasync"
+     "fdiv"
+     "feof"
+     "fflush"
+     "fgetc"
+     "fgetcsv"
+     "fgets"
+     "fgetss"
+     "file"
+     "file_exists"
+     "file_get_contents"
+     "file_put_contents"
+     "fileatime"
+     "filectime"
+     "filegroup"
+     "fileinode"
+     "filemtime"
+     "fileowner"
+     "fileperms"
+     "filesize"
+     "filetype"
+     "filter_has_var"
+     "filter_id"
+     "filter_input"
+     "filter_input_array"
+     "filter_list"
+     "filter_var"
+     "filter_var_array"
+     "finfo_buffer"
+     "finfo_close"
+     "finfo_file"
+     "finfo_open"
+     "finfo_set_flags"
+     "floatval"
+     "flock"
+     "floor"
+     "flush"
+     "fmod"
+     "fnmatch"
+     "fopen"
+     "forward_static_call"
+     "forward_static_call_array"
+     "fpassthru"
+     "fprintf"
+     "fputcsv"
+     "fputs"
+     "fread"
+     "fscanf"
+     "fseek"
+     "fsockopen"
+     "fstat"
+     "fsync"
+     "ftell"
+     "ftruncate"
+     "func_get_arg"
+     "func_get_args"
+     "func_num_args"
+     "function_exists"
+     "fwrite"
+     "gc_collect_cycles"
+     "gc_disable"
+     "gc_enable"
+     "gc_enabled"
+     "gc_mem_caches"
+     "gc_status"
+     "get_browser"
+     "get_called_class"
+     "get_cfg_var"
+     "get_class"
+     "get_class_methods"
+     "get_class_vars"
+     "get_current_user"
+     "get_debug_type"
+     "get_declared_classes"
+     "get_declared_interfaces"
+     "get_declared_traits"
+     "get_defined_constants"
+     "get_defined_functions"
+     "get_defined_vars"
+     "get_extension_funcs"
+     "get_headers"
+     "get_html_translation_table"
+     "get_include_path"
+     "get_included_files"
+     "get_loaded_extensions"
+     "get_magic_quotes_gpc"
+     "get_magic_quotes_runtime"
+     "get_mangled_object_vars"
+     "get_meta_tags"
+     "get_object_vars"
+     "get_parent_class"
+     "get_required_files"
+     "get_resource_id"
+     "get_resource_type"
+     "get_resources"
+     "getallheaders"
+     "getcwd"
+     "getdate"
+     "getenv"
+     "gethostbyaddr"
+     "gethostbyname"
+     "gethostbynamel"
+     "gethostname"
+     "getlastmod"
+     "getmxrr"
+     "getmygid"
+     "getmyinode"
+     "getmypid"
+     "getmyuid"
+     "getopt"
+     "getprotobyname"
+     "getprotobynumber"
+     "getrandmax"
+     "getrusage"
+     "getservbyname"
+     "getservbyport"
+     "gettimeofday"
+     "gettype"
+     "glob"
+     "gmdate"
+     "gmmktime"
+     "gmstrftime"
+     "hash"
+     "hash_algos"
+     "hash_copy"
+     "hash_equals"
+     "hash_file"
+     "hash_final"
+     "hash_hkdf"
+     "hash_hmac"
+     "hash_hmac_algos"
+     "hash_hmac_file"
+     "hash_init"
+     "hash_pbkdf2"
+     "hash_update"
+     "hash_update_file"
+     "hash_update_stream"
+     "header"
+     "header_register_callback"
+     "header_remove"
+     "headers_list"
+     "headers_sent"
+     "hebrev"
+     "hebrevc"
+     "hex2bin"
+     "hexdec"
+     "highlight_file"
+     "highlight_string"
+     "hrtime"
+     "html_entity_decode"
+     "htmlentities"
+     "htmlspecialchars"
+     "htmlspecialchars_decode"
+     "http_build_query"
+     "http_response_code"
+     "hypot"
+     "idate"
+     "ignore_user_abort"
+     "implode"
+     "in_array"
+     "inet_ntop"
+     "inet_pton"
+     "ini_alter"
+     "ini_get"
+     "ini_get_all"
+     "ini_restore"
+     "ini_set"
+     "intdiv"
+     "interface_exists"
+     "intval"
+     "ip2long"
+     "is_a"
+     "is_array"
+     "is_bool"
+     "is_callable"
+     "is_countable"
+     "is_dir"
+     "is_double"
+     "is_executable"
+     "is_file"
+     "is_finite"
+     "is_float"
+     "is_infinite"
+     "is_int"
+     "is_integer"
+     "is_iterable"
+     "is_link"
+     "is_long"
+     "is_nan"
+     "is_null"
+     "is_numeric"
+     "is_object"
+     "is_readable"
+     "is_resource"
+     "is_scalar"
+     "is_string"
+     "is_subclass_of"
+     "is_uploaded_file"
+     "is_writable"
+     "is_writeable"
+     "iterator_apply"
+     "iterator_count"
+     "iterator_to_array"
+     "join"
+     "json_decode"
+     "json_encode"
+     "json_last_error"
+     "json_last_error_msg"
+     "juliantojd"
+     "key"
+     "key_exists"
+     "krsort"
+     "ksort"
+     "lcfirst"
+     "lcg_value"
+     "lchgrp"
+     "lchown"
+     "levenshtein"
+     "link"
+     "linkinfo"
+     "list"
+     "localeconv"
+     "localtime"
+     "log"
+     "log10"
+     "log1p"
+     "long2ip"
+     "lstat"
+     "ltrim"
+     "mail"
+     "max"
+     "md5"
+     "md5_file"
+     "memory_get_peak_usage"
+     "memory_get_usage"
+     "metaphone"
+     "method_exists"
+     "microtime"
+     "mime_content_type"
+     "min"
+     "mkdir"
+     "mktime"
+     "money_format"
+     "move_uploaded_file"
+     "mt_getrandmax"
+     "mt_rand"
+     "mt_srand"
+     "natcasesort"
+     "natsort"
+     "net_get_interfaces"
+     "next"
+     "nl2br"
+     "nl_langinfo"
+     "number_format"
+     "ob_clean"
+     "ob_end_clean"
+     "ob_end_flush"
+     "ob_flush"
+     "ob_get_clean"
+     "ob_get_contents"
+     "ob_get_flush"
+     "ob_get_length"
+     "ob_get_level"
+     "ob_get_status"
+     "ob_gzhandler"
+     "ob_iconv_handler"
+     "ob_implicit_flush"
+     "ob_list_handlers"
+     "ob_start"
+     "ob_tidyhandler"
+     "octdec"
+     "opcache_compile_file"
+     "opcache_get_configuration"
+     "opcache_get_status"
+     "opcache_invalidate"
+     "opcache_is_script_cached"
+     "opcache_reset"
+     "opendir"
+     "openlog"
+     "ord"
+     "output_add_rewrite_var"
+     "output_reset_rewrite_vars"
+     "pack"
+     "parse_ini_file"
+     "parse_ini_string"
+     "parse_str"
+     "parse_url"
+     "passthru"
+     "password_algos"
+     "password_get_info"
+     "password_hash"
+     "password_needs_rehash"
+     "password_verify"
+     "pathinfo"
+     "pclose"
+     "pdo_drivers"
+     "pfsockopen"
+     "php_ini_loaded_file"
+     "php_ini_scanned_files"
+     "php_sapi_name"
+     "php_strip_whitespace"
+     "php_uname"
+     "phpcredits"
+     "phpdbg_break_file"
+     "phpdbg_break_function"
+     "phpdbg_break_method"
+     "phpdbg_break_next"
+     "phpdbg_clear"
+     "phpdbg_color"
+     "phpdbg_end_oplog"
+     "phpdbg_exec"
+     "phpdbg_get_executable"
+     "phpdbg_prompt"
+     "phpdbg_start_oplog"
+     "phpinfo"
+     "phpversion"
+     "pi"
+     "popen"
+     "pos"
+     "pow"
+     "preg_filter"
+     "preg_grep"
+     "preg_last_error"
+     "preg_last_error_msg"
+     "preg_match"
+     "preg_match_all"
+     "preg_quote"
+     "preg_replace"
+     "preg_replace_callback"
+     "preg_replace_callback_array"
+     "preg_split"
+     "prev"
+     "print_r"
+     "printf"
+     "proc_close"
+     "proc_get_status"
+     "proc_nice"
+     "proc_open"
+     "proc_terminate"
+     "property_exists"
+     "putenv"
+     "quoted_printable_decode"
+     "quoted_printable_encode"
+     "quotemeta"
+     "rad2deg"
+     "rand"
+     "random_bytes"
+     "random_int"
+     "range"
+     "rawurldecode"
+     "rawurlencode"
+     "readdir"
+     "readfile"
+     "readlink"
+     "realpath"
+     "realpath_cache_get"
+     "realpath_cache_size"
+     "register_shutdown_function"
+     "register_tick_function"
+     "rename"
+     "reset"
+     "restore_error_handler"
+     "restore_exception_handler"
+     "restore_include_path"
+     "rewind"
+     "rewinddir"
+     "rmdir"
+     "round"
+     "rsort"
+     "rtrim"
+     "sapi_windows_cp_conv"
+     "sapi_windows_cp_get"
+     "sapi_windows_cp_is_utf8"
+     "sapi_windows_cp_set"
+     "sapi_windows_generate_ctrl_event"
+     "sapi_windows_set_ctrl_handler"
+     "sapi_windows_vt100_support"
+     "scandir"
+     "seaslog_get_author"
+     "seaslog_get_version"
+     "serialize"
+     "session_abort"
+     "session_cache_expire"
+     "session_cache_limiter"
+     "session_commit"
+     "session_create_id"
+     "session_decode"
+     "session_destroy"
+     "session_encode"
+     "session_gc"
+     "session_get_cookie_params"
+     "session_id"
+     "session_module_name"
+     "session_name"
+     "session_regenerate_id"
+     "session_register_shutdown"
+     "session_reset"
+     "session_save_path"
+     "session_set_cookie_params"
+     "session_set_save_handler"
+     "session_start"
+     "session_status"
+     "session_unset"
+     "session_write_close"
+     "set_error_handler"
+     "set_exception_handler"
+     "set_file_buffer"
+     "set_include_path"
+     "set_time_limit"
+     "setcookie"
+     "setlocale"
+     "setrawcookie"
+     "settype"
+     "sha1"
+     "sha1_file"
+     "shell_exec"
+     "show_source"
+     "shuffle"
+     "similar_text"
+     "sin"
+     "sinh"
+     "sizeof"
+     "sleep"
+     "sort"
+     "soundex"
+     "spl_autoload"
+     "spl_autoload_call"
+     "spl_autoload_extensions"
+     "spl_autoload_functions"
+     "spl_autoload_register"
+     "spl_autoload_unregister"
+     "spl_classes"
+     "spl_object_hash"
+     "spl_object_id"
+     "sprintf"
+     "sqrt"
+     "srand"
+     "sscanf"
+     "stat"
+     "str_contains"
+     "str_ends_with"
+     "str_getcsv"
+     "str_ireplace"
+     "str_pad"
+     "str_repeat"
+     "str_replace"
+     "str_rot13"
+     "str_shuffle"
+     "str_split"
+     "str_starts_with"
+     "str_word_count"
+     "strcasecmp"
+     "strchr"
+     "strcmp"
+     "strcoll"
+     "strcspn"
+     "stream_bucket_append"
+     "stream_bucket_make_writeable"
+     "stream_bucket_new"
+     "stream_bucket_prepend"
+     "stream_context_create"
+     "stream_context_get_default"
+     "stream_context_get_options"
+     "stream_context_get_params"
+     "stream_context_set_default"
+     "stream_context_set_option"
+     "stream_context_set_params"
+     "stream_copy_to_stream"
+     "stream_filter_append"
+     "stream_filter_prepend"
+     "stream_filter_register"
+     "stream_filter_remove"
+     "stream_get_contents"
+     "stream_get_filters"
+     "stream_get_line"
+     "stream_get_meta_data"
+     "stream_get_transports"
+     "stream_get_wrappers"
+     "stream_is_local"
+     "stream_isatty"
+     "stream_notification_callback"
+     "stream_register_wrapper"
+     "stream_resolve_include_path"
+     "stream_select"
+     "stream_set_blocking"
+     "stream_set_chunk_size"
+     "stream_set_read_buffer"
+     "stream_set_timeout"
+     "stream_set_write_buffer"
+     "stream_socket_accept"
+     "stream_socket_client"
+     "stream_socket_enable_crypto"
+     "stream_socket_get_name"
+     "stream_socket_pair"
+     "stream_socket_recvfrom"
+     "stream_socket_sendto"
+     "stream_socket_server"
+     "stream_socket_shutdown"
+     "stream_supports_lock"
+     "stream_wrapper_register"
+     "stream_wrapper_restore"
+     "stream_wrapper_unregister"
+     "strftime"
+     "strip_tags"
+     "stripcslashes"
+     "stripos"
+     "stripslashes"
+     "stristr"
+     "strlen"
+     "strnatcasecmp"
+     "strnatcmp"
+     "strncasecmp"
+     "strncmp"
+     "strpbrk"
+     "strpos"
+     "strptime"
+     "strrchr"
+     "strrev"
+     "strripos"
+     "strrpos"
+     "strspn"
+     "strstr"
+     "strtok"
+     "strtolower"
+     "strtotime"
+     "strtoupper"
+     "strtr"
+     "strval"
+     "substr"
+     "substr_compare"
+     "substr_count"
+     "substr_replace"
+     "symlink"
+     "sys_get_temp_dir"
+     "sys_getloadavg"
+     "syslog"
+     "system"
+     "tan"
+     "tanh"
+     "tempnam"
+     "time"
+     "time_nanosleep"
+     "time_sleep_until"
+     "timezone_abbreviations_list"
+     "timezone_identifiers_list"
+     "timezone_location_get"
+     "timezone_name_from_abbr"
+     "timezone_name_get"
+     "timezone_offset_get"
+     "timezone_open"
+     "timezone_transitions_get"
+     "timezone_version_get"
+     "tmpfile"
+     "token_get_all"
+     "token_name"
+     "touch"
+     "trait_exists"
+     "trigger_error"
+     "trim"
+     "uasort"
+     "ucfirst"
+     "ucwords"
+     "uksort"
+     "umask"
+     "uniqid"
+     "unlink"
+     "unpack"
+     "unregister_tick_function"
+     "unserialize"
+     "unset"
+     "urldecode"
+     "urlencode"
+     "user_error"
+     "usleep"
+     "usort"
+     "var_dump"
+     "var_export"
+     "version_compare"
+     "vfprintf"
+     "vprintf"
+     "vsprintf"
+     "wordwrap"
+     "zend_thread_id"
+     "zend_version")
+    (cubrid
+     "cubrid_affected_rows"
+     "cubrid_bind"
+     "cubrid_client_encoding"
+     "cubrid_close"
+     "cubrid_close_prepare"
+     "cubrid_close_request"
+     "cubrid_col_get"
+     "cubrid_col_size"
+     "cubrid_column_names"
+     "cubrid_column_types"
+     "cubrid_commit"
+     "cubrid_connect"
+     "cubrid_connect_with_url"
+     "cubrid_current_oid"
+     "cubrid_data_seek"
+     "cubrid_db_name"
+     "cubrid_disconnect"
+     "cubrid_drop"
+     "cubrid_errno"
+     "cubrid_error"
+     "cubrid_error_code"
+     "cubrid_error_code_facility"
+     "cubrid_error_msg"
+     "cubrid_execute"
+     "cubrid_fetch"
+     "cubrid_fetch_array"
+     "cubrid_fetch_assoc"
+     "cubrid_fetch_field"
+     "cubrid_fetch_lengths"
+     "cubrid_fetch_object"
+     "cubrid_fetch_row"
+     "cubrid_field_flags"
+     "cubrid_field_len"
+     "cubrid_field_name"
+     "cubrid_field_seek"
+     "cubrid_field_table"
+     "cubrid_field_type"
+     "cubrid_free_result"
+     "cubrid_get"
+     "cubrid_get_autocommit"
+     "cubrid_get_charset"
+     "cubrid_get_class_name"
+     "cubrid_get_client_info"
+     "cubrid_get_db_parameter"
+     "cubrid_get_query_timeout"
+     "cubrid_get_server_info"
+     "cubrid_insert_id"
+     "cubrid_is_instance"
+     "cubrid_list_dbs"
+     "cubrid_load_from_glo"
+     "cubrid_lob2_bind"
+     "cubrid_lob2_close"
+     "cubrid_lob2_export"
+     "cubrid_lob2_import"
+     "cubrid_lob2_new"
+     "cubrid_lob2_read"
+     "cubrid_lob2_seek"
+     "cubrid_lob2_seek64"
+     "cubrid_lob2_size"
+     "cubrid_lob2_size64"
+     "cubrid_lob2_tell"
+     "cubrid_lob2_tell64"
+     "cubrid_lob2_write"
+     "cubrid_lob_close"
+     "cubrid_lob_export"
+     "cubrid_lob_get"
+     "cubrid_lob_send"
+     "cubrid_lob_size"
+     "cubrid_lock_read"
+     "cubrid_lock_write"
+     "cubrid_move_cursor"
+     "cubrid_new_glo"
+     "cubrid_next_result"
+     "cubrid_num_cols"
+     "cubrid_num_fields"
+     "cubrid_num_rows"
+     "cubrid_pconnect"
+     "cubrid_pconnect_with_url"
+     "cubrid_ping"
+     "cubrid_prepare"
+     "cubrid_put"
+     "cubrid_query"
+     "cubrid_real_escape_string"
+     "cubrid_result"
+     "cubrid_rollback"
+     "cubrid_save_to_glo"
+     "cubrid_schema"
+     "cubrid_send_glo"
+     "cubrid_seq_drop"
+     "cubrid_seq_insert"
+     "cubrid_seq_put"
+     "cubrid_set_add"
+     "cubrid_set_autocommit"
+     "cubrid_set_db_parameter"
+     "cubrid_set_drop"
+     "cubrid_set_query_timeout"
+     "cubrid_unbuffered_query"
+     "cubrid_version")
+    (curl
+     "curl_close"
+     "curl_copy_handle"
+     "curl_errno"
+     "curl_error"
+     "curl_escape"
+     "curl_exec"
+     "curl_file_create"
+     "curl_getinfo"
+     "curl_init"
+     "curl_multi_add_handle"
+     "curl_multi_close"
+     "curl_multi_errno"
+     "curl_multi_exec"
+     "curl_multi_getcontent"
+     "curl_multi_info_read"
+     "curl_multi_init"
+     "curl_multi_remove_handle"
+     "curl_multi_select"
+     "curl_multi_setopt"
+     "curl_multi_strerror"
+     "curl_pause"
+     "curl_reset"
+     "curl_setopt"
+     "curl_setopt_array"
+     "curl_share_close"
+     "curl_share_errno"
+     "curl_share_init"
+     "curl_share_setopt"
+     "curl_share_strerror"
+     "curl_strerror"
+     "curl_unescape"
+     "curl_version")
+    (dba
+     "dba_close"
+     "dba_delete"
+     "dba_exists"
+     "dba_fetch"
+     "dba_firstkey"
+     "dba_handlers"
+     "dba_insert"
+     "dba_key_split"
+     "dba_list"
+     "dba_nextkey"
+     "dba_open"
+     "dba_optimize"
+     "dba_popen"
+     "dba_replace"
+     "dba_sync")
+    (dbase
+     "dbase_add_record"
+     "dbase_close"
+     "dbase_create"
+     "dbase_delete_record"
+     "dbase_get_header_info"
+     "dbase_get_record"
+     "dbase_get_record_with_names"
+     "dbase_numfields"
+     "dbase_numrecords"
+     "dbase_open"
+     "dbase_pack"
+     "dbase_replace_record")
+    (dio
+     "dio_close"
+     "dio_fcntl"
+     "dio_open"
+     "dio_read"
+     "dio_seek"
+     "dio_stat"
+     "dio_tcsetattr"
+     "dio_truncate"
+     "dio_write")
+    (eio
+     "eio_busy"
+     "eio_cancel"
+     "eio_chmod"
+     "eio_chown"
+     "eio_close"
+     "eio_custom"
+     "eio_dup2"
+     "eio_event_loop"
+     "eio_fallocate"
+     "eio_fchmod"
+     "eio_fchown"
+     "eio_fdatasync"
+     "eio_fstat"
+     "eio_fstatvfs"
+     "eio_fsync"
+     "eio_ftruncate"
+     "eio_futime"
+     "eio_get_event_stream"
+     "eio_get_last_error"
+     "eio_grp"
+     "eio_grp_add"
+     "eio_grp_cancel"
+     "eio_grp_limit"
+     "eio_init"
+     "eio_link"
+     "eio_lstat"
+     "eio_mkdir"
+     "eio_mknod"
+     "eio_nop"
+     "eio_npending"
+     "eio_nready"
+     "eio_nreqs"
+     "eio_nthreads"
+     "eio_open"
+     "eio_poll"
+     "eio_read"
+     "eio_readahead"
+     "eio_readdir"
+     "eio_readlink"
+     "eio_realpath"
+     "eio_rename"
+     "eio_rmdir"
+     "eio_seek"
+     "eio_sendfile"
+     "eio_set_max_idle"
+     "eio_set_max_parallel"
+     "eio_set_max_poll_reqs"
+     "eio_set_max_poll_time"
+     "eio_set_min_parallel"
+     "eio_stat"
+     "eio_statvfs"
+     "eio_symlink"
+     "eio_sync"
+     "eio_sync_file_range"
+     "eio_syncfs"
+     "eio_truncate"
+     "eio_unlink"
+     "eio_utime"
+     "eio_write")
+    (enchant
+     "enchant_broker_describe"
+     "enchant_broker_dict_exists"
+     "enchant_broker_free"
+     "enchant_broker_free_dict"
+     "enchant_broker_get_dict_path"
+     "enchant_broker_get_error"
+     "enchant_broker_init"
+     "enchant_broker_list_dicts"
+     "enchant_broker_request_dict"
+     "enchant_broker_request_pwl_dict"
+     "enchant_broker_set_dict_path"
+     "enchant_broker_set_ordering"
+     "enchant_dict_add"
+     "enchant_dict_add_to_personal"
+     "enchant_dict_add_to_session"
+     "enchant_dict_check"
+     "enchant_dict_describe"
+     "enchant_dict_get_error"
+     "enchant_dict_is_added"
+     "enchant_dict_is_in_session"
+     "enchant_dict_quick_check"
+     "enchant_dict_store_replacement"
+     "enchant_dict_suggest")
+    (exif
+     "exif_imagetype"
+     "exif_read_data"
+     "exif_tagname"
+     "exif_thumbnail"
+     "read_exif_data")
+    (expect
+     "expect_expectl"
+     "expect_popen")
+    (fann
+     "fann_cascadetrain_on_data"
+     "fann_cascadetrain_on_file"
+     "fann_clear_scaling_params"
+     "fann_copy"
+     "fann_create_from_file"
+     "fann_create_shortcut"
+     "fann_create_shortcut_array"
+     "fann_create_sparse"
+     "fann_create_sparse_array"
+     "fann_create_standard"
+     "fann_create_standard_array"
+     "fann_create_train"
+     "fann_create_train_from_callback"
+     "fann_descale_input"
+     "fann_descale_output"
+     "fann_descale_train"
+     "fann_destroy"
+     "fann_destroy_train"
+     "fann_duplicate_train_data"
+     "fann_get_MSE"
+     "fann_get_activation_function"
+     "fann_get_activation_steepness"
+     "fann_get_bias_array"
+     "fann_get_bit_fail"
+     "fann_get_bit_fail_limit"
+     "fann_get_cascade_activation_functions"
+     "fann_get_cascade_activation_functions_count"
+     "fann_get_cascade_activation_steepnesses"
+     "fann_get_cascade_activation_steepnesses_count"
+     "fann_get_cascade_candidate_change_fraction"
+     "fann_get_cascade_candidate_limit"
+     "fann_get_cascade_candidate_stagnation_epochs"
+     "fann_get_cascade_max_cand_epochs"
+     "fann_get_cascade_max_out_epochs"
+     "fann_get_cascade_min_cand_epochs"
+     "fann_get_cascade_min_out_epochs"
+     "fann_get_cascade_num_candidate_groups"
+     "fann_get_cascade_num_candidates"
+     "fann_get_cascade_output_change_fraction"
+     "fann_get_cascade_output_stagnation_epochs"
+     "fann_get_cascade_weight_multiplier"
+     "fann_get_connection_array"
+     "fann_get_connection_rate"
+     "fann_get_errno"
+     "fann_get_errstr"
+     "fann_get_layer_array"
+     "fann_get_learning_momentum"
+     "fann_get_learning_rate"
+     "fann_get_network_type"
+     "fann_get_num_input"
+     "fann_get_num_layers"
+     "fann_get_num_output"
+     "fann_get_quickprop_decay"
+     "fann_get_quickprop_mu"
+     "fann_get_rprop_decrease_factor"
+     "fann_get_rprop_delta_max"
+     "fann_get_rprop_delta_min"
+     "fann_get_rprop_delta_zero"
+     "fann_get_rprop_increase_factor"
+     "fann_get_sarprop_step_error_shift"
+     "fann_get_sarprop_step_error_threshold_factor"
+     "fann_get_sarprop_temperature"
+     "fann_get_sarprop_weight_decay_shift"
+     "fann_get_total_connections"
+     "fann_get_total_neurons"
+     "fann_get_train_error_function"
+     "fann_get_train_stop_function"
+     "fann_get_training_algorithm"
+     "fann_init_weights"
+     "fann_length_train_data"
+     "fann_merge_train_data"
+     "fann_num_input_train_data"
+     "fann_num_output_train_data"
+     "fann_print_error"
+     "fann_randomize_weights"
+     "fann_read_train_from_file"
+     "fann_reset_MSE"
+     "fann_reset_errno"
+     "fann_reset_errstr"
+     "fann_run"
+     "fann_save"
+     "fann_save_train"
+     "fann_scale_input"
+     "fann_scale_input_train_data"
+     "fann_scale_output"
+     "fann_scale_output_train_data"
+     "fann_scale_train"
+     "fann_scale_train_data"
+     "fann_set_activation_function"
+     "fann_set_activation_function_hidden"
+     "fann_set_activation_function_layer"
+     "fann_set_activation_function_output"
+     "fann_set_activation_steepness"
+     "fann_set_activation_steepness_hidden"
+     "fann_set_activation_steepness_layer"
+     "fann_set_activation_steepness_output"
+     "fann_set_bit_fail_limit"
+     "fann_set_callback"
+     "fann_set_cascade_activation_functions"
+     "fann_set_cascade_activation_steepnesses"
+     "fann_set_cascade_candidate_change_fraction"
+     "fann_set_cascade_candidate_limit"
+     "fann_set_cascade_candidate_stagnation_epochs"
+     "fann_set_cascade_max_cand_epochs"
+     "fann_set_cascade_max_out_epochs"
+     "fann_set_cascade_min_cand_epochs"
+     "fann_set_cascade_min_out_epochs"
+     "fann_set_cascade_num_candidate_groups"
+     "fann_set_cascade_output_change_fraction"
+     "fann_set_cascade_output_stagnation_epochs"
+     "fann_set_cascade_weight_multiplier"
+     "fann_set_error_log"
+     "fann_set_input_scaling_params"
+     "fann_set_learning_momentum"
+     "fann_set_learning_rate"
+     "fann_set_output_scaling_params"
+     "fann_set_quickprop_decay"
+     "fann_set_quickprop_mu"
+     "fann_set_rprop_decrease_factor"
+     "fann_set_rprop_delta_max"
+     "fann_set_rprop_delta_min"
+     "fann_set_rprop_delta_zero"
+     "fann_set_rprop_increase_factor"
+     "fann_set_sarprop_step_error_shift"
+     "fann_set_sarprop_step_error_threshold_factor"
+     "fann_set_sarprop_temperature"
+     "fann_set_sarprop_weight_decay_shift"
+     "fann_set_scaling_params"
+     "fann_set_train_error_function"
+     "fann_set_train_stop_function"
+     "fann_set_training_algorithm"
+     "fann_set_weight"
+     "fann_set_weight_array"
+     "fann_shuffle_train_data"
+     "fann_subset_train_data"
+     "fann_test"
+     "fann_test_data"
+     "fann_train"
+     "fann_train_epoch"
+     "fann_train_on_data"
+     "fann_train_on_file")
+    (fdf
+     "fdf_add_doc_javascript"
+     "fdf_add_template"
+     "fdf_close"
+     "fdf_create"
+     "fdf_enum_values"
+     "fdf_errno"
+     "fdf_error"
+     "fdf_get_ap"
+     "fdf_get_attachment"
+     "fdf_get_encoding"
+     "fdf_get_file"
+     "fdf_get_flags"
+     "fdf_get_opt"
+     "fdf_get_status"
+     "fdf_get_value"
+     "fdf_get_version"
+     "fdf_header"
+     "fdf_next_field_name"
+     "fdf_open"
+     "fdf_open_string"
+     "fdf_remove_item"
+     "fdf_save"
+     "fdf_save_string"
+     "fdf_set_ap"
+     "fdf_set_encoding"
+     "fdf_set_file"
+     "fdf_set_flags"
+     "fdf_set_javascript_action"
+     "fdf_set_on_import_javascript"
+     "fdf_set_opt"
+     "fdf_set_status"
+     "fdf_set_submit_form_action"
+     "fdf_set_target_frame"
+     "fdf_set_value"
+     "fdf_set_version")
+    (fpm
+     "fpm_get_status")
+    (ftp
+     "ftp_alloc"
+     "ftp_append"
+     "ftp_cdup"
+     "ftp_chdir"
+     "ftp_chmod"
+     "ftp_close"
+     "ftp_connect"
+     "ftp_delete"
+     "ftp_exec"
+     "ftp_fget"
+     "ftp_fput"
+     "ftp_get"
+     "ftp_get_option"
+     "ftp_login"
+     "ftp_mdtm"
+     "ftp_mkdir"
+     "ftp_mlsd"
+     "ftp_nb_continue"
+     "ftp_nb_fget"
+     "ftp_nb_fput"
+     "ftp_nb_get"
+     "ftp_nb_put"
+     "ftp_nlist"
+     "ftp_pasv"
+     "ftp_put"
+     "ftp_pwd"
+     "ftp_quit"
+     "ftp_raw"
+     "ftp_rawlist"
+     "ftp_rename"
+     "ftp_rmdir"
+     "ftp_set_option"
+     "ftp_site"
+     "ftp_size"
+     "ftp_ssl_connect"
+     "ftp_systype")
+    (gd
+     "gd_info"
+     "getimagesize"
+     "getimagesizefromstring"
+     "image2wbmp"
+     "image_type_to_extension"
+     "image_type_to_mime_type"
+     "imageaffine"
+     "imageaffinematrixconcat"
+     "imageaffinematrixget"
+     "imagealphablending"
+     "imageantialias"
+     "imagearc"
+     "imageavif"
+     "imagebmp"
+     "imagechar"
+     "imagecharup"
+     "imagecolorallocate"
+     "imagecolorallocatealpha"
+     "imagecolorat"
+     "imagecolorclosest"
+     "imagecolorclosestalpha"
+     "imagecolorclosesthwb"
+     "imagecolordeallocate"
+     "imagecolorexact"
+     "imagecolorexactalpha"
+     "imagecolormatch"
+     "imagecolorresolve"
+     "imagecolorresolvealpha"
+     "imagecolorset"
+     "imagecolorsforindex"
+     "imagecolorstotal"
+     "imagecolortransparent"
+     "imageconvolution"
+     "imagecopy"
+     "imagecopymerge"
+     "imagecopymergegray"
+     "imagecopyresampled"
+     "imagecopyresized"
+     "imagecreate"
+     "imagecreatefromavif"
+     "imagecreatefrombmp"
+     "imagecreatefromgd"
+     "imagecreatefromgd2"
+     "imagecreatefromgd2part"
+     "imagecreatefromgif"
+     "imagecreatefromjpeg"
+     "imagecreatefrompng"
+     "imagecreatefromstring"
+     "imagecreatefromtga"
+     "imagecreatefromwbmp"
+     "imagecreatefromwebp"
+     "imagecreatefromxbm"
+     "imagecreatefromxpm"
+     "imagecreatetruecolor"
+     "imagecrop"
+     "imagecropauto"
+     "imagedashedline"
+     "imagedestroy"
+     "imageellipse"
+     "imagefill"
+     "imagefilledarc"
+     "imagefilledellipse"
+     "imagefilledpolygon"
+     "imagefilledrectangle"
+     "imagefilltoborder"
+     "imagefilter"
+     "imageflip"
+     "imagefontheight"
+     "imagefontwidth"
+     "imageftbbox"
+     "imagefttext"
+     "imagegammacorrect"
+     "imagegd"
+     "imagegd2"
+     "imagegetclip"
+     "imagegetinterpolation"
+     "imagegif"
+     "imagegrabscreen"
+     "imagegrabwindow"
+     "imageinterlace"
+     "imageistruecolor"
+     "imagejpeg"
+     "imagelayereffect"
+     "imageline"
+     "imageloadfont"
+     "imageopenpolygon"
+     "imagepalettecopy"
+     "imagepalettetotruecolor"
+     "imagepng"
+     "imagepolygon"
+     "imagerectangle"
+     "imageresolution"
+     "imagerotate"
+     "imagesavealpha"
+     "imagescale"
+     "imagesetbrush"
+     "imagesetclip"
+     "imagesetinterpolation"
+     "imagesetpixel"
+     "imagesetstyle"
+     "imagesetthickness"
+     "imagesettile"
+     "imagestring"
+     "imagestringup"
+     "imagesx"
+     "imagesy"
+     "imagetruecolortopalette"
+     "imagettfbbox"
+     "imagettftext"
+     "imagetypes"
+     "imagewbmp"
+     "imagewebp"
+     "imagexbm"
+     "iptcembed"
+     "iptcparse")
+    (gearman
+     "gearman_job_handle"
+     "gearman_job_status")
+    (geoip
+     "geoip_asnum_by_name"
+     "geoip_continent_code_by_name"
+     "geoip_country_code3_by_name"
+     "geoip_country_code_by_name"
+     "geoip_country_name_by_name"
+     "geoip_database_info"
+     "geoip_db_avail"
+     "geoip_db_filename"
+     "geoip_db_get_all_info"
+     "geoip_domain_by_name"
+     "geoip_id_by_name"
+     "geoip_isp_by_name"
+     "geoip_netspeedcell_by_name"
+     "geoip_org_by_name"
+     "geoip_record_by_name"
+     "geoip_region_by_name"
+     "geoip_region_name_by_code"
+     "geoip_setup_custom_directory"
+     "geoip_time_zone_by_country_and_region")
+    (gettext
+     "bind_textdomain_codeset"
+     "bindtextdomain"
+     "dcgettext"
+     "dcngettext"
+     "dgettext"
+     "dngettext"
+     "gettext"
+     "ngettext"
+     "textdomain")
+    (gmp
+     "gmp_abs"
+     "gmp_add"
+     "gmp_and"
+     "gmp_binomial"
+     "gmp_clrbit"
+     "gmp_cmp"
+     "gmp_com"
+     "gmp_div"
+     "gmp_div_q"
+     "gmp_div_qr"
+     "gmp_div_r"
+     "gmp_divexact"
+     "gmp_export"
+     "gmp_fact"
+     "gmp_gcd"
+     "gmp_gcdext"
+     "gmp_hamdist"
+     "gmp_import"
+     "gmp_init"
+     "gmp_intval"
+     "gmp_invert"
+     "gmp_jacobi"
+     "gmp_kronecker"
+     "gmp_lcm"
+     "gmp_legendre"
+     "gmp_mod"
+     "gmp_mul"
+     "gmp_neg"
+     "gmp_nextprime"
+     "gmp_or"
+     "gmp_perfect_power"
+     "gmp_perfect_square"
+     "gmp_popcount"
+     "gmp_pow"
+     "gmp_powm"
+     "gmp_prob_prime"
+     "gmp_random"
+     "gmp_random_bits"
+     "gmp_random_range"
+     "gmp_random_seed"
+     "gmp_root"
+     "gmp_rootrem"
+     "gmp_scan0"
+     "gmp_scan1"
+     "gmp_setbit"
+     "gmp_sign"
+     "gmp_sqrt"
+     "gmp_sqrtrem"
+     "gmp_strval"
+     "gmp_sub"
+     "gmp_testbit"
+     "gmp_xor")
+    (gnupg
+     "gnupg_adddecryptkey"
+     "gnupg_addencryptkey"
+     "gnupg_addsignkey"
+     "gnupg_cleardecryptkeys"
+     "gnupg_clearencryptkeys"
+     "gnupg_clearsignkeys"
+     "gnupg_decrypt"
+     "gnupg_decryptverify"
+     "gnupg_deletekey"
+     "gnupg_encrypt"
+     "gnupg_encryptsign"
+     "gnupg_export"
+     "gnupg_getengineinfo"
+     "gnupg_geterror"
+     "gnupg_geterrorinfo"
+     "gnupg_getprotocol"
+     "gnupg_gettrustlist"
+     "gnupg_import"
+     "gnupg_init"
+     "gnupg_keyinfo"
+     "gnupg_listsignatures"
+     "gnupg_setarmor"
+     "gnupg_seterrormode"
+     "gnupg_setsignmode"
+     "gnupg_sign"
+     "gnupg_verify")
+    (ibase
+     "fbird_add_user"
+     "fbird_affected_rows"
+     "fbird_backup"
+     "fbird_blob_add"
+     "fbird_blob_cancel"
+     "fbird_blob_close"
+     "fbird_blob_create"
+     "fbird_blob_echo"
+     "fbird_blob_get"
+     "fbird_blob_import"
+     "fbird_blob_info"
+     "fbird_blob_open"
+     "fbird_close"
+     "fbird_commit"
+     "fbird_commit_ret"
+     "fbird_connect"
+     "fbird_db_info"
+     "fbird_delete_user"
+     "fbird_drop_db"
+     "fbird_errcode"
+     "fbird_errmsg"
+     "fbird_execute"
+     "fbird_fetch_assoc"
+     "fbird_fetch_object"
+     "fbird_fetch_row"
+     "fbird_field_info"
+     "fbird_free_event_handler"
+     "fbird_free_query"
+     "fbird_free_result"
+     "fbird_gen_id"
+     "fbird_maintain_db"
+     "fbird_modify_user"
+     "fbird_name_result"
+     "fbird_num_fields"
+     "fbird_num_params"
+     "fbird_param_info"
+     "fbird_pconnect"
+     "fbird_prepare"
+     "fbird_query"
+     "fbird_restore"
+     "fbird_rollback"
+     "fbird_rollback_ret"
+     "fbird_server_info"
+     "fbird_service_attach"
+     "fbird_service_detach"
+     "fbird_set_event_handler"
+     "fbird_trans"
+     "fbird_wait_event"
+     "ibase_add_user"
+     "ibase_affected_rows"
+     "ibase_backup"
+     "ibase_blob_add"
+     "ibase_blob_cancel"
+     "ibase_blob_close"
+     "ibase_blob_create"
+     "ibase_blob_echo"
+     "ibase_blob_get"
+     "ibase_blob_import"
+     "ibase_blob_info"
+     "ibase_blob_open"
+     "ibase_close"
+     "ibase_commit"
+     "ibase_commit_ret"
+     "ibase_connect"
+     "ibase_db_info"
+     "ibase_delete_user"
+     "ibase_drop_db"
+     "ibase_errcode"
+     "ibase_errmsg"
+     "ibase_execute"
+     "ibase_fetch_assoc"
+     "ibase_fetch_object"
+     "ibase_fetch_row"
+     "ibase_field_info"
+     "ibase_free_event_handler"
+     "ibase_free_query"
+     "ibase_free_result"
+     "ibase_gen_id"
+     "ibase_maintain_db"
+     "ibase_modify_user"
+     "ibase_name_result"
+     "ibase_num_fields"
+     "ibase_num_params"
+     "ibase_param_info"
+     "ibase_pconnect"
+     "ibase_prepare"
+     "ibase_query"
+     "ibase_restore"
+     "ibase_rollback"
+     "ibase_rollback_ret"
+     "ibase_server_info"
+     "ibase_service_attach"
+     "ibase_service_detach"
+     "ibase_set_event_handler"
+     "ibase_trans"
+     "ibase_wait_event")
+    (ibm_db2
+     "db2_autocommit"
+     "db2_bind_param"
+     "db2_client_info"
+     "db2_close"
+     "db2_column_privileges"
+     "db2_columns"
+     "db2_commit"
+     "db2_conn_error"
+     "db2_conn_errormsg"
+     "db2_connect"
+     "db2_cursor_type"
+     "db2_escape_string"
+     "db2_exec"
+     "db2_execute"
+     "db2_fetch_array"
+     "db2_fetch_assoc"
+     "db2_fetch_both"
+     "db2_fetch_object"
+     "db2_fetch_row"
+     "db2_field_display_size"
+     "db2_field_name"
+     "db2_field_num"
+     "db2_field_precision"
+     "db2_field_scale"
+     "db2_field_type"
+     "db2_field_width"
+     "db2_foreign_keys"
+     "db2_free_result"
+     "db2_free_stmt"
+     "db2_get_option"
+     "db2_last_insert_id"
+     "db2_lob_read"
+     "db2_next_result"
+     "db2_num_fields"
+     "db2_num_rows"
+     "db2_pclose"
+     "db2_pconnect"
+     "db2_prepare"
+     "db2_primary_keys"
+     "db2_procedure_columns"
+     "db2_procedures"
+     "db2_result"
+     "db2_rollback"
+     "db2_server_info"
+     "db2_set_option"
+     "db2_special_columns"
+     "db2_statistics"
+     "db2_stmt_error"
+     "db2_stmt_errormsg"
+     "db2_table_privileges"
+     "db2_tables")
+    (iconv
+     "iconv"
+     "iconv_get_encoding"
+     "iconv_mime_decode"
+     "iconv_mime_decode_headers"
+     "iconv_mime_encode"
+     "iconv_set_encoding"
+     "iconv_strlen"
+     "iconv_strpos"
+     "iconv_strrpos"
+     "iconv_substr")
+    (igbinary
+     "igbinary_serialize"
+     "igbinary_unserialize")
+    (imap
+     "imap_8bit"
+     "imap_alerts"
+     "imap_append"
+     "imap_base64"
+     "imap_binary"
+     "imap_body"
+     "imap_bodystruct"
+     "imap_check"
+     "imap_clearflag_full"
+     "imap_close"
+     "imap_create"
+     "imap_createmailbox"
+     "imap_delete"
+     "imap_deletemailbox"
+     "imap_errors"
+     "imap_expunge"
+     "imap_fetch_overview"
+     "imap_fetchbody"
+     "imap_fetchheader"
+     "imap_fetchmime"
+     "imap_fetchstructure"
+     "imap_fetchtext"
+     "imap_gc"
+     "imap_get_quota"
+     "imap_get_quotaroot"
+     "imap_getacl"
+     "imap_getmailboxes"
+     "imap_getsubscribed"
+     "imap_header"
+     "imap_headerinfo"
+     "imap_headers"
+     "imap_last_error"
+     "imap_list"
+     "imap_listmailbox"
+     "imap_listscan"
+     "imap_listsubscribed"
+     "imap_lsub"
+     "imap_mail"
+     "imap_mail_compose"
+     "imap_mail_copy"
+     "imap_mail_move"
+     "imap_mailboxmsginfo"
+     "imap_mime_header_decode"
+     "imap_msgno"
+     "imap_mutf7_to_utf8"
+     "imap_num_msg"
+     "imap_num_recent"
+     "imap_open"
+     "imap_ping"
+     "imap_qprint"
+     "imap_rename"
+     "imap_renamemailbox"
+     "imap_reopen"
+     "imap_rfc822_parse_adrlist"
+     "imap_rfc822_parse_headers"
+     "imap_rfc822_write_address"
+     "imap_savebody"
+     "imap_scan"
+     "imap_scanmailbox"
+     "imap_search"
+     "imap_set_quota"
+     "imap_setacl"
+     "imap_setflag_full"
+     "imap_sort"
+     "imap_status"
+     "imap_subscribe"
+     "imap_thread"
+     "imap_timeout"
+     "imap_uid"
+     "imap_undelete"
+     "imap_unsubscribe"
+     "imap_utf7_decode"
+     "imap_utf7_encode"
+     "imap_utf8"
+     "imap_utf8_to_mutf7")
+    (inotify
+     "inotify_add_watch"
+     "inotify_init"
+     "inotify_queue_len"
+     "inotify_read"
+     "inotify_rm_watch")
+    (intl
+     "collator_asort"
+     "collator_compare"
+     "collator_create"
+     "collator_get_attribute"
+     "collator_get_error_code"
+     "collator_get_error_message"
+     "collator_get_locale"
+     "collator_get_sort_key"
+     "collator_get_strength"
+     "collator_set_attribute"
+     "collator_set_strength"
+     "collator_sort"
+     "collator_sort_with_sort_keys"
+     "datefmt_create"
+     "datefmt_format"
+     "datefmt_format_object"
+     "datefmt_get_calendar"
+     "datefmt_get_calendar_object"
+     "datefmt_get_datetype"
+     "datefmt_get_error_code"
+     "datefmt_get_error_message"
+     "datefmt_get_locale"
+     "datefmt_get_pattern"
+     "datefmt_get_timetype"
+     "datefmt_get_timezone"
+     "datefmt_get_timezone_id"
+     "datefmt_is_lenient"
+     "datefmt_localtime"
+     "datefmt_parse"
+     "datefmt_set_calendar"
+     "datefmt_set_lenient"
+     "datefmt_set_pattern"
+     "datefmt_set_timezone"
+     "grapheme_extract"
+     "grapheme_stripos"
+     "grapheme_stristr"
+     "grapheme_strlen"
+     "grapheme_strpos"
+     "grapheme_strripos"
+     "grapheme_strrpos"
+     "grapheme_strstr"
+     "grapheme_substr"
+     "idn_to_ascii"
+     "idn_to_utf8"
+     "intl_error_name"
+     "intl_get_error_code"
+     "intl_get_error_message"
+     "intl_is_failure"
+     "intlcal_get_error_code"
+     "intlcal_get_error_message"
+     "intltz_count_equivalent_ids"
+     "intltz_create_default"
+     "intltz_create_enumeration"
+     "intltz_create_time_zone"
+     "intltz_create_time_zone_id_enumeration"
+     "intltz_from_date_time_zone"
+     "intltz_get_canonical_id"
+     "intltz_get_display_name"
+     "intltz_get_dst_savings"
+     "intltz_get_equivalent_id"
+     "intltz_get_error_code"
+     "intltz_get_error_message"
+     "intltz_get_gmt"
+     "intltz_get_id"
+     "intltz_get_id_for_windows_id"
+     "intltz_get_offset"
+     "intltz_get_raw_offset"
+     "intltz_get_region"
+     "intltz_get_tz_data_version"
+     "intltz_get_unknown"
+     "intltz_get_windows_id"
+     "intltz_has_same_rules"
+     "intltz_to_date_time_zone"
+     "intltz_use_daylight_time"
+     "locale_accept_from_http"
+     "locale_canonicalize"
+     "locale_compose"
+     "locale_filter_matches"
+     "locale_get_all_variants"
+     "locale_get_default"
+     "locale_get_display_language"
+     "locale_get_display_name"
+     "locale_get_display_region"
+     "locale_get_display_script"
+     "locale_get_display_variant"
+     "locale_get_keywords"
+     "locale_get_primary_language"
+     "locale_get_region"
+     "locale_get_script"
+     "locale_lookup"
+     "locale_parse"
+     "locale_set_default"
+     "msgfmt_create"
+     "msgfmt_format"
+     "msgfmt_format_message"
+     "msgfmt_get_error_code"
+     "msgfmt_get_error_message"
+     "msgfmt_get_locale"
+     "msgfmt_get_pattern"
+     "msgfmt_parse"
+     "msgfmt_parse_message"
+     "msgfmt_set_pattern"
+     "normalizer_get_raw_decomposition"
+     "normalizer_is_normalized"
+     "normalizer_normalize"
+     "numfmt_create"
+     "numfmt_format"
+     "numfmt_format_currency"
+     "numfmt_get_attribute"
+     "numfmt_get_error_code"
+     "numfmt_get_error_message"
+     "numfmt_get_locale"
+     "numfmt_get_pattern"
+     "numfmt_get_symbol"
+     "numfmt_get_text_attribute"
+     "numfmt_parse"
+     "numfmt_parse_currency"
+     "numfmt_set_attribute"
+     "numfmt_set_pattern"
+     "numfmt_set_symbol"
+     "numfmt_set_text_attribute"
+     "resourcebundle_count"
+     "resourcebundle_create"
+     "resourcebundle_get"
+     "resourcebundle_get_error_code"
+     "resourcebundle_get_error_message"
+     "resourcebundle_locales"
+     "transliterator_create"
+     "transliterator_create_from_rules"
+     "transliterator_create_inverse"
+     "transliterator_get_error_code"
+     "transliterator_get_error_message"
+     "transliterator_list_ids"
+     "transliterator_transliterate")
+    (language
+     "__halt_compiler"
+     "array"
+     "assert"
+     "echo"
+     "empty"
+     "isset"
+     "print")
+    (ldap
+     "ldap_8859_to_t61"
+     "ldap_add"
+     "ldap_add_ext"
+     "ldap_bind"
+     "ldap_bind_ext"
+     "ldap_close"
+     "ldap_compare"
+     "ldap_connect"
+     "ldap_control_paged_result"
+     "ldap_control_paged_result_response"
+     "ldap_count_entries"
+     "ldap_count_references"
+     "ldap_delete"
+     "ldap_delete_ext"
+     "ldap_dn2ufn"
+     "ldap_err2str"
+     "ldap_errno"
+     "ldap_error"
+     "ldap_escape"
+     "ldap_exop"
+     "ldap_exop_passwd"
+     "ldap_exop_refresh"
+     "ldap_exop_whoami"
+     "ldap_explode_dn"
+     "ldap_first_attribute"
+     "ldap_first_entry"
+     "ldap_first_reference"
+     "ldap_free_result"
+     "ldap_get_attributes"
+     "ldap_get_dn"
+     "ldap_get_entries"
+     "ldap_get_option"
+     "ldap_get_values"
+     "ldap_get_values_len"
+     "ldap_list"
+     "ldap_mod_add"
+     "ldap_mod_add_ext"
+     "ldap_mod_del"
+     "ldap_mod_del_ext"
+     "ldap_mod_replace"
+     "ldap_mod_replace_ext"
+     "ldap_modify"
+     "ldap_modify_batch"
+     "ldap_next_attribute"
+     "ldap_next_entry"
+     "ldap_next_reference"
+     "ldap_parse_exop"
+     "ldap_parse_reference"
+     "ldap_parse_result"
+     "ldap_read"
+     "ldap_rename"
+     "ldap_rename_ext"
+     "ldap_sasl_bind"
+     "ldap_search"
+     "ldap_set_option"
+     "ldap_set_rebind_proc"
+     "ldap_sort"
+     "ldap_start_tls"
+     "ldap_t61_to_8859"
+     "ldap_unbind")
+    (libxml
+     "libxml_clear_errors"
+     "libxml_disable_entity_loader"
+     "libxml_get_errors"
+     "libxml_get_last_error"
+     "libxml_set_external_entity_loader"
+     "libxml_set_streams_context"
+     "libxml_use_internal_errors")
+    (lzf
+     "lzf_compress"
+     "lzf_decompress"
+     "lzf_optimized_for")
+    (mailparse
+     "mailparse_determine_best_xfer_encoding"
+     "mailparse_msg_create"
+     "mailparse_msg_extract_part"
+     "mailparse_msg_extract_part_file"
+     "mailparse_msg_extract_whole_part_file"
+     "mailparse_msg_free"
+     "mailparse_msg_get_part"
+     "mailparse_msg_get_part_data"
+     "mailparse_msg_get_structure"
+     "mailparse_msg_parse"
+     "mailparse_msg_parse_file"
+     "mailparse_rfc822_parse_addresses"
+     "mailparse_stream_encode"
+     "mailparse_uudecode_all")
+    (mbstring
+     "mb_check_encoding"
+     "mb_chr"
+     "mb_convert_case"
+     "mb_convert_encoding"
+     "mb_convert_kana"
+     "mb_convert_variables"
+     "mb_decode_mimeheader"
+     "mb_decode_numericentity"
+     "mb_detect_encoding"
+     "mb_detect_order"
+     "mb_encode_mimeheader"
+     "mb_encode_numericentity"
+     "mb_encoding_aliases"
+     "mb_ereg"
+     "mb_ereg_match"
+     "mb_ereg_replace"
+     "mb_ereg_replace_callback"
+     "mb_ereg_search"
+     "mb_ereg_search_getpos"
+     "mb_ereg_search_getregs"
+     "mb_ereg_search_init"
+     "mb_ereg_search_pos"
+     "mb_ereg_search_regs"
+     "mb_ereg_search_setpos"
+     "mb_eregi"
+     "mb_eregi_replace"
+     "mb_get_info"
+     "mb_http_input"
+     "mb_http_output"
+     "mb_internal_encoding"
+     "mb_language"
+     "mb_list_encodings"
+     "mb_ord"
+     "mb_output_handler"
+     "mb_parse_str"
+     "mb_preferred_mime_name"
+     "mb_regex_encoding"
+     "mb_regex_set_options"
+     "mb_scrub"
+     "mb_send_mail"
+     "mb_split"
+     "mb_str_split"
+     "mb_strcut"
+     "mb_strimwidth"
+     "mb_stripos"
+     "mb_stristr"
+     "mb_strlen"
+     "mb_strpos"
+     "mb_strrchr"
+     "mb_strrichr"
+     "mb_strripos"
+     "mb_strrpos"
+     "mb_strstr"
+     "mb_strtolower"
+     "mb_strtoupper"
+     "mb_strwidth"
+     "mb_substitute_character"
+     "mb_substr"
+     "mb_substr_count")
+    (memcache
+     "memcache_debug")
+    (mongodb
+     "MongoDB\\BSON\\fromJSON"
+     "MongoDB\\BSON\\fromPHP"
+     "MongoDB\\BSON\\toCanonicalExtendedJSON"
+     "MongoDB\\BSON\\toJSON"
+     "MongoDB\\BSON\\toPHP"
+     "MongoDB\\BSON\\toRelaxedExtendedJSON"
+     "MongoDB\\Driver\\Monitoring\\addSubscriber"
+     "MongoDB\\Driver\\Monitoring\\removeSubscriber")
+    (mqseries
+     "mqseries_back"
+     "mqseries_begin"
+     "mqseries_close"
+     "mqseries_cmit"
+     "mqseries_conn"
+     "mqseries_connx"
+     "mqseries_disc"
+     "mqseries_get"
+     "mqseries_inq"
+     "mqseries_open"
+     "mqseries_put"
+     "mqseries_put1"
+     "mqseries_set"
+     "mqseries_strerror")
+    (mysql-obsolete
+     "expression"
+     "getSession"
+     "mysql_affected_rows"
+     "mysql_client_encoding"
+     "mysql_close"
+     "mysql_connect"
+     "mysql_create_db"
+     "mysql_data_seek"
+     "mysql_db_name"
+     "mysql_db_query"
+     "mysql_drop_db"
+     "mysql_errno"
+     "mysql_error"
+     "mysql_escape_string"
+     "mysql_fetch_array"
+     "mysql_fetch_assoc"
+     "mysql_fetch_field"
+     "mysql_fetch_lengths"
+     "mysql_fetch_object"
+     "mysql_fetch_row"
+     "mysql_field_flags"
+     "mysql_field_len"
+     "mysql_field_name"
+     "mysql_field_seek"
+     "mysql_field_table"
+     "mysql_field_type"
+     "mysql_free_result"
+     "mysql_get_client_info"
+     "mysql_get_host_info"
+     "mysql_get_proto_info"
+     "mysql_get_server_info"
+     "mysql_info"
+     "mysql_insert_id"
+     "mysql_list_dbs"
+     "mysql_list_fields"
+     "mysql_list_processes"
+     "mysql_list_tables"
+     "mysql_num_fields"
+     "mysql_num_rows"
+     "mysql_pconnect"
+     "mysql_ping"
+     "mysql_query"
+     "mysql_real_escape_string"
+     "mysql_result"
+     "mysql_select_db"
+     "mysql_set_charset"
+     "mysql_stat"
+     "mysql_tablename"
+     "mysql_thread_id"
+     "mysql_unbuffered_query")
+    (mysqli
+     "mysqli_affected_rows"
+     "mysqli_autocommit"
+     "mysqli_begin_transaction"
+     "mysqli_change_user"
+     "mysqli_character_set_name"
+     "mysqli_close"
+     "mysqli_commit"
+     "mysqli_connect"
+     "mysqli_connect_errno"
+     "mysqli_connect_error"
+     "mysqli_data_seek"
+     "mysqli_debug"
+     "mysqli_dump_debug_info"
+     "mysqli_embedded_server_end"
+     "mysqli_embedded_server_start"
+     "mysqli_errno"
+     "mysqli_error"
+     "mysqli_error_list"
+     "mysqli_escape_string"
+     "mysqli_execute"
+     "mysqli_fetch_all"
+     "mysqli_fetch_array"
+     "mysqli_fetch_assoc"
+     "mysqli_fetch_column"
+     "mysqli_fetch_field"
+     "mysqli_fetch_field_direct"
+     "mysqli_fetch_fields"
+     "mysqli_fetch_lengths"
+     "mysqli_fetch_object"
+     "mysqli_fetch_row"
+     "mysqli_field_count"
+     "mysqli_field_seek"
+     "mysqli_field_tell"
+     "mysqli_free_result"
+     "mysqli_get_charset"
+     "mysqli_get_client_info"
+     "mysqli_get_client_stats"
+     "mysqli_get_client_version"
+     "mysqli_get_connection_stats"
+     "mysqli_get_host_info"
+     "mysqli_get_links_stats"
+     "mysqli_get_proto_info"
+     "mysqli_get_server_info"
+     "mysqli_get_server_version"
+     "mysqli_get_warnings"
+     "mysqli_info"
+     "mysqli_init"
+     "mysqli_insert_id"
+     "mysqli_kill"
+     "mysqli_more_results"
+     "mysqli_multi_query"
+     "mysqli_next_result"
+     "mysqli_num_fields"
+     "mysqli_num_rows"
+     "mysqli_options"
+     "mysqli_ping"
+     "mysqli_poll"
+     "mysqli_prepare"
+     "mysqli_query"
+     "mysqli_real_connect"
+     "mysqli_real_escape_string"
+     "mysqli_real_query"
+     "mysqli_reap_async_query"
+     "mysqli_refresh"
+     "mysqli_release_savepoint"
+     "mysqli_report"
+     "mysqli_rollback"
+     "mysqli_savepoint"
+     "mysqli_select_db"
+     "mysqli_set_charset"
+     "mysqli_set_opt"
+     "mysqli_sqlstate"
+     "mysqli_ssl_set"
+     "mysqli_stat"
+     "mysqli_stmt_affected_rows"
+     "mysqli_stmt_attr_get"
+     "mysqli_stmt_attr_set"
+     "mysqli_stmt_bind_param"
+     "mysqli_stmt_bind_result"
+     "mysqli_stmt_close"
+     "mysqli_stmt_data_seek"
+     "mysqli_stmt_errno"
+     "mysqli_stmt_error"
+     "mysqli_stmt_error_list"
+     "mysqli_stmt_execute"
+     "mysqli_stmt_fetch"
+     "mysqli_stmt_field_count"
+     "mysqli_stmt_free_result"
+     "mysqli_stmt_get_result"
+     "mysqli_stmt_get_warnings"
+     "mysqli_stmt_init"
+     "mysqli_stmt_insert_id"
+     "mysqli_stmt_more_results"
+     "mysqli_stmt_next_result"
+     "mysqli_stmt_num_rows"
+     "mysqli_stmt_param_count"
+     "mysqli_stmt_prepare"
+     "mysqli_stmt_reset"
+     "mysqli_stmt_result_metadata"
+     "mysqli_stmt_send_long_data"
+     "mysqli_stmt_sqlstate"
+     "mysqli_stmt_store_result"
+     "mysqli_store_result"
+     "mysqli_thread_id"
+     "mysqli_thread_safe"
+     "mysqli_use_result"
+     "mysqli_warning_count")
+    (oauth
+     "oauth_get_sbs"
+     "oauth_urlencode")
+    (obsolete_7
+     "__autoload"
+     "end"
+     "ezmlm_hash"
+     "is_real"
+     "jpeg2wbmp"
+     "mcrypt_create_iv"
+     "mcrypt_decrypt"
+     "mcrypt_enc_get_algorithms_name"
+     "mcrypt_enc_get_block_size"
+     "mcrypt_enc_get_iv_size"
+     "mcrypt_enc_get_key_size"
+     "mcrypt_enc_get_modes_name"
+     "mcrypt_enc_get_supported_key_sizes"
+     "mcrypt_enc_is_block_algorithm"
+     "mcrypt_enc_is_block_algorithm_mode"
+     "mcrypt_enc_is_block_mode"
+     "mcrypt_enc_self_test"
+     "mcrypt_encrypt"
+     "mcrypt_generic"
+     "mcrypt_generic_deinit"
+     "mcrypt_generic_init"
+     "mcrypt_get_block_size"
+     "mcrypt_get_cipher_name"
+     "mcrypt_get_iv_size"
+     "mcrypt_get_key_size"
+     "mcrypt_list_algorithms"
+     "mcrypt_list_modes"
+     "mcrypt_module_close"
+     "mcrypt_module_get_algo_block_size"
+     "mcrypt_module_get_algo_key_size"
+     "mcrypt_module_get_supported_key_sizes"
+     "mcrypt_module_is_block_algorithm"
+     "mcrypt_module_is_block_algorithm_mode"
+     "mcrypt_module_is_block_mode"
+     "mcrypt_module_open"
+     "mcrypt_module_self_test"
+     "mdecrypt_generic"
+     "png2wbmp"
+     "wddx_add_vars"
+     "wddx_deserialize"
+     "wddx_packet_end"
+     "wddx_packet_start"
+     "wddx_serialize_value"
+     "wddx_serialize_vars")
+    (obsolete_8
+     "mhash"
+     "mhash_count"
+     "mhash_get_block_size"
+     "mhash_get_hash_name"
+     "mhash_keygen_s2k"
+     "utf8_decode"
+     "utf8_encode"
+     "zip_close"
+     "zip_entry_close"
+     "zip_entry_compressedsize"
+     "zip_entry_compressionmethod"
+     "zip_entry_filesize"
+     "zip_entry_name"
+     "zip_entry_open"
+     "zip_entry_read"
+     "zip_open"
+     "zip_read")
+    (oci8
+     "oci_bind_array_by_name"
+     "oci_bind_by_name"
+     "oci_cancel"
+     "oci_client_version"
+     "oci_close"
+     "oci_commit"
+     "oci_connect"
+     "oci_define_by_name"
+     "oci_error"
+     "oci_execute"
+     "oci_fetch"
+     "oci_fetch_all"
+     "oci_fetch_array"
+     "oci_fetch_assoc"
+     "oci_fetch_object"
+     "oci_fetch_row"
+     "oci_field_is_null"
+     "oci_field_name"
+     "oci_field_precision"
+     "oci_field_scale"
+     "oci_field_size"
+     "oci_field_type"
+     "oci_field_type_raw"
+     "oci_free_descriptor"
+     "oci_free_statement"
+     "oci_get_implicit_resultset"
+     "oci_internal_debug"
+     "oci_lob_copy"
+     "oci_lob_is_equal"
+     "oci_new_collection"
+     "oci_new_connect"
+     "oci_new_cursor"
+     "oci_new_descriptor"
+     "oci_num_fields"
+     "oci_num_rows"
+     "oci_parse"
+     "oci_password_change"
+     "oci_pconnect"
+     "oci_register_taf_callback"
+     "oci_result"
+     "oci_rollback"
+     "oci_server_version"
+     "oci_set_action"
+     "oci_set_call_timeout"
+     "oci_set_client_identifier"
+     "oci_set_client_info"
+     "oci_set_db_operation"
+     "oci_set_edition"
+     "oci_set_module_name"
+     "oci_set_prefetch"
+     "oci_set_prefetch_lob"
+     "oci_statement_type"
+     "oci_unregister_taf_callback"
+     "ocibindbyname"
+     "ocicancel"
+     "ocicloselob"
+     "ocicollappend"
+     "ocicollassign"
+     "ocicollassignelem"
+     "ocicollgetelem"
+     "ocicollmax"
+     "ocicollsize"
+     "ocicolltrim"
+     "ocicolumnisnull"
+     "ocicolumnname"
+     "ocicolumnprecision"
+     "ocicolumnscale"
+     "ocicolumnsize"
+     "ocicolumntype"
+     "ocicolumntyperaw"
+     "ocicommit"
+     "ocidefinebyname"
+     "ocierror"
+     "ociexecute"
+     "ocifetch"
+     "ocifetchinto"
+     "ocifetchstatement"
+     "ocifreecollection"
+     "ocifreecursor"
+     "ocifreedesc"
+     "ocifreestatement"
+     "ociinternaldebug"
+     "ociloadlob"
+     "ocilogoff"
+     "ocilogon"
+     "ocinewcollection"
+     "ocinewcursor"
+     "ocinewdescriptor"
+     "ocinlogon"
+     "ocinumcols"
+     "ociparse"
+     "ociplogon"
+     "ociresult"
+     "ocirollback"
+     "ocirowcount"
+     "ocisavelob"
+     "ocisavelobfile"
+     "ociserverversion"
+     "ocisetprefetch"
+     "ocistatementtype"
+     "ociwritelobtofile"
+     "ociwritetemporarylob")
+    (odbc
+     "odbc_autocommit"
+     "odbc_binmode"
+     "odbc_close"
+     "odbc_close_all"
+     "odbc_columnprivileges"
+     "odbc_columns"
+     "odbc_commit"
+     "odbc_connect"
+     "odbc_cursor"
+     "odbc_data_source"
+     "odbc_do"
+     "odbc_error"
+     "odbc_errormsg"
+     "odbc_exec"
+     "odbc_execute"
+     "odbc_fetch_array"
+     "odbc_fetch_into"
+     "odbc_fetch_object"
+     "odbc_fetch_row"
+     "odbc_field_len"
+     "odbc_field_name"
+     "odbc_field_num"
+     "odbc_field_precision"
+     "odbc_field_scale"
+     "odbc_field_type"
+     "odbc_foreignkeys"
+     "odbc_free_result"
+     "odbc_gettypeinfo"
+     "odbc_longreadlen"
+     "odbc_next_result"
+     "odbc_num_fields"
+     "odbc_num_rows"
+     "odbc_pconnect"
+     "odbc_prepare"
+     "odbc_primarykeys"
+     "odbc_procedurecolumns"
+     "odbc_procedures"
+     "odbc_result"
+     "odbc_result_all"
+     "odbc_rollback"
+     "odbc_setoption"
+     "odbc_specialcolumns"
+     "odbc_statistics"
+     "odbc_tableprivileges"
+     "odbc_tables")
+    (openal
+     "openal_buffer_create"
+     "openal_buffer_data"
+     "openal_buffer_destroy"
+     "openal_buffer_get"
+     "openal_buffer_loadwav"
+     "openal_context_create"
+     "openal_context_current"
+     "openal_context_destroy"
+     "openal_context_process"
+     "openal_context_suspend"
+     "openal_device_close"
+     "openal_device_open"
+     "openal_listener_get"
+     "openal_listener_set"
+     "openal_source_create"
+     "openal_source_destroy"
+     "openal_source_get"
+     "openal_source_pause"
+     "openal_source_play"
+     "openal_source_rewind"
+     "openal_source_set"
+     "openal_source_stop"
+     "openal_stream")
+    (openssl
+     "openssl_cipher_iv_length"
+     "openssl_cms_decrypt"
+     "openssl_cms_encrypt"
+     "openssl_cms_read"
+     "openssl_cms_sign"
+     "openssl_cms_verify"
+     "openssl_csr_export"
+     "openssl_csr_export_to_file"
+     "openssl_csr_get_public_key"
+     "openssl_csr_get_subject"
+     "openssl_csr_new"
+     "openssl_csr_sign"
+     "openssl_decrypt"
+     "openssl_dh_compute_key"
+     "openssl_digest"
+     "openssl_encrypt"
+     "openssl_error_string"
+     "openssl_free_key"
+     "openssl_get_cert_locations"
+     "openssl_get_cipher_methods"
+     "openssl_get_curve_names"
+     "openssl_get_md_methods"
+     "openssl_get_privatekey"
+     "openssl_get_publickey"
+     "openssl_open"
+     "openssl_pbkdf2"
+     "openssl_pkcs12_export"
+     "openssl_pkcs12_export_to_file"
+     "openssl_pkcs12_read"
+     "openssl_pkcs7_decrypt"
+     "openssl_pkcs7_encrypt"
+     "openssl_pkcs7_read"
+     "openssl_pkcs7_sign"
+     "openssl_pkcs7_verify"
+     "openssl_pkey_derive"
+     "openssl_pkey_export"
+     "openssl_pkey_export_to_file"
+     "openssl_pkey_free"
+     "openssl_pkey_get_details"
+     "openssl_pkey_get_private"
+     "openssl_pkey_get_public"
+     "openssl_pkey_new"
+     "openssl_private_decrypt"
+     "openssl_private_encrypt"
+     "openssl_public_decrypt"
+     "openssl_public_encrypt"
+     "openssl_random_pseudo_bytes"
+     "openssl_seal"
+     "openssl_sign"
+     "openssl_spki_export"
+     "openssl_spki_export_challenge"
+     "openssl_spki_new"
+     "openssl_spki_verify"
+     "openssl_verify"
+     "openssl_x509_check_private_key"
+     "openssl_x509_checkpurpose"
+     "openssl_x509_export"
+     "openssl_x509_export_to_file"
+     "openssl_x509_fingerprint"
+     "openssl_x509_free"
+     "openssl_x509_parse"
+     "openssl_x509_read"
+     "openssl_x509_verify")
+    (parallel
+     "parallel\\bootstrap"
+     "parallel\\run")
+    (pcntl
+     "pcntl_alarm"
+     "pcntl_async_signals"
+     "pcntl_errno"
+     "pcntl_exec"
+     "pcntl_fork"
+     "pcntl_get_last_error"
+     "pcntl_getpriority"
+     "pcntl_rfork"
+     "pcntl_setpriority"
+     "pcntl_signal"
+     "pcntl_signal_dispatch"
+     "pcntl_signal_get_handler"
+     "pcntl_sigprocmask"
+     "pcntl_sigtimedwait"
+     "pcntl_sigwaitinfo"
+     "pcntl_strerror"
+     "pcntl_unshare"
+     "pcntl_wait"
+     "pcntl_waitpid"
+     "pcntl_wexitstatus"
+     "pcntl_wifexited"
+     "pcntl_wifsignaled"
+     "pcntl_wifstopped"
+     "pcntl_wstopsig"
+     "pcntl_wtermsig")
+    (pgsql
+     "pg_affected_rows"
+     "pg_cancel_query"
+     "pg_client_encoding"
+     "pg_close"
+     "pg_connect"
+     "pg_connect_poll"
+     "pg_connection_busy"
+     "pg_connection_reset"
+     "pg_connection_status"
+     "pg_consume_input"
+     "pg_convert"
+     "pg_copy_from"
+     "pg_copy_to"
+     "pg_dbname"
+     "pg_delete"
+     "pg_end_copy"
+     "pg_escape_bytea"
+     "pg_escape_identifier"
+     "pg_escape_literal"
+     "pg_escape_string"
+     "pg_execute"
+     "pg_fetch_all"
+     "pg_fetch_all_columns"
+     "pg_fetch_array"
+     "pg_fetch_assoc"
+     "pg_fetch_object"
+     "pg_fetch_result"
+     "pg_fetch_row"
+     "pg_field_is_null"
+     "pg_field_name"
+     "pg_field_num"
+     "pg_field_prtlen"
+     "pg_field_size"
+     "pg_field_table"
+     "pg_field_type"
+     "pg_field_type_oid"
+     "pg_flush"
+     "pg_free_result"
+     "pg_get_notify"
+     "pg_get_pid"
+     "pg_get_result"
+     "pg_host"
+     "pg_insert"
+     "pg_last_error"
+     "pg_last_notice"
+     "pg_last_oid"
+     "pg_lo_close"
+     "pg_lo_create"
+     "pg_lo_export"
+     "pg_lo_import"
+     "pg_lo_open"
+     "pg_lo_read"
+     "pg_lo_read_all"
+     "pg_lo_seek"
+     "pg_lo_tell"
+     "pg_lo_truncate"
+     "pg_lo_unlink"
+     "pg_lo_write"
+     "pg_meta_data"
+     "pg_num_fields"
+     "pg_num_rows"
+     "pg_options"
+     "pg_parameter_status"
+     "pg_pconnect"
+     "pg_ping"
+     "pg_port"
+     "pg_prepare"
+     "pg_put_line"
+     "pg_query"
+     "pg_query_params"
+     "pg_result_error"
+     "pg_result_error_field"
+     "pg_result_seek"
+     "pg_result_status"
+     "pg_select"
+     "pg_send_execute"
+     "pg_send_prepare"
+     "pg_send_query"
+     "pg_send_query_params"
+     "pg_set_client_encoding"
+     "pg_set_error_verbosity"
+     "pg_socket"
+     "pg_trace"
+     "pg_transaction_status"
+     "pg_tty"
+     "pg_unescape_bytea"
+     "pg_untrace"
+     "pg_update"
+     "pg_version")
+    (posix
+     "posix_access"
+     "posix_ctermid"
+     "posix_errno"
+     "posix_get_last_error"
+     "posix_getcwd"
+     "posix_getegid"
+     "posix_geteuid"
+     "posix_getgid"
+     "posix_getgrgid"
+     "posix_getgrnam"
+     "posix_getgroups"
+     "posix_getlogin"
+     "posix_getpgid"
+     "posix_getpgrp"
+     "posix_getpid"
+     "posix_getppid"
+     "posix_getpwnam"
+     "posix_getpwuid"
+     "posix_getrlimit"
+     "posix_getsid"
+     "posix_getuid"
+     "posix_initgroups"
+     "posix_isatty"
+     "posix_kill"
+     "posix_mkfifo"
+     "posix_mknod"
+     "posix_setegid"
+     "posix_seteuid"
+     "posix_setgid"
+     "posix_setpgid"
+     "posix_setrlimit"
+     "posix_setsid"
+     "posix_setuid"
+     "posix_strerror"
+     "posix_times"
+     "posix_ttyname"
+     "posix_uname")
+    (ps
+     "ps_add_bookmark"
+     "ps_add_launchlink"
+     "ps_add_locallink"
+     "ps_add_note"
+     "ps_add_pdflink"
+     "ps_add_weblink"
+     "ps_arc"
+     "ps_arcn"
+     "ps_begin_page"
+     "ps_begin_pattern"
+     "ps_begin_template"
+     "ps_circle"
+     "ps_clip"
+     "ps_close"
+     "ps_close_image"
+     "ps_closepath"
+     "ps_closepath_stroke"
+     "ps_continue_text"
+     "ps_curveto"
+     "ps_delete"
+     "ps_end_page"
+     "ps_end_pattern"
+     "ps_end_template"
+     "ps_fill"
+     "ps_fill_stroke"
+     "ps_findfont"
+     "ps_get_buffer"
+     "ps_get_parameter"
+     "ps_get_value"
+     "ps_hyphenate"
+     "ps_include_file"
+     "ps_lineto"
+     "ps_makespotcolor"
+     "ps_moveto"
+     "ps_new"
+     "ps_open_file"
+     "ps_open_image"
+     "ps_open_image_file"
+     "ps_open_memory_image"
+     "ps_place_image"
+     "ps_rect"
+     "ps_restore"
+     "ps_rotate"
+     "ps_save"
+     "ps_scale"
+     "ps_set_border_color"
+     "ps_set_border_dash"
+     "ps_set_border_style"
+     "ps_set_info"
+     "ps_set_parameter"
+     "ps_set_text_pos"
+     "ps_set_value"
+     "ps_setcolor"
+     "ps_setdash"
+     "ps_setflat"
+     "ps_setfont"
+     "ps_setgray"
+     "ps_setlinecap"
+     "ps_setlinejoin"
+     "ps_setlinewidth"
+     "ps_setmiterlimit"
+     "ps_setoverprintmode"
+     "ps_setpolydash"
+     "ps_shading"
+     "ps_shading_pattern"
+     "ps_shfill"
+     "ps_show"
+     "ps_show2"
+     "ps_show_boxed"
+     "ps_show_xy"
+     "ps_show_xy2"
+     "ps_string_geometry"
+     "ps_stringwidth"
+     "ps_stroke"
+     "ps_symbol"
+     "ps_symbol_name"
+     "ps_symbol_width"
+     "ps_translate")
+    (pspell
+     "pspell_add_to_personal"
+     "pspell_add_to_session"
+     "pspell_check"
+     "pspell_clear_session"
+     "pspell_config_create"
+     "pspell_config_data_dir"
+     "pspell_config_dict_dir"
+     "pspell_config_ignore"
+     "pspell_config_mode"
+     "pspell_config_personal"
+     "pspell_config_repl"
+     "pspell_config_runtogether"
+     "pspell_config_save_repl"
+     "pspell_new"
+     "pspell_new_config"
+     "pspell_new_personal"
+     "pspell_save_wordlist"
+     "pspell_store_replacement"
+     "pspell_suggest")
+    (radius
+     "radius_acct_open"
+     "radius_add_server"
+     "radius_auth_open"
+     "radius_close"
+     "radius_config"
+     "radius_create_request"
+     "radius_cvt_addr"
+     "radius_cvt_int"
+     "radius_cvt_string"
+     "radius_demangle"
+     "radius_demangle_mppe_key"
+     "radius_get_attr"
+     "radius_get_tagged_attr_data"
+     "radius_get_tagged_attr_tag"
+     "radius_get_vendor_attr"
+     "radius_put_addr"
+     "radius_put_attr"
+     "radius_put_int"
+     "radius_put_string"
+     "radius_put_vendor_addr"
+     "radius_put_vendor_attr"
+     "radius_put_vendor_int"
+     "radius_put_vendor_string"
+     "radius_request_authenticator"
+     "radius_salt_encrypt_attr"
+     "radius_send_request"
+     "radius_server_secret"
+     "radius_strerror")
+    (rar
+     "rar_broken_is"
+     "rar_close"
+     "rar_comment_get"
+     "rar_entry_get"
+     "rar_list"
+     "rar_open"
+     "rar_solid_is"
+     "rar_wrapper_cache_stats")
+    (readline
+     "readline"
+     "readline_add_history"
+     "readline_callback_handler_install"
+     "readline_callback_handler_remove"
+     "readline_callback_read_char"
+     "readline_clear_history"
+     "readline_completion_function"
+     "readline_info"
+     "readline_list_history"
+     "readline_on_new_line"
+     "readline_read_history"
+     "readline_redisplay"
+     "readline_write_history")
+    (recode
+     "recode"
+     "recode_file"
+     "recode_string")
+    (rpminfo
+     "rpmaddtag"
+     "rpmdbinfo"
+     "rpmdbsearch"
+     "rpminfo"
+     "rpmvercmp")
+    (rrd
+     "rrd_create"
+     "rrd_error"
+     "rrd_fetch"
+     "rrd_first"
+     "rrd_graph"
+     "rrd_info"
+     "rrd_last"
+     "rrd_lastupdate"
+     "rrd_restore"
+     "rrd_tune"
+     "rrd_update"
+     "rrd_version"
+     "rrd_xport"
+     "rrdc_disconnect")
+    (runkit7
+     "runkit7_constant_add"
+     "runkit7_constant_redefine"
+     "runkit7_constant_remove"
+     "runkit7_function_add"
+     "runkit7_function_copy"
+     "runkit7_function_redefine"
+     "runkit7_function_remove"
+     "runkit7_function_rename"
+     "runkit7_import"
+     "runkit7_method_add"
+     "runkit7_method_copy"
+     "runkit7_method_redefine"
+     "runkit7_method_remove"
+     "runkit7_method_rename"
+     "runkit7_object_id"
+     "runkit7_superglobals"
+     "runkit7_zval_inspect")
+    (scoutapm
+     "scoutapm_get_calls"
+     "scoutapm_list_instrumented_functions")
+    (shmop
+     "shmop_close"
+     "shmop_delete"
+     "shmop_open"
+     "shmop_read"
+     "shmop_size"
+     "shmop_write")
+    (simplexml
+     "dom_import_simplexml"
+     "simplexml_import_dom"
+     "simplexml_load_file"
+     "simplexml_load_string")
+    (smnp
+     "snmp2_get"
+     "snmp2_getnext"
+     "snmp2_real_walk"
+     "snmp2_set"
+     "snmp2_walk"
+     "snmp3_get"
+     "snmp3_getnext"
+     "snmp3_real_walk"
+     "snmp3_set"
+     "snmp3_walk"
+     "snmp_get_quick_print"
+     "snmp_get_valueretrieval"
+     "snmp_read_mib"
+     "snmp_set_enum_print"
+     "snmp_set_oid_numeric_print"
+     "snmp_set_oid_output_format"
+     "snmp_set_quick_print"
+     "snmp_set_valueretrieval"
+     "snmpget"
+     "snmpgetnext"
+     "snmprealwalk"
+     "snmpset"
+     "snmpwalk"
+     "snmpwalkoid")
+    (soap
+     "is_soap_fault"
+     "use_soap_error_handler")
+    (socket
+     "socket_accept"
+     "socket_addrinfo_bind"
+     "socket_addrinfo_connect"
+     "socket_addrinfo_explain"
+     "socket_addrinfo_lookup"
+     "socket_bind"
+     "socket_clear_error"
+     "socket_close"
+     "socket_cmsg_space"
+     "socket_connect"
+     "socket_create"
+     "socket_create_listen"
+     "socket_create_pair"
+     "socket_export_stream"
+     "socket_get_option"
+     "socket_get_status"
+     "socket_getopt"
+     "socket_getpeername"
+     "socket_getsockname"
+     "socket_import_stream"
+     "socket_last_error"
+     "socket_listen"
+     "socket_read"
+     "socket_recv"
+     "socket_recvfrom"
+     "socket_recvmsg"
+     "socket_select"
+     "socket_send"
+     "socket_sendmsg"
+     "socket_sendto"
+     "socket_set_block"
+     "socket_set_blocking"
+     "socket_set_nonblock"
+     "socket_set_option"
+     "socket_set_timeout"
+     "socket_setopt"
+     "socket_shutdown"
+     "socket_strerror"
+     "socket_write"
+     "socket_wsaprotocol_info_export"
+     "socket_wsaprotocol_info_import"
+     "socket_wsaprotocol_info_release")
+    (sodium
+     "sodium_add"
+     "sodium_base642bin"
+     "sodium_bin2base64"
+     "sodium_bin2hex"
+     "sodium_compare"
+     "sodium_crypto_aead_aes256gcm_decrypt"
+     "sodium_crypto_aead_aes256gcm_encrypt"
+     "sodium_crypto_aead_aes256gcm_is_available"
+     "sodium_crypto_aead_aes256gcm_keygen"
+     "sodium_crypto_aead_chacha20poly1305_decrypt"
+     "sodium_crypto_aead_chacha20poly1305_encrypt"
+     "sodium_crypto_aead_chacha20poly1305_ietf_decrypt"
+     "sodium_crypto_aead_chacha20poly1305_ietf_encrypt"
+     "sodium_crypto_aead_chacha20poly1305_ietf_keygen"
+     "sodium_crypto_aead_chacha20poly1305_keygen"
+     "sodium_crypto_aead_xchacha20poly1305_ietf_decrypt"
+     "sodium_crypto_aead_xchacha20poly1305_ietf_encrypt"
+     "sodium_crypto_aead_xchacha20poly1305_ietf_keygen"
+     "sodium_crypto_auth"
+     "sodium_crypto_auth_keygen"
+     "sodium_crypto_auth_verify"
+     "sodium_crypto_box"
+     "sodium_crypto_box_keypair"
+     "sodium_crypto_box_keypair_from_secretkey_and_publickey"
+     "sodium_crypto_box_open"
+     "sodium_crypto_box_publickey"
+     "sodium_crypto_box_publickey_from_secretkey"
+     "sodium_crypto_box_seal"
+     "sodium_crypto_box_seal_open"
+     "sodium_crypto_box_secretkey"
+     "sodium_crypto_box_seed_keypair"
+     "sodium_crypto_core_ristretto255_add"
+     "sodium_crypto_core_ristretto255_from_hash"
+     "sodium_crypto_core_ristretto255_is_valid_point"
+     "sodium_crypto_core_ristretto255_random"
+     "sodium_crypto_core_ristretto255_scalar_add"
+     "sodium_crypto_core_ristretto255_scalar_complement"
+     "sodium_crypto_core_ristretto255_scalar_invert"
+     "sodium_crypto_core_ristretto255_scalar_mul"
+     "sodium_crypto_core_ristretto255_scalar_negate"
+     "sodium_crypto_core_ristretto255_scalar_random"
+     "sodium_crypto_core_ristretto255_scalar_reduce"
+     "sodium_crypto_core_ristretto255_scalar_sub"
+     "sodium_crypto_core_ristretto255_sub"
+     "sodium_crypto_generichash"
+     "sodium_crypto_generichash_final"
+     "sodium_crypto_generichash_init"
+     "sodium_crypto_generichash_keygen"
+     "sodium_crypto_generichash_update"
+     "sodium_crypto_kdf_derive_from_key"
+     "sodium_crypto_kdf_keygen"
+     "sodium_crypto_kx_client_session_keys"
+     "sodium_crypto_kx_keypair"
+     "sodium_crypto_kx_publickey"
+     "sodium_crypto_kx_secretkey"
+     "sodium_crypto_kx_seed_keypair"
+     "sodium_crypto_kx_server_session_keys"
+     "sodium_crypto_pwhash"
+     "sodium_crypto_pwhash_scryptsalsa208sha256"
+     "sodium_crypto_pwhash_scryptsalsa208sha256_str"
+     "sodium_crypto_pwhash_scryptsalsa208sha256_str_verify"
+     "sodium_crypto_pwhash_str"
+     "sodium_crypto_pwhash_str_needs_rehash"
+     "sodium_crypto_pwhash_str_verify"
+     "sodium_crypto_scalarmult"
+     "sodium_crypto_scalarmult_base"
+     "sodium_crypto_scalarmult_ristretto255"
+     "sodium_crypto_scalarmult_ristretto255_base"
+     "sodium_crypto_secretbox"
+     "sodium_crypto_secretbox_keygen"
+     "sodium_crypto_secretbox_open"
+     "sodium_crypto_secretstream_xchacha20poly1305_init_pull"
+     "sodium_crypto_secretstream_xchacha20poly1305_init_push"
+     "sodium_crypto_secretstream_xchacha20poly1305_keygen"
+     "sodium_crypto_secretstream_xchacha20poly1305_pull"
+     "sodium_crypto_secretstream_xchacha20poly1305_push"
+     "sodium_crypto_secretstream_xchacha20poly1305_rekey"
+     "sodium_crypto_shorthash"
+     "sodium_crypto_shorthash_keygen"
+     "sodium_crypto_sign"
+     "sodium_crypto_sign_detached"
+     "sodium_crypto_sign_ed25519_pk_to_curve25519"
+     "sodium_crypto_sign_ed25519_sk_to_curve25519"
+     "sodium_crypto_sign_keypair"
+     "sodium_crypto_sign_keypair_from_secretkey_and_publickey"
+     "sodium_crypto_sign_open"
+     "sodium_crypto_sign_publickey"
+     "sodium_crypto_sign_publickey_from_secretkey"
+     "sodium_crypto_sign_secretkey"
+     "sodium_crypto_sign_seed_keypair"
+     "sodium_crypto_sign_verify_detached"
+     "sodium_crypto_stream"
+     "sodium_crypto_stream_keygen"
+     "sodium_crypto_stream_xchacha20"
+     "sodium_crypto_stream_xchacha20_keygen"
+     "sodium_crypto_stream_xchacha20_xor"
+     "sodium_crypto_stream_xchacha20_xor_ic"
+     "sodium_crypto_stream_xor"
+     "sodium_hex2bin"
+     "sodium_increment"
+     "sodium_memcmp"
+     "sodium_memzero"
+     "sodium_pad"
+     "sodium_unpad")
+    (solr
+     "solr_get_version")
+    (sqlsrv
+     "sqlsrv_begin_transaction"
+     "sqlsrv_cancel"
+     "sqlsrv_client_info"
+     "sqlsrv_close"
+     "sqlsrv_commit"
+     "sqlsrv_configure"
+     "sqlsrv_connect"
+     "sqlsrv_errors"
+     "sqlsrv_execute"
+     "sqlsrv_fetch"
+     "sqlsrv_fetch_array"
+     "sqlsrv_fetch_object"
+     "sqlsrv_field_metadata"
+     "sqlsrv_free_stmt"
+     "sqlsrv_get_config"
+     "sqlsrv_get_field"
+     "sqlsrv_has_rows"
+     "sqlsrv_next_result"
+     "sqlsrv_num_fields"
+     "sqlsrv_num_rows"
+     "sqlsrv_prepare"
+     "sqlsrv_query"
+     "sqlsrv_rollback"
+     "sqlsrv_rows_affected"
+     "sqlsrv_send_stream_data"
+     "sqlsrv_server_info")
+    (ssdeep
+     "ssdeep_fuzzy_compare"
+     "ssdeep_fuzzy_hash"
+     "ssdeep_fuzzy_hash_filename")
+    (ssh2
+     "ssh2_auth_agent"
+     "ssh2_auth_hostbased_file"
+     "ssh2_auth_none"
+     "ssh2_auth_password"
+     "ssh2_auth_pubkey_file"
+     "ssh2_connect"
+     "ssh2_disconnect"
+     "ssh2_exec"
+     "ssh2_fetch_stream"
+     "ssh2_fingerprint"
+     "ssh2_forward_accept"
+     "ssh2_forward_listen"
+     "ssh2_methods_negotiated"
+     "ssh2_poll"
+     "ssh2_publickey_add"
+     "ssh2_publickey_init"
+     "ssh2_publickey_list"
+     "ssh2_publickey_remove"
+     "ssh2_scp_recv"
+     "ssh2_scp_send"
+     "ssh2_send_eof"
+     "ssh2_sftp"
+     "ssh2_sftp_chmod"
+     "ssh2_sftp_lstat"
+     "ssh2_sftp_mkdir"
+     "ssh2_sftp_readlink"
+     "ssh2_sftp_realpath"
+     "ssh2_sftp_rename"
+     "ssh2_sftp_rmdir"
+     "ssh2_sftp_stat"
+     "ssh2_sftp_symlink"
+     "ssh2_sftp_unlink"
+     "ssh2_shell"
+     "ssh2_tunnel")
+    (stats
+     "stats_absolute_deviation"
+     "stats_cdf_beta"
+     "stats_cdf_binomial"
+     "stats_cdf_cauchy"
+     "stats_cdf_chisquare"
+     "stats_cdf_exponential"
+     "stats_cdf_f"
+     "stats_cdf_gamma"
+     "stats_cdf_laplace"
+     "stats_cdf_logistic"
+     "stats_cdf_negative_binomial"
+     "stats_cdf_noncentral_chisquare"
+     "stats_cdf_noncentral_f"
+     "stats_cdf_noncentral_t"
+     "stats_cdf_normal"
+     "stats_cdf_poisson"
+     "stats_cdf_t"
+     "stats_cdf_uniform"
+     "stats_cdf_weibull"
+     "stats_covariance"
+     "stats_dens_beta"
+     "stats_dens_cauchy"
+     "stats_dens_chisquare"
+     "stats_dens_exponential"
+     "stats_dens_f"
+     "stats_dens_gamma"
+     "stats_dens_laplace"
+     "stats_dens_logistic"
+     "stats_dens_normal"
+     "stats_dens_pmf_binomial"
+     "stats_dens_pmf_hypergeometric"
+     "stats_dens_pmf_negative_binomial"
+     "stats_dens_pmf_poisson"
+     "stats_dens_t"
+     "stats_dens_uniform"
+     "stats_dens_weibull"
+     "stats_harmonic_mean"
+     "stats_kurtosis"
+     "stats_rand_gen_beta"
+     "stats_rand_gen_chisquare"
+     "stats_rand_gen_exponential"
+     "stats_rand_gen_f"
+     "stats_rand_gen_funiform"
+     "stats_rand_gen_gamma"
+     "stats_rand_gen_ibinomial"
+     "stats_rand_gen_ibinomial_negative"
+     "stats_rand_gen_int"
+     "stats_rand_gen_ipoisson"
+     "stats_rand_gen_iuniform"
+     "stats_rand_gen_noncentral_chisquare"
+     "stats_rand_gen_noncentral_f"
+     "stats_rand_gen_noncentral_t"
+     "stats_rand_gen_normal"
+     "stats_rand_gen_t"
+     "stats_rand_get_seeds"
+     "stats_rand_phrase_to_seeds"
+     "stats_rand_ranf"
+     "stats_rand_setall"
+     "stats_skew"
+     "stats_standard_deviation"
+     "stats_stat_binomial_coef"
+     "stats_stat_correlation"
+     "stats_stat_factorial"
+     "stats_stat_independent_t"
+     "stats_stat_innerproduct"
+     "stats_stat_paired_t"
+     "stats_stat_percentile"
+     "stats_stat_powersum"
+     "stats_variance")
+    (stomp
+     "stomp_abort"
+     "stomp_ack"
+     "stomp_begin"
+     "stomp_close"
+     "stomp_commit"
+     "stomp_connect"
+     "stomp_connect_error"
+     "stomp_error"
+     "stomp_get_read_timeout"
+     "stomp_get_session_id"
+     "stomp_has_frame"
+     "stomp_read_frame"
+     "stomp_send"
+     "stomp_set_read_timeout"
+     "stomp_subscribe"
+     "stomp_unsubscribe"
+     "stomp_version")
+    (svn
+     "svn_add"
+     "svn_auth_get_parameter"
+     "svn_auth_set_parameter"
+     "svn_blame"
+     "svn_cat"
+     "svn_checkout"
+     "svn_cleanup"
+     "svn_client_version"
+     "svn_commit"
+     "svn_delete"
+     "svn_diff"
+     "svn_export"
+     "svn_fs_abort_txn"
+     "svn_fs_apply_text"
+     "svn_fs_begin_txn2"
+     "svn_fs_change_node_prop"
+     "svn_fs_check_path"
+     "svn_fs_contents_changed"
+     "svn_fs_copy"
+     "svn_fs_delete"
+     "svn_fs_dir_entries"
+     "svn_fs_file_contents"
+     "svn_fs_file_length"
+     "svn_fs_is_dir"
+     "svn_fs_is_file"
+     "svn_fs_make_dir"
+     "svn_fs_make_file"
+     "svn_fs_node_created_rev"
+     "svn_fs_node_prop"
+     "svn_fs_props_changed"
+     "svn_fs_revision_prop"
+     "svn_fs_revision_root"
+     "svn_fs_txn_root"
+     "svn_fs_youngest_rev"
+     "svn_import"
+     "svn_log"
+     "svn_ls"
+     "svn_mkdir"
+     "svn_repos_create"
+     "svn_repos_fs"
+     "svn_repos_fs_begin_txn_for_commit"
+     "svn_repos_fs_commit_txn"
+     "svn_repos_hotcopy"
+     "svn_repos_open"
+     "svn_repos_recover"
+     "svn_revert"
+     "svn_status"
+     "svn_update")
+    (swoole
+     "swoole_async_dns_lookup"
+     "swoole_async_read"
+     "swoole_async_readfile"
+     "swoole_async_set"
+     "swoole_async_write"
+     "swoole_async_writefile"
+     "swoole_clear_error"
+     "swoole_client_select"
+     "swoole_cpu_num"
+     "swoole_errno"
+     "swoole_error_log"
+     "swoole_event_add"
+     "swoole_event_defer"
+     "swoole_event_del"
+     "swoole_event_exit"
+     "swoole_event_set"
+     "swoole_event_wait"
+     "swoole_event_write"
+     "swoole_get_local_ip"
+     "swoole_last_error"
+     "swoole_load_module"
+     "swoole_select"
+     "swoole_set_process_name"
+     "swoole_strerror"
+     "swoole_timer_after"
+     "swoole_timer_clear"
+     "swoole_timer_exists"
+     "swoole_timer_tick"
+     "swoole_version")
+    (sysvshm
+     "ftok"
+     "msg_get_queue"
+     "msg_queue_exists"
+     "msg_receive"
+     "msg_remove_queue"
+     "msg_send"
+     "msg_set_queue"
+     "msg_stat_queue"
+     "sem_acquire"
+     "sem_get"
+     "sem_release"
+     "sem_remove"
+     "shm_attach"
+     "shm_detach"
+     "shm_get_var"
+     "shm_has_var"
+     "shm_put_var"
+     "shm_remove"
+     "shm_remove_var")
+    (taint
+     "is_tainted"
+     "taint"
+     "untaint")
+    (tcpwrap
+     "tcpwrap_check")
+    (tidy
+     "tidy_access_count"
+     "tidy_clean_repair"
+     "tidy_config_count"
+     "tidy_diagnose"
+     "tidy_error_count"
+     "tidy_get_body"
+     "tidy_get_config"
+     "tidy_get_error_buffer"
+     "tidy_get_head"
+     "tidy_get_html"
+     "tidy_get_html_ver"
+     "tidy_get_opt_doc"
+     "tidy_get_output"
+     "tidy_get_release"
+     "tidy_get_root"
+     "tidy_get_status"
+     "tidy_getopt"
+     "tidy_is_xhtml"
+     "tidy_is_xml"
+     "tidy_parse_file"
+     "tidy_parse_string"
+     "tidy_repair_file"
+     "tidy_repair_string"
+     "tidy_warning_count")
+    (trader
+     "trader_acos"
+     "trader_ad"
+     "trader_add"
+     "trader_adosc"
+     "trader_adx"
+     "trader_adxr"
+     "trader_apo"
+     "trader_aroon"
+     "trader_aroonosc"
+     "trader_asin"
+     "trader_atan"
+     "trader_atr"
+     "trader_avgprice"
+     "trader_bbands"
+     "trader_beta"
+     "trader_bop"
+     "trader_cci"
+     "trader_cdl2crows"
+     "trader_cdl3blackcrows"
+     "trader_cdl3inside"
+     "trader_cdl3linestrike"
+     "trader_cdl3outside"
+     "trader_cdl3starsinsouth"
+     "trader_cdl3whitesoldiers"
+     "trader_cdlabandonedbaby"
+     "trader_cdladvanceblock"
+     "trader_cdlbelthold"
+     "trader_cdlbreakaway"
+     "trader_cdlclosingmarubozu"
+     "trader_cdlconcealbabyswall"
+     "trader_cdlcounterattack"
+     "trader_cdldarkcloudcover"
+     "trader_cdldoji"
+     "trader_cdldojistar"
+     "trader_cdldragonflydoji"
+     "trader_cdlengulfing"
+     "trader_cdleveningdojistar"
+     "trader_cdleveningstar"
+     "trader_cdlgapsidesidewhite"
+     "trader_cdlgravestonedoji"
+     "trader_cdlhammer"
+     "trader_cdlhangingman"
+     "trader_cdlharami"
+     "trader_cdlharamicross"
+     "trader_cdlhighwave"
+     "trader_cdlhikkake"
+     "trader_cdlhikkakemod"
+     "trader_cdlhomingpigeon"
+     "trader_cdlidentical3crows"
+     "trader_cdlinneck"
+     "trader_cdlinvertedhammer"
+     "trader_cdlkicking"
+     "trader_cdlkickingbylength"
+     "trader_cdlladderbottom"
+     "trader_cdllongleggeddoji"
+     "trader_cdllongline"
+     "trader_cdlmarubozu"
+     "trader_cdlmatchinglow"
+     "trader_cdlmathold"
+     "trader_cdlmorningdojistar"
+     "trader_cdlmorningstar"
+     "trader_cdlonneck"
+     "trader_cdlpiercing"
+     "trader_cdlrickshawman"
+     "trader_cdlrisefall3methods"
+     "trader_cdlseparatinglines"
+     "trader_cdlshootingstar"
+     "trader_cdlshortline"
+     "trader_cdlspinningtop"
+     "trader_cdlstalledpattern"
+     "trader_cdlsticksandwich"
+     "trader_cdltakuri"
+     "trader_cdltasukigap"
+     "trader_cdlthrusting"
+     "trader_cdltristar"
+     "trader_cdlunique3river"
+     "trader_cdlupsidegap2crows"
+     "trader_cdlxsidegap3methods"
+     "trader_ceil"
+     "trader_cmo"
+     "trader_correl"
+     "trader_cos"
+     "trader_cosh"
+     "trader_dema"
+     "trader_div"
+     "trader_dx"
+     "trader_ema"
+     "trader_errno"
+     "trader_exp"
+     "trader_floor"
+     "trader_get_compat"
+     "trader_get_unstable_period"
+     "trader_ht_dcperiod"
+     "trader_ht_dcphase"
+     "trader_ht_phasor"
+     "trader_ht_sine"
+     "trader_ht_trendline"
+     "trader_ht_trendmode"
+     "trader_kama"
+     "trader_linearreg"
+     "trader_linearreg_angle"
+     "trader_linearreg_intercept"
+     "trader_linearreg_slope"
+     "trader_ln"
+     "trader_log10"
+     "trader_ma"
+     "trader_macd"
+     "trader_macdext"
+     "trader_macdfix"
+     "trader_mama"
+     "trader_mavp"
+     "trader_max"
+     "trader_maxindex"
+     "trader_medprice"
+     "trader_mfi"
+     "trader_midpoint"
+     "trader_midprice"
+     "trader_min"
+     "trader_minindex"
+     "trader_minmax"
+     "trader_minmaxindex"
+     "trader_minus_di"
+     "trader_minus_dm"
+     "trader_mom"
+     "trader_mult"
+     "trader_natr"
+     "trader_obv"
+     "trader_plus_di"
+     "trader_plus_dm"
+     "trader_ppo"
+     "trader_roc"
+     "trader_rocp"
+     "trader_rocr"
+     "trader_rocr100"
+     "trader_rsi"
+     "trader_sar"
+     "trader_sarext"
+     "trader_set_compat"
+     "trader_set_unstable_period"
+     "trader_sin"
+     "trader_sinh"
+     "trader_sma"
+     "trader_sqrt"
+     "trader_stddev"
+     "trader_stoch"
+     "trader_stochf"
+     "trader_stochrsi"
+     "trader_sub"
+     "trader_sum"
+     "trader_t3"
+     "trader_tan"
+     "trader_tanh"
+     "trader_tema"
+     "trader_trange"
+     "trader_trima"
+     "trader_trix"
+     "trader_tsf"
+     "trader_typprice"
+     "trader_ultosc"
+     "trader_var"
+     "trader_wclprice"
+     "trader_willr"
+     "trader_wma")
+    (ui
+     "UI\\Draw\\Text\\Font\\fontFamilies"
+     "UI\\quit"
+     "UI\\run")
+    (uopz
+     "uopz_add_function"
+     "uopz_allow_exit"
+     "uopz_backup"
+     "uopz_compose"
+     "uopz_copy"
+     "uopz_del_function"
+     "uopz_delete"
+     "uopz_extend"
+     "uopz_flags"
+     "uopz_function"
+     "uopz_get_exit_status"
+     "uopz_get_hook"
+     "uopz_get_mock"
+     "uopz_get_property"
+     "uopz_get_return"
+     "uopz_get_static"
+     "uopz_implement"
+     "uopz_overload"
+     "uopz_redefine"
+     "uopz_rename"
+     "uopz_restore"
+     "uopz_set_hook"
+     "uopz_set_mock"
+     "uopz_set_property"
+     "uopz_set_return"
+     "uopz_set_static"
+     "uopz_undefine"
+     "uopz_unset_hook"
+     "uopz_unset_mock"
+     "uopz_unset_return")
+    (var_representation
+     "var_representation")
+    (win32service
+     "win32_continue_service"
+     "win32_create_service"
+     "win32_delete_service"
+     "win32_get_last_control_message"
+     "win32_pause_service"
+     "win32_query_service_status"
+     "win32_send_custom_control"
+     "win32_set_service_exit_code"
+     "win32_set_service_exit_mode"
+     "win32_set_service_status"
+     "win32_start_service"
+     "win32_start_service_ctrl_dispatcher"
+     "win32_stop_service")
+    (wincache
+     "wincache_fcache_fileinfo"
+     "wincache_fcache_meminfo"
+     "wincache_lock"
+     "wincache_ocache_fileinfo"
+     "wincache_ocache_meminfo"
+     "wincache_refresh_if_changed"
+     "wincache_rplist_fileinfo"
+     "wincache_rplist_meminfo"
+     "wincache_scache_info"
+     "wincache_scache_meminfo"
+     "wincache_ucache_add"
+     "wincache_ucache_cas"
+     "wincache_ucache_clear"
+     "wincache_ucache_dec"
+     "wincache_ucache_delete"
+     "wincache_ucache_exists"
+     "wincache_ucache_get"
+     "wincache_ucache_inc"
+     "wincache_ucache_info"
+     "wincache_ucache_meminfo"
+     "wincache_ucache_set"
+     "wincache_unlock")
+    (xattr
+     "xattr_get"
+     "xattr_list"
+     "xattr_remove"
+     "xattr_set"
+     "xattr_supported")
+    (xdiff
+     "xdiff_file_bdiff"
+     "xdiff_file_bdiff_size"
+     "xdiff_file_bpatch"
+     "xdiff_file_diff"
+     "xdiff_file_diff_binary"
+     "xdiff_file_merge3"
+     "xdiff_file_patch"
+     "xdiff_file_patch_binary"
+     "xdiff_file_rabdiff"
+     "xdiff_string_bdiff"
+     "xdiff_string_bdiff_size"
+     "xdiff_string_bpatch"
+     "xdiff_string_diff"
+     "xdiff_string_diff_binary"
+     "xdiff_string_merge3"
+     "xdiff_string_patch"
+     "xdiff_string_patch_binary"
+     "xdiff_string_rabdiff")
+    (xhprof
+     "xhprof_disable"
+     "xhprof_enable"
+     "xhprof_sample_disable"
+     "xhprof_sample_enable")
+    (xml
+     "xml_error_string"
+     "xml_get_current_byte_index"
+     "xml_get_current_column_number"
+     "xml_get_current_line_number"
+     "xml_get_error_code"
+     "xml_parse"
+     "xml_parse_into_struct"
+     "xml_parser_create"
+     "xml_parser_create_ns"
+     "xml_parser_free"
+     "xml_parser_get_option"
+     "xml_parser_set_option"
+     "xml_set_character_data_handler"
+     "xml_set_default_handler"
+     "xml_set_element_handler"
+     "xml_set_end_namespace_decl_handler"
+     "xml_set_external_entity_ref_handler"
+     "xml_set_notation_decl_handler"
+     "xml_set_object"
+     "xml_set_processing_instruction_handler"
+     "xml_set_start_namespace_decl_handler"
+     "xml_set_unparsed_entity_decl_handler")
+    (xmlrpc
+     "xmlrpc_decode"
+     "xmlrpc_decode_request"
+     "xmlrpc_encode"
+     "xmlrpc_encode_request"
+     "xmlrpc_get_type"
+     "xmlrpc_is_fault"
+     "xmlrpc_parse_method_descriptions"
+     "xmlrpc_server_add_introspection_data"
+     "xmlrpc_server_call_method"
+     "xmlrpc_server_create"
+     "xmlrpc_server_destroy"
+     "xmlrpc_server_register_introspection_callback"
+     "xmlrpc_server_register_method"
+     "xmlrpc_set_type")
+    (xmlwriter
+     "xmlwriter_end_attribute"
+     "xmlwriter_end_cdata"
+     "xmlwriter_end_comment"
+     "xmlwriter_end_document"
+     "xmlwriter_end_dtd"
+     "xmlwriter_end_dtd_attlist"
+     "xmlwriter_end_dtd_element"
+     "xmlwriter_end_dtd_entity"
+     "xmlwriter_end_element"
+     "xmlwriter_end_pi"
+     "xmlwriter_flush"
+     "xmlwriter_full_end_element"
+     "xmlwriter_open_memory"
+     "xmlwriter_open_uri"
+     "xmlwriter_output_memory"
+     "xmlwriter_set_indent"
+     "xmlwriter_set_indent_string"
+     "xmlwriter_start_attribute"
+     "xmlwriter_start_attribute_ns"
+     "xmlwriter_start_cdata"
+     "xmlwriter_start_comment"
+     "xmlwriter_start_document"
+     "xmlwriter_start_dtd"
+     "xmlwriter_start_dtd_attlist"
+     "xmlwriter_start_dtd_element"
+     "xmlwriter_start_dtd_entity"
+     "xmlwriter_start_element"
+     "xmlwriter_start_element_ns"
+     "xmlwriter_start_pi"
+     "xmlwriter_text"
+     "xmlwriter_write_attribute"
+     "xmlwriter_write_attribute_ns"
+     "xmlwriter_write_cdata"
+     "xmlwriter_write_comment"
+     "xmlwriter_write_dtd"
+     "xmlwriter_write_dtd_attlist"
+     "xmlwriter_write_dtd_element"
+     "xmlwriter_write_dtd_entity"
+     "xmlwriter_write_element"
+     "xmlwriter_write_element_ns"
+     "xmlwriter_write_pi"
+     "xmlwriter_write_raw")
+    (yaml
+     "yaml_emit"
+     "yaml_emit_file"
+     "yaml_parse"
+     "yaml_parse_file"
+     "yaml_parse_url")
+    (yaz
+     "yaz_addinfo"
+     "yaz_ccl_conf"
+     "yaz_ccl_parse"
+     "yaz_close"
+     "yaz_connect"
+     "yaz_database"
+     "yaz_element"
+     "yaz_errno"
+     "yaz_error"
+     "yaz_es"
+     "yaz_es_result"
+     "yaz_get_option"
+     "yaz_hits"
+     "yaz_itemorder"
+     "yaz_present"
+     "yaz_range"
+     "yaz_record"
+     "yaz_scan"
+     "yaz_scan_result"
+     "yaz_schema"
+     "yaz_search"
+     "yaz_set_option"
+     "yaz_sort"
+     "yaz_syntax"
+     "yaz_wait")
+    (zlib
+     "deflate_add"
+     "deflate_init"
+     "gzclose"
+     "gzcompress"
+     "gzdecode"
+     "gzdeflate"
+     "gzencode"
+     "gzeof"
+     "gzfile"
+     "gzgetc"
+     "gzgets"
+     "gzgetss"
+     "gzinflate"
+     "gzopen"
+     "gzpassthru"
+     "gzputs"
+     "gzread"
+     "gzrewind"
+     "gzseek"
+     "gztell"
+     "gzuncompress"
+     "gzwrite"
+     "inflate_add"
+     "inflate_get_read_len"
+     "inflate_get_status"
+     "inflate_init"
+     "readgzfile"
+     "zlib_decode"
+     "zlib_encode"
+     "zlib_get_coding_type")
+    (zookeeper
+     "zookeeper_dispatch")))
+
+(provide 'php-defs)
+;;; php-defs.el ends here
diff --git a/lisp/php-mode.el b/lisp/php-mode.el
index aef3f3c806..241e2c9697 100644
--- a/lisp/php-mode.el
+++ b/lisp/php-mode.el
@@ -411,7 +411,8 @@ In that case set to `NIL'."
         (left-assoc "and")
         (left-assoc "xor")
         (left-assoc "or")
-        (left-assoc ",")))
+        (left-assoc ",")
+        (left-assoc "=>")))
 
 ;; Allow '\' when scanning from open brace back to defining
 ;; construct like class
diff --git a/lisp/php.el b/lisp/php.el
index 161bf98b8d..3a79a97ac3 100644
--- a/lisp/php.el
+++ b/lisp/php.el
@@ -1,6 +1,7 @@
 ;;; php.el --- PHP support for friends               -*- lexical-binding: t; 
-*-
 
 ;; Copyright (C) 2022  Friends of Emacs-PHP development
+;; Copyright (C) 1985, 1987, 1992-2022 Free Software Foundation, Inc.
 
 ;; Author: USAMI Kenta <tadsan@zonu.me>
 ;; Created: 5 Dec 2018
@@ -26,9 +27,16 @@
 
 ;; This file provides common variable and functions for PHP packages.
 
+;; These functions are copied function from GNU Emacs.
+;;
+;; - c-end-of-token (cc-engine.el)
+;;
+
 ;;; Code:
 (eval-when-compile
+  (require 'cc-mode)
   (require 'cl-lib))
+(require 'cc-engine)
 (require 'flymake)
 (require 'php-project)
 (require 'rx)
@@ -203,6 +211,16 @@ a completion list."
 
 These are different from \"constants\" in strict terms.
 see https://www.php.net/manual/language.constants.predefined.php";)
+
+(defconst php-re-token-symbols
+  (eval-when-compile
+    (regexp-opt (list "&" "&=" "array(" "(array)" "&&" "||" "(bool)" 
"(boolean)" "break;" "?>" "%>"
+                      "??" "??=" ".=" "--" "/=" "=>" "(real)" "(double)" 
"(float)" "::" "..."
+                      "__halt_compiler()" "++" "(int)" "(integer)" "==" ">=" 
"===" "!=" "<>" "!=="
+                      "<=" "-=" "%=" "*=" "\\" "(object)" "->" "?->" "<?php" 
"<?" "<?=" "|=" "+="
+                      "**" "**=" "<<" "<<=" "<=>" ">>" ">>=" "<<<" "(string)" 
"^=" "yield from"
+                      "[" "]" "(" ")" "{" "}" ";")
+                t)))
 
 ;;; Utillity for locate language construction
 (defsubst php-in-string-p ()
@@ -424,6 +442,17 @@ can be used to match against definitions for that 
classlike."
   (eval-when-compile
     (php-create-regexp-for-classlike (regexp-opt '("class" "interface" 
"trait")))))
 
+(defvar php--analysis-syntax-table
+  (eval-when-compile
+    (let ((table (make-syntax-table)))
+      (c-populate-syntax-table table)
+      (modify-syntax-entry ?_ "w" table)
+      (modify-syntax-entry ?`  "\""  table)
+      (modify-syntax-entry ?\" "\""  table)
+      (modify-syntax-entry ?#  "< b" table)
+      (modify-syntax-entry ?\n "> b" table)
+      table)))
+
 (defun php-get-current-element (re-pattern)
   "Return backward matched element by RE-PATTERN."
   (save-excursion
@@ -431,27 +460,88 @@ can be used to match against definitions for that 
classlike."
       (when (re-search-backward re-pattern nil t)
         (match-string-no-properties 1)))))
 
-(defun php-get-pattern ()
-  "Find the pattern we want to complete.
-`find-tag-default' from GNU Emacs etags.el"
+(eval-and-compile
+  (if (eval-when-compile (fboundp 'thing-at-point-bounds-of-string-at-point))
+      (defalias 'php--thing-at-point-bounds-of-string-at-point 
#'thing-at-point-bounds-of-string-at-point)
+    ;; Copyright (C) 1991-1998, 2000-2022 Free Software Foundation, Inc.
+    ;; Follows function is copied from Emacs 28's thingatpt.el.
+    ;; 
https://github.com/emacs-mirror/emacs/commit/2abf143f8185fced544c4f8d144ea710142d7a59
+    (defun php--thing-at-point-bounds-of-string-at-point ()
+      "Return the bounds of the string at point.
+Prefer the enclosing string with fallback on sexp at point.
+\[Internal function used by `bounds-of-thing-at-point'.]"
+      (save-excursion
+        (let ((ppss (syntax-ppss)))
+          (if (nth 3 ppss)
+              ;; Inside the string
+              (ignore-errors
+                (goto-char (nth 8 ppss))
+                (cons (point) (progn (forward-sexp) (point))))
+            ;; At the beginning of the string
+            (if (eq (char-syntax (char-after)) ?\")
+                (let ((bound (bounds-of-thing-at-point 'sexp)))
+                 (and bound
+                      (<= (car bound) (point)) (< (point) (cdr bound))
+                      bound))))))))
+  (if (eval-when-compile (fboundp 'c-end-of-token))
+      (defalias 'php--c-end-of-token #'c-end-of-token)
+    ;; Copyright (C) 1985, 1987, 1992-2022 Free Software Foundation, Inc.
+    ;; Follows function is copied from Emacs 27's cc-engine.el.
+    ;; 
https://emba.gnu.org/emacs/emacs/-/commit/95fb826dc58965eac287c0826831352edf2e56f7
+    (defun php--c-end-of-token (&optional back-limit)
+      ;; Move to the end of the token we're just before or in the middle of.
+      ;; BACK-LIMIT may be used to bound the backward search; if given it's
+      ;; assumed to be at the boundary between two tokens.  Return non-nil if 
the
+      ;; point is moved, nil otherwise.
+      ;;
+      ;; This function might do hidden buffer changes.
+      (let ((start (point)))
+        (cond ;; ((< (skip-syntax-backward "w_" (1- start)) 0)
+         ;;  (skip-syntax-forward "w_"))
+         ((> (skip-syntax-forward "w_") 0))
+         ((< (skip-syntax-backward ".()" back-limit) 0)
+          (while (< (point) start)
+           (if (looking-at c-nonsymbol-token-regexp)
+               (goto-char (match-end 0))
+             ;; `c-nonsymbol-token-regexp' should always match since
+             ;; we've skipped backward over punctuation or paren
+             ;; syntax, but move forward in case it doesn't so that
+             ;; we don't leave point earlier than we started with.
+             (forward-char))))
+         (t (if (looking-at c-nonsymbol-token-regexp)
+               (goto-char (match-end 0)))))
+        (> (point) start)))))
+
+(defun php-leading-tokens (length)
+  "Return a list of leading LENGTH tokens from cursor point.
+
+The token list is lined up in the opposite side of the visual arrangement.
+The order is reversed by calling as follows:
+     \(nreverse \(php-leading-tokens 3\)\)"
   (save-excursion
     (save-match-data
-      (while (looking-at "\\sw\\|\\s_")
-        (forward-char 1))
-      (when (or (re-search-backward "\\sw\\|\\s_"
-                                    (save-excursion (beginning-of-line) 
(point))
-                                    t)
-                (re-search-forward "\\(\\sw\\|\\s_\\)+"
-                                   (save-excursion (end-of-line) (point))
-                                   t))
-        (goto-char (match-end 0))
-        (buffer-substring-no-properties
-         (point)
-         (progn
-           (forward-sexp -1)
-           (while (looking-at "\\s'")
-             (forward-char 1))
-           (point)))))))
+      (with-syntax-table php--analysis-syntax-table
+        (cl-loop
+         repeat length
+         do (progn
+              (forward-comment (- (point)))
+              (c-backward-token-2 1 nil))
+         collect
+         (cond
+          ((when-let (bounds (php--thing-at-point-bounds-of-string-at-point))
+             (prog1 (buffer-substring-no-properties (car bounds) (cdr bounds))
+               (goto-char (car bounds)))))
+          ((looking-at php-re-token-symbols)
+           (prog1 (match-string-no-properties 0)
+             (goto-char (match-beginning 0))))
+          (t
+             (buffer-substring-no-properties (point)
+                                             (save-excursion 
(php--c-end-of-token) (point))))))))))
+
+(defun php-get-pattern ()
+  "Find the pattern we want to complete.
+`find-tag-default' from GNU Emacs etags.el."
+  (car (php-leading-tokens 1)))
 
 ;;; Provide support for Flymake so that users can see warnings and
 ;;; errors in real-time as they write code.
diff --git a/script/README.md b/script/README.md
new file mode 100644
index 0000000000..e9406e742b
--- /dev/null
+++ b/script/README.md
@@ -0,0 +1,40 @@
+
+# Maintenance script for PHP Mode
+
+These scripts are provided for maintenance of PHP Mode.
+
+## Extract PHP Functions
+
+This script extract PHP function names from 
<http://doc.php.net/downloads/json/php_manual_en.json>.
+
+### Usage
+
+```
+Usage:
+       ./script/extract_functions.php count < php_manual_en.json
+       ./script/extract_functions.php modules < php_manual_en.json
+       ./script/extract_functions.php functions < php_manual_en.json > 
result.json
+       ./script/extract_functions.php functions-sexp < php_manual_en.json > 
result.el
+```
+
+### Data
+
+A pattern for grouping function modules by function-id is written in 
`data/module_id_prefixes.php`.
+
+ * All entries are combined as prefix matching patterns
+ * The meanings of `.` and `\.` (matches) in the regular expression are swapped
+   * `\.` matches any one character
+   * `.` matches only `"."`
+ * An alphanumeric-terminated entry requires an exact match
+   * Other entries require a [`\b`(word 
boundary)](https://www.php.net/manual/regexp.reference.escape.php) at the end
+
+```php
+return [
+    'apache' => [
+        'function.apache-', // matches all "apache-" prefixed IDs
+        'function.virtual', // matches only "function.virtual"
+    ],
+    'bcmath' => [
+        'function.bc\.+',   // matches "function.bcadd", "function.bccomp", 
...etc
+    ],
+```
diff --git a/script/data/module_id_prefixes.php 
b/script/data/module_id_prefixes.php
new file mode 100644
index 0000000000..cef2a14a41
--- /dev/null
+++ b/script/data/module_id_prefixes.php
@@ -0,0 +1,846 @@
+<?php
+
+/**
+ * Classify function modules by function-id
+ *
+ * @copyright 2022 Friends of Emacs-PHP development
+ * @author USAMI Kenta <tadsan@zonu.me>
+ * @license FSFAP https://spdx.org/licenses/FSFAP.html
+ */
+
+// Copying and distribution of this file, with or without modification,
+// are permitted in any medium without royalty provided the copyright
+// notice and this notice are preserved.  This file is offered as-is,
+// without any warranty.
+
+return [
+    'apache' => [
+        'function.apache-',
+        'function.virtual',
+    ],
+    'apcu' => [
+        'function.apcu-',
+    ],
+    'bcmath' => [
+        'function.bc\.+',
+    ],
+    'bzip2' => [
+        'function.bz\.+',
+    ],
+    'calendar' => [
+        'function.cal-',
+        'function.easter-date',
+        'function.easter-days',
+        'function.frenchtojd',
+        'function.gregoriantojd',
+        'function.jddayofweek',
+        'function.jdmonthname',
+        'function.jdtofrench',
+        'function.jdtogregorian',
+        'function.jdtojewish',
+        'function.jdtojulian',
+        'function.jdtounix',
+        'function.jewishtojd',
+        'function.unixtojd',
+    ],
+    'commonmark' => [
+        'function.commonmark-',
+    ],
+    'com_dotnet' => [
+        'function.com-',
+        'function.variant-',
+    ],
+    'componere' => [
+        'componere.',
+    ],
+    'core' => [
+        'function.abs',
+        'function.acos',
+        'function.acosh',
+        'function.addcslashes',
+        'function.addslashes',
+        'function.array-',
+        'function.arsort',
+        'function.asin',
+        'function.asinh',
+        'function.asort',
+        'function.assert-options',
+        'function.atan',
+        'function.atan2',
+        'function.atanh',
+        'function.base-convert',
+        'function.base64-',
+        'function.basename',
+        'function.bin2hex',
+        'function.bindec',
+        'function.boolval',
+        'function.call-user-func',
+        'function.call-user-func-array',
+        'function.ceil',
+        'function.chdir',
+        'function.checkdate',
+        'function.checkdnsrr',
+        'function.chgrp',
+        'function.chmod',
+        'function.chop',
+        'function.chown',
+        'function.chr',
+        'function.chroot',
+        'function.chunk-split',
+        'function.class-alias',
+        'function.class-exists',
+        'function.class-implements',
+        'function.class-parents',
+        'function.class-uses',
+        'function.clearstatcache',
+        'function.cli-',
+        'function.closedir',
+        'function.closelog',
+        'function.compact',
+        'function.connection-',
+        'function.constant',
+        'function.convert-cyr-string',
+        'function.convert-uudecode',
+        'function.convert-uuencode',
+        'function.copy',
+        'function.cos',
+        'function.cosh',
+        'function.count',
+        'function.count-chars',
+        'function.crc32',
+        'function.create-function',
+        'function.crypt',
+        'function.ctype-',
+        'function.current',
+        'function.date',
+        'function.date-',
+        'function.debug-',
+        'function.decbin',
+        'function.dechex',
+        'function.decoct',
+        'function.define',
+        'function.defined',
+        'function.deg2rad',
+        'function.delete',
+        'function.die',
+        'function.dir',
+        'function.dirname',
+        'function.disk-',
+        'function.diskfreespace',
+        'function.dl',
+        'function.dns-check-record',
+        'function.dns-get-mx',
+        'function.dns-get-record',
+        'function.doubleval',
+        'function.each',
+        'function.enum-exists',
+        'function.error-',
+        'function.escapeshellarg',
+        'function.escapeshellcmd',
+        'function.eval',
+        'function.exec',
+        'function.exit',
+        'function.exp',
+        'function.explode',
+        'function.expm1',
+        'function.extension-loaded',
+        'function.extract',
+        'function.fastcgi-',
+        'function.fclose',
+        'function.fdatasync',
+        'function.fdiv',
+        'function.feof',
+        'function.fflush',
+        'function.fgetc',
+        'function.fgetcsv',
+        'function.fgets',
+        'function.fgetss',
+        'function.file',
+        'function.file\.+',
+        'function.filter-',
+        'function.finfo-',
+        'function.floatval',
+        'function.flock',
+        'function.floor',
+        'function.flush',
+        'function.fmod',
+        'function.fnmatch',
+        'function.fopen',
+        'function.forward-static-call',
+        'function.forward-static-call-array',
+        'function.fpassthru',
+        'function.fprintf',
+        'function.fputcsv',
+        'function.fputs',
+        'function.fread',
+        'function.fscanf',
+        'function.fseek',
+        'function.fsockopen',
+        'function.fstat',
+        'function.fsync',
+        'function.ftell',
+        'function.ftruncate',
+        'function.func-get-arg',
+        'function.func-get-args',
+        'function.func-num-args',
+        'function.function-exists',
+        'function.fwrite',
+        'function.gc-',
+        'function.get-',
+        'function.getallheaders',
+        'function.getcwd',
+        'function.getdate',
+        'function.getenv',
+        'function.gethostbyaddr',
+        'function.gethostbyname',
+        'function.gethostbynamel',
+        'function.gethostname',
+        'function.getlastmod',
+        'function.getmxrr',
+        'function.getmygid',
+        'function.getmyinode',
+        'function.getmypid',
+        'function.getmyuid',
+        'function.getopt',
+        'function.getprotobyname',
+        'function.getprotobynumber',
+        'function.getrandmax',
+        'function.getrusage',
+        'function.getservbyname',
+        'function.getservbyport',
+        'function.gettimeofday',
+        'function.gettype',
+        'function.glob',
+        'function.gmdate',
+        'function.gmmktime',
+        'function.gmstrftime',
+        'function.hash',
+        'function.hash-',
+        'function.header',
+        'function.header-register-callback',
+        'function.header-remove',
+        'function.headers-list',
+        'function.headers-sent',
+        'function.hebrev',
+        'function.hebrevc',
+        'function.hex2bin',
+        'function.hexdec',
+        'function.highlight-file',
+        'function.highlight-string',
+        'function.hrtime',
+        'function.html-entity-decode',
+        'function.htmlentities',
+        'function.htmlspecialchars',
+        'function.htmlspecialchars-decode',
+        'function.http-build-query',
+        'function.http-response-code',
+        'function.hypot',
+        'function.idate',
+        'function.ignore-user-abort',
+        'function.implode',
+        'function.in-array',
+        'function.inet-',
+        'function.ini-',
+        'function.intdiv',
+        'function.interface-exists',
+        'function.intval',
+        'function.ip2long',
+        'function.is-a',
+        'function.is-array',
+        'function.is-bool',
+        'function.is-callable',
+        'function.is-countable',
+        'function.is-dir',
+        'function.is-double',
+        'function.is-executable',
+        'function.is-file',
+        'function.is-finite',
+        'function.is-float',
+        'function.is-infinite',
+        'function.is-int',
+        'function.is-integer',
+        'function.is-iterable',
+        'function.is-link',
+        'function.is-long',
+        'function.is-nan',
+        'function.is-null',
+        'function.is-numeric',
+        'function.is-object',
+        'function.is-readable',
+        'function.is-resource',
+        'function.is-scalar',
+        'function.is-string',
+        'function.is-subclass-of',
+        'function.is-uploaded-file',
+        'function.is-writable',
+        'function.is-writeable',
+        'function.iterator-',
+        'function.join',
+        'function.json-',
+        'function.juliantojd',
+        'function.key',
+        'function.key-exists',
+        'function.krsort',
+        'function.ksort',
+        'function.lcfirst',
+        'function.lcg-value',
+        'function.lchgrp',
+        'function.lchown',
+        'function.levenshtein',
+        'function.link',
+        'function.linkinfo',
+        'function.list',
+        'function.localeconv',
+        'function.localtime',
+        'function.log',
+        'function.log10',
+        'function.log1p',
+        'function.long2ip',
+        'function.lstat',
+        'function.ltrim',
+        'function.mail',
+        'function.max',
+        'function.md5',
+        'function.md5-file',
+        'function.memory-',
+        'function.metaphone',
+        'function.method-exists',
+        'function.microtime',
+        'function.mime-content-type',
+        'function.min',
+        'function.mkdir',
+        'function.mktime',
+        'function.money-format',
+        'function.move-uploaded-file',
+        'function.mt-',
+        'function.natcasesort',
+        'function.natsort',
+        'function.net-get-interfaces',
+        'function.next',
+        'function.nl-langinfo',
+        'function.nl2br',
+        'function.number-format',
+        'function.ob-',
+        'function.octdec',
+        'function.opcache-',
+        'function.opendir',
+        'function.openlog',
+        'function.ord',
+        'function.output-',
+        'function.pack',
+        'function.parse-ini-',
+        'function.parse-str',
+        'function.parse-url',
+        'function.passthru',
+        'function.password-',
+        'function.pathinfo',
+        'function.pclose',
+        'function.pfsockopen',
+        'function.php-ini-',
+        'function.php-sapi-name',
+        'function.php-strip-whitespace',
+        'function.php-uname',
+        'function.phpcredits',
+        'function.phpdbg-',
+        'function.phpinfo',
+        'function.phpversion',
+        'function.pi',
+        'function.popen',
+        'function.pos',
+        'function.pow',
+        'function.preg-',
+        'function.prev',
+        'function.print-r',
+        'function.printf',
+        'function.proc-',
+        'function.property-exists',
+        'function.putenv',
+        'function.quoted-printable-',
+        'function.quotemeta',
+        'function.rad2deg',
+        'function.rand',
+        'function.random-',
+        'function.range',
+        'function.rawurldecode',
+        'function.rawurlencode',
+        'function.readdir',
+        'function.readfile',
+        'function.readlink',
+        'function.realpath',
+        'function.realpath-',
+        'function.register-shutdown-function',
+        'function.register-tick-function',
+        'function.rename',
+        'function.reset',
+        'function.restore-',
+        'function.rewind',
+        'function.rewinddir',
+        'function.rmdir',
+        'function.round',
+        'function.rsort',
+        'function.rtrim',
+        'function.sapi-',
+        'function.scandir',
+        'function.seaslog-get-author',
+        'function.seaslog-get-version',
+        'function.serialize',
+        'function.session-',
+        'function.set-',
+        'function.setcookie',
+        'function.setlocale',
+        'function.setrawcookie',
+        'function.settype',
+        'function.sha1',
+        'function.sha1-file',
+        'function.shell-exec',
+        'function.show-source',
+        'function.shuffle',
+        'function.similar-text',
+        'function.sin',
+        'function.sinh',
+        'function.sizeof',
+        'function.sleep',
+        'function.sort',
+        'function.soundex',
+        'function.spl-',
+        'function.sprintf',
+        'function.sqrt',
+        'function.srand',
+        'function.sscanf',
+        'function.stat',
+        'function.str-',
+        'function.strcasecmp',
+        'function.strchr',
+        'function.strcmp',
+        'function.strcoll',
+        'function.strcspn',
+        'function.stream-',
+        'function.strftime',
+        'function.strip-tags',
+        'function.stripcslashes',
+        'function.stripos',
+        'function.stripslashes',
+        'function.stristr',
+        'function.strlen',
+        'function.strnatcasecmp',
+        'function.strnatcmp',
+        'function.strncasecmp',
+        'function.strncmp',
+        'function.strpbrk',
+        'function.strpos',
+        'function.strptime',
+        'function.strrchr',
+        'function.strrev',
+        'function.strripos',
+        'function.strrpos',
+        'function.strspn',
+        'function.strstr',
+        'function.strtok',
+        'function.strtolower',
+        'function.strtotime',
+        'function.strtoupper',
+        'function.strtr',
+        'function.strval',
+        'function.substr',
+        'function.substr-compare',
+        'function.substr-count',
+        'function.substr-replace',
+        'function.symlink',
+        'function.sys-get-temp-dir',
+        'function.sys-getloadavg',
+        'function.syslog',
+        'function.system',
+        'function.tan',
+        'function.tanh',
+        'function.tempnam',
+        'function.time',
+        'function.time-',
+        'function.timezone-',
+        'function.tmpfile',
+        'function.token-get-all',
+        'function.token-name',
+        'function.touch',
+        'function.trait-exists',
+        'function.trigger-error',
+        'function.trim',
+        'function.uasort',
+        'function.ucfirst',
+        'function.ucwords',
+        'function.uksort',
+        'function.umask',
+        'function.uniqid',
+        'function.unlink',
+        'function.unpack',
+        'function.unregister-tick-function',
+        'function.unserialize',
+        'function.unset',
+        'function.urldecode',
+        'function.urlencode',
+        'function.user-error',
+        'function.usleep',
+        'function.usort',
+        'function.var-dump',
+        'function.var-export',
+        'function.version-compare',
+        'function.vfprintf',
+        'function.vprintf',
+        'function.vsprintf',
+        'function.wordwrap',
+        'function.zend-thread-id',
+        'function.zend-version',
+        'pdo.getavailabledrivers',
+    ],
+    'cubrid' => [
+        'function.cubrid-',
+    ],
+    'curl' => [
+        'curlfile.',
+        'function.curl-',
+    ],
+    'dba' => [
+        'function.dba-',
+    ],
+    'dbase' => [
+        'function.dbase-',
+    ],
+    'dio' => [
+        'function.dio-',
+    ],
+    'eio' => [
+        'function.eio-',
+    ],
+    'enchant' => [
+        'function.enchant-',
+    ],
+    'exif' => [
+        'function.exif-',
+        'function.read-exif-',
+    ],
+    'expect' => [
+        'function.expect-',
+    ],
+    'fann' => [
+        'function.fann-',
+    ],
+    'fdf' => [
+        'function.fdf-',
+    ],
+    'fpm' => [
+        'function.fpm-'
+    ],
+    'ftp' => [
+        'function.ftp-',
+    ],
+    'gearman' => [
+        'gearmanclient.',
+        'gearmantask.',
+    ],
+    'gettext' => [
+        'function.bind-textdomain-codeset',
+        'function.bindtextdomain',
+        'function.dcgettext',
+        'function.dcngettext',
+        'function.dgettext',
+        'function.dngettext',
+        'function.gettext',
+        'function.ngettext',
+        'function.textdomain',
+    ],
+    'gd' => [
+        'function.gd-',
+        'function.getimagesize',
+        'function.getimagesizefromstring',
+        'function.image\.+',
+        'function.iptcembed',
+        'function.iptcparse',
+    ],
+    'gmp' => [
+        'function.gmp-',
+    ],
+    'geoip' => [
+        'function.geoip-',
+    ],
+    'gnupg' => [
+        'function.gnupg-',
+    ],
+    'ibase' => [
+        'function.fbird-',
+        'function.ibase-',
+    ],
+    'ibm_db2' => [
+        'function.db2-',
+    ],
+    'iconv' => [
+        'function.iconv',
+        'function.iconv-',
+    ],
+    'igbinary' => [
+        'function.igbinary-',
+    ],
+    'imap' => [
+        'function.imap-',
+    ],
+    'inotify' => [
+        'function.inotify-',
+    ],
+    'intl' => [
+        'collator.',
+        'function.grapheme-',
+        'function.idn-',
+        'function.intl-',
+        'intlcalendar.',
+        'intldateformatter.',
+        'intltimezone.',
+        'locale.',
+        'messageformatter.',
+        'normalizer.',
+        'numberformatter.',
+        'resourcebundle.',
+        'transliterator.',
+    ],
+    'language' => [
+        'function.array',
+        'function.assert',
+        'function.echo',
+        'function.empty',
+        'function.halt-compiler',
+        'function.isset',
+        'function.print',
+    ],
+    'ldap' => [
+        'function.ldap-',
+    ],
+    'libxml' => [
+        'function.libxml-',
+    ],
+    'lzf' => [
+        'function.lzf-',
+    ],
+    'mailparse' => [
+        'function.mailparse-',
+    ],
+    'mbstring' => [
+        'function.mb-',
+    ],
+    'memcache' => [
+        'function.memcache-',
+    ],
+    'mongodb' => [
+        'function.mongodb.',
+    ],
+    'mqseries' => [
+        'function.mqseries-',
+    ],
+    'mysqli' => [
+        'mysqli-',
+        'mysqli.',
+        'function.mysqli-',
+    ],
+    'mysql-obsolete' => [
+        'function.mysql-',
+    ],
+    'oauth' => [
+        'function.oauth-',
+    ],
+    'obsolete_7' => [
+        'function.autoload',
+        'function.end',
+        'function.ezmlm-hash',
+        'function.is-real',
+        'function.jpeg2wbmp',
+        'function.mcrypt-',
+        'function.mdecrypt-',
+        'function.png2wbmp',
+        'function.wddx-',
+    ],
+    'obsolete_8' => [
+        'function.mhash',
+        'function.mhash-',
+        'function.utf8-decode',
+        'function.utf8-encode',
+        'function.zip-',
+    ],
+    'oci8' => [
+        'function.oci\.+',
+    ],
+    'odbc' => [
+        'function.odbc-',
+    ],
+    'openal' => [
+        'function.openal-',
+    ],
+    'openssl' => [
+        'function.openssl-',
+    ],
+    'parallel' => [
+        'parallel.',
+    ],
+    'pcntl' => [
+        'function.pcntl-',
+    ],
+    'pgsql' => [
+        'function.pg-',
+    ],
+    'posix' => [
+        'function.posix-',
+    ],
+    'ps' => [
+        'function.ps-',
+    ],
+    'pspell' => [
+        'function.pspell-',
+    ],
+    'radius' => [
+        'function.radius-',
+    ],
+    'rar' => [
+        'function.rar-',
+        'rararchive.',
+    ],
+    'readline' => [
+        'function.readline',
+        'function.readline-',
+    ],
+    'recode' => [
+        'function.recode',
+        'function.recode-',
+    ],
+    'runkit7' => [
+        'function.runkit7-',
+    ],
+    'rpminfo' => [
+        'function.rpm\.+',
+    ],
+    'rrd' => [
+        'function.rrd-',
+        'function.rrdc-',
+    ],
+    'scoutapm' => [
+        'function.scoutapm-',
+    ],
+    'shmop' => [
+        'function.shmop-',
+    ],
+    'simplexml' => [
+        'function.dom-import-simplexml',
+        'function.simplexml-',
+    ],
+    'sqlsrv' => [
+        'function.sqlsrv-',
+    ],
+    'smnp' => [
+        'function.snmp-',
+        'function.snmp2-',
+        'function.snmp3-',
+        'function.snmp\.+',
+    ],
+    'sodium' => [
+        'function.sodium-',
+    ],
+    'soap' => [
+        'function.is-soap-fault',
+        'function.use-soap-error-handler',
+    ],
+    'socket' => [
+        'function.socket-',
+    ],
+    'solr' => [
+        'function.solr-',
+    ],
+    'ssdeep' => [
+        'function.ssdeep-',
+    ],
+    'ssh2' => [
+        'function.ssh2-',
+    ],
+    'stats' => [
+        'function.stats-',
+    ],
+    'stomp' => [
+        'function.stomp-',
+        'stomp.',
+    ],
+    'svn' => [
+        'function.svn-',
+    ],
+    'swoole' => [
+        'function.swoole-',
+        'swoole-server.',
+    ],
+    'sysvshm' => [
+        'function.ftok',
+        'function.sem-',
+        'function.shm-',
+        'function.msg-get-queue',
+        'function.msg-queue-exists',
+        'function.msg-receive',
+        'function.msg-remove-queue',
+        'function.msg-send',
+        'function.msg-set-queue',
+        'function.msg-stat-queue',
+    ],
+    'taint' => [
+        'function.is-tainted',
+        'function.taint',
+        'function.untaint',
+    ],
+    'tcpwrap' => [
+        'function.tcpwrap-',
+    ],
+    'tidy' => [
+        'function.tidy-',
+        'tidy.',
+    ],
+    'trader' => [
+        'function.trader-',
+    ],
+    'ui' => [
+        'function.ui-',
+    ],
+    'uopz' => [
+        'function.uopz-',
+    ],
+    'var_representation' => [
+        'function.var-representation',
+    ],
+    'win32service' => [
+        'function.win32-',
+    ],
+    'wincache' => [
+        'function.wincache-',
+    ],
+    'xattr' => [
+        'function.xattr-',
+    ],
+    'xdiff' => [
+        'function.xdiff-',
+    ],
+    'xhprof' => [
+        'function.xhprof-',
+    ],
+    'xml' => [
+        'function.xml-',
+    ],
+    'xmlrpc' => [
+        'function.xmlrpc-',
+    ],
+    'xmlwriter' => [
+        'xmlwriter.',
+    ],
+    'yaml' => [
+        'function.yaml-',
+    ],
+    'yaz' => [
+        'function.yaz-',
+    ],
+    'zlib' => [
+        'function.deflate-',
+        'function.gz\.+',
+        'function.inflate-',
+        'function.readgzfile',
+        'function.zlib-',
+    ],
+    'zookeeper' => [
+        'function.zookeeper-',
+    ]
+];
diff --git a/script/extract_functions.php b/script/extract_functions.php
new file mode 100755
index 0000000000..d61a9a2a90
--- /dev/null
+++ b/script/extract_functions.php
@@ -0,0 +1,118 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * Extract PHP Functions
+ *
+ * @copyright 2022 Friends of Emacs-PHP development
+ * @author USAMI Kenta <tadsan@zonu.me>
+ * @license FSFAP https://spdx.org/licenses/FSFAP.html
+ */
+
+// Copying and distribution of this file, with or without modification,
+// are permitted in any medium without royalty provided the copyright
+// notice and this notice are preserved.  This file is offered as-is,
+// without any warranty.
+
+declare(strict_types=1);
+
+error_reporting(E_ALL);
+
+$functions = json_decode(stream_get_contents(STDIN), true);
+
+$command = $argv[0];
+$subcommand = $argv[1] ?? null;
+
+$subcommands = [
+    'count' => function (array $extracted) {
+        echo json_encode(array_map(count(...), $extracted), 
JSON_PRETTY_PRINT), PHP_EOL;
+    },
+    'modules' => function (array $extracted) {
+        echo implode(PHP_EOL, array_keys($extracted)), PHP_EOL;
+    },
+    'functions' => function (array $extracted) {
+        echo json_encode(array_map(array_keys(...), $extracted), 
JSON_PRETTY_PRINT), PHP_EOL;
+    },
+    'functions-txt' => function (array $extracted) {
+        foreach ($extracted as $functions) {
+            foreach ($functions as $name => $_) {
+                echo $name, PHP_EOL;
+            }
+        }
+    },
+    'functions-sexp' => function (array $extracted) {
+        echo "  '(";
+        foreach ($extracted as $module => $functions) {
+            echo "\n    ({$module}";
+            //            ksort($functions);
+            foreach ($functions as $name => $function) {
+                $escaped_name = strtr($name, ['\\' => '\\\\']);
+                echo "\n     \"{$escaped_name}\"";
+            }
+            echo ")";
+        }
+        echo ")";
+    },
+];
+
+if (!isset($subcommands[$subcommand])) {
+    $json_url = 'http://doc.php.net/downloads/json/php_manual_en.json';
+    fwrite(STDERR, implode(PHP_EOL, [
+        "[Extract PHP Functions]\n",
+        "This script extract PHP function names from <{$json_url}>.\n",
+        "Usage:",
+        "\t{$command} count < php_manual_en.json",
+        "\t{$command} modules < php_manual_en.json",
+        "\t{$command} functions < php_manual_en.json > result.json",
+        "\t{$command} functions-sexp < php_manual_en.json > result.el",
+        '',
+    ]));
+    exit(1);
+}
+
+$module_id_patterns = array_map(
+    fn($allowlist) => '/\A(?:' . implode('|', array_map(
+        fn($preg) => strtr($preg, ['\.' => '.', '.' => '\.']) .
+            (preg_match('/[0-9a-z]\z/', $preg) ? '\z' : '\b'),
+        $allowlist)
+    ) . ')/',
+    include __DIR__ . '/data/module_id_prefixes.php'
+);
+
+$extracted = [];
+
+foreach ($functions as $name => $function) {
+    if (str_contains($name, '::')) {
+        continue;
+    }
+
+    $module = get_module($function, $module_id_patterns);
+
+    if ($module === null) {
+        fwrite(STDERR, "{$name}: {$function['id']}\n");
+    } else {
+        $extracted[$module][$name] = $function;
+    }
+}
+
+ksort($extracted);
+array_walk($extracted, function (&$functions) {
+    ksort($functions);
+});
+
+call_user_func($subcommands[$subcommand], $extracted);
+
+/**
+ * @param array{id: non-empty-string} $function
+ * @param array<non-empty-string, non-empty-string> $function
+ */
+function get_module(array $function, array $patterns): ?string
+{
+    foreach ($patterns as $module => $pattern) {
+        if (preg_match($pattern, $function['id'])) {
+            return $module;
+        }
+    }
+
+    return null;
+}
diff --git a/script/module_id_prefixes.php b/script/module_id_prefixes.php
new file mode 100644
index 0000000000..4809a9d1cc
--- /dev/null
+++ b/script/module_id_prefixes.php
@@ -0,0 +1,806 @@
+<?php
+
+return [
+    'apache' => [
+        'function.apache-',
+        'function.virtual',
+    ],
+    'apcu' => [
+        'function.apcu-',
+    ],
+    'bcmath' => [
+        'function.bc\.+',
+    ],
+    'bzip2' => [
+        'function.bz\.+',
+    ],
+    'commonmark' => [
+        'function.commonmark-',
+    ],
+    'com_dotnet' => [
+        'function.com-',
+        'function.variant-',
+    ],
+    'componere' => [
+        'componere.',
+    ],
+    'core' => [
+        'function.abs',
+        'function.acos',
+        'function.acosh',
+        'function.addcslashes',
+        'function.addslashes',
+        'function.array-',
+        'function.arsort',
+        'function.asin',
+        'function.asinh',
+        'function.asort',
+        'function.atan',
+        'function.atan2',
+        'function.atanh',
+        'function.base-convert',
+        'function.base64-',
+        'function.basename',
+        'function.bin2hex',
+        'function.bindec',
+        'function.boolval',
+        'function.cal-',
+        'function.call-user-func',
+        'function.call-user-func-array',
+        'function.ceil',
+        'function.chdir',
+        'function.checkdate',
+        'function.checkdnsrr',
+        'function.chgrp',
+        'function.chmod',
+        'function.chop',
+        'function.chown',
+        'function.chr',
+        'function.chroot',
+        'function.chunk-split',
+        'function.class-alias',
+        'function.class-exists',
+        'function.class-implements',
+        'function.class-parents',
+        'function.class-uses',
+        'function.clearstatcache',
+        'function.cli-',
+        'function.closedir',
+        'function.closelog',
+        'function.compact',
+        'function.connection-',
+        'function.constant',
+        'function.convert-cyr-string',
+        'function.convert-uudecode',
+        'function.convert-uuencode',
+        'function.copy',
+        'function.cos',
+        'function.cosh',
+        'function.count',
+        'function.count-chars',
+        'function.crc32',
+        'function.create-function',
+        'function.crypt',
+        'function.ctype-',
+        'function.current',
+        'function.date',
+        'function.debug-',
+        'function.decbin',
+        'function.dechex',
+        'function.decoct',
+        'function.define',
+        'function.defined',
+        'function.deg2rad',
+        'function.delete',
+        'function.die',
+        'function.dir',
+        'function.dirname',
+        'function.disk-',
+        'function.diskfreespace',
+        'function.dl',
+        'function.dns-check-record',
+        'function.dns-get-mx',
+        'function.dns-get-record',
+        'function.dom-import-simplexml',
+        'function.doubleval',
+        'function.each',
+        'function.easter-date',
+        'function.easter-days',
+        'function.enum-exists',
+        'function.error-',
+        'function.escapeshellarg',
+        'function.escapeshellcmd',
+        'function.eval',
+        'function.exec',
+        'function.exit',
+        'function.exp',
+        'function.explode',
+        'function.expm1',
+        'function.extension-loaded',
+        'function.extract',
+        'function.fastcgi-',
+        'function.fclose',
+        'function.fdatasync',
+        'function.fdiv',
+        'function.feof',
+        'function.fflush',
+        'function.fgetc',
+        'function.fgetcsv',
+        'function.fgets',
+        'function.fgetss',
+        'function.file',
+        'function.file\.+',
+        'function.filter-',
+        'function.finfo-',
+        'function.floatval',
+        'function.flock',
+        'function.floor',
+        'function.flush',
+        'function.fmod',
+        'function.fnmatch',
+        'function.fopen',
+        'function.forward-static-call',
+        'function.forward-static-call-array',
+        'function.fpassthru',
+        'function.fprintf',
+        'function.fputcsv',
+        'function.fputs',
+        'function.fread',
+        'function.frenchtojd',
+        'function.fscanf',
+        'function.fseek',
+        'function.fsockopen',
+        'function.fstat',
+        'function.fsync',
+        'function.ftell',
+        'function.ftruncate',
+        'function.func-get-arg',
+        'function.func-get-args',
+        'function.func-num-args',
+        'function.function-exists',
+        'function.fwrite',
+        'function.gc-',
+        'function.get-',
+        'function.getallheaders',
+        'function.getcwd',
+        'function.getdate',
+        'function.getenv',
+        'function.gethostbyaddr',
+        'function.gethostbyname',
+        'function.gethostbynamel',
+        'function.gethostname',
+        'function.getlastmod',
+        'function.getmxrr',
+        'function.getmygid',
+        'function.getmyinode',
+        'function.getmypid',
+        'function.getmyuid',
+        'function.getopt',
+        'function.getprotobyname',
+        'function.getprotobynumber',
+        'function.getrandmax',
+        'function.getrusage',
+        'function.getservbyname',
+        'function.getservbyport',
+        'function.gettimeofday',
+        'function.gettype',
+        'function.glob',
+        'function.gmdate',
+        'function.gmmktime',
+        'function.gmstrftime',
+        'function.gregoriantojd',
+        'function.hash',
+        'function.header',
+        'function.header-register-callback',
+        'function.header-remove',
+        'function.headers-list',
+        'function.headers-sent',
+        'function.hebrev',
+        'function.hebrevc',
+        'function.hex2bin',
+        'function.hexdec',
+        'function.highlight-file',
+        'function.highlight-string',
+        'function.hrtime',
+        'function.html-entity-decode',
+        'function.htmlentities',
+        'function.htmlspecialchars',
+        'function.htmlspecialchars-decode',
+        'function.http-build-query',
+        'function.http-response-code',
+        'function.hypot',
+        'function.idate',
+        'function.ignore-user-abort',
+        'function.implode',
+        'function.in-array',
+        'function.inet-',
+        'function.ini-',
+        'function.intdiv',
+        'function.interface-exists',
+        'function.intval',
+        'function.ip2long',
+        'function.is-a',
+        'function.is-array',
+        'function.is-bool',
+        'function.is-callable',
+        'function.is-countable',
+        'function.is-dir',
+        'function.is-double',
+        'function.is-executable',
+        'function.is-file',
+        'function.is-finite',
+        'function.is-float',
+        'function.is-infinite',
+        'function.is-int',
+        'function.is-integer',
+        'function.is-iterable',
+        'function.is-link',
+        'function.is-long',
+        'function.is-nan',
+        'function.is-null',
+        'function.is-numeric',
+        'function.is-object',
+        'function.is-readable',
+        'function.is-resource',
+        'function.is-scalar',
+        'function.is-string',
+        'function.is-subclass-of',
+        'function.is-uploaded-file',
+        'function.is-writable',
+        'function.is-writeable',
+        'function.iterator-',
+        'function.jddayofweek',
+        'function.jdmonthname',
+        'function.jdtofrench',
+        'function.jdtogregorian',
+        'function.jdtojewish',
+        'function.jdtojulian',
+        'function.jdtounix',
+        'function.jewishtojd',
+        'function.join',
+        'function.json-',
+        'function.juliantojd',
+        'function.key',
+        'function.key-exists',
+        'function.krsort',
+        'function.ksort',
+        'function.lcfirst',
+        'function.lcg-value',
+        'function.lchgrp',
+        'function.lchown',
+        'function.levenshtein',
+        'function.libxml-',
+        'function.link',
+        'function.linkinfo',
+        'function.list',
+        'function.localeconv',
+        'function.localtime',
+        'function.log',
+        'function.log10',
+        'function.log1p',
+        'function.long2ip',
+        'function.lstat',
+        'function.ltrim',
+        'function.mail',
+        'function.max',
+        'function.md5',
+        'function.md5-file',
+        'function.memory-',
+        'function.metaphone',
+        'function.method-exists',
+        'function.microtime',
+        'function.mime-content-type',
+        'function.min',
+        'function.mkdir',
+        'function.mktime',
+        'function.money-format',
+        'function.move-uploaded-file',
+        'function.mt-',
+        'function.natcasesort',
+        'function.natsort',
+        'function.net-get-interfaces',
+        'function.next',
+        'function.nl-langinfo',
+        'function.nl2br',
+        'function.number-format',
+        'function.ob-',
+        'function.octdec',
+        'function.opcache-',
+        'function.opendir',
+        'function.openlog',
+        'function.ord',
+        'function.output-',
+        'function.pack',
+        'function.parse-ini-',
+        'function.parse-str',
+        'function.parse-url',
+        'function.passthru',
+        'function.password-',
+        'function.pathinfo',
+        'function.pclose',
+        'function.pfsockopen',
+        'function.php-ini-',
+        'function.php-sapi-name',
+        'function.php-strip-whitespace',
+        'function.php-uname',
+        'function.phpcredits',
+        'function.phpdbg-',
+        'function.phpinfo',
+        'function.phpversion',
+        'function.pi',
+        'function.popen',
+        'function.pos',
+        'function.posix-',
+        'function.pow',
+        'function.preg-',
+        'function.prev',
+        'function.print-r',
+        'function.printf',
+        'function.proc-',
+        'function.property-exists',
+        'function.putenv',
+        'function.quoted-printable-',
+        'function.quotemeta',
+        'function.rad2deg',
+        'function.rand',
+        'function.random-',
+        'function.range',
+        'function.rawurldecode',
+        'function.rawurlencode',
+        'function.readdir',
+        'function.readfile',
+        'function.readlink',
+        'function.realpath',
+        'function.register-shutdown-function',
+        'function.register-tick-function',
+        'function.rename',
+        'function.reset',
+        'function.restore-',
+        'function.rewind',
+        'function.rewinddir',
+        'function.rmdir',
+        'function.round',
+        'function.rsort',
+        'function.rtrim',
+        'function.sapi-',
+        'function.scandir',
+        'function.seaslog-get-author',
+        'function.seaslog-get-version',
+        'function.serialize',
+        'function.session-',
+        'function.set-',
+        'function.setcookie',
+        'function.setlocale',
+        'function.setrawcookie',
+        'function.settype',
+        'function.sha1',
+        'function.sha1-file',
+        'function.shell-exec',
+        'function.show-source',
+        'function.shuffle',
+        'function.similar-text',
+        'function.simplexml-',
+        'function.sin',
+        'function.sinh',
+        'function.sizeof',
+        'function.sleep',
+        'function.socket-',
+        'function.sodium-',
+        'function.sort',
+        'function.soundex',
+        'function.spl-',
+        'function.sprintf',
+        'function.sqrt',
+        'function.srand',
+        'function.sscanf',
+        'function.stat',
+        'function.str-',
+        'function.strcasecmp',
+        'function.strchr',
+        'function.strcmp',
+        'function.strcoll',
+        'function.strcspn',
+        'function.stream-',
+        'function.strftime',
+        'function.strip-tags',
+        'function.stripcslashes',
+        'function.stripos',
+        'function.stripslashes',
+        'function.stristr',
+        'function.strlen',
+        'function.strnatcasecmp',
+        'function.strnatcmp',
+        'function.strncasecmp',
+        'function.strncmp',
+        'function.strpbrk',
+        'function.strpos',
+        'function.strptime',
+        'function.strrchr',
+        'function.strrev',
+        'function.strripos',
+        'function.strrpos',
+        'function.strspn',
+        'function.strstr',
+        'function.strtok',
+        'function.strtolower',
+        'function.strtotime',
+        'function.strtoupper',
+        'function.strtr',
+        'function.strval',
+        'function.substr',
+        'function.substr-compare',
+        'function.substr-count',
+        'function.substr-replace',
+        'function.symlink',
+        'function.sys-get-temp-dir',
+        'function.sys-getloadavg',
+        'function.syslog',
+        'function.system',
+        'function.tan',
+        'function.tanh',
+        'function.tempnam',
+        'function.time',
+        'function.timezone-',
+        'function.tmpfile',
+        'function.token-get-all',
+        'function.token-name',
+        'function.touch',
+        'function.trait-exists',
+        'function.trigger-error',
+        'function.trim',
+        'function.uasort',
+        'function.ucfirst',
+        'function.ucwords',
+        'function.uksort',
+        'function.umask',
+        'function.uniqid',
+        'function.unixtojd',
+        'function.unlink',
+        'function.unpack',
+        'function.unregister-tick-function',
+        'function.unserialize',
+        'function.unset',
+        'function.urldecode',
+        'function.urlencode',
+        'function.user-error',
+        'function.usleep',
+        'function.usort',
+        'function.var-dump',
+        'function.var-export',
+        'function.version-compare',
+        'function.vfprintf',
+        'function.vprintf',
+        'function.vsprintf',
+        'function.wordwrap',
+        'function.xml-',
+        'function.zend-thread-id',
+        'function.zend-version',
+        'pdo.getavailabledrivers',
+        'xmlwriter.',
+    ],
+    'cubrid' => [
+        'function.cubrid-',
+    ],
+    'curl' => [
+        'curlfile.',
+        'function.curl-',
+    ],
+    'dba' => [
+        'function.dba-',
+    ],
+    'dbase' => [
+        'function.dbase-',
+    ],
+    'dio' => [
+        'function.dio-',
+    ],
+    'eio' => [
+        'function.eio-',
+    ],
+    'enchant' => [
+        'function.enchant-',
+    ],
+    'exif' => [
+        'function.exif-',
+        'function.read-exif-',
+    ],
+    'expect' => [
+        'function.expect-',
+    ],
+    'fann' => [
+        'function.fann-',
+    ],
+    'fdf' => [
+        'function.fdf-',
+    ],
+    'fpm' => [
+        'function.fpm-'
+    ],
+    'ftp' => [
+        'function.ftp-',
+    ],
+    'gearman' => [
+        'gearmanclient.',
+        'gearmantask.',
+    ],
+    'gettext' => [
+        'function.bind-textdomain-codeset',
+        'function.bindtextdomain',
+        'function.dcgettext',
+        'function.dcngettext',
+        'function.dgettext',
+        'function.dngettext',
+        'function.gettext',
+        'function.ngettext',
+        'function.textdomain',
+    ],
+    'gd' => [
+        'function.gd-',
+        'function.getimagesize',
+        'function.getimagesizefromstring',
+        'function.image\.+',
+        'function.iptcembed',
+        'function.iptcparse',
+    ],
+    'gmp' => [
+        'function.gmp-',
+    ],
+    'geoip' => [
+        'function.geoip-',
+    ],
+    'gnupg' => [
+        'function.gnupg-',
+    ],
+    'ibase' => [
+        'function.fbird-',
+        'function.ibase-',
+    ],
+    'ibm_db2' => [
+        'function.db2-',
+    ],
+    'iconv' => [
+        'function.iconv',
+    ],
+    'igbinary' => [
+        'function.igbinary-',
+    ],
+    'imap' => [
+        'function.imap-',
+    ],
+    'inotify' => [
+        'function.inotify-',
+    ],
+    'intl' => [
+        'collator.',
+        'function.grapheme-',
+        'function.idn-',
+        'function.intl-',
+        'intlcalendar.',
+        'intldateformatter.',
+        'intltimezone.',
+        'locale.',
+        'messageformatter.',
+        'normalizer.',
+        'numberformatter.',
+        'resourcebundle.',
+        'transliterator.',
+    ],
+    'language' => [
+        'function.array\z',
+        'function.assert',
+        'function.echo',
+        'function.empty',
+        'function.halt-compiler',
+        'function.isset',
+        'function.print\z',
+    ],
+    'ldap' => [
+        'function.ldap-',
+    ],
+    'lzf' => [
+        'function.lzf-',
+    ],
+    'mailparse' => [
+        'function.mailparse-',
+    ],
+    'mbstring' => [
+        'function.mb-',
+    ],
+    'memcache' => [
+        'function.memcache-',
+    ],
+    'mongodb' => [
+        'function.mongodb.',
+    ],
+    'mqseries' => [
+        'function.mqseries-',
+    ],
+    'mysqli' => [
+        'mysqli-',
+        'mysqli.',
+        'function.mysqli-',
+    ],
+    'mysql-obsolete' => [
+        'function.mysql-',
+    ],
+    'oauth' => [
+        'function.oauth-',
+    ],
+    'obsolete_7' => [
+        'function.autoload',
+        'function.end',
+        'function.ezmlm-hash',
+        'function.is-real',
+        'function.jpeg2wbmp',
+        'function.mcrypt-',
+        'function.mdecrypt-',
+        'function.png2wbmp',
+        'function.wddx-',
+    ],
+    'obsolete_8' => [
+        'function.mhash',
+        'function.utf8-decode',
+        'function.utf8-encode',
+        'function.zip-',
+    ],
+    'oci8' => [
+        'function.oci\.+',
+    ],
+    'odbc' => [
+        'function.odbc-',
+    ],
+    'openal' => [
+        'function.openal-',
+    ],
+    'openssl' => [
+        'function.openssl-',
+    ],
+    'parallel' => [
+        'parallel.',
+    ],
+    'pcntl' => [
+        'function.pcntl-',
+    ],
+    'pgsql' => [
+        'function.pg-',
+    ],
+    'ps' => [
+        'function.ps-',
+    ],
+    'pspell' => [
+        'function.pspell-',
+    ],
+    'radius' => [
+        'function.radius-',
+    ],
+    'rar' => [
+        'function.rar-',
+        'rararchive.',
+    ],
+    'readline' => [
+        'function.readline',
+    ],
+    'recode' => [
+        'function.recode',
+    ],
+    'runkit7' => [
+        'function.runkit7-',
+    ],
+    'rpminfo' => [
+        'function.rpm\.+',
+    ],
+    'rrd' => [
+        'function.rrd-',
+        'function.rrdc-',
+    ],
+    'scoutapm' => [
+        'function.scoutapm-',
+    ],
+    'shmop' => [
+        'function.shmop-',
+    ],
+    'sqlsrv' => [
+        'function.sqlsrv-',
+    ],
+    'smnp' => [
+        'function.snmp-',
+        'function.snmp2-',
+        'function.snmp3-',
+        'function.snmp\.+',
+    ],
+    'soap' => [
+        'function.is-soap-fault',
+        'function.use-soap-error-handler',
+    ],
+    'solr' => [
+        'function.solr-',
+    ],
+    'ssdeep' => [
+        'function.ssdeep-',
+    ],
+    'ssh2' => [
+        'function.ssh2-',
+    ],
+    'stats' => [
+        'function.stats-',
+    ],
+    'stomp' => [
+        'function.stomp-',
+        'stomp.',
+    ],
+    'svn' => [
+        'function.svn-',
+    ],
+    'swoole' => [
+        'function.swoole-',
+        'swoole-server.',
+    ],
+    'sysvshm' => [
+        'function.ftok',
+        'function.sem-',
+        'function.shm-',
+        'function.msg-get-queue',
+        'function.msg-queue-exists',
+        'function.msg-receive',
+        'function.msg-remove-queue',
+        'function.msg-send',
+        'function.msg-set-queue',
+        'function.msg-stat-queue',
+    ],
+    'taint' => [
+        'function.is-tainted',
+        'function.taint',
+        'function.untaint',
+    ],
+    'tcpwrap' => [
+        'function.tcpwrap-',
+    ],
+    'tidy' => [
+        'function.tidy-',
+        'tidy.',
+    ],
+    'trader' => [
+        'function.trader-',
+    ],
+    'ui' => [
+        'function.ui-',
+    ],
+    'uopz' => [
+        'function.uopz-',
+    ],
+    'var_representation' => [
+        'function.var-representation',
+    ],
+    'win32service' => [
+        'function.win32-',
+    ],
+    'wincache' => [
+        'function.wincache-',
+    ],
+    'xattr' => [
+        'function.xattr-',
+    ],
+    'xdiff' => [
+        'function.xdiff-',
+    ],
+    'xhprof' => [
+        'function.xhprof-',
+    ],
+    'xmlrpc' => ['function.xmlrpc-'],
+    'yaml' => [
+        'function.yaml-',
+    ],
+    'yaz' => [
+        'function.yaz-',
+    ],
+    'zlib' => [
+        'function.deflate-',
+        'function.gz\.+',
+        'function.inflate-',
+        'function.readgzfile',
+        'function.zlib-',
+    ],
+    'zookeeper' => [
+        'function.zookeeper-',
+    ]
+];



reply via email to

[Prev in Thread] Current Thread [Next in Thread]