diff -pruN 5.6.18+dfsg-4/configure 5.6.19+dfsg-1/configure
--- 5.6.18+dfsg-4/configure	2016-02-03 10:29:59.000000000 +0000
+++ 5.6.19+dfsg-1/configure	2016-03-03 00:40:34.000000000 +0000
@@ -3672,7 +3672,7 @@ ac_config_headers="$ac_config_headers ma
 
 PHP_MAJOR_VERSION=5
 PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=18
+PHP_RELEASE_VERSION=19
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr $PHP_MAJOR_VERSION \* 10000 + $PHP_MINOR_VERSION \* 100 + $PHP_RELEASE_VERSION`
diff -pruN 5.6.18+dfsg-4/configure.in 5.6.19+dfsg-1/configure.in
--- 5.6.18+dfsg-4/configure.in	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/configure.in	2016-03-04 00:09:40.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=5
 PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=18
+PHP_RELEASE_VERSION=19
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 5.6.18+dfsg-4/debian/changelog 5.6.19+dfsg-1/debian/changelog
--- 5.6.18+dfsg-4/debian/changelog	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/changelog	2016-03-03 10:42:44.000000000 +0000
@@ -1,3 +1,91 @@
+php5.6 (5.6.19+dfsg-1) unstable; urgency=medium
+
+  * Imported Upstream version 5.6.19+dfsg
+  * Rebase patches on top of 5.6.19+dfsg release
+  * Remove ucfq part from prerm and postrm script that's not needed
+    anymore (it was needed for dual mysql and mysqlnd modules)
+  * Move php module deactivation back to postrm remove block
+  * Reorder SAPI cleanup scripts to properly disable PHP extensions
+
+ -- Ondřej Surý <ondrej@debian.org>  Thu, 03 Mar 2016 11:42:33 +0100
+
+php5.6 (5.6.18+dfsg-11) unstable; urgency=medium
+
+  * Check for old inidir existence before removing it
+
+ -- Ondřej Surý <ondrej@debian.org>  Tue, 01 Mar 2016 21:32:33 +0100
+
+php5.6 (5.6.18+dfsg-10) unstable; urgency=medium
+
+  * Move mods-available directories to /etc/php/X.Y/mods-available
+  * Install missing php-module.preinst scripts
+
+ -- Ondřej Surý <ondrej@debian.org>  Mon, 29 Feb 2016 15:42:59 +0100
+
+php5.6 (5.6.18+dfsg-9) unstable; urgency=medium
+
+  * Don't enable PHP FPM by default
+  * Fix non-expanded @EXTENSION_DIR@ in php-config
+
+ -- Ondřej Surý <ondrej@debian.org>  Fri, 26 Feb 2016 10:40:25 +0100
+
+php5.6 (5.6.18+dfsg-8) unstable; urgency=medium
+
+  * Replace makefile magic with shell for loop when iterating through SAPI
+    build targets and enable parallel builds
+  * Enable full Debian hardening
+  * FORCE_CGI_REDIRECT and DISCARD_PATH doesn't exist anymore, so we just
+    hardlink php-cgi7.0 to /usr/lib/cgi-bin/ for consistency with older
+    releases
+  * Use shared config.cache between different SAPI builds that speeds up
+    dh_auto_configure step a lot
+
+ -- Ondřej Surý <ondrej@debian.org>  Wed, 24 Feb 2016 12:17:19 +0100
+
+php5.6 (5.6.18+dfsg-7) unstable; urgency=medium
+
+  * Package zlib extension into phpX.Y-common
+
+ -- Ondřej Surý <ondrej@debian.org>  Tue, 23 Feb 2016 17:46:18 +0100
+
+php5.6 (5.6.18+dfsg-6) unstable; urgency=medium
+
+  * bz2 extension pulls libbz2-1.0, so it's better to have it in separate
+    package
+  * Get rid of ${source:Version} everywhere
+  * Remove PHPAPI version from lintian-overrides
+  * Add missing mysqlnd shared module back to phpX.Y-mysqlnd package
+  * Fix php5.6 source: not-binnmuable-all-depends-any php5.6 -> php5.6-common
+  * Merge php-<ext>:Provides into single line
+  * Rename @modules@ to @extensions@ to make the d/rules less confusing
+  * Disable module first before removing matching .ini file from
+    /etc/php/mods-available
+  * XML extension has to be loaded before WDDX or XMLRPC-EPI extensions
+
+ -- Ondřej Surý <ondrej@debian.org>  Tue, 23 Feb 2016 14:11:41 +0100
+
+php5.6 (5.6.18+dfsg-5) unstable; urgency=medium
+
+  [ Ondřej Surý ]
+  * Add lintian override for faulty dh_apache2 (#796328)
+  * Add support for dbgsym package
+  * Use dsoname instead of module when building extension ini files
+    (Courtesy of Miha Vrhovnik)
+  * Move mysqlnd to mysql extension package
+  * Split several compiled-in extensions to independent extension packages
+  * Make several builtin extensions shared and move them into -common package
+  * Add support for generated Replaces/Breaks/Conflicts/Provides for
+    extension packages
+  * Disable built-in iconv support, leave only as shared extension
+  * Make stored PHPAPI ZTS agnostic
+  * Add support for dbgsym package
+
+  [ Neal Gompa ]
+  * Ensure php-fpm apache httpd config is prepared and installed
+  * Fix the tests to pass and handle conditions that should fail properly
+
+ -- Ondřej Surý <ondrej@debian.org>  Mon, 22 Feb 2016 23:13:27 +0100
+
 php5.6 (5.6.18+dfsg-4) unstable; urgency=medium
 
   * Resolve ltmain.sh link based on libtool version
diff -pruN 5.6.18+dfsg-4/debian/control 5.6.19+dfsg-1/debian/control
--- 5.6.18+dfsg-4/debian/control	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/control	2016-03-03 10:42:44.000000000 +0000
@@ -73,7 +73,7 @@ Build-Depends: apache2-dev (>= 2.4),
                zlib1g-dev
 Build-Conflicts: bind-dev,
                  libxmlrpc-core-c3-dev
-Standards-Version: 3.9.6
+Standards-Version: 3.9.7
 Vcs-Git: git://anonscm.debian.org/pkg-php/php.git
 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-php/php.git
 Homepage: http://www.php.net/
@@ -82,11 +82,10 @@ XS-Testsuite: autopkgtest
 Package: libapache2-mod-php5.6
 Section: httpd
 Architecture: any
-Depends: apache2 (>= 2.4),
-         libmagic1,
+Depends: libmagic1,
          mime-support,
          php5.6-cli,
-         php5.6-common (>= ${source:Version}),
+         php5.6-common (= ${binary:Version}),
          php5.6-json,
          php5.6-opcache,
          tzdata,
@@ -95,7 +94,8 @@ Depends: apache2 (>= 2.4),
          ${shlibs:Depends}
 Conflicts: libapache2-mod-php5 (<< 5.6.16+dfsg-4~),
            libapache2-mod-php5filter (<< 5.6.16+dfsg-4~)
-Provides: ${php:Provides}, libapache2-mod-php
+Provides: libapache2-mod-php,
+          ${php:Provides}
 Suggests: php-pear
 Description: server-side, HTML-embedded scripting language (Apache 2 module)
  This package provides the PHP module for the Apache 2 webserver (as
@@ -112,12 +112,13 @@ Package: libphp5.6-embed
 Architecture: any
 Depends: libmagic1,
          mime-support,
-         php5.6-common (>= ${source:Version}),
+         php5.6-common (= ${binary:Version}),
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, libphp-embed
+Provides: libphp-embed,
+          ${php:Provides}
 Suggests: php-pear
 Conflicts: libphp5-embed (<< 5.6.16+dfsg-4~)
 Priority: optional
@@ -137,8 +138,8 @@ Description: HTML-embedded scripting lan
 
 Package: php5.6
 Architecture: all
-Depends: libapache2-mod-php5.6 (>= ${source:Version}~) | php5.6-cgi (>= ${source:Version}~) | php5.6-fpm (>= ${source:Version}~),
-         php5.6-common (>= ${source:Version}~),
+Depends: php5.6-fpm | libapache2-mod-php5.6 | php5.6-cgi,
+         php5.6-common,
          ${misc:Depends}
 Conflicts: php5 (<< 5.6.16+dfsg-4~)
 Provides: php
@@ -157,14 +158,15 @@ Architecture: any
 Depends: libmagic1,
          mime-support,
          php5.6-cli,
-         php5.6-common (>= ${source:Version}),
+         php5.6-common (= ${binary:Version}),
          php5.6-json,
          php5.6-opcache,
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, php-cgi
+Provides: php-cgi,
+          ${php:Provides}
 Conflicts: php5-cgi (<< 5.6.16+dfsg-4~)
 Suggests: php-pear
 Description: server-side, HTML-embedded scripting language (CGI binary)
@@ -184,14 +186,15 @@ Architecture: any
 Depends: libedit2 (>= 2.11-20080614-4),
          libmagic1,
          mime-support,
-         php5.6-common (>= ${source:Version}),
+         php5.6-common (= ${binary:Version}),
          php5.6-opcache,
          php5.6-readline,
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, php-cli
+Provides: php-cli,
+          ${php:Provides}
 Breaks: php5-cli (<< 5.6.16+dfsg-4~)
 Replaces: php5-cli (<< 5.6.16+dfsg-4~)
 Suggests: php-pear
@@ -205,44 +208,15 @@ Description: command-line interpreter fo
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-common
-Architecture: all
-Depends: php-common (>= 18~),
-         ${misc:Depends}
-Suggests: php-user-cache
-Conflicts: php5-common (<< 5.6.16+dfsg-4~)
-Description: Common files for packages built from the PHP source
- This package contains the documentation and example files relevant to all
- the other packages built from the PHP source.
- .
- PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
- open source general-purpose scripting language that is especially suited
- for web development and can be embedded into HTML.
-
-Package: php5.6-dbg
-Depends: libapache2-mod-php5.6 (= ${binary:Version}) | php5.6-cgi (= ${binary:Version}) | php5.6-cli (= ${binary:Version}) | php5.6-fpm (= ${binary:Version}) | libphp5.6-embed (= ${binary:Version}) | php5.6-phpdbg (= ${binary:Version}),
-         ${misc:Depends}
-Recommends: gdb
-Section: debug
-Priority: extra
-Architecture: any
-Description: Debug symbols for PHP5.6
- This package provides the debug symbols for PHP5.6 needed for properly
- debugging errors in PHP5.6 with gdb.
- .
- PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
- open source general-purpose scripting language that is especially suited
- for web development and can be embedded into HTML.
-
 Package: php5.6-dev
 Depends: autoconf (>= 2.63),
          automake (>= 1.11),
          libpcre3-dev,
          libssl-dev,
-	 ${libtool:Depends},
          php5.6-cli (>= ${binary:Version}),
-         php5.6-common (>= ${source:Version}),
+         php5.6-common (= ${binary:Version}),
          shtool,
+         ${libtool:Depends},
          ${misc:Depends},
          ${perl:Depends}
 Conflicts: php5-dev (<< 5.6.16+dfsg-4~),
@@ -263,14 +237,15 @@ Architecture: any
 Depends: libmagic1,
          mime-support,
          php5.6-cli,
-         php5.6-common (>= ${source:Version}),
+         php5.6-common (= ${binary:Version}),
          php5.6-json,
          php5.6-opcache,
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, php-fpm
+Provides: php-fpm,
+          ${php:Provides}
 Suggests: php-pear
 Pre-Depends: ${misc:Pre-Depends}
 Conflicts: php5-fpm (<< 5.6.16+dfsg-4~)
@@ -289,12 +264,13 @@ Package: php5.6-phpdbg
 Architecture: any
 Depends: libmagic1,
          mime-support,
-         php5.6-common (>= ${source:Version}),
+         php5.6-common (= ${binary:Version}),
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, php-phpdbg
+Provides: php-phpdbg,
+          ${php:Provides}
 Conflicts: php5-phpdbg (<< 5.6.16+dfsg-4~)
 Recommends: php-readline
 Description: server-side, HTML-embedded scripting language (PHPDBG binary)
@@ -307,17 +283,32 @@ Description: server-side, HTML-embedded
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
+Package: php5.6-xsl
+Architecture: all
+Depends: php5.6-common,
+         php5.6-xml,
+         ${misc:Depends}
+Description: XSL module for PHP (dummy)
+ This package is a transitional dummy package and can be safely
+ removed.
+
 Package: php5.6-odbc
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-odbc:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-odbc:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-odbc:Replaces}
+Breaks: ${php-odbc:Breaks}
+Conflicts: ${php-odbc:Conflicts}
+Provides: ${php-odbc:Provides}
 Description: ODBC module for PHP
- This package provides a ODBC module for PHP.
+ This package provides the ODBC module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -325,15 +316,21 @@ Description: ODBC module for PHP
 
 Package: php5.6-readline
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-readline:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-readline:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-readline:Replaces}
+Breaks: ${php-readline:Breaks}
+Conflicts: ${php-readline:Conflicts}
+Provides: ${php-readline:Provides}
 Description: readline module for PHP
- This package provides a readline module for PHP.
+ This package provides the readline module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -341,15 +338,43 @@ Description: readline module for PHP
 
 Package: php5.6-recode
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-recode:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-recode:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-recode:Replaces}
+Breaks: ${php-recode:Breaks}
+Conflicts: ${php-recode:Conflicts}
+Provides: ${php-recode:Provides}
 Description: recode module for PHP
- This package provides a recode module for PHP.
+ This package provides the recode module(s) for PHP.
+ .
+ PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
+ open source general-purpose scripting language that is especially suited
+ for web development and can be embedded into HTML.
+
+Package: php5.6-common
+Architecture: any
+Depends: php-common (>= 1:33),
+         ucf,
+         ${misc:Depends},
+         ${php:Depends},
+	 ${php-common:Depends},
+         ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-common:Pre-Depends}
+Built-Using: ${php:Built-Using}
+Replaces: ${php-common:Replaces}
+Breaks: ${php-common:Breaks}
+Conflicts: ${php-common:Conflicts}
+Provides: ${php-common:Provides}
+Description: documentation, examples and common module for PHP
+ This package provides the documentation, examples and common module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -357,95 +382,131 @@ Description: recode module for PHP
 
 Package: php5.6-sqlite3
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-sqlite3:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-sqlite3:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-sqlite3:Replaces}
+Breaks: ${php-sqlite3:Breaks}
+Conflicts: ${php-sqlite3:Conflicts}
+Provides: ${php-sqlite3:Provides}
 Description: SQLite3 module for PHP
- This package provides a SQLite3 module for PHP.
+ This package provides the SQLite3 module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-xmlrpc
+Package: php5.6-xml
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-xml:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-xml:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: XMLRPC-EPI module for PHP
- This package provides a XMLRPC-EPI module for PHP.
+Replaces: ${php-xml:Replaces}
+Breaks: ${php-xml:Breaks}
+Conflicts: ${php-xml:Conflicts}
+Provides: ${php-xml:Provides}
+Description: DOM, SimpleXML, WDDX, XML, and XSL module for PHP
+ This package provides the DOM, SimpleXML, WDDX, XML, and XSL module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-sybase
+Package: php5.6-zip
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-zip:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-zip:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: Sybase module for PHP
- This package provides a Sybase module for PHP.
+Replaces: ${php-zip:Replaces}
+Breaks: ${php-zip:Breaks}
+Conflicts: ${php-zip:Conflicts}
+Provides: ${php-zip:Provides}
+Description: Zip module for PHP
+ This package provides the Zip module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-gd
+Package: php5.6-sybase
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-sybase:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-sybase:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: GD module for PHP
- This package provides a GD module for PHP.
+Replaces: ${php-sybase:Replaces}
+Breaks: ${php-sybase:Breaks}
+Conflicts: ${php-sybase:Conflicts}
+Provides: ${php-sybase:Provides}
+Description: Sybase module for PHP
+ This package provides the Sybase module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-gmp
+Package: php5.6-gd
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-gd:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-gd:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: GMP module for PHP
- This package provides a GMP module for PHP.
+Replaces: ${php-gd:Replaces}
+Breaks: ${php-gd:Breaks}
+Conflicts: ${php-gd:Conflicts}
+Provides: ${php-gd:Provides}
+Description: GD module for PHP
+ This package provides the GD module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-xsl
+Package: php5.6-gmp
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-gmp:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-gmp:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: XSL module for PHP
- This package provides a XSL module for PHP.
+Replaces: ${php-gmp:Replaces}
+Breaks: ${php-gmp:Breaks}
+Conflicts: ${php-gmp:Conflicts}
+Provides: ${php-gmp:Provides}
+Description: GMP module for PHP
+ This package provides the GMP module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -453,15 +514,21 @@ Description: XSL module for PHP
 
 Package: php5.6-ldap
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-ldap:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-ldap:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-ldap:Replaces}
+Breaks: ${php-ldap:Breaks}
+Conflicts: ${php-ldap:Conflicts}
+Provides: ${php-ldap:Provides}
 Description: LDAP module for PHP
- This package provides a LDAP module for PHP.
+ This package provides the LDAP module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -469,15 +536,21 @@ Description: LDAP module for PHP
 
 Package: php5.6-interbase
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-interbase:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-interbase:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-interbase:Replaces}
+Breaks: ${php-interbase:Breaks}
+Conflicts: ${php-interbase:Conflicts}
+Provides: ${php-interbase:Provides}
 Description: Interbase module for PHP
- This package provides a Interbase module for PHP.
+ This package provides the Interbase module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -485,15 +558,43 @@ Description: Interbase module for PHP
 
 Package: php5.6-intl
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-intl:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-intl:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-intl:Replaces}
+Breaks: ${php-intl:Breaks}
+Conflicts: ${php-intl:Conflicts}
+Provides: ${php-intl:Provides}
 Description: Internationalisation module for PHP
- This package provides a Internationalisation module for PHP.
+ This package provides the Internationalisation module(s) for PHP.
+ .
+ PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
+ open source general-purpose scripting language that is especially suited
+ for web development and can be embedded into HTML.
+
+Package: php5.6-mysql
+Architecture: any
+Depends: php-common (>= 1:33),
+         ucf,
+         ${misc:Depends},
+         ${php:Depends},
+	 ${php-mysql:Depends},
+         ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-mysql:Pre-Depends}
+Built-Using: ${php:Built-Using}
+Replaces: ${php-mysql:Replaces}
+Breaks: ${php-mysql:Breaks}
+Conflicts: ${php-mysql:Conflicts}
+Provides: ${php-mysql:Provides}
+Description: MySQL module for PHP
+ This package provides the MySQL module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -501,31 +602,43 @@ Description: Internationalisation module
 
 Package: php5.6-mcrypt
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-mcrypt:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-mcrypt:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-mcrypt:Replaces}
+Breaks: ${php-mcrypt:Breaks}
+Conflicts: ${php-mcrypt:Conflicts}
+Provides: ${php-mcrypt:Provides}
 Description: libmcrypt module for PHP
- This package provides a libmcrypt module for PHP.
+ This package provides the libmcrypt module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-curl
+Package: php5.6-snmp
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-snmp:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-snmp:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: CURL module for PHP
- This package provides a CURL module for PHP.
+Replaces: ${php-snmp:Replaces}
+Breaks: ${php-snmp:Breaks}
+Conflicts: ${php-snmp:Conflicts}
+Provides: ${php-snmp:Provides}
+Description: SNMP module for PHP
+ This package provides the SNMP module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -533,15 +646,43 @@ Description: CURL module for PHP
 
 Package: php5.6-pgsql
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-pgsql:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-pgsql:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-pgsql:Replaces}
+Breaks: ${php-pgsql:Breaks}
+Conflicts: ${php-pgsql:Conflicts}
+Provides: ${php-pgsql:Provides}
 Description: PostgreSQL module for PHP
- This package provides a PostgreSQL module for PHP.
+ This package provides the PostgreSQL module(s) for PHP.
+ .
+ PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
+ open source general-purpose scripting language that is especially suited
+ for web development and can be embedded into HTML.
+
+Package: php5.6-mbstring
+Architecture: any
+Depends: php-common (>= 1:33),
+         ucf,
+         ${misc:Depends},
+         ${php:Depends},
+	 ${php-mbstring:Depends},
+         ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-mbstring:Pre-Depends}
+Built-Using: ${php:Built-Using}
+Replaces: ${php-mbstring:Replaces}
+Breaks: ${php-mbstring:Breaks}
+Conflicts: ${php-mbstring:Conflicts}
+Provides: ${php-mbstring:Provides}
+Description: MBSTRING module for PHP
+ This package provides the MBSTRING module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -549,15 +690,21 @@ Description: PostgreSQL module for PHP
 
 Package: php5.6-enchant
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-enchant:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-enchant:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-enchant:Replaces}
+Breaks: ${php-enchant:Breaks}
+Conflicts: ${php-enchant:Conflicts}
+Provides: ${php-enchant:Provides}
 Description: Enchant module for PHP
- This package provides a Enchant module for PHP.
+ This package provides the Enchant module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -565,15 +712,21 @@ Description: Enchant module for PHP
 
 Package: php5.6-opcache
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-opcache:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-opcache:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-opcache:Replaces}
+Breaks: ${php-opcache:Breaks}
+Conflicts: ${php-opcache:Conflicts}
+Provides: ${php-opcache:Provides}
 Description: Zend OpCache module for PHP
- This package provides a Zend OpCache module for PHP.
+ This package provides the Zend OpCache module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -581,31 +734,65 @@ Description: Zend OpCache module for PHP
 
 Package: php5.6-imap
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-imap:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-imap:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-imap:Replaces}
+Breaks: ${php-imap:Breaks}
+Conflicts: ${php-imap:Conflicts}
+Provides: ${php-imap:Provides}
 Description: IMAP module for PHP
- This package provides a IMAP module for PHP.
+ This package provides the IMAP module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-mysql
+Package: php5.6-bz2
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-bz2:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-bz2:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: MySQL module for PHP
- This package provides a MySQL module for PHP.
+Replaces: ${php-bz2:Replaces}
+Breaks: ${php-bz2:Breaks}
+Conflicts: ${php-bz2:Conflicts}
+Provides: ${php-bz2:Provides}
+Description: bzip2 module for PHP
+ This package provides the bzip2 module(s) for PHP.
+ .
+ PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
+ open source general-purpose scripting language that is especially suited
+ for web development and can be embedded into HTML.
+
+Package: php5.6-bcmath
+Architecture: any
+Depends: php-common (>= 1:33),
+         ucf,
+         ${misc:Depends},
+         ${php:Depends},
+	 ${php-bcmath:Depends},
+         ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-bcmath:Pre-Depends}
+Built-Using: ${php:Built-Using}
+Replaces: ${php-bcmath:Replaces}
+Breaks: ${php-bcmath:Breaks}
+Conflicts: ${php-bcmath:Conflicts}
+Provides: ${php-bcmath:Provides}
+Description: Bcmath module for PHP
+ This package provides the Bcmath module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -613,31 +800,65 @@ Description: MySQL module for PHP
 
 Package: php5.6-tidy
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-tidy:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-tidy:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-tidy:Replaces}
+Breaks: ${php-tidy:Breaks}
+Conflicts: ${php-tidy:Conflicts}
+Provides: ${php-tidy:Provides}
 Description: tidy module for PHP
- This package provides a tidy module for PHP.
+ This package provides the tidy module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-snmp
+Package: php5.6-soap
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-soap:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-soap:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: SNMP module for PHP
- This package provides a SNMP module for PHP.
+Replaces: ${php-soap:Replaces}
+Breaks: ${php-soap:Breaks}
+Conflicts: ${php-soap:Conflicts}
+Provides: ${php-soap:Provides}
+Description: SOAP module for PHP
+ This package provides the SOAP module(s) for PHP.
+ .
+ PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
+ open source general-purpose scripting language that is especially suited
+ for web development and can be embedded into HTML.
+
+Package: php5.6-xmlrpc
+Architecture: any
+Depends: php-common (>= 1:33),
+         ucf,
+         ${misc:Depends},
+         ${php:Depends},
+	 ${php-xmlrpc:Depends},
+         ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-xmlrpc:Pre-Depends}
+Built-Using: ${php:Built-Using}
+Replaces: ${php-xmlrpc:Replaces}
+Breaks: ${php-xmlrpc:Breaks}
+Conflicts: ${php-xmlrpc:Conflicts}
+Provides: ${php-xmlrpc:Provides}
+Description: XMLRPC-EPI module for PHP
+ This package provides the XMLRPC-EPI module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
@@ -645,31 +866,43 @@ Description: SNMP module for PHP
 
 Package: php5.6-pspell
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-pspell:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-pspell:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-pspell:Replaces}
+Breaks: ${php-pspell:Breaks}
+Conflicts: ${php-pspell:Conflicts}
+Provides: ${php-pspell:Provides}
 Description: pspell module for PHP
- This package provides a pspell module for PHP.
+ This package provides the pspell module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php5.6-bz2
+Package: php5.6-curl
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-curl:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-curl:Pre-Depends}
 Built-Using: ${php:Built-Using}
-Description: bzip2 module for PHP
- This package provides a bzip2 module for PHP.
+Replaces: ${php-curl:Replaces}
+Breaks: ${php-curl:Breaks}
+Conflicts: ${php-curl:Conflicts}
+Provides: ${php-curl:Provides}
+Description: CURL module for PHP
+ This package provides the CURL module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
diff -pruN 5.6.18+dfsg-4/debian/control.in 5.6.19+dfsg-1/debian/control.in
--- 5.6.18+dfsg-4/debian/control.in	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/control.in	2016-03-03 10:42:44.000000000 +0000
@@ -73,7 +73,7 @@ Build-Depends: apache2-dev (>= 2.4),
                zlib1g-dev
 Build-Conflicts: bind-dev,
                  libxmlrpc-core-c3-dev
-Standards-Version: 3.9.6
+Standards-Version: 3.9.7
 Vcs-Git: git://anonscm.debian.org/pkg-php/php.git
 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-php/php.git
 Homepage: http://www.php.net/
@@ -82,11 +82,10 @@ XS-Testsuite: autopkgtest
 Package: libapache2-mod-php@PHP_VERSION@
 Section: httpd
 Architecture: any
-Depends: apache2 (>= 2.4),
-         libmagic1,
+Depends: libmagic1,
          mime-support,
          php@PHP_VERSION@-cli,
-         php@PHP_VERSION@-common (>= ${source:Version}),
+         php@PHP_VERSION@-common (= ${binary:Version}),
          php@PHP_VERSION@-json,
          php@PHP_VERSION@-opcache,
          tzdata,
@@ -95,7 +94,8 @@ Depends: apache2 (>= 2.4),
          ${shlibs:Depends}
 Conflicts: libapache2-mod-php5 (<< 5.6.16+dfsg-4~),
            libapache2-mod-php5filter (<< 5.6.16+dfsg-4~)
-Provides: ${php:Provides}, libapache2-mod-php
+Provides: libapache2-mod-php,
+          ${php:Provides}
 Suggests: php-pear
 Description: server-side, HTML-embedded scripting language (Apache 2 module)
  This package provides the PHP module for the Apache 2 webserver (as
@@ -112,12 +112,13 @@ Package: libphp@PHP_VERSION@-embed
 Architecture: any
 Depends: libmagic1,
          mime-support,
-         php@PHP_VERSION@-common (>= ${source:Version}),
+         php@PHP_VERSION@-common (= ${binary:Version}),
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, libphp-embed
+Provides: libphp-embed,
+          ${php:Provides}
 Suggests: php-pear
 Conflicts: libphp5-embed (<< 5.6.16+dfsg-4~)
 Priority: optional
@@ -137,8 +138,8 @@ Description: HTML-embedded scripting lan
 
 Package: php@PHP_VERSION@
 Architecture: all
-Depends: libapache2-mod-php@PHP_VERSION@ (>= ${source:Version}~) | php@PHP_VERSION@-cgi (>= ${source:Version}~) | php@PHP_VERSION@-fpm (>= ${source:Version}~),
-         php@PHP_VERSION@-common (>= ${source:Version}~),
+Depends: php@PHP_VERSION@-fpm | libapache2-mod-php@PHP_VERSION@ | php@PHP_VERSION@-cgi,
+         php@PHP_VERSION@-common,
          ${misc:Depends}
 Conflicts: php5 (<< 5.6.16+dfsg-4~)
 Provides: php
@@ -157,14 +158,15 @@ Architecture: any
 Depends: libmagic1,
          mime-support,
          php@PHP_VERSION@-cli,
-         php@PHP_VERSION@-common (>= ${source:Version}),
+         php@PHP_VERSION@-common (= ${binary:Version}),
          php@PHP_VERSION@-json,
          php@PHP_VERSION@-opcache,
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, php-cgi
+Provides: php-cgi,
+          ${php:Provides}
 Conflicts: php5-cgi (<< 5.6.16+dfsg-4~)
 Suggests: php-pear
 Description: server-side, HTML-embedded scripting language (CGI binary)
@@ -184,14 +186,15 @@ Architecture: any
 Depends: libedit2 (>= 2.11-20080614-4),
          libmagic1,
          mime-support,
-         php@PHP_VERSION@-common (>= ${source:Version}),
+         php@PHP_VERSION@-common (= ${binary:Version}),
          php@PHP_VERSION@-opcache,
          php@PHP_VERSION@-readline,
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, php-cli
+Provides: php-cli,
+          ${php:Provides}
 Breaks: php5-cli (<< 5.6.16+dfsg-4~)
 Replaces: php5-cli (<< 5.6.16+dfsg-4~)
 Suggests: php-pear
@@ -205,44 +208,15 @@ Description: command-line interpreter fo
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
 
-Package: php@PHP_VERSION@-common
-Architecture: all
-Depends: php-common (>= 18~),
-         ${misc:Depends}
-Suggests: php-user-cache
-Conflicts: php5-common (<< 5.6.16+dfsg-4~)
-Description: Common files for packages built from the PHP source
- This package contains the documentation and example files relevant to all
- the other packages built from the PHP source.
- .
- PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
- open source general-purpose scripting language that is especially suited
- for web development and can be embedded into HTML.
-
-Package: php@PHP_VERSION@-dbg
-Depends: libapache2-mod-php@PHP_VERSION@ (= ${binary:Version}) | php@PHP_VERSION@-cgi (= ${binary:Version}) | php@PHP_VERSION@-cli (= ${binary:Version}) | php@PHP_VERSION@-fpm (= ${binary:Version}) | libphp@PHP_VERSION@-embed (= ${binary:Version}) | php@PHP_VERSION@-phpdbg (= ${binary:Version}),
-         ${misc:Depends}
-Recommends: gdb
-Section: debug
-Priority: extra
-Architecture: any
-Description: Debug symbols for PHP@PHP_VERSION@
- This package provides the debug symbols for PHP@PHP_VERSION@ needed for properly
- debugging errors in PHP@PHP_VERSION@ with gdb.
- .
- PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
- open source general-purpose scripting language that is especially suited
- for web development and can be embedded into HTML.
-
 Package: php@PHP_VERSION@-dev
 Depends: autoconf (>= 2.63),
          automake (>= 1.11),
          libpcre3-dev,
          libssl-dev,
-	 ${libtool:Depends},
          php@PHP_VERSION@-cli (>= ${binary:Version}),
-         php@PHP_VERSION@-common (>= ${source:Version}),
+         php@PHP_VERSION@-common (= ${binary:Version}),
          shtool,
+         ${libtool:Depends},
          ${misc:Depends},
          ${perl:Depends}
 Conflicts: php5-dev (<< 5.6.16+dfsg-4~),
@@ -263,14 +237,15 @@ Architecture: any
 Depends: libmagic1,
          mime-support,
          php@PHP_VERSION@-cli,
-         php@PHP_VERSION@-common (>= ${source:Version}),
+         php@PHP_VERSION@-common (= ${binary:Version}),
          php@PHP_VERSION@-json,
          php@PHP_VERSION@-opcache,
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, php-fpm
+Provides: php-fpm,
+          ${php:Provides}
 Suggests: php-pear
 Pre-Depends: ${misc:Pre-Depends}
 Conflicts: php5-fpm (<< 5.6.16+dfsg-4~)
@@ -289,12 +264,13 @@ Package: php@PHP_VERSION@-phpdbg
 Architecture: any
 Depends: libmagic1,
          mime-support,
-         php@PHP_VERSION@-common (>= ${source:Version}),
+         php@PHP_VERSION@-common (= ${binary:Version}),
          tzdata,
          ucf,
          ${misc:Depends},
          ${shlibs:Depends}
-Provides: ${php:Provides}, php-phpdbg
+Provides: php-phpdbg,
+          ${php:Provides}
 Conflicts: php5-phpdbg (<< 5.6.16+dfsg-4~)
 Recommends: php-readline
 Description: server-side, HTML-embedded scripting language (PHPDBG binary)
@@ -306,3 +282,12 @@ Description: server-side, HTML-embedded
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
  for web development and can be embedded into HTML.
+
+Package: php@PHP_VERSION@-xsl
+Architecture: all
+Depends: php@PHP_VERSION@-common,
+         php@PHP_VERSION@-xml,
+         ${misc:Depends}
+Description: XSL module for PHP (dummy)
+ This package is a transitional dummy package and can be safely
+ removed.
diff -pruN 5.6.18+dfsg-4/debian/libapache2-mod-php.lintian-overrides 5.6.19+dfsg-1/debian/libapache2-mod-php.lintian-overrides
--- 5.6.18+dfsg-4/debian/libapache2-mod-php.lintian-overrides	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/libapache2-mod-php.lintian-overrides	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,2 @@
+# dh-apache2 bug: http://bugs.debian.org/796328
+libapache2-mod-php@PHP_VERSION@: apache2-module-depends-on-real-apache2-package apache2-bin
diff -pruN 5.6.18+dfsg-4/debian/NEWS 5.6.19+dfsg-1/debian/NEWS
--- 5.6.18+dfsg-4/debian/NEWS	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/NEWS	2016-03-03 10:42:44.000000000 +0000
@@ -1,22 +1,15 @@
-php7.0 (7.0.0~beta2-1) experimental; urgency=medium
+php5.6 (5.6.18+dfsg-5) unstable; urgency=medium
 
-  ****************************************************************
-  ************************* EXPERIMENTAL *************************
-  ****************************************************************
-  * DON'T COMPLAIN IT DOESN'T WORK, SEND A PATCH OR YOU WILL BE IGNORED
-  ****************************************************************
-  * WORK IN PROGRESS
-  ****************************************************************
-  * Highly-experimental, don't use, unless you are willing to debug
-    the code, send patches or pull requests; and don't complain if
-    this doesn't work, you will have to put some effort to make it
-    work yourself
-  * IMPORTANT: Any bugs opened in Debian BTS without a working patch
-    will be closed without any notice
-  * It might eat your dog, make your cat disappear or destroy your
-    computer, you have been warned, so don't complain
-  ****************************************************************
-  ************************* EXPERIMENTAL *************************
-  ****************************************************************
+  * Several extensions have been split into separate extension packages:
+   - php-dba - Database (dbm-style) Abstraction Layer
+   - php-mbstring - Multibyte String
+   - php-soap - SOAP
+   - php-xml - DOM, SimpleXML, WDDX, XML, XMLReader and XMLWriter
+   - php-zip - Zip
+  * The new packages are not installed automatically, so you will need to
+    install them by hand, if you use the functions in those modules.
+  * Most modules that have been builtin before are now included in
+    php7.0-common package and they are enabled by default for your
+    convenience.  You can disable unneede modules via phpdismod tool.
 
- -- Ondřej Surý <ondrej@debian.org>  Thu, 09 Jul 2015 17:05:00 +0200
+ -- Ondřej Surý <ondrej@debian.org>  Mon, 22 Feb 2016 12:37:09 +0100
diff -pruN 5.6.18+dfsg-4/debian/patches/0001-libtool_fixes.patch 5.6.19+dfsg-1/debian/patches/0001-libtool_fixes.patch
--- 5.6.18+dfsg-4/debian/patches/0001-libtool_fixes.patch	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/patches/0001-libtool_fixes.patch	2016-03-03 10:42:44.000000000 +0000
@@ -22,7 +22,7 @@ index 6f10f5a..2bcff8d 100644
  dnl TSRM_PTHREAD
  
 diff --git a/configure.in b/configure.in
-index 0623b95..7c042b2 100644
+index 96fc79f..e7fdd74 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1416,9 +1416,6 @@ AC_PROVIDE_IFELSE([PHP_REQUIRE_CXX], [], [
diff -pruN 5.6.18+dfsg-4/debian/patches/0003-debian_quirks.patch 5.6.19+dfsg-1/debian/patches/0003-debian_quirks.patch
--- 5.6.18+dfsg-4/debian/patches/0003-debian_quirks.patch	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/patches/0003-debian_quirks.patch	2016-03-03 10:42:44.000000000 +0000
@@ -9,12 +9,12 @@ Subject: debian_quirks
  php.ini-production    |  2 +-
  sapi/cli/php.1.in     | 11 ++++++-----
  scripts/Makefile.frag |  4 ++--
- scripts/php-config.in |  6 +++---
+ scripts/php-config.in |  8 ++++----
  scripts/phpize.in     |  4 ++--
- 8 files changed, 21 insertions(+), 17 deletions(-)
+ 8 files changed, 22 insertions(+), 18 deletions(-)
 
 diff --git a/configure.in b/configure.in
-index 7c042b2..e55bb6d 100644
+index e7fdd74..e46edb5 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1085,7 +1085,7 @@ if test "$PHP_CLI" = "no"; then
@@ -131,10 +131,10 @@ index 7cd78fa..df7cfdd 100644
  BUILD_FILES = \
  	scripts/phpize.m4 \
 diff --git a/scripts/php-config.in b/scripts/php-config.in
-index d6c62cc..754876a 100644
+index d6c62cc..fa25dc7 100644
 --- a/scripts/php-config.in
 +++ b/scripts/php-config.in
-@@ -6,9 +6,9 @@ datarootdir="@datarootdir@"
+@@ -6,11 +6,11 @@ datarootdir="@datarootdir@"
  exec_prefix="@exec_prefix@"
  version="@PHP_VERSION@"
  vernum="@PHP_VERSION_ID@"
@@ -145,8 +145,11 @@ index d6c62cc..754876a 100644
 +includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/lib $(getconf LFS_CFLAGS)"
 +ldflags="-L$prefix/lib/php/@DEBIAN_PHP_API@ @PHP_LDFLAGS@"
  libs="@EXTRA_LIBS@"
- extension_dir='@EXTENSION_DIR@'
+-extension_dir='@EXTENSION_DIR@'
++extension_dir="@EXTENSION_DIR@"
  man_dir=`eval echo @mandir@`
+ program_prefix="@program_prefix@"
+ program_suffix="@program_suffix@"
 diff --git a/scripts/phpize.in b/scripts/phpize.in
 index b86925e..9bd3b9a 100644
 --- a/scripts/phpize.in
diff -pruN 5.6.18+dfsg-4/debian/patches/0007-extension_api.patch 5.6.19+dfsg-1/debian/patches/0007-extension_api.patch
--- 5.6.18+dfsg-4/debian/patches/0007-extension_api.patch	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/patches/0007-extension_api.patch	2016-03-03 10:42:44.000000000 +0000
@@ -8,7 +8,7 @@ Subject: extension_api
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 diff --git a/configure.in b/configure.in
-index e55bb6d..ab23dff 100644
+index e46edb5..c079975 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1196,8 +1196,10 @@ ZEND_MODULE_API_NO=`$EGREP '#define ZEND_MODULE_API_NO ' $srcdir/Zend/zend_modul
@@ -32,7 +32,7 @@ index e55bb6d..ab23dff 100644
  PHP_SUBST_OLD(EXTRA_LDFLAGS)
  PHP_SUBST_OLD(EXTRA_LDFLAGS_PROGRAM)
 diff --git a/scripts/php-config.in b/scripts/php-config.in
-index 754876a..1f4bb4c 100644
+index fa25dc7..746a58e 100644
 --- a/scripts/php-config.in
 +++ b/scripts/php-config.in
 @@ -19,6 +19,7 @@ php_cli_binary=NONE
diff -pruN 5.6.18+dfsg-4/debian/patches/0026-php-5.3.9-gnusrc.patch 5.6.19+dfsg-1/debian/patches/0026-php-5.3.9-gnusrc.patch
--- 5.6.18+dfsg-4/debian/patches/0026-php-5.3.9-gnusrc.patch	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/patches/0026-php-5.3.9-gnusrc.patch	2016-03-03 10:42:44.000000000 +0000
@@ -29,7 +29,7 @@ index a438602..54de6f1 100644
  /*
     +----------------------------------------------------------------------+
 diff --git a/configure.in b/configure.in
-index ab23dff..fae45ee 100644
+index c079975..2cef56c 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -136,6 +136,8 @@ AC_DEFUN([PHP_EXT_DIR],[ext/$1])dnl
diff -pruN 5.6.18+dfsg-4/debian/patches/0031-expose_all_built_and_installed_apis.patch 5.6.19+dfsg-1/debian/patches/0031-expose_all_built_and_installed_apis.patch
--- 5.6.18+dfsg-4/debian/patches/0031-expose_all_built_and_installed_apis.patch	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/patches/0031-expose_all_built_and_installed_apis.patch	2016-03-03 10:42:44.000000000 +0000
@@ -21,7 +21,7 @@ index d9fa4b0..6ee4982 100644
  .PD 0
  .B \-\-configure-options
 diff --git a/scripts/php-config.in b/scripts/php-config.in
-index 1f4bb4c..2c7e9dd 100644
+index 746a58e..10a4fae 100644
 --- a/scripts/php-config.in
 +++ b/scripts/php-config.in
 @@ -18,9 +18,12 @@ exe_extension="@EXEEXT@"
diff -pruN 5.6.18+dfsg-4/debian/patches/0032-Use-system-timezone.patch 5.6.19+dfsg-1/debian/patches/0032-Use-system-timezone.patch
--- 5.6.18+dfsg-4/debian/patches/0032-Use-system-timezone.patch	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/patches/0032-Use-system-timezone.patch	2016-03-03 10:42:44.000000000 +0000
@@ -14,7 +14,7 @@ To be used in tandem with use_embedded_t
  1 file changed, 17 insertions(+)
 
 diff --git a/ext/date/php_date.c b/ext/date/php_date.c
-index 5ce1f72..99fcdf3 100644
+index e06ace7..b37e6ff 100644
 --- a/ext/date/php_date.c
 +++ b/ext/date/php_date.c
 @@ -987,6 +987,23 @@ static char* guess_timezone(const timelib_tzdb *tzdb TSRMLS_DC)
diff -pruN 5.6.18+dfsg-4/debian/patches/0037-php-5.4.9-fixheader.patch 5.6.19+dfsg-1/debian/patches/0037-php-5.4.9-fixheader.patch
--- 5.6.18+dfsg-4/debian/patches/0037-php-5.4.9-fixheader.patch	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/patches/0037-php-5.4.9-fixheader.patch	2016-03-03 10:42:44.000000000 +0000
@@ -8,7 +8,7 @@ Make generated php_config.h constant acr
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/configure.in b/configure.in
-index fae45ee..b1d70f4 100644
+index 2cef56c..d042516 100644
 --- a/configure.in
 +++ b/configure.in
 @@ -1281,7 +1281,7 @@ fi
diff -pruN 5.6.18+dfsg-4/debian/patches/0042-Add-patch-to-remove-build-timestamps-from-generated-.patch 5.6.19+dfsg-1/debian/patches/0042-Add-patch-to-remove-build-timestamps-from-generated-.patch
--- 5.6.18+dfsg-4/debian/patches/0042-Add-patch-to-remove-build-timestamps-from-generated-.patch	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/patches/0042-Add-patch-to-remove-build-timestamps-from-generated-.patch	2016-03-03 10:42:44.000000000 +0000
@@ -56,10 +56,10 @@ index 40a41e5..7115720 100644
  					"(DEBUG GCOV)",
  #elif ZEND_DEBUG
 diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
-index f3c8ccc..44dc33b 100644
+index d12ac01..0848fd8 100644
 --- a/sapi/fpm/fpm/fpm_main.c
 +++ b/sapi/fpm/fpm/fpm_main.c
-@@ -1753,9 +1753,9 @@ int main(int argc, char *argv[])
+@@ -1777,9 +1777,9 @@ int main(int argc, char *argv[])
  				SG(request_info).no_headers = 1;
  
  #if ZEND_DEBUG
diff -pruN 5.6.18+dfsg-4/debian/php-common.dirs 5.6.19+dfsg-1/debian/php-common.dirs
--- 5.6.18+dfsg-4/debian/php-common.dirs	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-common.dirs	1970-01-01 00:00:00.000000000 +0000
@@ -1,3 +0,0 @@
-/usr/lib/php/@PHP_VERSION@
-/usr/lib/php/@PHP_API@
-/usr/share/doc/php@PHP_VERSION@-common
diff -pruN 5.6.18+dfsg-4/debian/php-common.dirs.extra 5.6.19+dfsg-1/debian/php-common.dirs.extra
--- 5.6.18+dfsg-4/debian/php-common.dirs.extra	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-common.dirs.extra	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,3 @@
+/usr/lib/php/@PHP_VERSION@
+/usr/lib/php/@PHP_API@
+/usr/share/doc/php@PHP_VERSION@-common
diff -pruN 5.6.18+dfsg-4/debian/php-common.lintian-overrides 5.6.19+dfsg-1/debian/php-common.lintian-overrides
--- 5.6.18+dfsg-4/debian/php-common.lintian-overrides	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-common.lintian-overrides	2016-03-03 10:42:44.000000000 +0000
@@ -1,3 +1,4 @@
 php@PHP_VERSION@-common: non-standard-dir-perm var/lib/php/@PHP_VERSION@/sessions/ 1733 != 0755
 php@PHP_VERSION@-common: package-contains-empty-directory usr/lib/php/@PHP_VERSION@/libexec/
 php@PHP_VERSION@-common: missing-dependency-on-phpapi
+php@PHP_VERSION@-common: embedded-library usr/lib/php/*/fileinfo.so: file
diff -pruN 5.6.18+dfsg-4/debian/php-fpm.postinst.extra 5.6.19+dfsg-1/debian/php-fpm.postinst.extra
--- 5.6.18+dfsg-4/debian/php-fpm.postinst.extra	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-fpm.postinst.extra	2016-03-03 10:42:44.000000000 +0000
@@ -1,3 +1,8 @@
+php_enable() {
+    # Don't enable PHP FPM by default
+    return 1
+}
+
 if [ "$1" = "triggered" ] && [ "$2" = "/etc/php/@PHP_VERSION@/fpm/conf.d" ]; then
     invoke-rc.d php@PHP_VERSION@-fpm restart
 fi
diff -pruN 5.6.18+dfsg-4/debian/php-module.bug-script.in 5.6.19+dfsg-1/debian/php-module.bug-script.in
--- 5.6.18+dfsg-4/debian/php-module.bug-script.in	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-module.bug-script.in	2016-03-03 10:42:44.000000000 +0000
@@ -12,7 +12,7 @@ echo "++++ PHP @PHP_VERSION@ Extensions
 echo "" >&3
 
 echo "++++ Configuration files: ++++" >&3
-for dsoname in @modules@; do
+for dsoname in @extensions@; do
     inifile=${dsoname}.ini
     echo "**** /etc/php/@PHP_VERSION@/mods-available/$dsoname.ini ****" >&3
     grep -Ev "$MATCH" "/etc/php/@PHP_VERSION@/mods-available/$dsoname.ini" >&3
diff -pruN 5.6.18+dfsg-4/debian/php-module.control.in 5.6.19+dfsg-1/debian/php-module.control.in
--- 5.6.18+dfsg-4/debian/php-module.control.in	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-module.control.in	2016-03-03 10:42:44.000000000 +0000
@@ -1,14 +1,20 @@
 Package: @package@
 Architecture: any
-Depends: php-common,
+Depends: php-common (>= 1:33),
          ucf,
          ${misc:Depends},
          ${php:Depends},
+	 ${php-@ext@:Depends},
          ${shlibs:Depends}
-Pre-Depends: ${misc:Pre-Depends}
+Pre-Depends: ${misc:Pre-Depends},
+	     ${php-@ext@:Pre-Depends}
 Built-Using: ${php:Built-Using}
+Replaces: ${php-@ext@:Replaces}
+Breaks: ${php-@ext@:Breaks}
+Conflicts: ${php-@ext@:Conflicts}
+Provides: ${php-@ext@:Provides}
 Description: @description@ module for PHP
- This package provides a @description@ module for PHP.
+ This package provides the @description@ module(s) for PHP.
  .
  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
  open source general-purpose scripting language that is especially suited
diff -pruN 5.6.18+dfsg-4/debian/php-module.postinst.in 5.6.19+dfsg-1/debian/php-module.postinst.in
--- 5.6.18+dfsg-4/debian/php-module.postinst.in	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-module.postinst.in	2016-03-03 10:42:44.000000000 +0000
@@ -5,12 +5,13 @@ set -e
 #EXTRA#
 
 if [ "$1" = "configure" ]; then
-    inidir=/etc/php/mods-available
+    # Install the new versioned configuration
+    inidir=/etc/php/@PHP_VERSION@/mods-available
 
     if [ -e /usr/lib/php/php-maintscript-helper ] ; then
 	. /usr/lib/php/php-maintscript-helper
 
-	for dsoname in @modules@; do
+	for dsoname in @extensions@; do
 	    inifile=${dsoname}.ini
 
 	    # Register new conffile with UCF
diff -pruN 5.6.18+dfsg-4/debian/php-module.postrm.in 5.6.19+dfsg-1/debian/php-module.postrm.in
--- 5.6.18+dfsg-4/debian/php-module.postrm.in	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-module.postrm.in	2016-03-03 10:42:44.000000000 +0000
@@ -4,35 +4,40 @@ set -e
 
 #EXTRA#
 
+if [ "$1" = "remove" ]; then
+    if [ -e /usr/lib/php/php-maintscript-helper ] ; then
+	. /usr/lib/php/php-maintscript-helper
+
+	for dsoname in @extensions@; do
+	    php_invoke dismod @PHP_VERSION@ ALL ${dsoname}
+	done
+    fi
+fi
+
 if [ "$1" = "purge" ]; then
-    inidir=/etc/php/mods-available
-    for dsoname in @modules@; do
+    inidir=/etc/php/@PHP_VERSION@/mods-available
+
+    for dsoname in @extensions@; do
 	inifile=${dsoname}.ini
 
-        # Query which package has this conffile registered
-	if which ucfq >/dev/null; then
-	    ucfp=$(ucfq -w ${inidir}/${inifile} | cut -f 2 -d:)
+	for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist;  do
+	    rm -f ${inidir}/${inifile}${ext}
+	done
+	rm -f ${inidir}/${inifile}
+	if which ucf >/dev/null; then
+	    ucf --purge ${inidir}/${inifile}
 	fi
-	    
-        # Only work with the config file if it still belongs to us
-	if test "$ucfp" = @package@; then
-	    for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist;  do
-		rm -f ${inidir}/${inifile}${ext}
-	    done
-	    rm -f ${inidir}/${inifile}
-	    if which ucf >/dev/null; then
-		ucf --purge ${inidir}/${inifile}
-	    fi
-	    if which ucfr >/dev/null; then
-		ucfr --purge @package@ ${inidir}/${inifile}
-	    fi
-	fi
-	
-	if [ -e /usr/lib/php/php-maintscript-helper ] ; then
-	    . /usr/lib/php/php-maintscript-helper
-		
-	    php_invoke dismod @PHP_VERSION@ ALL ${dsoname}
+	if which ucfr >/dev/null; then
+	    ucfr --purge @package@ ${inidir}/${inifile}
 	fi
+
+	# Final cleanup of possible leftover symlinks
+	find /etc/php/ -type l | \
+	    while read symlink; do
+		if [ "$(readlink $symlink)" = "${inidir}/$inifile" ]; then
+		    rm -f "${symlink}"
+		fi
+	    done
     done
 fi
 
diff -pruN 5.6.18+dfsg-4/debian/php-module.preinst.in 5.6.19+dfsg-1/debian/php-module.preinst.in
--- 5.6.18+dfsg-4/debian/php-module.preinst.in	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-module.preinst.in	2016-03-03 10:42:44.000000000 +0000
@@ -4,6 +4,36 @@ set -e
 
 #EXTRA#
 
+if [ "$1" = "upgrade" ]; then
+    # First purge the old unversioned configuration
+    inidir=/etc/php/mods-available
+    for dsoname in @extensions@; do
+	inifile=${dsoname}.ini
+	if [ -e ${inidir}/${inifile} ]; then
+	    for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist;  do
+		rm -f ${inidir}/${inifile}${ext}
+	    done
+	    rm -f ${inidir}/${inifile}
+	    if which ucf >/dev/null; then
+		ucf --purge ${inidir}/${inifile}
+	    fi
+	    if which ucfr >/dev/null; then
+		ucfr --purge @package@ ${inidir}/${inifile}
+	    fi
+	fi
+	# Cleanup of the old symlinks (including broken symlinks)
+	find /etc/php/ -type l | \
+	    while read symlink; do
+		if [ "$(readlink $symlink)" = "${inidir}/$inifile" ]; then
+		    rm -f "${symlink}"
+		fi
+	    done
+    done
+    if [ -d "$inidir" ]; then
+	rmdir --ignore-fail-on-non-empty "$inidir";
+    fi
+fi
+
 #DEBHELPER#
 
 exit 0
diff -pruN 5.6.18+dfsg-4/debian/php-module.prerm.in 5.6.19+dfsg-1/debian/php-module.prerm.in
--- 5.6.18+dfsg-4/debian/php-module.prerm.in	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-module.prerm.in	2016-03-03 10:42:44.000000000 +0000
@@ -4,16 +4,6 @@ set -e
 
 #EXTRA#
 
-if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then
-    if [ -e /usr/lib/php/php-maintscript-helper ] ; then
-	. /usr/lib/php/php-maintscript-helper
-
-	for dsoname in @modules@; do
-	    php_invoke dismod @PHP_VERSION@ ALL ${dsoname}
-	done
-    fi
-fi
-
 #DEBHELPER#
 
 exit 0
diff -pruN 5.6.18+dfsg-4/debian/php-modules-source.dirs 5.6.19+dfsg-1/debian/php-modules-source.dirs
--- 5.6.18+dfsg-4/debian/php-modules-source.dirs	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-modules-source.dirs	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-/usr/src
diff -pruN 5.6.18+dfsg-4/debian/php-modules-source.install 5.6.19+dfsg-1/debian/php-modules-source.install
--- 5.6.18+dfsg-4/debian/php-modules-source.install	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-modules-source.install	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-usr/src/php@PHP_VERSION@-modules-source.tar.xz
diff -pruN 5.6.18+dfsg-4/debian/php-module.substvars.in 5.6.19+dfsg-1/debian/php-module.substvars.in
--- 5.6.18+dfsg-4/debian/php-module.substvars.in	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-module.substvars.in	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1 @@
+#EXTRA#
diff -pruN 5.6.18+dfsg-4/debian/php-sapi.postrm 5.6.19+dfsg-1/debian/php-sapi.postrm
--- 5.6.18+dfsg-4/debian/php-sapi.postrm	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-sapi.postrm	2016-03-03 10:42:44.000000000 +0000
@@ -6,6 +6,24 @@ set -e
 
 php_enable() { return 0; }
 
+if [ "$1" = "remove" ]; then
+    if [ -e /usr/lib/php/php-maintscript-helper ]; then
+	. /usr/lib/php/php-maintscript-helper
+
+	mods=$(phpquery -M -v @PHP_VERSION@)
+	for mod in $mods; do
+	    php_invoke dismod @PHP_VERSION@ @sapi@ $mod
+	done
+    else
+	for mod in /etc/php/@PHP_VERSION@/conf.d/*.ini; do 
+	    rm -f $mod
+	    for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist;  do
+		rm -f $mod$ext
+	    done
+	done
+    fi
+fi
+
 if [ "$1" = "purge" ]; then
     phpini=/etc/php/@PHP_VERSION@/@sapi@/php.ini
     # remove the flag to remember the original state
@@ -22,21 +40,16 @@ if [ "$1" = "purge" ]; then
     if which ucfr >/dev/null; then
 	ucfr --purge @package@ $phpini
     fi
-fi
-
-if [ -e /usr/lib/php/php-maintscript-helper ]; then
-    . /usr/lib/php/php-maintscript-helper
 
-    mods=$(phpquery -M -v @PHP_VERSION@)
-    for mod in $mods; do
-	php_invoke dismod @PHP_VERSION@ @sapi@ $mod
-    done
-else
-    for mod in /etc/php/@PHP_VERSION@/conf.d/*.ini; do 
-	rm -f $mod
-	for ext in '~' '%' .bak .ucf-new .ucf-old .ucf-dist;  do
-	    rm -f $mod$ext
-	done
+    for dir in \
+	/etc/php/@PHP_VERSION@/@sapi@/conf.d \
+	/etc/php/@PHP_VERSION@/@sapi@ \
+	/etc/php/@PHP_VERSION@/ \
+	/etc/php; do
+	
+	if [ -d $dir ]; then
+	    rmdir --ignore-fail-on-non-empty $dir
+	fi
     done
 fi
 
diff -pruN 5.6.18+dfsg-4/debian/php-sapi.prerm 5.6.19+dfsg-1/debian/php-sapi.prerm
--- 5.6.18+dfsg-4/debian/php-sapi.prerm	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-sapi.prerm	2016-03-03 10:42:44.000000000 +0000
@@ -3,18 +3,6 @@
 set -e
 
 #EXTRA#
-
-php_enable() { return 0; }
-
-if [ -e /usr/lib/php/php@PHP_VERSION@-maintscript-helper ]; then
-    . /usr/lib/php/php@PHP_VERSION@-maintscript-helper
-
-    mods=$(phpquery -M -v @PHP_VERSION@)
-    for mod in $mods; do
-	php_invoke dismod @PHP_VERSION@ @sapi@ $mod
-    done
-fi
-
 #DEBHELPER#
 
 exit 0
diff -pruN 5.6.18+dfsg-4/debian/php-xml.postinst.extra 5.6.19+dfsg-1/debian/php-xml.postinst.extra
--- 5.6.18+dfsg-4/debian/php-xml.postinst.extra	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-xml.postinst.extra	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,7 @@
+if [ "$1" = "configure" ] && [ -n "$2" ]; then
+    for sapi in $(phpquery -v @PHP_VERSION@ -S); do
+	if [ -h /etc/php/@PHP_VERSION@/$sapi/conf.d/20-xml.ini ]; then
+	    rm /etc/php/@PHP_VERSION@/$sapi/conf.d/20-xml.ini;
+	fi
+    done
+fi
diff -pruN 5.6.18+dfsg-4/debian/php-xml.substvars.extra 5.6.19+dfsg-1/debian/php-xml.substvars.extra
--- 5.6.18+dfsg-4/debian/php-xml.substvars.extra	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/php-xml.substvars.extra	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,2 @@
+php-xml:Breaks=php@PHP_VERSION@-xsl (<< 7.0.3-6~)
+php-xml:Replaces=php@PHP_VERSION@-xsl (<< 7.0.3-6~)
diff -pruN 5.6.18+dfsg-4/debian/prepare-files 5.6.19+dfsg-1/debian/prepare-files
--- 5.6.18+dfsg-4/debian/prepare-files	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/prepare-files	2016-03-03 10:42:44.000000000 +0000
@@ -1,5 +1,8 @@
+libapache2-mod-php@PHP_VERSION@.lintian-overrides
 PEAR-Builder-print-info-about-php@PHP_VERSION@-dev.patch
+php@PHP_VERSION@.bug-control
 php@PHP_VERSION@-cgi.conf
+php@PHP_VERSION@-common.dirs.extra
 php@PHP_VERSION@-common.docs
 php@PHP_VERSION@-common.lintian-overrides
 php@PHP_VERSION@-common.README.Debian
@@ -7,9 +10,11 @@ php@PHP_VERSION@.conf
 php@PHP_VERSION@dbg.1
 php@PHP_VERSION@-dev.dirs
 php@PHP_VERSION@-dev.files
+php@PHP_VERSION@-dev.install
 php@PHP_VERSION@-dev.lintian-overrides
 php@PHP_VERSION@-dev.postinst
 php@PHP_VERSION@-dev.prerm
+php@PHP_VERSION@-fpm.conf
 php@PHP_VERSION@-fpm-checkconf
 php@PHP_VERSION@-fpm.init
 php@PHP_VERSION@-fpm.logrotate
@@ -17,11 +22,5 @@ php@PHP_VERSION@-fpm-reopenlogs
 php@PHP_VERSION@-fpm.service
 php@PHP_VERSION@-fpm.tmpfile
 php@PHP_VERSION@.load
-php@PHP_VERSION@-dev.install
-php@PHP_VERSION@.bug-control
-php@PHP_VERSION@-modules-source.dirs
-php@PHP_VERSION@-modules-source.install
-php@PHP_VERSION@-common.dirs
-php@PHP_VERSION@-common.docs
-php@PHP_VERSION@-common.lintian-overrides
-php@PHP_VERSION@-common.README.Debian
+php@PHP_VERSION@-xml.substvars.extra
+php@PHP_VERSION@-xml.postinst.extra
diff -pruN 5.6.18+dfsg-4/debian/rules 5.6.19+dfsg-1/debian/rules
--- 5.6.18+dfsg-4/debian/rules	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules	2016-03-03 10:42:44.000000000 +0000
@@ -6,11 +6,18 @@ export DH_VERBOSE=1
 # This has to be exported to make some magic below work.
 export DH_OPTIONS
 
+# Enable parallel builds
+PARALLEL=--parallel
+
 # Enable this for debugging the sed scripts
 #SED=$(CURDIR)/debian/sedsed
 SED := sed
 
+# Make the shell scripts fail after first failed command (important for SAPI loops)
+SHELL := /bin/sh -e
+
 # enable dpkg build flags
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
 DPKG_EXPORT_BUILDFLAGS = 1
 include /usr/share/dpkg/default.mk
 
@@ -22,28 +29,23 @@ PHP_DFSG_VERSION     := $(shell echo $(P
 PHP_MAJOR_VERSION    := $(shell echo $(PHP_DFSG_VERSION) | awk -F. '{print $$1}')
 PHP_MINOR_VERSION    := $(shell echo $(PHP_DFSG_VERSION) | awk -F. '{print $$2}')
 PHP_RELEASE_VERSION  := $(shell echo $(PHP_DFSG_VERSION) | awk -F. '{print $$3}')
-PHP_NAME_VERSION     := $(PHP_MAJOR_VERSION).$(PHP_MINOR_VERSION)
-PHP_ZEND_VERSION     := $(shell $(SED) -ne 's/\#define ZEND_MODULE_API_NO //p' Zend/zend_modules.h)
 
 # Enable ZTS build if $(DEB_SOURCE) ends with -zts
-ZTS=$(shell echo $(DEB_SOURCE) | sed 's/php$(PHP_NAME_VERSION)//')
+ZTS=$(shell echo $(DEB_SOURCE) | sed 's/php$(PHP_MAJOR_VERSION).$(PHP_MINOR_VERSION)//')
 ifeq ($(ZTS),-zts)
 $(warning Enabling ZTS build)
-PHP_NAME_VERSION     := $(PHP_MAJOR_VERSION).$(PHP_MINOR_VERSION)-zts
-PHP_ZEND_VERSION     := $(shell $(SED) -ne 's/\#define ZEND_MODULE_API_NO //p' Zend/zend_modules.h)-zts
 CONFIGURE_ZTS        := --enable-maintainer-zts
 endif
 
+PHP_NAME_VERSION     := $(PHP_MAJOR_VERSION).$(PHP_MINOR_VERSION)$(ZTS)
+PHP_ZEND_VERSION     := $(shell $(SED) -ne 's/\#define ZEND_MODULE_API_NO //p' Zend/zend_modules.h)$(ZTS)
+
 ifneq ($(DEB_SOURCE),php$(PHP_NAME_VERSION))
 $(error $(DEB_SOURCE) != php$(PHP_NAME_VERSION))
 endif
 REAL_TARGETS         := apache2 phpdbg embed fpm cgi cli
 EXTRA_TARGETS        := ext
-TARGETS              := $(REAL_TARGETS) $(EXTRA_TARGETS)
-CONFIGURE_TARGETS    := $(addprefix configure-, $(addsuffix -stamp, $(TARGETS)))
-BUILD_TARGETS        := $(addprefix build-, $(addsuffix -stamp, $(TARGETS)))
-INSTALL_TARGETS      := $(addprefix install-, $(addsuffix -stamp, $(TARGETS)))
-CLI_INSTALL_DEPEND   := $(filter-out install-cli-stamp,$(INSTALL_TARGETS))
+TARGETS              := $(EXTRA_TARGETS) $(REAL_TARGETS)
 
 # Special package names
 PHP_PHP      := php$(PHP_NAME_VERSION)
@@ -54,7 +56,6 @@ PHP_DEV      := php$(PHP_NAME_VERSION)-d
 PHP_APACHE2  := libapache2-mod-php$(PHP_NAME_VERSION)
 PHP_CGI      := php$(PHP_NAME_VERSION)-cgi
 PHP_CLI      := php$(PHP_NAME_VERSION)-cli
-PHP_DBG      := php$(PHP_NAME_VERSION)-dbg
 PHP_PHPDBG   := php$(PHP_NAME_VERSION)-phpdbg
 
 # Generic commands
@@ -62,7 +63,7 @@ PHP_PHPDBG   := php$(PHP_NAME_VERSION)-p
 SED_VARIABLES := \
 	$(SED) -e "s,@sapi@,$${sapi},g"				|\
 	$(SED) -e "s,@package@,$${package},g"			|\
-	$(SED) -e "s,@modules@,$${modules},g"			|\
+	$(SED) -e "s,@extensions@,$${extensions},g"		|\
 	$(SED) -e "s,@module@,$${module},g"			|\
 	$(SED) -e "s,@extdir@,$${extdir},g"			|\
 	$(SED) -e "s,@priority@,$${priority},g"			|\
@@ -127,22 +128,27 @@ QUILT_DIFF_OPTS := -p
 QUILT_NO_DIFF_TIMESTAMPS := 1 
 export QUILT_DIFF_OPTS QUILT_NO_DIFF_TIMESTAMPS
 
-PROG_SENDMAIL := /usr/sbin/sendmail
+export PROG_SENDMAIL := /usr/sbin/sendmail
 ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-  CFLAGS += -O2
+  DEB_CFLAGS_MAINT_APPEND += -O2
 else
-  CFLAGS += -O0
+  DEB_CFLAGS_MAINT_APPEND += -O0
 endif
-CFLAGS += -Wall -fsigned-char -fno-strict-aliasing 
-CFLAGS += $(shell getconf LFS_CFLAGS)
+DEB_CFLAGS_MAINT_APPEND += -Wall -pedantic -fsigned-char -fno-strict-aliasing 
+DEB_CFLAGS_MAINT_APPEND += $(shell getconf LFS_CFLAGS)
 
 # Enable IEEE-conformant floating point math on alphas (not the default)
 ifeq (alpha-linux-gnu,$(DEB_HOST_GNU_TYPE))
-  CFLAGS += -mieee
+  DEB_CFLAGS_MAINT_APPEND += -mieee
 endif
 
 # Enable producing of debugging information
-CFLAGS += -g
+DEB_CFLAGS_MAINT_APPEND += -g
+
+DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
+
+export DEB_CFLAGS_MAINT_APPEND
+export DEB_LDFLAGS_MAINT_APPEND
 
 # some other helpful (for readability at least) shorthand variables
 PHPIZE_BUILDDIR := debian/$(PHP_DEV)/usr/lib/php/$(PHP_ZEND_VERSION)/build
@@ -150,6 +156,7 @@ PHPIZE_BUILDDIR := debian/$(PHP_DEV)/usr
 COMMON_CONFIG := \
 		--build=$(DEB_BUILD_GNU_TYPE) \
 		--host=$(DEB_HOST_GNU_TYPE) \
+		--config-cache --cache-file=$(CURDIR)/config.cache \
 		--libdir=\$${prefix}/lib/php \
 		--libexecdir=\$${prefix}/lib/php \
 		--datadir=\$${prefix}/share/php/$(PHP_NAME_VERSION) \
@@ -164,92 +171,56 @@ COMMON_CONFIG := \
 		--with-pic \
 		--with-layout=GNU \
 		--without-pear \
-		--enable-bcmath \
-		--enable-calendar \
-		--enable-ctype \
-		--enable-dba \
-		  --with-db4=/usr \
-		  --without-gdbm \
-		  --with-qdbm=/usr \
-		  --enable-inifile \
-		  --enable-flatfile \
-		--enable-dom \
-		--enable-exif \
-		--with-gettext=/usr \
-		--enable-fileinfo \
 		--enable-filter \
-		--enable-ftp \
-		--enable-hash \
-		--with-iconv \
-		--with-pcre-regex=/usr \
-		--enable-pdo \
-		--enable-mbregex \
-		--enable-mbregex-backtrack \
-		--enable-mbstring \
-		--enable-phar \
-		--enable-posix \
-		--enable-mysqlnd \
-		  --enable-mysqlnd-compression-support \
-		  --with-zlib-dir=/usr \
 		--with-openssl=yes \
+		--with-pcre-regex=/usr \
+		--enable-hash \
+		  --with-mhash=/usr \
 		--enable-libxml \
 		--enable-session \
-		--enable-shmop \
-		--enable-simplexml \
-		--enable-soap \
-		--enable-sockets \
-		--enable-tokenizer \
-		--enable-xml \
-		--enable-xmlreader \
-		--enable-xmlwriter \
-		--with-mhash=yes \
-		--enable-sysvmsg \
-		--enable-sysvsem \
-		--enable-sysvshm \
-		--enable-zip \
 		--with-system-tzdata \
 		$(CONFIGURE_ZTS) \
 		$(CONFIGURE_DTRACE_ARGS)
 
 # disable all SAPIs in extension build
-ext_config = \
-		--prefix=/usr --enable-cli --disable-cgi \
+export ext_config = \
+		--prefix=/usr --enable-cli --disable-cgi --disable-phpdbg \
 		--with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/apache2 \
 		--with-config-file-scan-dir=/etc/php/$(PHP_NAME_VERSION)/apache2/conf.d \
 		$(COMMON_CONFIG)
 
-apache2_config = \
-		--prefix=/usr --with-apxs2=/usr/bin/apxs2 --enable-cli --disable-cgi \
+export apache2_config = \
+		--prefix=/usr --with-apxs2=/usr/bin/apxs2 --enable-cli --disable-cgi --disable-phpdbg \
 		--with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/apache2 \
 		--with-config-file-scan-dir=/etc/php/$(PHP_NAME_VERSION)/apache2/conf.d \
 		$(COMMON_CONFIG)
 
-cgi_config = \
-		--prefix=/usr --enable-cgi --enable-cli \
+export cgi_config = \
+		--prefix=/usr --enable-cgi --enable-cli --disable-phpdbg \
 		--enable-force-cgi-redirect --enable-fastcgi \
 		--with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/cgi \
 		--with-config-file-scan-dir=/etc/php/$(PHP_NAME_VERSION)/cgi/conf.d \
 		$(COMMON_CONFIG) \
 		--enable-pcntl
 
-cli_config = \
-		--prefix=/usr --enable-cli --disable-cgi \
+export cli_config = \
+		--prefix=/usr --enable-cli --disable-cgi --disable-phpdbg \
 		--with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/cli \
 		--with-config-file-scan-dir=/etc/php/$(PHP_NAME_VERSION)/cli/conf.d \
 		$(COMMON_CONFIG) \
 		--enable-pcntl \
 		--with-libedit=shared,/usr
 
-embed_config = \
-		--prefix=/usr --enable-embed --enable-cli --disable-cgi \
+export embed_config = \
+		--prefix=/usr --enable-embed --enable-cli --disable-cgi --disable-phpdbg \
 		--with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/embed \
 		--with-config-file-scan-dir=/etc/php/$(PHP_NAME_VERSION)/embed/conf.d \
 		$(COMMON_CONFIG) \
 		--without-mm \
 		--enable-pcntl
 
-fpm_config = \
-		--prefix=/usr --enable-fpm --enable-cli --disable-cgi \
+export fpm_config = \
+		--prefix=/usr --enable-fpm --enable-cli --disable-cgi --disable-phpdbg \
 		--sysconfdir=/etc/php/$(PHP_NAME_VERSION)/fpm \
 		--with-fpm-user=www-data --with-fpm-group=www-data \
 		--with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/fpm \
@@ -258,7 +229,7 @@ fpm_config = \
 		--with-libevent-dir=/usr \
 		$(CONFIGURE_SYSTEMD)
 
-phpdbg_config = \
+export phpdbg_config = \
 		--prefix=/usr --enable-phpdbg --enable-cli --disable-cgi \
 		--with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/phpdbg \
 		--with-config-file-scan-dir=/etc/php/$(PHP_NAME_VERSION)/phpdbg/conf.d \
@@ -266,8 +237,6 @@ phpdbg_config = \
 		--enable-pcntl \
 		--with-libedit=shared,/usr
 
-export apache2_config apache2_filter_config cgi_config cli_config embed_config fpm_config phpdbg_config ext_config
-
 BUILTIN_EXTENSION_CHECK=$$e=get_loaded_extensions(); natcasesort($$e); \
 			$$s="The following extensions are built in:"; \
 			foreach($$e as $$i) { $$s .= " $$i"; } \
@@ -281,12 +250,12 @@ ext_DEBS       := $(addprefix php$(PHP_N
 ext_EXTENSIONS := $(foreach ext_package,$(ext_PACKAGES),$($(ext_package)_EXTENSIONS))
 ext_config     += $(foreach ext_ext,$(ext_EXTENSIONS),$($(ext_ext)_config))
 
-$(info Enabled packages $(ext_DEBS))
-$(info Enabled extensions $(ext_EXTENSIONS))
-$(info Enabled config $(ext_config))
+#$(info Enabled packages $(ext_DEBS))
+#$(info Enabled extensions $(ext_EXTENSIONS))
+#$(info Enabled config $(ext_config))
 
 %:
-	dh $@ $(DH_SYSTEMD) --with apache2 --parallel
+	dh $@ $(DH_SYSTEMD) --with apache2 $(PARALLEL)
 
 PREPARE_FILES := $(addprefix debian/,$(shell cat debian/prepare-files))
 
@@ -305,10 +274,6 @@ unprepared:
 
 override_dh_auto_clean: unprepared
 	rm -f $(subst @PHP_VERSION@,$(PHP_NAME_VERSION),$(PREPARE_FILES))
-	rm -f $(CONFIGURE_TARGETS)
-	rm -f $(BUILD_TARGETS)
-	rm -f $(INSTALL_TARGETS)
-	rm -f $(ext_CONTROL)
 
 	# just in case the build tests failed, kill the running mysqld
 	$(SHELL) debian/setup-mysql.sh $(MYSQL_PORT) $(MYSQL_DATA_DIR) stop > /dev/null 2>&1 || exit 0
@@ -330,38 +295,35 @@ override_dh_auto_clean: unprepared
 		done; \
 	done
 
-override_dh_auto_configure: $(CONFIGURE_TARGETS)
-
-configure-%-stamp: debian/control prepared-stamp
-	echo ${$*_config}
-	CFLAGS="$(CFLAGS)" PROG_SENDMAIL="$(PROG_SENDMAIL)" dh_auto_configure --builddirectory $*-build -- ${$*_config}
-	touch configure-$*-stamp
-
-override_dh_auto_build: $(BUILD_TARGETS)
-
-build-%-stamp: configure-%-stamp
-	dh_auto_build --builddirectory $*-build --parallel
-	touch build-$*-stamp
+	# clean build directories
+	for target in $(TARGETS); do \
+	  dh_auto_clean --builddirectory $${target}-build $(PARALLEL); \
+	  rm -rf $${target}-build; \
+	done
 
-.NOTPARALLEL: override_dh_auto_install
+	# remove shared config.cache
+	rm -f $(CURDIR)/config.cache
 
-override_dh_auto_install: $(INSTALL_TARGETS)
+override_dh_auto_configure: prepared
+	for target in $(TARGETS); do \
+	  dh_auto_configure --builddirectory $${target}-build $(PARALLEL) -- $$(eval echo \$${$${target}_config}); \
+	done
 
-# install_targets = install-sapi install-binaries install-build install-headers install-programs install-pharcmd
-install-%-stamp: build-%-stamp
-	dh_auto_install --builddirectory $*-build -- install INSTALL_ROOT=$(CURDIR)/debian/tmp
-	touch install-$*-stamp
+override_dh_auto_build:
+	for target in $(TARGETS); do \
+	  dh_auto_build --builddirectory $${target}-build $(PARALLEL); \
+	done
 
-# CLI has to be installed as last target
-install-cli-stamp: $(CLI_INSTALL_DEPEND)
-	dh_auto_install --builddirectory cli-build -- install INSTALL_ROOT=$(CURDIR)/debian/tmp
-	touch install-cli-stamp
+override_dh_auto_install:
+	for target in $(TARGETS); do \
+	  dh_auto_install --builddirectory $${target}-build $(PARALLEL) -- install INSTALL_ROOT=$(CURDIR)/debian/tmp; \
+	done
 
 PCNTL_FUNCTIONS := $(shell < ext/pcntl/php_pcntl.h $(SED) -ne "/^PHP_FUNCTION/ s/PHP_FUNCTION(\(.*\));/\1/;t end;d;:end p" | tr '\n' ',')
 
 override_dh_auto_test: test-results.txt
 
-test-results.txt: $(BUILD_TARGETS)
+test-results.txt:
 ifeq (yes,$(RUN_TESTS))
 	mkdir -p temp_session_store
 	# start our own mysql server for the tests
@@ -424,12 +386,26 @@ prepare-files-stamp:
 
 	for module in $(ext_PACKAGES); do \
 	  package=php$(PHP_NAME_VERSION)-$${module}; \
-	  modules=$$(eval echo \$${$${module}_EXTENSIONS}); \
+	  extensions=$$(eval echo \$${$${module}_EXTENSIONS}); \
 	  description=$$(eval echo \$${$${module}_DESCRIPTION}); \
-	  for dsoname in $${modules}; do \
-	    priority=$$(eval echo \$${$${module}_PRIORITY}); \
+	  for tmpl in preinst postinst postrm prerm bug-script bug-control triggers dirs substvars; do \
+	      < debian/php-module.$${tmpl}.in \
+		$(SED) -e "/\#EXTRA\#/ r debian/$${package}.$${tmpl}.extra" | \
+		$(SED) -e "s,@package@,$${package},g"		\
+	           -e "s,@extensions@,$${extensions},g"		\
+	           -e "s,@module@,$${module},g"			\
+	           -e "s|@description@|$${description}|g"	\
+	           -e "s,@PHP_VERSION@,$(PHP_NAME_VERSION),g"	\
+	           -e "s,@PHP_API@,$${phpapi},g" | \
+		$(SED) -e '/\#EXTRA\#/ d' \
+	      > debian/$${package}.$${tmpl}; \
+	  done; \
+	  for dsoname in $${extensions}; do \
+	    normalized=$$(echo $${dsoname} | sed -e 's/_/-/g'); \
+	    provides=""; \
+	    priority=$$(eval echo \$${$${dsoname}_PRIORITY}); \
 	    if [ -z "$${priority}" ]; then priority=20; fi; \
-	    extension=$$(eval echo \$${$${module}_EXTENSION}); \
+	    extension=$$(eval echo \$${$${dsoname}_EXTENSION}); \
 	    if [ -z "$${extension}" ]; then extension=extension; fi; \
 	    mkdir -p debian/tmp/usr/share/$${package}/$${module}/; \
 	    $(SED) -e "s,@extname@,$${module}," \
@@ -440,18 +416,10 @@ prepare-files-stamp:
 	      > debian/tmp/usr/share/$${package}/$${module}/$${dsoname}.ini; \
 	    echo "usr/lib/php/*/$${dsoname}.so" >> debian/$${package}.install; \
 	    echo "usr/share/$${package}/$${module}/$${dsoname}.ini" >> debian/$${package}.install; \
+	    provides="php-$${normalized}, $${provides}"; \
+	    if [ "$${module}" != "$${normalized}" ]; then provides="php$(PHP_NAME_VERSION)-$${normalized}, $${provides}"; fi; \
 	  done; \
-	  for tmpl in postinst postrm prerm bug-script bug-control triggers dirs; do \
-	    $(SED) -e "s,@package@,$${package},g"		\
-	           -e "s,@modules@,$${modules},g"		\
-	           -e "s,@module@,$${module},g"		\
-	           -e "s,@priority@,$${priority},g"	\
-	           -e "s,@description@,$${description},g"	\
-	           -e "s,@PHP_VERSION@,$(PHP_NAME_VERSION),g"	\
-	           -e "s,@PHP_API@,$${phpapi},g" \
-	      < debian/php-module.$${tmpl}.in \
-	      > debian/$${package}.$${tmpl}; \
-	  done; \
+	  echo "php-$${module}:Provides=$${provides}" >> debian/$${package}.substvars; \
 	done
 	touch prepare-files-stamp
 
@@ -496,8 +464,8 @@ override_dh_installdirs: prepare-files-s
 
 override_dh_install: rename-files-stamp remove-files-stamp prepare-fpm-pools
 	# install extra CGI-BIN
-	install -d -m 755 debian/tmp/usr/lib/cgi-bin/; \
-	install -m 755 cgi-build/sapi/cgi/usr.bin.$(PHP_CGI) debian/tmp/usr/lib/cgi-bin/php$(PHP_NAME_VERSION); \
+	install -d -m 755 debian/tmp/usr/lib/cgi-bin/
+	ln debian/tmp/usr/bin/php-cgi$(PHP_NAME_VERSION) debian/tmp/usr/lib/cgi-bin/php$(PHP_NAME_VERSION)
 
 	# sanitize php.ini files
 	mkdir -p debian/$(PHP_COMMON)/usr/lib/php/$(PHP_NAME_VERSION)/
@@ -540,7 +508,7 @@ endif
 	ln -sf /usr/bin/shtool $(PHPIZE_BUILDDIR)/shtool
 
 override_dh_apache2:
-	for sapi in apache2 cgi; do \
+	for sapi in apache2 cgi fpm; do \
 	    $(SAPI_PACKAGE) \
 	    < debian/$${versionless}.apache2 $(SED_REPLACEMENT) > debian/$${package}.apache2; \
 	done
@@ -560,14 +528,14 @@ override_dh_installchangelogs:
 	dh_installchangelogs -p$(PHP_COMMON) NEWS
 
 override_dh_strip:
-	dh_strip --dbg-package=$(PHP_DBG)
+	dh_strip --dbgsym-migration='php$(PHP_NAME_VERSION)-dbg' || dh_strip
 
 override_dh_makeshlibs-arch:
 	dh_makeshlibs -a -p$(PHP_LIBEMBED) -V '$(PHP_LIBEMBED) (>= $(PHP_MAJOR_VERSION).$(PHP_MINOR_VERSION))'
 
 override_dh_gencontrol-arch:
 	# Bail-out if PHPAPI has changed
-	stored=$$(cat debian/phpapi); \
+	stored=$$(cat debian/phpapi)$(ZTS); \
 	for sapi in $(REAL_TARGETS); do \
 	    $(SAPI_PACKAGE) \
 	    $${sapi}-build/sapi/cli/php -n -r '$(BUILTIN_EXTENSION_CHECK)' \
@@ -592,7 +560,7 @@ debian/control: debian/control.in debian
 	  package=php$(PHP_NAME_VERSION)-$${ext}; \
 	  description=$$(eval echo \$${$${ext}_DESCRIPTION}); \
 	  echo >>$@; \
-	  $(SED) -e "s,@package@,$${package}," -e "s,@description@,$${description}," >>$@ <debian/php-module.control.in; \
+	  $(SED) -e "s|@ext@|$${ext}|" -e "s|@package@|$${package}|" -e "s|@description@|$${description}|" >>$@ <debian/php-module.control.in; \
 	done
 	mkdir -p debian/tests
 	for f in debian/tests.in/*; do \
diff -pruN 5.6.18+dfsg-4/debian/rules.d/build-cgi-stamp.mk 5.6.19+dfsg-1/debian/rules.d/build-cgi-stamp.mk
--- 5.6.18+dfsg-4/debian/rules.d/build-cgi-stamp.mk	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/build-cgi-stamp.mk	1970-01-01 00:00:00.000000000 +0000
@@ -1,16 +0,0 @@
-build-cgi-stamp: configure-cgi-stamp
-	dh_auto_build --builddirectory cgi-build --parallel
-	mv cgi-build/sapi/cgi/php-cgi cgi-build/sapi/cgi/cgi-bin.php$(PHP_NAME_VERSION)
-
-	# Dirty hack to not rebuild everything twice
-	cd cgi-build/main && \
-		sed -i -e 's/FORCE_CGI_REDIRECT 1/FORCE_CGI_REDIRECT 0/' \
-		       -e 's/DISCARD_PATH 0/DISCARD_PATH 1/' php_config.h && \
-		sed -i -e 's/--enable-force-cgi-redirect/--enable-discard-path/' build-defs.h && \
-		touch ../../ext/standard/info.c && \
-		touch ../../sapi/cgi/cgi_main.c
-
-	dh_auto_build --builddirectory cgi-build --parallel
-	mv cgi-build/sapi/cgi/php-cgi cgi-build/sapi/cgi/usr.bin.$(PHP_CGI)
-
-	touch build-cgi-stamp
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-bcmath.mk 5.6.19+dfsg-1/debian/rules.d/ext-bcmath.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-bcmath.mk	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-bcmath.mk	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,6 @@
+ext_PACKAGES    += bcmath
+bcmath_DESCRIPTION := Bcmath
+bcmath_EXTENSIONS  := bcmath
+bcmath_config = --enable-bcmath=shared
+export bcmath_EXTENSIONS
+export bcmath_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-common.mk 5.6.19+dfsg-1/debian/rules.d/ext-common.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-common.mk	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-common.mk	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,24 @@
+ext_PACKAGES     += common
+common_DESCRIPTION := documentation, examples and common
+common_EXTENSIONS  := calendar ctype exif fileinfo ftp gettext iconv pdo phar posix shmop sockets sysvmsg sysvsem sysvshm tokenizer zlib
+calendar_config = --enable-calendar=shared
+ctype_config = --enable-ctype=shared
+exif_config = --enable-exif=shared
+fileinfo_config = --enable-fileinfo=shared
+ftp_config = --enable-ftp=shared --with-openssl-dir=/usr
+gettext_config = --with-gettext=shared,/usr
+iconv_config = --with-iconv=shared
+pdo_config = --enable-pdo=shared
+pdo_PRIORITY := 10
+phar_config = --enable-phar=shared
+posix_config = --enable-posix=shared
+shmop_config = --enable-shmop=shared
+sockets_config = --enable-sockets=shared
+sysvmsg_config = --enable-sysvmsg=shared
+sysvsem_config = --enable-sysvsem=shared
+sysvshm_config = --enable-sysvshm=shared
+tokenizer_config = --enable-tokenizer=shared
+zlib_config = --with-zlib=shared,/usr --with-zlib-dir=/usr
+export pdo_PRIORITY
+export common_EXTENSIONS
+export common_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-dba.m4 5.6.19+dfsg-1/debian/rules.d/ext-dba.m4
--- 5.6.18+dfsg-4/debian/rules.d/ext-dba.m4	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-dba.m4	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,12 @@
+ext_PACKAGES    += dba
+dba_DESCRIPTION := DBA
+dba_EXTENSIONS  := dba
+dba_config = \
+	--enable-dba=shared \
+	--with-db4=/usr \
+	--without-gdbm \
+	--with-qdbm=/usr \
+	--enable-inifile \
+	--enable-flatfile
+export dba_EXTENSIONS
+export dba_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-mbstring.mk 5.6.19+dfsg-1/debian/rules.d/ext-mbstring.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-mbstring.mk	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-mbstring.mk	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,9 @@
+ext_PACKAGES    += mbstring
+mbstring_DESCRIPTION := MBSTRING
+mbstring_EXTENSIONS  := mbstring
+mbstring_config = \
+	--enable-mbstring=shared \
+	--enable-mbregex \
+	--enable-mbregex-backtrack
+export mbstring_EXTENSIONS
+export mbstring_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-mysql.mk 5.6.19+dfsg-1/debian/rules.d/ext-mysql.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-mysql.mk	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-mysql.mk	2016-03-03 10:42:44.000000000 +0000
@@ -1,7 +1,10 @@
 ext_PACKAGES      += mysql
 mysql_DESCRIPTION := MySQL
-mysql_EXTENSIONS  := mysqli pdo_mysql
+mysql_EXTENSIONS  := mysqlnd mysqli pdo_mysql
+mysqlnd_config    := --enable-mysqlnd=shared --enable-mysqlnd-compression-support --with-zlib-dir=/usr
 mysqli_config     := --with-mysqli=shared,mysqlnd
 pdo_mysql_config  := --with-pdo-mysql=shared,mysqlnd
+mysqlnd_PRIORITY  := 10
+export mysqlnd_PRIORITY
 export mysql_EXTENSIONS
 export mysql_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/extra-targets.mk 5.6.19+dfsg-1/debian/rules.d/extra-targets.mk
--- 5.6.18+dfsg-4/debian/rules.d/extra-targets.mk	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/extra-targets.mk	1970-01-01 00:00:00.000000000 +0000
@@ -1,3 +0,0 @@
-COMMON_CONFIG += \
-		--enable-pdo \
-		--enable-mysqlnd
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-soap.mk 5.6.19+dfsg-1/debian/rules.d/ext-soap.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-soap.mk	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-soap.mk	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,8 @@
+ext_PACKAGES    += soap
+soap_DESCRIPTION := SOAP
+soap_EXTENSIONS  := soap
+soap_config = \
+	--enable-soap=shared \
+	--with-libxml-dir=/usr
+export soap_EXTENSIONS
+export soap_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-xml.mk 5.6.19+dfsg-1/debian/rules.d/ext-xml.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-xml.mk	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-xml.mk	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,26 @@
+ext_PACKAGES    += xml
+xml_DESCRIPTION := DOM, SimpleXML, WDDX, XML, and XSL
+xml_EXTENSIONS  := dom simplexml wddx xml xmlreader xmlwriter xsl
+dom_config = \
+	--enable-dom=shared \
+	--with-libxml-dir=/usr
+simplexml_config = \
+	--enable-simplexml=shared \
+	--with-libxml-dir=/usr
+wddx_config = \
+	--enable-wddx=shared \
+	--with-libxml-dir=/usr
+xml_config = \
+	--enable-xml=shared \
+	--with-libxml-dir=/usr
+xml_PRIORITY := 15
+xmlreader_config = \
+	--enable-xmlreader=shared \
+	--with-libxml-dir=/usr
+xmlwriter_config = \
+	--enable-xmlwriter=shared \
+	--with-libxml-dir=/usr
+xsl_config      := --with-xsl=shared,/usr
+export xml_PRIORITY
+export xml_EXTENSIONS
+export xml_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-xmlrpc.mk 5.6.19+dfsg-1/debian/rules.d/ext-xmlrpc.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-xmlrpc.mk	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-xmlrpc.mk	2016-03-03 10:42:44.000000000 +0000
@@ -1,6 +1,8 @@
 ext_PACKAGES     += xmlrpc
 xmlrpc_DESCRIPTION := XMLRPC-EPI
 xmlrpc_EXTENSIONS  := xmlrpc
-xmlrpc_config      := --with-xmlrpc=shared,/usr
+xmlrpc_config      := \
+	--with-xmlrpc=shared,/usr \
+	--with-libxml-dir=/usr
 export xmlrpc_EXTENSIONS
 export xmlrpc_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-xsl.mk 5.6.19+dfsg-1/debian/rules.d/ext-xsl.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-xsl.mk	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-xsl.mk	1970-01-01 00:00:00.000000000 +0000
@@ -1,6 +0,0 @@
-ext_PACKAGES     += xsl
-xsl_DESCRIPTION := XSL
-xsl_EXTENSIONS  := xsl
-xsl_config      := --with-xsl=shared,/usr
-export xsl_EXTENSIONS
-export xsl_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/rules.d/ext-zip.mk 5.6.19+dfsg-1/debian/rules.d/ext-zip.mk
--- 5.6.18+dfsg-4/debian/rules.d/ext-zip.mk	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/rules.d/ext-zip.mk	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,9 @@
+ext_PACKAGES    += zip
+zip_DESCRIPTION := Zip
+zip_EXTENSIONS  := zip
+zip_config = \
+	--enable-zip=shared \
+	--with-zlib-dir=/usr \
+	--with-libzip=/usr
+export zip_EXTENSIONS
+export zip_DESCRIPTION
diff -pruN 5.6.18+dfsg-4/debian/tests/cgi 5.6.19+dfsg-1/debian/tests/cgi
--- 5.6.18+dfsg-4/debian/tests/cgi	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/tests/cgi	2016-03-03 10:42:44.000000000 +0000
@@ -3,9 +3,7 @@ set -e
 
 # Author: Robie Basak <robie.basak@ubuntu.com>
 
-# /etc/apache2/conf-available/php5.6-cgi.conf should exist. If this is renamed
-# to /etc/apache2/conf-available/php5.6-cgi in the future, then this test needs
-# to be updated.
+# /etc/apache2/conf-available/php5.6-cgi.conf should exist.
 
 if [ ! -f /etc/apache2/conf-available/php5.6-cgi.conf ]; then
     echo "/etc/apache2/conf-available/php5.6-cgi.conf not found" >&2
@@ -22,9 +20,13 @@ EOT
 # mode here.
 a2dismod php5.6 2>/dev/null || true
 
-a2enmod actions
-a2enmod cgi 2>/dev/null
-a2enconf php5.6-cgi
+# Ensure that fpm is disabled, since we want to get CGI here
+a2dismod proxy-fcgi 2>/dev/null || true
+a2disconf php5.6 2>/dev/null || true
+
+a2enmod actions 2>/dev/null || true
+a2enmod cgi 2>/dev/null || true
+a2enconf php5.6-cgi 2>/dev/null || true
 service apache2 restart 2>/dev/null
 result=`wget -O- http://localhost/hello.php 2>/dev/null`
 test "$result" = "Hello, world!"
diff -pruN 5.6.18+dfsg-4/debian/tests/control 5.6.19+dfsg-1/debian/tests/control
--- 5.6.18+dfsg-4/debian/tests/control	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/tests/control	2016-03-03 10:42:44.000000000 +0000
@@ -6,5 +6,9 @@ Depends: apache2, php5.6-cgi
 Restrictions: needs-root
 
 Tests: mod-php
-Depends: libapache2-mod-php5.6
+Depends: apache2, libapache2-mod-php5.6
+Restrictions: needs-root
+
+Tests: fpm
+Depends: apache2, php5.6-fpm
 Restrictions: needs-root
diff -pruN 5.6.18+dfsg-4/debian/tests/fpm 5.6.19+dfsg-1/debian/tests/fpm
--- 5.6.18+dfsg-4/debian/tests/fpm	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/tests/fpm	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+# PHP-FPM test based on mod-php test
+# Author: Neal Gompa <ngompa13@gmail.com>
+
+# /etc/apache2/conf-available/php5.6-fpm.conf should exist.
+
+if [ ! -f /etc/apache2/conf-available/php5.6-fpm.conf ]; then
+    echo "/etc/apache2/conf-available/php5.6-fpm.conf not found" >&2
+    exit 1
+fi
+
+cat > /var/www/html/hello.php <<EOT
+<?php echo "Hello, world!\n"; ?>
+EOT
+
+# Make sure that any CGI mechanism is disabled, since we want to test
+# php-fpm here.
+a2dismod actions 2>/dev/null || true
+a2dismod cgi 2>/dev/null || true
+a2disconf php5.6-cgi 2>/dev/null || true
+
+# Ensure that mod_php is disabled
+a2dismod php5.6 2>/dev/null || true
+
+# php-fpm configuration requires mod_proxy_fcgi
+a2enmod proxy_fcgi 2>/dev/null || true
+a2enconf php5.6-fpm 2>/dev/null || true
+service apache2 restart 2>/dev/null
+result=`wget -O- http://localhost/hello.php 2>/dev/null`
+test "$result" = "Hello, world!"
diff -pruN 5.6.18+dfsg-4/debian/tests/mod-php 5.6.19+dfsg-1/debian/tests/mod-php
--- 5.6.18+dfsg-4/debian/tests/mod-php	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/tests/mod-php	2016-03-03 10:42:44.000000000 +0000
@@ -3,6 +3,20 @@ set -e
 
 # Author: Robie Basak <robie.basak@ubuntu.com>
 
+
+# /etc/apache2/mods-available/php5.6.{conf,load} should exist.
+
+if [ ! -f /etc/apache2/mods-available/php5.6.conf ]; then
+    echo "/etc/apache2/mods-available/php5.6.conf not found" >&2
+    exit 1
+fi
+
+if [ ! -f /etc/apache2/mods-available/php5.6.load ]; then
+    echo "/etc/apache2/mods-available/php5.6.load not found" >&2
+    exit 1
+fi
+
+
 cat > /var/www/html/hello.php <<EOT
 <?php echo "Hello, world!\n"; ?>
 EOT
@@ -13,7 +27,12 @@ a2dismod actions 2>/dev/null || true
 a2dismod cgi 2>/dev/null || true
 a2disconf php5.6-cgi 2>/dev/null || true
 
-a2enmod php5.6 2>/dev/null
+# Make sure that fpm configuration is disabled for the same reasons we disabled
+# CGI mechanisms
+a2dismod proxy_fcgi 2>/dev/null || true
+a2disconf php5.6-fpm 2>/dev/null || true
+
+a2enmod php5.6 2>/dev/null || true
 service apache2 restart 2>/dev/null
 result=`wget -O- http://localhost/hello.php 2>/dev/null`
 test "$result" = "Hello, world!"
diff -pruN 5.6.18+dfsg-4/debian/tests.in/cgi 5.6.19+dfsg-1/debian/tests.in/cgi
--- 5.6.18+dfsg-4/debian/tests.in/cgi	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/tests.in/cgi	2016-03-03 10:42:44.000000000 +0000
@@ -3,9 +3,7 @@ set -e
 
 # Author: Robie Basak <robie.basak@ubuntu.com>
 
-# /etc/apache2/conf-available/php@PHP_VERSION@-cgi.conf should exist. If this is renamed
-# to /etc/apache2/conf-available/php@PHP_VERSION@-cgi in the future, then this test needs
-# to be updated.
+# /etc/apache2/conf-available/php@PHP_VERSION@-cgi.conf should exist.
 
 if [ ! -f /etc/apache2/conf-available/php@PHP_VERSION@-cgi.conf ]; then
     echo "/etc/apache2/conf-available/php@PHP_VERSION@-cgi.conf not found" >&2
@@ -22,9 +20,13 @@ EOT
 # mode here.
 a2dismod php@PHP_VERSION@ 2>/dev/null || true
 
-a2enmod actions
-a2enmod cgi 2>/dev/null
-a2enconf php@PHP_VERSION@-cgi
+# Ensure that fpm is disabled, since we want to get CGI here
+a2dismod proxy-fcgi 2>/dev/null || true
+a2disconf php@PHP_VERSION@ 2>/dev/null || true
+
+a2enmod actions 2>/dev/null || true
+a2enmod cgi 2>/dev/null || true
+a2enconf php@PHP_VERSION@-cgi 2>/dev/null || true
 service apache2 restart 2>/dev/null
 result=`wget -O- http://localhost/hello.php 2>/dev/null`
 test "$result" = "Hello, world!"
diff -pruN 5.6.18+dfsg-4/debian/tests.in/control 5.6.19+dfsg-1/debian/tests.in/control
--- 5.6.18+dfsg-4/debian/tests.in/control	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/tests.in/control	2016-03-03 10:42:44.000000000 +0000
@@ -6,5 +6,9 @@ Depends: apache2, php@PHP_VERSION@-cgi
 Restrictions: needs-root
 
 Tests: mod-php
-Depends: libapache2-mod-php@PHP_VERSION@
+Depends: apache2, libapache2-mod-php@PHP_VERSION@
+Restrictions: needs-root
+
+Tests: fpm
+Depends: apache2, php@PHP_VERSION@-fpm
 Restrictions: needs-root
diff -pruN 5.6.18+dfsg-4/debian/tests.in/fpm 5.6.19+dfsg-1/debian/tests.in/fpm
--- 5.6.18+dfsg-4/debian/tests.in/fpm	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/debian/tests.in/fpm	2016-03-03 10:42:44.000000000 +0000
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+# PHP-FPM test based on mod-php test
+# Author: Neal Gompa <ngompa13@gmail.com>
+
+# /etc/apache2/conf-available/php@PHP_VERSION@-fpm.conf should exist.
+
+if [ ! -f /etc/apache2/conf-available/php@PHP_VERSION@-fpm.conf ]; then
+    echo "/etc/apache2/conf-available/php@PHP_VERSION@-fpm.conf not found" >&2
+    exit 1
+fi
+
+cat > /var/www/html/hello.php <<EOT
+<?php echo "Hello, world!\n"; ?>
+EOT
+
+# Make sure that any CGI mechanism is disabled, since we want to test
+# php-fpm here.
+a2dismod actions 2>/dev/null || true
+a2dismod cgi 2>/dev/null || true
+a2disconf php@PHP_VERSION@-cgi 2>/dev/null || true
+
+# Ensure that mod_php is disabled
+a2dismod php@PHP_VERSION@ 2>/dev/null || true
+
+# php-fpm configuration requires mod_proxy_fcgi
+a2enmod proxy_fcgi 2>/dev/null || true
+a2enconf php@PHP_VERSION@-fpm 2>/dev/null || true
+service apache2 restart 2>/dev/null
+result=`wget -O- http://localhost/hello.php 2>/dev/null`
+test "$result" = "Hello, world!"
diff -pruN 5.6.18+dfsg-4/debian/tests.in/mod-php 5.6.19+dfsg-1/debian/tests.in/mod-php
--- 5.6.18+dfsg-4/debian/tests.in/mod-php	2016-02-15 11:42:38.000000000 +0000
+++ 5.6.19+dfsg-1/debian/tests.in/mod-php	2016-03-03 10:42:44.000000000 +0000
@@ -3,6 +3,20 @@ set -e
 
 # Author: Robie Basak <robie.basak@ubuntu.com>
 
+
+# /etc/apache2/mods-available/php@PHP_VERSION@.{conf,load} should exist.
+
+if [ ! -f /etc/apache2/mods-available/php@PHP_VERSION@.conf ]; then
+    echo "/etc/apache2/mods-available/php@PHP_VERSION@.conf not found" >&2
+    exit 1
+fi
+
+if [ ! -f /etc/apache2/mods-available/php@PHP_VERSION@.load ]; then
+    echo "/etc/apache2/mods-available/php@PHP_VERSION@.load not found" >&2
+    exit 1
+fi
+
+
 cat > /var/www/html/hello.php <<EOT
 <?php echo "Hello, world!\n"; ?>
 EOT
@@ -13,7 +27,12 @@ a2dismod actions 2>/dev/null || true
 a2dismod cgi 2>/dev/null || true
 a2disconf php@PHP_VERSION@-cgi 2>/dev/null || true
 
-a2enmod php@PHP_VERSION@ 2>/dev/null
+# Make sure that fpm configuration is disabled for the same reasons we disabled
+# CGI mechanisms
+a2dismod proxy_fcgi 2>/dev/null || true
+a2disconf php@PHP_VERSION@-fpm 2>/dev/null || true
+
+a2enmod php@PHP_VERSION@ 2>/dev/null || true
 service apache2 restart 2>/dev/null
 result=`wget -O- http://localhost/hello.php 2>/dev/null`
 test "$result" = "Hello, world!"
diff -pruN 5.6.18+dfsg-4/ext/curl/interface.c 5.6.19+dfsg-1/ext/curl/interface.c
--- 5.6.18+dfsg-4/ext/curl/interface.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/curl/interface.c	2016-03-03 00:02:11.000000000 +0000
@@ -2543,7 +2543,12 @@ static int _php_curl_setopt(php_curl *ch
 					return 1;
 				}
 			}
-			zend_hash_index_update(ch->to_free->slist, (ulong) option, &slist, sizeof(struct curl_slist *), NULL);
+
+			if (Z_REFCOUNT_P(ch->clone) <= 1) {
+				zend_hash_index_update(ch->to_free->slist, (ulong) option, &slist, sizeof(struct curl_slist *), NULL);
+			} else {
+				zend_hash_next_index_insert(ch->to_free->slist, &slist, sizeof(struct curl_slist *), NULL);
+			}
 
 			error = curl_easy_setopt(ch->cp, option, slist);
 
diff -pruN 5.6.18+dfsg-4/ext/curl/tests/bug71523.phpt 5.6.19+dfsg-1/ext/curl/tests/bug71523.phpt
--- 5.6.18+dfsg-4/ext/curl/tests/bug71523.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/curl/tests/bug71523.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,28 @@
+--TEST--
+Bug #71523 (Copied handle with new option CURLOPT_HTTPHEADER crashes while curl_multi_exec)
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) {
+        exit("skip curl extension not loaded");
+}
+?>
+--FILE--
+<?php
+
+$base = curl_init('http://www.google.com/');
+curl_setopt($base, CURLOPT_RETURNTRANSFER, true);
+$mh = curl_multi_init();
+
+for ($i = 0; $i < 2; ++$i) {
+	$ch = curl_copy_handle($base);
+	curl_setopt($ch, CURLOPT_HTTPHEADER, ['Foo: Bar']);
+	curl_multi_add_handle($mh, $ch);
+}
+
+do {
+	curl_multi_exec($mh, $active);
+} while ($active);
+?>
+okey
+--EXPECTF--
+okey
diff -pruN 5.6.18+dfsg-4/ext/date/config.w32 5.6.19+dfsg-1/ext/date/config.w32
--- 5.6.18+dfsg-4/ext/date/config.w32	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/config.w32	2016-03-03 00:02:11.000000000 +0000
@@ -12,6 +12,7 @@ tl_config.WriteLine("#include \"config.w
 tl_config.WriteLine("#include <php_stdint.h>");
 tl_config.WriteLine("#include \"win32/php_inttypes.h\"");
 tl_config.WriteLine("#define TIMELIB_OMIT_STDINT 1");
+tl_config.WriteLine("#define TIMELIB_FORCE_LONG32 1");
 tl_config.Close();
 
 PHP_INSTALL_HEADERS("ext/date/", "php_date.h lib/timelib.h lib/timelib_structs.h lib/timelib_config.h");
diff -pruN 5.6.18+dfsg-4/ext/date/lib/interval.c 5.6.19+dfsg-1/ext/date/lib/interval.c
--- 5.6.18+dfsg-4/ext/date/lib/interval.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/lib/interval.c	2016-03-03 00:02:11.000000000 +0000
@@ -70,7 +70,7 @@ timelib_rel_time *timelib_diff(timelib_t
 		rt->i += dst_m_corr;
 	}
 
-	rt->days = abs(floor((one->sse - two->sse - (dst_h_corr * 3600) - (dst_m_corr * 60)) / 86400));
+	rt->days = fabs(floor((one->sse - two->sse - (dst_h_corr * 3600) - (dst_m_corr * 60)) / 86400));
 
 	timelib_do_rel_normalize(rt->invert ? one : two, rt);
 
diff -pruN 5.6.18+dfsg-4/ext/date/lib/parse_date.re 5.6.19+dfsg-1/ext/date/lib/parse_date.re
--- 5.6.18+dfsg-4/ext/date/lib/parse_date.re	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/lib/parse_date.re	2016-03-03 00:02:11.000000000 +0000
@@ -1812,6 +1812,11 @@ timelib_time* timelib_strtotime(char *s,
 		{                                                              \
 			add_pbf_error(s, "Unexpected data found.", string, begin); \
 		}
+#define TIMELIB_CHECK_SIGNED_NUMBER                                    \
+		if (strchr("-0123456789", *ptr) == NULL)                       \
+		{                                                              \
+			add_pbf_error(s, "Unexpected data found.", string, begin); \
+		}
 
 static void timelib_time_reset_fields(timelib_time *time)
 {
@@ -2016,7 +2021,7 @@ timelib_time *timelib_parse_from_format(
 				timelib_eat_spaces((char **) &ptr);
 				break;
 			case 'U': /* epoch seconds */
-				TIMELIB_CHECK_NUMBER;
+				TIMELIB_CHECK_SIGNED_NUMBER;
 				TIMELIB_HAVE_RELATIVE();
 				tmp = timelib_get_unsigned_nr((char **) &ptr, 24);
 				s->time->y = 1970;
diff -pruN 5.6.18+dfsg-4/ext/date/lib/timelib.c 5.6.19+dfsg-1/ext/date/lib/timelib.c
--- 5.6.18+dfsg-4/ext/date/lib/timelib.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/lib/timelib.c	2016-03-03 00:02:11.000000000 +0000
@@ -65,6 +65,23 @@ timelib_time* timelib_time_clone(timelib
 	return tmp;
 }
 
+int timelib_time_compare(timelib_time *t1, timelib_time *t2)
+{
+	if (t1->sse == t2->sse) {
+		if (t1->f == t2->f) {
+			return 0;
+		}
+
+		if (t1->sse < 0) {
+			return (t1->f < t2->f) ? 1 : -1;
+		} else {
+			return (t1->f < t2->f) ? -1 : 1;
+		}
+	}
+
+	return (t1->sse < t2->sse) ? -1 : 1;
+}
+
 timelib_rel_time* timelib_rel_time_clone(timelib_rel_time *rel)
 {
 	timelib_rel_time *tmp = timelib_rel_time_ctor();
diff -pruN 5.6.18+dfsg-4/ext/date/lib/timelib.h 5.6.19+dfsg-1/ext/date/lib/timelib.h
--- 5.6.18+dfsg-4/ext/date/lib/timelib.h	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/lib/timelib.h	2016-03-03 00:02:11.000000000 +0000
@@ -138,6 +138,7 @@ timelib_time* timelib_time_ctor(void);
 void timelib_time_set_option(timelib_time* tm, int option, void* option_value);
 void timelib_time_dtor(timelib_time* t);
 timelib_time* timelib_time_clone(timelib_time* orig);
+int timelib_time_compare(timelib_time *t1, timelib_time *t2);
 
 timelib_time_offset* timelib_time_offset_ctor(void);
 void timelib_time_offset_dtor(timelib_time_offset* t);
diff -pruN 5.6.18+dfsg-4/ext/date/lib/timelib_structs.h 5.6.19+dfsg-1/ext/date/lib/timelib_structs.h
--- 5.6.18+dfsg-4/ext/date/lib/timelib_structs.h	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/lib/timelib_structs.h	2016-03-03 00:02:11.000000000 +0000
@@ -125,7 +125,7 @@ typedef unsigned __int64  uint64_t;
 #include <strings.h>
 #endif
 
-#if defined(__x86_64__) || defined(__LP64__) || defined(_LP64) || defined(_WIN64)
+#if (defined(__x86_64__) || defined(__LP64__) || defined(_LP64) || defined(_WIN64)) && !defined(TIMELIB_FORCE_LONG32)
 typedef int64_t timelib_long;
 typedef uint64_t timelib_ulong;
 # define TIMELIB_LONG_MAX INT64_MAX
diff -pruN 5.6.18+dfsg-4/ext/date/lib/timezonedb.h 5.6.19+dfsg-1/ext/date/lib/timezonedb.h
--- 5.6.18+dfsg-4/ext/date/lib/timezonedb.h	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/lib/timezonedb.h	2016-03-03 00:02:11.000000000 +0000
@@ -98,502 +98,502 @@ const timelib_tzdb_index_entry timezoned
 	{ "America/Catamarca"                 , FOR_V2(0x00F876, 0x0064F3) },
 	{ "America/Cayenne"                   , FOR_V2(0x00FCEB, 0x0066B2) },
 	{ "America/Cayman"                    , FOR_V2(0x00FDBF, 0x006719) },
-	{ "America/Chicago"                   , FOR_V2(0x010128, 0x006867) },
-	{ "America/Chihuahua"                 , FOR_V2(0x010F41, 0x006D97) },
-	{ "America/Coral_Harbour"             , FOR_V2(0x011574, 0x00700F) },
-	{ "America/Cordoba"                   , FOR_V2(0x0116D9, 0x0070B2) },
-	{ "America/Costa_Rica"                , FOR_V2(0x011B4E, 0x007271) },
-	{ "America/Creston"                   , FOR_V2(0x011CAF, 0x00730C) },
-	{ "America/Cuiaba"                    , FOR_V2(0x011DD6, 0x0073B1) },
-	{ "America/Curacao"                   , FOR_V2(0x0125B0, 0x007694) },
-	{ "America/Danmarkshavn"              , FOR_V2(0x01268C, 0x0076FF) },
-	{ "America/Dawson"                    , FOR_V2(0x012983, 0x007848) },
-	{ "America/Dawson_Creek"              , FOR_V2(0x0131D6, 0x007B76) },
-	{ "America/Denver"                    , FOR_V2(0x01364E, 0x007D61) },
-	{ "America/Detroit"                   , FOR_V2(0x013FFC, 0x0080F8) },
-	{ "America/Dominica"                  , FOR_V2(0x0148D8, 0x00845C) },
-	{ "America/Edmonton"                  , FOR_V2(0x01498E, 0x0084B6) },
-	{ "America/Eirunepe"                  , FOR_V2(0x01533E, 0x008873) },
-	{ "America/El_Salvador"               , FOR_V2(0x015600, 0x008998) },
-	{ "America/Ensenada"                  , FOR_V2(0x015706, 0x008A12) },
-	{ "America/Fort_Nelson"               , FOR_V2(0x016046, 0x008D80) },
-	{ "America/Fort_Wayne"                , FOR_V2(0x016951, 0x009101) },
-	{ "America/Fortaleza"                 , FOR_V2(0x016FE8, 0x00937C) },
-	{ "America/Glace_Bay"                 , FOR_V2(0x0172EA, 0x0094BF) },
-	{ "America/Godthab"                   , FOR_V2(0x017BBD, 0x00981D) },
-	{ "America/Goose_Bay"                 , FOR_V2(0x01832C, 0x009AE6) },
-	{ "America/Grand_Turk"                , FOR_V2(0x018FF4, 0x009FBC) },
-	{ "America/Grenada"                   , FOR_V2(0x019507, 0x00A1AC) },
-	{ "America/Guadeloupe"                , FOR_V2(0x0195BD, 0x00A206) },
-	{ "America/Guatemala"                 , FOR_V2(0x019673, 0x00A260) },
-	{ "America/Guayaquil"                 , FOR_V2(0x0197B1, 0x00A2EE) },
-	{ "America/Guyana"                    , FOR_V2(0x019890, 0x00A35C) },
-	{ "America/Halifax"                   , FOR_V2(0x0199AA, 0x00A3E2) },
-	{ "America/Havana"                    , FOR_V2(0x01A750, 0x00A8FB) },
-	{ "America/Hermosillo"                , FOR_V2(0x01B0E1, 0x00AC7F) },
-	{ "America/Indiana/Indianapolis"      , FOR_V2(0x01B2D2, 0x00AD6A) },
-	{ "America/Indiana/Knox"              , FOR_V2(0x01B990, 0x00B00C) },
-	{ "America/Indiana/Marengo"           , FOR_V2(0x01C347, 0x00B3BC) },
-	{ "America/Indiana/Petersburg"        , FOR_V2(0x01CA3E, 0x00B673) },
-	{ "America/Indiana/Tell_City"         , FOR_V2(0x01D1E7, 0x00B967) },
-	{ "America/Indiana/Vevay"             , FOR_V2(0x01D8DF, 0x00BC21) },
-	{ "America/Indiana/Vincennes"         , FOR_V2(0x01DEA5, 0x00BE6D) },
-	{ "America/Indiana/Winamac"           , FOR_V2(0x01E598, 0x00C132) },
-	{ "America/Indianapolis"              , FOR_V2(0x01ECC6, 0x00C3FC) },
-	{ "America/Inuvik"                    , FOR_V2(0x01F35D, 0x00C677) },
-	{ "America/Iqaluit"                   , FOR_V2(0x01FB1B, 0x00C973) },
-	{ "America/Jamaica"                   , FOR_V2(0x020351, 0x00CCAA) },
-	{ "America/Jujuy"                     , FOR_V2(0x020558, 0x00CD80) },
-	{ "America/Juneau"                    , FOR_V2(0x0209DD, 0x00CF4B) },
-	{ "America/Kentucky/Louisville"       , FOR_V2(0x021341, 0x00D2DA) },
-	{ "America/Kentucky/Monticello"       , FOR_V2(0x021E53, 0x00D709) },
-	{ "America/Knox_IN"                   , FOR_V2(0x0227BE, 0x00DA9F) },
-	{ "America/Kralendijk"                , FOR_V2(0x02314F, 0x00DE29) },
-	{ "America/La_Paz"                    , FOR_V2(0x02322B, 0x00DE94) },
-	{ "America/Lima"                      , FOR_V2(0x02332A, 0x00DF0C) },
-	{ "America/Los_Angeles"               , FOR_V2(0x0234D7, 0x00DFC1) },
-	{ "America/Louisville"                , FOR_V2(0x02400C, 0x00E3E3) },
-	{ "America/Lower_Princes"             , FOR_V2(0x024AF5, 0x00E7E9) },
-	{ "America/Maceio"                    , FOR_V2(0x024BD1, 0x00E854) },
-	{ "America/Managua"                   , FOR_V2(0x024EE1, 0x00E993) },
-	{ "America/Manaus"                    , FOR_V2(0x0250BC, 0x00EA5F) },
-	{ "America/Marigot"                   , FOR_V2(0x02533A, 0x00EB66) },
-	{ "America/Martinique"                , FOR_V2(0x0253F0, 0x00EBC0) },
-	{ "America/Matamoros"                 , FOR_V2(0x0254FD, 0x00EC3D) },
-	{ "America/Mazatlan"                  , FOR_V2(0x025ADB, 0x00EE9B) },
-	{ "America/Mendoza"                   , FOR_V2(0x02612B, 0x00F115) },
-	{ "America/Menominee"                 , FOR_V2(0x0265CC, 0x00F2EA) },
-	{ "America/Merida"                    , FOR_V2(0x026F0A, 0x00F684) },
-	{ "America/Metlakatla"                , FOR_V2(0x0274E6, 0x00F8CC) },
-	{ "America/Mexico_City"               , FOR_V2(0x0277EC, 0x00FA18) },
-	{ "America/Miquelon"                  , FOR_V2(0x027E67, 0x00FC98) },
-	{ "America/Moncton"                   , FOR_V2(0x028507, 0x00FF0F) },
-	{ "America/Monterrey"                 , FOR_V2(0x02918B, 0x0103B7) },
-	{ "America/Montevideo"                , FOR_V2(0x029773, 0x01061F) },
-	{ "America/Montreal"                  , FOR_V2(0x029D66, 0x010869) },
-	{ "America/Montserrat"                , FOR_V2(0x02AB21, 0x010D6A) },
-	{ "America/Nassau"                    , FOR_V2(0x02ABD7, 0x010DC4) },
-	{ "America/New_York"                  , FOR_V2(0x02B4CF, 0x01110E) },
-	{ "America/Nipigon"                   , FOR_V2(0x02C2C0, 0x01162A) },
-	{ "America/Nome"                      , FOR_V2(0x02CB6A, 0x01198C) },
-	{ "America/Noronha"                   , FOR_V2(0x02D4D7, 0x011D1B) },
-	{ "America/North_Dakota/Beulah"       , FOR_V2(0x02D7CB, 0x011E50) },
-	{ "America/North_Dakota/Center"       , FOR_V2(0x02E157, 0x0121F5) },
-	{ "America/North_Dakota/New_Salem"    , FOR_V2(0x02EAE3, 0x01259A) },
-	{ "America/Ojinaga"                   , FOR_V2(0x02F484, 0x012954) },
-	{ "America/Panama"                    , FOR_V2(0x02FAAD, 0x012BC2) },
-	{ "America/Pangnirtung"               , FOR_V2(0x02FB84, 0x012C28) },
-	{ "America/Paramaribo"                , FOR_V2(0x0303EF, 0x012F73) },
-	{ "America/Phoenix"                   , FOR_V2(0x03052F, 0x01300A) },
-	{ "America/Port-au-Prince"            , FOR_V2(0x0306CC, 0x0130D9) },
-	{ "America/Port_of_Spain"             , FOR_V2(0x030CA3, 0x01330A) },
-	{ "America/Porto_Acre"                , FOR_V2(0x030D59, 0x013364) },
-	{ "America/Porto_Velho"               , FOR_V2(0x030FF5, 0x013475) },
-	{ "America/Puerto_Rico"               , FOR_V2(0x031255, 0x013570) },
-	{ "America/Rainy_River"               , FOR_V2(0x031360, 0x0135EC) },
-	{ "America/Rankin_Inlet"              , FOR_V2(0x031BF1, 0x013935) },
-	{ "America/Recife"                    , FOR_V2(0x0323A5, 0x013C28) },
-	{ "America/Regina"                    , FOR_V2(0x032693, 0x013D57) },
-	{ "America/Resolute"                  , FOR_V2(0x032AB6, 0x013F1A) },
-	{ "America/Rio_Branco"                , FOR_V2(0x03326C, 0x01420F) },
-	{ "America/Rosario"                   , FOR_V2(0x03350C, 0x014324) },
-	{ "America/Santa_Isabel"              , FOR_V2(0x033981, 0x0144E3) },
-	{ "America/Santarem"                  , FOR_V2(0x0342FB, 0x01488B) },
-	{ "America/Santiago"                  , FOR_V2(0x03457F, 0x014995) },
-	{ "America/Santo_Domingo"             , FOR_V2(0x034D0A, 0x014C78) },
-	{ "America/Sao_Paulo"                 , FOR_V2(0x034EFF, 0x014D4F) },
-	{ "America/Scoresbysund"              , FOR_V2(0x03571C, 0x015063) },
-	{ "America/Shiprock"                  , FOR_V2(0x035ECC, 0x015356) },
-	{ "America/Sitka"                     , FOR_V2(0x03686D, 0x0156E0) },
-	{ "America/St_Barthelemy"             , FOR_V2(0x0371CF, 0x015A6D) },
-	{ "America/St_Johns"                  , FOR_V2(0x037285, 0x015AC7) },
-	{ "America/St_Kitts"                  , FOR_V2(0x038109, 0x016033) },
-	{ "America/St_Lucia"                  , FOR_V2(0x0381BF, 0x01608D) },
-	{ "America/St_Thomas"                 , FOR_V2(0x038275, 0x0160E7) },
-	{ "America/St_Vincent"                , FOR_V2(0x03832B, 0x016141) },
-	{ "America/Swift_Current"             , FOR_V2(0x0383E1, 0x01619B) },
-	{ "America/Tegucigalpa"               , FOR_V2(0x038659, 0x0162C1) },
-	{ "America/Thule"                     , FOR_V2(0x03877B, 0x016345) },
-	{ "America/Thunder_Bay"               , FOR_V2(0x038D8F, 0x016591) },
-	{ "America/Tijuana"                   , FOR_V2(0x039661, 0x0168EB) },
-	{ "America/Toronto"                   , FOR_V2(0x039FD1, 0x016C89) },
-	{ "America/Tortola"                   , FOR_V2(0x03ADBC, 0x0171BA) },
-	{ "America/Vancouver"                 , FOR_V2(0x03AE72, 0x017214) },
-	{ "America/Virgin"                    , FOR_V2(0x03B9F7, 0x017662) },
-	{ "America/Whitehorse"                , FOR_V2(0x03BAAD, 0x0176BC) },
-	{ "America/Winnipeg"                  , FOR_V2(0x03C300, 0x0179EA) },
-	{ "America/Yakutat"                   , FOR_V2(0x03CE7D, 0x017E3B) },
-	{ "America/Yellowknife"               , FOR_V2(0x03D7B6, 0x0181B7) },
-	{ "Antarctica/Casey"                  , FOR_V2(0x03DFAB, 0x0184CC) },
-	{ "Antarctica/Davis"                  , FOR_V2(0x03E0E6, 0x01856F) },
-	{ "Antarctica/DumontDUrville"         , FOR_V2(0x03E231, 0x018615) },
-	{ "Antarctica/Macquarie"              , FOR_V2(0x03E345, 0x0186AB) },
-	{ "Antarctica/Mawson"                 , FOR_V2(0x03E95B, 0x018905) },
-	{ "Antarctica/McMurdo"                , FOR_V2(0x03EA4C, 0x018986) },
-	{ "Antarctica/Palmer"                 , FOR_V2(0x03F421, 0x018D42) },
-	{ "Antarctica/Rothera"                , FOR_V2(0x03F9D2, 0x018F8A) },
-	{ "Antarctica/South_Pole"             , FOR_V2(0x03FAAB, 0x019005) },
-	{ "Antarctica/Syowa"                  , FOR_V2(0x040453, 0x019394) },
-	{ "Antarctica/Troll"                  , FOR_V2(0x040525, 0x019407) },
-	{ "Antarctica/Vostok"                 , FOR_V2(0x0409D8, 0x0195DE) },
-	{ "Arctic/Longyearbyen"               , FOR_V2(0x040AAD, 0x019654) },
-	{ "Asia/Aden"                         , FOR_V2(0x041384, 0x019997) },
-	{ "Asia/Almaty"                       , FOR_V2(0x04143B, 0x0199F1) },
-	{ "Asia/Amman"                        , FOR_V2(0x0417FD, 0x019B75) },
-	{ "Asia/Anadyr"                       , FOR_V2(0x041F5E, 0x019E30) },
-	{ "Asia/Aqtau"                        , FOR_V2(0x04244A, 0x01A03F) },
-	{ "Asia/Aqtobe"                       , FOR_V2(0x0428FD, 0x01A24B) },
-	{ "Asia/Ashgabat"                     , FOR_V2(0x042D34, 0x01A408) },
-	{ "Asia/Ashkhabad"                    , FOR_V2(0x042FDF, 0x01A52A) },
-	{ "Asia/Baghdad"                      , FOR_V2(0x04328A, 0x01A64C) },
-	{ "Asia/Bahrain"                      , FOR_V2(0x043672, 0x01A7D2) },
-	{ "Asia/Baku"                         , FOR_V2(0x04374F, 0x01A83D) },
-	{ "Asia/Bangkok"                      , FOR_V2(0x043EFF, 0x01AB2A) },
-	{ "Asia/Beirut"                       , FOR_V2(0x043FD7, 0x01AB90) },
-	{ "Asia/Bishkek"                      , FOR_V2(0x044862, 0x01AEAE) },
-	{ "Asia/Brunei"                       , FOR_V2(0x044C93, 0x01B05F) },
-	{ "Asia/Calcutta"                     , FOR_V2(0x044D68, 0x01B0C6) },
-	{ "Asia/Chita"                        , FOR_V2(0x044E97, 0x01B150) },
-	{ "Asia/Choibalsan"                   , FOR_V2(0x0453AB, 0x01B372) },
-	{ "Asia/Chongqing"                    , FOR_V2(0x0459FA, 0x01B5DE) },
-	{ "Asia/Chungking"                    , FOR_V2(0x045BA4, 0x01B68F) },
-	{ "Asia/Colombo"                      , FOR_V2(0x045D4E, 0x01B740) },
-	{ "Asia/Dacca"                        , FOR_V2(0x045EDF, 0x01B7F5) },
-	{ "Asia/Damascus"                     , FOR_V2(0x046071, 0x01B8AC) },
-	{ "Asia/Dhaka"                        , FOR_V2(0x04698D, 0x01BC01) },
-	{ "Asia/Dili"                         , FOR_V2(0x046B1F, 0x01BCB8) },
-	{ "Asia/Dubai"                        , FOR_V2(0x046C60, 0x01BD4F) },
-	{ "Asia/Dushanbe"                     , FOR_V2(0x046D17, 0x01BDA9) },
-	{ "Asia/Gaza"                         , FOR_V2(0x046F86, 0x01BEB1) },
-	{ "Asia/Harbin"                       , FOR_V2(0x0478A6, 0x01C215) },
-	{ "Asia/Hebron"                       , FOR_V2(0x047A50, 0x01C2C6) },
-	{ "Asia/Ho_Chi_Minh"                  , FOR_V2(0x04838B, 0x01C633) },
-	{ "Asia/Hong_Kong"                    , FOR_V2(0x04850C, 0x01C6E2) },
-	{ "Asia/Hovd"                         , FOR_V2(0x0489BD, 0x01C8B1) },
-	{ "Asia/Irkutsk"                      , FOR_V2(0x048FDD, 0x01CB14) },
-	{ "Asia/Istanbul"                     , FOR_V2(0x0494EB, 0x01CD20) },
-	{ "Asia/Jakarta"                      , FOR_V2(0x049FB2, 0x01D11E) },
-	{ "Asia/Jayapura"                     , FOR_V2(0x04A13E, 0x01D1D9) },
-	{ "Asia/Jerusalem"                    , FOR_V2(0x04A26C, 0x01D283) },
-	{ "Asia/Kabul"                        , FOR_V2(0x04AB51, 0x01D5CB) },
-	{ "Asia/Kamchatka"                    , FOR_V2(0x04AC24, 0x01D62D) },
-	{ "Asia/Karachi"                      , FOR_V2(0x04B0FF, 0x01D833) },
-	{ "Asia/Kashgar"                      , FOR_V2(0x04B29E, 0x01D8ED) },
-	{ "Asia/Kathmandu"                    , FOR_V2(0x04B355, 0x01D947) },
-	{ "Asia/Katmandu"                     , FOR_V2(0x04B435, 0x01D9B2) },
-	{ "Asia/Khandyga"                     , FOR_V2(0x04B515, 0x01DA1D) },
-	{ "Asia/Kolkata"                      , FOR_V2(0x04BA6E, 0x01DC54) },
-	{ "Asia/Krasnoyarsk"                  , FOR_V2(0x04BB9D, 0x01DCDE) },
-	{ "Asia/Kuala_Lumpur"                 , FOR_V2(0x04C08C, 0x01DEE0) },
-	{ "Asia/Kuching"                      , FOR_V2(0x04C239, 0x01DFAE) },
-	{ "Asia/Kuwait"                       , FOR_V2(0x04C45B, 0x01E0A1) },
-	{ "Asia/Macao"                        , FOR_V2(0x04C512, 0x01E0FB) },
-	{ "Asia/Macau"                        , FOR_V2(0x04C839, 0x01E23B) },
-	{ "Asia/Magadan"                      , FOR_V2(0x04CB60, 0x01E37B) },
-	{ "Asia/Makassar"                     , FOR_V2(0x04D067, 0x01E594) },
-	{ "Asia/Manila"                       , FOR_V2(0x04D1D3, 0x01E666) },
-	{ "Asia/Muscat"                       , FOR_V2(0x04D348, 0x01E704) },
-	{ "Asia/Nicosia"                      , FOR_V2(0x04D3FF, 0x01E75E) },
-	{ "Asia/Novokuznetsk"                 , FOR_V2(0x04DBEB, 0x01EA4B) },
-	{ "Asia/Novosibirsk"                  , FOR_V2(0x04E108, 0x01EC70) },
-	{ "Asia/Omsk"                         , FOR_V2(0x04E5E3, 0x01EE65) },
-	{ "Asia/Oral"                         , FOR_V2(0x04EAD1, 0x01F066) },
-	{ "Asia/Phnom_Penh"                   , FOR_V2(0x04EF38, 0x01F23B) },
-	{ "Asia/Pontianak"                    , FOR_V2(0x04F010, 0x01F2A1) },
-	{ "Asia/Pyongyang"                    , FOR_V2(0x04F1A8, 0x01F368) },
-	{ "Asia/Qatar"                        , FOR_V2(0x04F2EC, 0x01F3FF) },
-	{ "Asia/Qyzylorda"                    , FOR_V2(0x04F3C9, 0x01F46A) },
-	{ "Asia/Rangoon"                      , FOR_V2(0x04F82F, 0x01F645) },
-	{ "Asia/Riyadh"                       , FOR_V2(0x04F958, 0x01F6CE) },
-	{ "Asia/Saigon"                       , FOR_V2(0x04FA0F, 0x01F728) },
-	{ "Asia/Sakhalin"                     , FOR_V2(0x04FB90, 0x01F7D7) },
-	{ "Asia/Samarkand"                    , FOR_V2(0x050082, 0x01F9D9) },
-	{ "Asia/Seoul"                        , FOR_V2(0x050350, 0x01FB14) },
-	{ "Asia/Shanghai"                     , FOR_V2(0x050597, 0x01FC0C) },
-	{ "Asia/Singapore"                    , FOR_V2(0x05074D, 0x01FCC9) },
-	{ "Asia/Srednekolymsk"                , FOR_V2(0x050905, 0x01FD91) },
-	{ "Asia/Taipei"                       , FOR_V2(0x050E05, 0x01FF9E) },
-	{ "Asia/Tashkent"                     , FOR_V2(0x051131, 0x0200E0) },
-	{ "Asia/Tbilisi"                      , FOR_V2(0x0513F5, 0x020216) },
-	{ "Asia/Tehran"                       , FOR_V2(0x051877, 0x0203E9) },
-	{ "Asia/Tel_Aviv"                     , FOR_V2(0x051F00, 0x020664) },
-	{ "Asia/Thimbu"                       , FOR_V2(0x0527E5, 0x0209AC) },
-	{ "Asia/Thimphu"                      , FOR_V2(0x0528C2, 0x020A17) },
-	{ "Asia/Tokyo"                        , FOR_V2(0x05299F, 0x020A82) },
-	{ "Asia/Ujung_Pandang"                , FOR_V2(0x052B0E, 0x020B19) },
-	{ "Asia/Ulaanbaatar"                  , FOR_V2(0x052C32, 0x020BA3) },
-	{ "Asia/Ulan_Bator"                   , FOR_V2(0x053235, 0x020DE9) },
-	{ "Asia/Urumqi"                       , FOR_V2(0x05382A, 0x021021) },
-	{ "Asia/Ust-Nera"                     , FOR_V2(0x0538EE, 0x021088) },
-	{ "Asia/Vientiane"                    , FOR_V2(0x053E1E, 0x0212A7) },
-	{ "Asia/Vladivostok"                  , FOR_V2(0x053EF6, 0x02130D) },
-	{ "Asia/Yakutsk"                      , FOR_V2(0x0543E3, 0x02150C) },
-	{ "Asia/Yekaterinburg"                , FOR_V2(0x0548CF, 0x02170B) },
-	{ "Asia/Yerevan"                      , FOR_V2(0x054E22, 0x021939) },
-	{ "Atlantic/Azores"                   , FOR_V2(0x05532B, 0x021B3E) },
-	{ "Atlantic/Bermuda"                  , FOR_V2(0x0560DD, 0x022052) },
-	{ "Atlantic/Canary"                   , FOR_V2(0x0568BD, 0x022338) },
-	{ "Atlantic/Cape_Verde"               , FOR_V2(0x057050, 0x022613) },
-	{ "Atlantic/Faeroe"                   , FOR_V2(0x05715A, 0x022691) },
-	{ "Atlantic/Faroe"                    , FOR_V2(0x05788B, 0x02293A) },
-	{ "Atlantic/Jan_Mayen"                , FOR_V2(0x057FBC, 0x022BE3) },
-	{ "Atlantic/Madeira"                  , FOR_V2(0x058893, 0x022F26) },
-	{ "Atlantic/Reykjavik"                , FOR_V2(0x059644, 0x023440) },
-	{ "Atlantic/South_Georgia"            , FOR_V2(0x059AF6, 0x023612) },
-	{ "Atlantic/St_Helena"                , FOR_V2(0x059B96, 0x023656) },
-	{ "Atlantic/Stanley"                  , FOR_V2(0x059C4C, 0x0236B0) },
-	{ "Australia/ACT"                     , FOR_V2(0x05A136, 0x023897) },
-	{ "Australia/Adelaide"                , FOR_V2(0x05A9F1, 0x023BCB) },
-	{ "Australia/Brisbane"                , FOR_V2(0x05B2CA, 0x023F0A) },
-	{ "Australia/Broken_Hill"             , FOR_V2(0x05B4B5, 0x023FE8) },
-	{ "Australia/Canberra"                , FOR_V2(0x05BDBF, 0x024339) },
-	{ "Australia/Currie"                  , FOR_V2(0x05C67A, 0x02466D) },
-	{ "Australia/Darwin"                  , FOR_V2(0x05CF4B, 0x0249B7) },
-	{ "Australia/Eucla"                   , FOR_V2(0x05D0AC, 0x024A50) },
-	{ "Australia/Hobart"                  , FOR_V2(0x05D2BD, 0x024B3D) },
-	{ "Australia/LHI"                     , FOR_V2(0x05DC01, 0x024EB2) },
-	{ "Australia/Lindeman"                , FOR_V2(0x05E350, 0x025164) },
-	{ "Australia/Lord_Howe"               , FOR_V2(0x05E582, 0x02525C) },
-	{ "Australia/Melbourne"               , FOR_V2(0x05ECE1, 0x02551E) },
-	{ "Australia/North"                   , FOR_V2(0x05F5A4, 0x02585A) },
-	{ "Australia/NSW"                     , FOR_V2(0x05F6F3, 0x0258E1) },
-	{ "Australia/Perth"                   , FOR_V2(0x05FFAE, 0x025C15) },
-	{ "Australia/Queensland"              , FOR_V2(0x0601BB, 0x025D04) },
-	{ "Australia/South"                   , FOR_V2(0x06038B, 0x025DC7) },
-	{ "Australia/Sydney"                  , FOR_V2(0x060C55, 0x0260F7) },
-	{ "Australia/Tasmania"                , FOR_V2(0x061530, 0x02644B) },
-	{ "Australia/Victoria"                , FOR_V2(0x061E5B, 0x0267A7) },
-	{ "Australia/West"                    , FOR_V2(0x062716, 0x026ADB) },
-	{ "Australia/Yancowinna"              , FOR_V2(0x062901, 0x026BA8) },
-	{ "Brazil/Acre"                       , FOR_V2(0x0631EF, 0x026EDD) },
-	{ "Brazil/DeNoronha"                  , FOR_V2(0x06348B, 0x026FEE) },
-	{ "Brazil/East"                       , FOR_V2(0x06376F, 0x027113) },
-	{ "Brazil/West"                       , FOR_V2(0x063F5A, 0x0273F5) },
-	{ "Canada/Atlantic"                   , FOR_V2(0x0641CE, 0x0274F2) },
-	{ "Canada/Central"                    , FOR_V2(0x064F48, 0x0279DF) },
-	{ "Canada/East-Saskatchewan"          , FOR_V2(0x065A9F, 0x027E0A) },
-	{ "Canada/Eastern"                    , FOR_V2(0x065E8D, 0x027F98) },
-	{ "Canada/Mountain"                   , FOR_V2(0x066C48, 0x028499) },
-	{ "Canada/Newfoundland"               , FOR_V2(0x0675B6, 0x028814) },
-	{ "Canada/Pacific"                    , FOR_V2(0x068412, 0x028D58) },
-	{ "Canada/Saskatchewan"               , FOR_V2(0x068F73, 0x029182) },
-	{ "Canada/Yukon"                      , FOR_V2(0x069361, 0x029310) },
-	{ "CET"                               , FOR_V2(0x069B9A, 0x029624) },
-	{ "Chile/Continental"                 , FOR_V2(0x06A3DC, 0x02992D) },
-	{ "Chile/EasterIsland"                , FOR_V2(0x06AB59, 0x029C02) },
-	{ "CST6CDT"                           , FOR_V2(0x06B1B3, 0x029E6D) },
-	{ "Cuba"                              , FOR_V2(0x06BAB5, 0x02A1BE) },
-	{ "EET"                               , FOR_V2(0x06C446, 0x02A542) },
-	{ "Egypt"                             , FOR_V2(0x06CBA6, 0x02A7F5) },
-	{ "Eire"                              , FOR_V2(0x06D366, 0x02AAD5) },
-	{ "EST"                               , FOR_V2(0x06E159, 0x02AFF7) },
-	{ "EST5EDT"                           , FOR_V2(0x06E1E4, 0x02B03B) },
-	{ "Etc/GMT"                           , FOR_V2(0x06EAE6, 0x02B38C) },
-	{ "Etc/GMT+0"                         , FOR_V2(0x06EB71, 0x02B3D0) },
-	{ "Etc/GMT+1"                         , FOR_V2(0x06EBFC, 0x02B414) },
-	{ "Etc/GMT+10"                        , FOR_V2(0x06EC8F, 0x02B45A) },
-	{ "Etc/GMT+11"                        , FOR_V2(0x06ED26, 0x02B4A1) },
-	{ "Etc/GMT+12"                        , FOR_V2(0x06EDBD, 0x02B4E8) },
-	{ "Etc/GMT+2"                         , FOR_V2(0x06EE54, 0x02B52F) },
-	{ "Etc/GMT+3"                         , FOR_V2(0x06EEE7, 0x02B575) },
-	{ "Etc/GMT+4"                         , FOR_V2(0x06EF7A, 0x02B5BB) },
-	{ "Etc/GMT+5"                         , FOR_V2(0x06F00D, 0x02B601) },
-	{ "Etc/GMT+6"                         , FOR_V2(0x06F0A0, 0x02B647) },
-	{ "Etc/GMT+7"                         , FOR_V2(0x06F133, 0x02B68D) },
-	{ "Etc/GMT+8"                         , FOR_V2(0x06F1C6, 0x02B6D3) },
-	{ "Etc/GMT+9"                         , FOR_V2(0x06F259, 0x02B719) },
-	{ "Etc/GMT-0"                         , FOR_V2(0x06F2EC, 0x02B75F) },
-	{ "Etc/GMT-1"                         , FOR_V2(0x06F377, 0x02B7A3) },
-	{ "Etc/GMT-10"                        , FOR_V2(0x06F40B, 0x02B7E9) },
-	{ "Etc/GMT-11"                        , FOR_V2(0x06F4A3, 0x02B830) },
-	{ "Etc/GMT-12"                        , FOR_V2(0x06F53B, 0x02B877) },
-	{ "Etc/GMT-13"                        , FOR_V2(0x06F5D3, 0x02B8BE) },
-	{ "Etc/GMT-14"                        , FOR_V2(0x06F66B, 0x02B905) },
-	{ "Etc/GMT-2"                         , FOR_V2(0x06F703, 0x02B94C) },
-	{ "Etc/GMT-3"                         , FOR_V2(0x06F797, 0x02B992) },
-	{ "Etc/GMT-4"                         , FOR_V2(0x06F82B, 0x02B9D8) },
-	{ "Etc/GMT-5"                         , FOR_V2(0x06F8BF, 0x02BA1E) },
-	{ "Etc/GMT-6"                         , FOR_V2(0x06F953, 0x02BA64) },
-	{ "Etc/GMT-7"                         , FOR_V2(0x06F9E7, 0x02BAAA) },
-	{ "Etc/GMT-8"                         , FOR_V2(0x06FA7B, 0x02BAF0) },
-	{ "Etc/GMT-9"                         , FOR_V2(0x06FB0F, 0x02BB36) },
-	{ "Etc/GMT0"                          , FOR_V2(0x06FBA3, 0x02BB7C) },
-	{ "Etc/Greenwich"                     , FOR_V2(0x06FC2E, 0x02BBC0) },
-	{ "Etc/UCT"                           , FOR_V2(0x06FCB9, 0x02BC04) },
-	{ "Etc/Universal"                     , FOR_V2(0x06FD44, 0x02BC48) },
-	{ "Etc/UTC"                           , FOR_V2(0x06FDCF, 0x02BC8C) },
-	{ "Etc/Zulu"                          , FOR_V2(0x06FE5A, 0x02BCD0) },
-	{ "Europe/Amsterdam"                  , FOR_V2(0x06FEE5, 0x02BD14) },
-	{ "Europe/Andorra"                    , FOR_V2(0x070A70, 0x02C163) },
-	{ "Europe/Athens"                     , FOR_V2(0x071153, 0x02C3F0) },
-	{ "Europe/Belfast"                    , FOR_V2(0x071A3E, 0x02C744) },
-	{ "Europe/Belgrade"                   , FOR_V2(0x0728B1, 0x02CC8C) },
-	{ "Europe/Berlin"                     , FOR_V2(0x073062, 0x02CF66) },
-	{ "Europe/Bratislava"                 , FOR_V2(0x07399B, 0x02D2DB) },
-	{ "Europe/Brussels"                   , FOR_V2(0x074287, 0x02D61E) },
-	{ "Europe/Bucharest"                  , FOR_V2(0x074E2D, 0x02DA66) },
-	{ "Europe/Budapest"                   , FOR_V2(0x0756E6, 0x02DDA1) },
-	{ "Europe/Busingen"                   , FOR_V2(0x076057, 0x02E11B) },
-	{ "Europe/Chisinau"                   , FOR_V2(0x0767E9, 0x02E3E3) },
-	{ "Europe/Copenhagen"                 , FOR_V2(0x077174, 0x02E782) },
-	{ "Europe/Dublin"                     , FOR_V2(0x0779F0, 0x02EA9D) },
-	{ "Europe/Gibraltar"                  , FOR_V2(0x0787E3, 0x02EFBF) },
-	{ "Europe/Guernsey"                   , FOR_V2(0x0793E4, 0x02F427) },
-	{ "Europe/Helsinki"                   , FOR_V2(0x07A257, 0x02F96F) },
-	{ "Europe/Isle_of_Man"                , FOR_V2(0x07A9D8, 0x02FC36) },
-	{ "Europe/Istanbul"                   , FOR_V2(0x07B84B, 0x03017E) },
-	{ "Europe/Jersey"                     , FOR_V2(0x07C312, 0x03057C) },
-	{ "Europe/Kaliningrad"                , FOR_V2(0x07D185, 0x030AC4) },
-	{ "Europe/Kiev"                       , FOR_V2(0x07D7B6, 0x030D48) },
-	{ "Europe/Lisbon"                     , FOR_V2(0x07E001, 0x031075) },
-	{ "Europe/Ljubljana"                  , FOR_V2(0x07ED92, 0x03157E) },
-	{ "Europe/London"                     , FOR_V2(0x07F543, 0x031858) },
-	{ "Europe/Luxembourg"                 , FOR_V2(0x0803B6, 0x031DA0) },
-	{ "Europe/Madrid"                     , FOR_V2(0x080F60, 0x0321FB) },
-	{ "Europe/Malta"                      , FOR_V2(0x0819AF, 0x0325D2) },
-	{ "Europe/Mariehamn"                  , FOR_V2(0x082400, 0x03299C) },
-	{ "Europe/Minsk"                      , FOR_V2(0x082B81, 0x032C63) },
-	{ "Europe/Monaco"                     , FOR_V2(0x0830E5, 0x032E87) },
-	{ "Europe/Moscow"                     , FOR_V2(0x083C7A, 0x0332D3) },
-	{ "Europe/Nicosia"                    , FOR_V2(0x084295, 0x03354E) },
-	{ "Europe/Oslo"                       , FOR_V2(0x084A81, 0x03383B) },
-	{ "Europe/Paris"                      , FOR_V2(0x085358, 0x033B7E) },
-	{ "Europe/Podgorica"                  , FOR_V2(0x085EFF, 0x033FD5) },
-	{ "Europe/Prague"                     , FOR_V2(0x0866B0, 0x0342AF) },
-	{ "Europe/Riga"                       , FOR_V2(0x086F9C, 0x0345F2) },
-	{ "Europe/Rome"                       , FOR_V2(0x087863, 0x034948) },
-	{ "Europe/Samara"                     , FOR_V2(0x0882E5, 0x034D1C) },
-	{ "Europe/San_Marino"                 , FOR_V2(0x08889C, 0x034F92) },
-	{ "Europe/Sarajevo"                   , FOR_V2(0x08931E, 0x035366) },
-	{ "Europe/Simferopol"                 , FOR_V2(0x089ACF, 0x035640) },
-	{ "Europe/Skopje"                     , FOR_V2(0x08A0BF, 0x0358A5) },
-	{ "Europe/Sofia"                      , FOR_V2(0x08A870, 0x035B7F) },
-	{ "Europe/Stockholm"                  , FOR_V2(0x08B0CE, 0x035E98) },
-	{ "Europe/Tallinn"                    , FOR_V2(0x08B858, 0x036158) },
-	{ "Europe/Tirane"                     , FOR_V2(0x08C0EF, 0x03649E) },
-	{ "Europe/Tiraspol"                   , FOR_V2(0x08C92D, 0x0367A9) },
-	{ "Europe/Uzhgorod"                   , FOR_V2(0x08D2B8, 0x036B48) },
-	{ "Europe/Vaduz"                      , FOR_V2(0x08DB03, 0x036E70) },
-	{ "Europe/Vatican"                    , FOR_V2(0x08E28D, 0x037130) },
-	{ "Europe/Vienna"                     , FOR_V2(0x08ED0F, 0x037504) },
-	{ "Europe/Vilnius"                    , FOR_V2(0x08F5D8, 0x037842) },
-	{ "Europe/Volgograd"                  , FOR_V2(0x08FE7B, 0x037B92) },
-	{ "Europe/Warsaw"                     , FOR_V2(0x0903CB, 0x037DC4) },
-	{ "Europe/Zagreb"                     , FOR_V2(0x090E68, 0x0381B6) },
-	{ "Europe/Zaporozhye"                 , FOR_V2(0x091619, 0x038490) },
-	{ "Europe/Zurich"                     , FOR_V2(0x091E92, 0x0387E2) },
-	{ "Factory"                           , FOR_V2(0x09261C, 0x038AA2) },
-	{ "GB"                                , FOR_V2(0x092730, 0x038B13) },
-	{ "GB-Eire"                           , FOR_V2(0x0935A3, 0x03905B) },
-	{ "GMT"                               , FOR_V2(0x094416, 0x0395A3) },
-	{ "GMT+0"                             , FOR_V2(0x0944A1, 0x0395E7) },
-	{ "GMT-0"                             , FOR_V2(0x09452C, 0x03962B) },
-	{ "GMT0"                              , FOR_V2(0x0945B7, 0x03966F) },
-	{ "Greenwich"                         , FOR_V2(0x094642, 0x0396B3) },
-	{ "Hongkong"                          , FOR_V2(0x0946CD, 0x0396F7) },
-	{ "HST"                               , FOR_V2(0x094B7E, 0x0398C6) },
-	{ "Iceland"                           , FOR_V2(0x094C0A, 0x03990A) },
-	{ "Indian/Antananarivo"               , FOR_V2(0x0950BC, 0x039ADC) },
-	{ "Indian/Chagos"                     , FOR_V2(0x0951E3, 0x039B68) },
-	{ "Indian/Christmas"                  , FOR_V2(0x0952B8, 0x039BCF) },
-	{ "Indian/Cocos"                      , FOR_V2(0x095359, 0x039C13) },
-	{ "Indian/Comoro"                     , FOR_V2(0x0953FD, 0x039C57) },
-	{ "Indian/Kerguelen"                  , FOR_V2(0x095524, 0x039CE3) },
-	{ "Indian/Mahe"                       , FOR_V2(0x0955DB, 0x039D3D) },
-	{ "Indian/Maldives"                   , FOR_V2(0x095692, 0x039D97) },
-	{ "Indian/Mauritius"                  , FOR_V2(0x09576A, 0x039DFD) },
-	{ "Indian/Mayotte"                    , FOR_V2(0x095873, 0x039E78) },
-	{ "Indian/Reunion"                    , FOR_V2(0x09599A, 0x039F04) },
-	{ "Iran"                              , FOR_V2(0x095A51, 0x039F5E) },
-	{ "Israel"                            , FOR_V2(0x0960DA, 0x03A1D9) },
-	{ "Jamaica"                           , FOR_V2(0x0969BF, 0x03A521) },
-	{ "Japan"                             , FOR_V2(0x096BC6, 0x03A5F7) },
-	{ "Kwajalein"                         , FOR_V2(0x096D35, 0x03A68E) },
-	{ "Libya"                             , FOR_V2(0x096E2E, 0x03A702) },
-	{ "MET"                               , FOR_V2(0x0970C9, 0x03A810) },
-	{ "Mexico/BajaNorte"                  , FOR_V2(0x09790B, 0x03AB19) },
-	{ "Mexico/BajaSur"                    , FOR_V2(0x09824B, 0x03AE87) },
-	{ "Mexico/General"                    , FOR_V2(0x098873, 0x03B0D9) },
-	{ "MST"                               , FOR_V2(0x098ED1, 0x03B33C) },
-	{ "MST7MDT"                           , FOR_V2(0x098F5C, 0x03B380) },
-	{ "Navajo"                            , FOR_V2(0x09985E, 0x03B6D1) },
-	{ "NZ"                                , FOR_V2(0x09A1FF, 0x03BA5B) },
-	{ "NZ-CHAT"                           , FOR_V2(0x09ABA7, 0x03BDEA) },
-	{ "Pacific/Apia"                      , FOR_V2(0x09B3BC, 0x03C0DF) },
-	{ "Pacific/Auckland"                  , FOR_V2(0x09B816, 0x03C288) },
-	{ "Pacific/Bougainville"              , FOR_V2(0x09C1CC, 0x03C625) },
-	{ "Pacific/Chatham"                   , FOR_V2(0x09C2FC, 0x03C6AE) },
-	{ "Pacific/Chuuk"                     , FOR_V2(0x09CB20, 0x03C9B2) },
-	{ "Pacific/Easter"                    , FOR_V2(0x09CBD9, 0x03CA0B) },
-	{ "Pacific/Efate"                     , FOR_V2(0x09D240, 0x03CC83) },
-	{ "Pacific/Enderbury"                 , FOR_V2(0x09D42A, 0x03CD4E) },
-	{ "Pacific/Fakaofo"                   , FOR_V2(0x09D52B, 0x03CDCD) },
-	{ "Pacific/Fiji"                      , FOR_V2(0x09D5FC, 0x03CE2F) },
-	{ "Pacific/Funafuti"                  , FOR_V2(0x09DA39, 0x03CFC7) },
-	{ "Pacific/Galapagos"                 , FOR_V2(0x09DADB, 0x03D00B) },
-	{ "Pacific/Gambier"                   , FOR_V2(0x09DBCB, 0x03D088) },
-	{ "Pacific/Guadalcanal"               , FOR_V2(0x09DC93, 0x03D0F2) },
-	{ "Pacific/Guam"                      , FOR_V2(0x09DD4B, 0x03D14C) },
-	{ "Pacific/Honolulu"                  , FOR_V2(0x09DE38, 0x03D1B3) },
-	{ "Pacific/Johnston"                  , FOR_V2(0x09DF5E, 0x03D23B) },
-	{ "Pacific/Kiritimati"                , FOR_V2(0x09E08C, 0x03D2CB) },
-	{ "Pacific/Kosrae"                    , FOR_V2(0x09E18A, 0x03D347) },
-	{ "Pacific/Kwajalein"                 , FOR_V2(0x09E282, 0x03D3BD) },
-	{ "Pacific/Majuro"                    , FOR_V2(0x09E384, 0x03D43A) },
-	{ "Pacific/Marquesas"                 , FOR_V2(0x09E463, 0x03D4AA) },
-	{ "Pacific/Midway"                    , FOR_V2(0x09E530, 0x03D516) },
-	{ "Pacific/Nauru"                     , FOR_V2(0x09E65A, 0x03D5A8) },
-	{ "Pacific/Niue"                      , FOR_V2(0x09E764, 0x03D625) },
-	{ "Pacific/Norfolk"                   , FOR_V2(0x09E852, 0x03D694) },
-	{ "Pacific/Noumea"                    , FOR_V2(0x09E97F, 0x03D71E) },
-	{ "Pacific/Pago_Pago"                 , FOR_V2(0x09EAC5, 0x03D7B3) },
-	{ "Pacific/Palau"                     , FOR_V2(0x09EBE1, 0x03D837) },
-	{ "Pacific/Pitcairn"                  , FOR_V2(0x09EC82, 0x03D87B) },
-	{ "Pacific/Pohnpei"                   , FOR_V2(0x09ED59, 0x03D8E1) },
-	{ "Pacific/Ponape"                    , FOR_V2(0x09EE0E, 0x03D936) },
-	{ "Pacific/Port_Moresby"              , FOR_V2(0x09EEB3, 0x03D97B) },
-	{ "Pacific/Rarotonga"                 , FOR_V2(0x09EF79, 0x03D9CD) },
-	{ "Pacific/Saipan"                    , FOR_V2(0x09F1C3, 0x03DABA) },
-	{ "Pacific/Samoa"                     , FOR_V2(0x09F2B0, 0x03DB21) },
-	{ "Pacific/Tahiti"                    , FOR_V2(0x09F3CC, 0x03DBA5) },
-	{ "Pacific/Tarawa"                    , FOR_V2(0x09F495, 0x03DC0F) },
-	{ "Pacific/Tongatapu"                 , FOR_V2(0x09F549, 0x03DC63) },
-	{ "Pacific/Truk"                      , FOR_V2(0x09F6A8, 0x03DD00) },
-	{ "Pacific/Wake"                      , FOR_V2(0x09F74D, 0x03DD45) },
-	{ "Pacific/Wallis"                    , FOR_V2(0x09F7FD, 0x03DD95) },
-	{ "Pacific/Yap"                       , FOR_V2(0x09F89F, 0x03DDD9) },
-	{ "Poland"                            , FOR_V2(0x09F944, 0x03DE1E) },
-	{ "Portugal"                          , FOR_V2(0x0A03E1, 0x03E210) },
-	{ "PRC"                               , FOR_V2(0x0A116A, 0x03E711) },
-	{ "PST8PDT"                           , FOR_V2(0x0A1314, 0x03E7C2) },
-	{ "ROC"                               , FOR_V2(0x0A1C16, 0x03EB13) },
-	{ "ROK"                               , FOR_V2(0x0A1F42, 0x03EC55) },
-	{ "Singapore"                         , FOR_V2(0x0A2189, 0x03ED4D) },
-	{ "Turkey"                            , FOR_V2(0x0A2341, 0x03EE15) },
-	{ "UCT"                               , FOR_V2(0x0A2E08, 0x03F213) },
-	{ "Universal"                         , FOR_V2(0x0A2E93, 0x03F257) },
-	{ "US/Alaska"                         , FOR_V2(0x0A2F1E, 0x03F29B) },
-	{ "US/Aleutian"                       , FOR_V2(0x0A387A, 0x03F615) },
-	{ "US/Arizona"                        , FOR_V2(0x0A41C3, 0x03F986) },
-	{ "US/Central"                        , FOR_V2(0x0A4330, 0x03FA25) },
-	{ "US/East-Indiana"                   , FOR_V2(0x0A513D, 0x03FF49) },
-	{ "US/Eastern"                        , FOR_V2(0x0A57D4, 0x0401C4) },
-	{ "US/Hawaii"                         , FOR_V2(0x0A65B9, 0x0406D4) },
-	{ "US/Indiana-Starke"                 , FOR_V2(0x0A66D9, 0x040756) },
-	{ "US/Michigan"                       , FOR_V2(0x0A706A, 0x040AE0) },
-	{ "US/Mountain"                       , FOR_V2(0x0A791E, 0x040E1C) },
-	{ "US/Pacific"                        , FOR_V2(0x0A82BF, 0x0411A6) },
-	{ "US/Pacific-New"                    , FOR_V2(0x0A8DE8, 0x0415BC) },
-	{ "US/Samoa"                          , FOR_V2(0x0A9911, 0x0419D2) },
-	{ "UTC"                               , FOR_V2(0x0A9A2D, 0x041A56) },
-	{ "W-SU"                              , FOR_V2(0x0A9AB8, 0x041A9A) },
-	{ "WET"                               , FOR_V2(0x0AA0BC, 0x041CFE) },
-	{ "Zulu"                              , FOR_V2(0x0AA819, 0x041FB1) },
+	{ "America/Chicago"                   , FOR_V2(0x00FE96, 0x00677F) },
+	{ "America/Chihuahua"                 , FOR_V2(0x010CAF, 0x006CAF) },
+	{ "America/Coral_Harbour"             , FOR_V2(0x0112E2, 0x006F27) },
+	{ "America/Cordoba"                   , FOR_V2(0x011447, 0x006FCA) },
+	{ "America/Costa_Rica"                , FOR_V2(0x0118BC, 0x007189) },
+	{ "America/Creston"                   , FOR_V2(0x011A1D, 0x007224) },
+	{ "America/Cuiaba"                    , FOR_V2(0x011B44, 0x0072C9) },
+	{ "America/Curacao"                   , FOR_V2(0x01231E, 0x0075AC) },
+	{ "America/Danmarkshavn"              , FOR_V2(0x0123FA, 0x007617) },
+	{ "America/Dawson"                    , FOR_V2(0x0126F1, 0x007760) },
+	{ "America/Dawson_Creek"              , FOR_V2(0x012F44, 0x007A8E) },
+	{ "America/Denver"                    , FOR_V2(0x0133BC, 0x007C79) },
+	{ "America/Detroit"                   , FOR_V2(0x013D6A, 0x008010) },
+	{ "America/Dominica"                  , FOR_V2(0x014646, 0x008374) },
+	{ "America/Edmonton"                  , FOR_V2(0x0146FC, 0x0083CE) },
+	{ "America/Eirunepe"                  , FOR_V2(0x0150AC, 0x00878B) },
+	{ "America/El_Salvador"               , FOR_V2(0x01536E, 0x0088B0) },
+	{ "America/Ensenada"                  , FOR_V2(0x015474, 0x00892A) },
+	{ "America/Fort_Nelson"               , FOR_V2(0x015DB4, 0x008C98) },
+	{ "America/Fort_Wayne"                , FOR_V2(0x0166BF, 0x009019) },
+	{ "America/Fortaleza"                 , FOR_V2(0x016D56, 0x009294) },
+	{ "America/Glace_Bay"                 , FOR_V2(0x017058, 0x0093D7) },
+	{ "America/Godthab"                   , FOR_V2(0x01792B, 0x009735) },
+	{ "America/Goose_Bay"                 , FOR_V2(0x01809A, 0x0099FE) },
+	{ "America/Grand_Turk"                , FOR_V2(0x018D62, 0x009ED4) },
+	{ "America/Grenada"                   , FOR_V2(0x019275, 0x00A0C4) },
+	{ "America/Guadeloupe"                , FOR_V2(0x01932B, 0x00A11E) },
+	{ "America/Guatemala"                 , FOR_V2(0x0193E1, 0x00A178) },
+	{ "America/Guayaquil"                 , FOR_V2(0x01951F, 0x00A206) },
+	{ "America/Guyana"                    , FOR_V2(0x0195FE, 0x00A274) },
+	{ "America/Halifax"                   , FOR_V2(0x019718, 0x00A2FA) },
+	{ "America/Havana"                    , FOR_V2(0x01A4BE, 0x00A813) },
+	{ "America/Hermosillo"                , FOR_V2(0x01AE4F, 0x00AB97) },
+	{ "America/Indiana/Indianapolis"      , FOR_V2(0x01B040, 0x00AC82) },
+	{ "America/Indiana/Knox"              , FOR_V2(0x01B6FE, 0x00AF24) },
+	{ "America/Indiana/Marengo"           , FOR_V2(0x01C0B5, 0x00B2D4) },
+	{ "America/Indiana/Petersburg"        , FOR_V2(0x01C7AC, 0x00B58B) },
+	{ "America/Indiana/Tell_City"         , FOR_V2(0x01CF55, 0x00B87F) },
+	{ "America/Indiana/Vevay"             , FOR_V2(0x01D64D, 0x00BB39) },
+	{ "America/Indiana/Vincennes"         , FOR_V2(0x01DC13, 0x00BD85) },
+	{ "America/Indiana/Winamac"           , FOR_V2(0x01E306, 0x00C04A) },
+	{ "America/Indianapolis"              , FOR_V2(0x01EA34, 0x00C314) },
+	{ "America/Inuvik"                    , FOR_V2(0x01F0CB, 0x00C58F) },
+	{ "America/Iqaluit"                   , FOR_V2(0x01F889, 0x00C88B) },
+	{ "America/Jamaica"                   , FOR_V2(0x0200BF, 0x00CBC2) },
+	{ "America/Jujuy"                     , FOR_V2(0x0202C6, 0x00CC98) },
+	{ "America/Juneau"                    , FOR_V2(0x02074B, 0x00CE63) },
+	{ "America/Kentucky/Louisville"       , FOR_V2(0x0210AF, 0x00D1F2) },
+	{ "America/Kentucky/Monticello"       , FOR_V2(0x021BC1, 0x00D621) },
+	{ "America/Knox_IN"                   , FOR_V2(0x02252C, 0x00D9B7) },
+	{ "America/Kralendijk"                , FOR_V2(0x022EBD, 0x00DD41) },
+	{ "America/La_Paz"                    , FOR_V2(0x022F99, 0x00DDAC) },
+	{ "America/Lima"                      , FOR_V2(0x023098, 0x00DE24) },
+	{ "America/Los_Angeles"               , FOR_V2(0x023245, 0x00DED9) },
+	{ "America/Louisville"                , FOR_V2(0x023D7A, 0x00E2FB) },
+	{ "America/Lower_Princes"             , FOR_V2(0x024863, 0x00E701) },
+	{ "America/Maceio"                    , FOR_V2(0x02493F, 0x00E76C) },
+	{ "America/Managua"                   , FOR_V2(0x024C4F, 0x00E8AB) },
+	{ "America/Manaus"                    , FOR_V2(0x024E2A, 0x00E977) },
+	{ "America/Marigot"                   , FOR_V2(0x0250A8, 0x00EA7E) },
+	{ "America/Martinique"                , FOR_V2(0x02515E, 0x00EAD8) },
+	{ "America/Matamoros"                 , FOR_V2(0x02526B, 0x00EB55) },
+	{ "America/Mazatlan"                  , FOR_V2(0x025849, 0x00EDB3) },
+	{ "America/Mendoza"                   , FOR_V2(0x025E99, 0x00F02D) },
+	{ "America/Menominee"                 , FOR_V2(0x02633A, 0x00F202) },
+	{ "America/Merida"                    , FOR_V2(0x026C78, 0x00F59C) },
+	{ "America/Metlakatla"                , FOR_V2(0x027254, 0x00F7E4) },
+	{ "America/Mexico_City"               , FOR_V2(0x027806, 0x00FA19) },
+	{ "America/Miquelon"                  , FOR_V2(0x027E81, 0x00FC99) },
+	{ "America/Moncton"                   , FOR_V2(0x028521, 0x00FF10) },
+	{ "America/Monterrey"                 , FOR_V2(0x0291A5, 0x0103B8) },
+	{ "America/Montevideo"                , FOR_V2(0x02978D, 0x010620) },
+	{ "America/Montreal"                  , FOR_V2(0x029D80, 0x01086A) },
+	{ "America/Montserrat"                , FOR_V2(0x02AB3B, 0x010D6B) },
+	{ "America/Nassau"                    , FOR_V2(0x02ABF1, 0x010DC5) },
+	{ "America/New_York"                  , FOR_V2(0x02B4E9, 0x01110F) },
+	{ "America/Nipigon"                   , FOR_V2(0x02C2DA, 0x01162B) },
+	{ "America/Nome"                      , FOR_V2(0x02CB84, 0x01198D) },
+	{ "America/Noronha"                   , FOR_V2(0x02D4F1, 0x011D1C) },
+	{ "America/North_Dakota/Beulah"       , FOR_V2(0x02D7E5, 0x011E51) },
+	{ "America/North_Dakota/Center"       , FOR_V2(0x02E171, 0x0121F6) },
+	{ "America/North_Dakota/New_Salem"    , FOR_V2(0x02EAFD, 0x01259B) },
+	{ "America/Ojinaga"                   , FOR_V2(0x02F49E, 0x012955) },
+	{ "America/Panama"                    , FOR_V2(0x02FAC7, 0x012BC3) },
+	{ "America/Pangnirtung"               , FOR_V2(0x02FB9E, 0x012C29) },
+	{ "America/Paramaribo"                , FOR_V2(0x030409, 0x012F74) },
+	{ "America/Phoenix"                   , FOR_V2(0x030549, 0x01300B) },
+	{ "America/Port-au-Prince"            , FOR_V2(0x0306E6, 0x0130DA) },
+	{ "America/Port_of_Spain"             , FOR_V2(0x030CBD, 0x01330B) },
+	{ "America/Porto_Acre"                , FOR_V2(0x030D73, 0x013365) },
+	{ "America/Porto_Velho"               , FOR_V2(0x03100F, 0x013476) },
+	{ "America/Puerto_Rico"               , FOR_V2(0x03126F, 0x013571) },
+	{ "America/Rainy_River"               , FOR_V2(0x03137A, 0x0135ED) },
+	{ "America/Rankin_Inlet"              , FOR_V2(0x031C0B, 0x013936) },
+	{ "America/Recife"                    , FOR_V2(0x0323BF, 0x013C29) },
+	{ "America/Regina"                    , FOR_V2(0x0326AD, 0x013D58) },
+	{ "America/Resolute"                  , FOR_V2(0x032AD0, 0x013F1B) },
+	{ "America/Rio_Branco"                , FOR_V2(0x033286, 0x014210) },
+	{ "America/Rosario"                   , FOR_V2(0x033526, 0x014325) },
+	{ "America/Santa_Isabel"              , FOR_V2(0x03399B, 0x0144E4) },
+	{ "America/Santarem"                  , FOR_V2(0x0342DB, 0x014852) },
+	{ "America/Santiago"                  , FOR_V2(0x03455F, 0x01495C) },
+	{ "America/Santo_Domingo"             , FOR_V2(0x034CEA, 0x014C3F) },
+	{ "America/Sao_Paulo"                 , FOR_V2(0x034EDF, 0x014D16) },
+	{ "America/Scoresbysund"              , FOR_V2(0x0356FC, 0x01502A) },
+	{ "America/Shiprock"                  , FOR_V2(0x035EAC, 0x01531D) },
+	{ "America/Sitka"                     , FOR_V2(0x03684D, 0x0156A7) },
+	{ "America/St_Barthelemy"             , FOR_V2(0x0371AF, 0x015A34) },
+	{ "America/St_Johns"                  , FOR_V2(0x037265, 0x015A8E) },
+	{ "America/St_Kitts"                  , FOR_V2(0x0380E9, 0x015FFA) },
+	{ "America/St_Lucia"                  , FOR_V2(0x03819F, 0x016054) },
+	{ "America/St_Thomas"                 , FOR_V2(0x038255, 0x0160AE) },
+	{ "America/St_Vincent"                , FOR_V2(0x03830B, 0x016108) },
+	{ "America/Swift_Current"             , FOR_V2(0x0383C1, 0x016162) },
+	{ "America/Tegucigalpa"               , FOR_V2(0x038639, 0x016288) },
+	{ "America/Thule"                     , FOR_V2(0x03875B, 0x01630C) },
+	{ "America/Thunder_Bay"               , FOR_V2(0x038D6F, 0x016558) },
+	{ "America/Tijuana"                   , FOR_V2(0x039641, 0x0168B2) },
+	{ "America/Toronto"                   , FOR_V2(0x039FA8, 0x016C47) },
+	{ "America/Tortola"                   , FOR_V2(0x03AD93, 0x017178) },
+	{ "America/Vancouver"                 , FOR_V2(0x03AE49, 0x0171D2) },
+	{ "America/Virgin"                    , FOR_V2(0x03B9CE, 0x017620) },
+	{ "America/Whitehorse"                , FOR_V2(0x03BA84, 0x01767A) },
+	{ "America/Winnipeg"                  , FOR_V2(0x03C2D7, 0x0179A8) },
+	{ "America/Yakutat"                   , FOR_V2(0x03CE54, 0x017DF9) },
+	{ "America/Yellowknife"               , FOR_V2(0x03D78D, 0x018175) },
+	{ "Antarctica/Casey"                  , FOR_V2(0x03DF82, 0x01848A) },
+	{ "Antarctica/Davis"                  , FOR_V2(0x03E0BD, 0x01852D) },
+	{ "Antarctica/DumontDUrville"         , FOR_V2(0x03E208, 0x0185D3) },
+	{ "Antarctica/Macquarie"              , FOR_V2(0x03E31C, 0x018669) },
+	{ "Antarctica/Mawson"                 , FOR_V2(0x03E932, 0x0188C3) },
+	{ "Antarctica/McMurdo"                , FOR_V2(0x03EA23, 0x018944) },
+	{ "Antarctica/Palmer"                 , FOR_V2(0x03F3F8, 0x018D00) },
+	{ "Antarctica/Rothera"                , FOR_V2(0x03F9A9, 0x018F48) },
+	{ "Antarctica/South_Pole"             , FOR_V2(0x03FA82, 0x018FC3) },
+	{ "Antarctica/Syowa"                  , FOR_V2(0x04042A, 0x019352) },
+	{ "Antarctica/Troll"                  , FOR_V2(0x0404FC, 0x0193C5) },
+	{ "Antarctica/Vostok"                 , FOR_V2(0x0409AF, 0x01959C) },
+	{ "Arctic/Longyearbyen"               , FOR_V2(0x040A84, 0x019612) },
+	{ "Asia/Aden"                         , FOR_V2(0x04135B, 0x019955) },
+	{ "Asia/Almaty"                       , FOR_V2(0x041412, 0x0199AF) },
+	{ "Asia/Amman"                        , FOR_V2(0x0417D4, 0x019B33) },
+	{ "Asia/Anadyr"                       , FOR_V2(0x041F35, 0x019DEE) },
+	{ "Asia/Aqtau"                        , FOR_V2(0x042421, 0x019FFD) },
+	{ "Asia/Aqtobe"                       , FOR_V2(0x0428D4, 0x01A209) },
+	{ "Asia/Ashgabat"                     , FOR_V2(0x042D0B, 0x01A3C6) },
+	{ "Asia/Ashkhabad"                    , FOR_V2(0x042FB6, 0x01A4E8) },
+	{ "Asia/Baghdad"                      , FOR_V2(0x043261, 0x01A60A) },
+	{ "Asia/Bahrain"                      , FOR_V2(0x043649, 0x01A790) },
+	{ "Asia/Baku"                         , FOR_V2(0x043726, 0x01A7FB) },
+	{ "Asia/Bangkok"                      , FOR_V2(0x043ED6, 0x01AAE8) },
+	{ "Asia/Beirut"                       , FOR_V2(0x043FAE, 0x01AB4E) },
+	{ "Asia/Bishkek"                      , FOR_V2(0x044839, 0x01AE6C) },
+	{ "Asia/Brunei"                       , FOR_V2(0x044C6A, 0x01B01D) },
+	{ "Asia/Calcutta"                     , FOR_V2(0x044D3F, 0x01B084) },
+	{ "Asia/Chita"                        , FOR_V2(0x044E6E, 0x01B10E) },
+	{ "Asia/Choibalsan"                   , FOR_V2(0x0453A0, 0x01B33D) },
+	{ "Asia/Chongqing"                    , FOR_V2(0x0459EF, 0x01B5A9) },
+	{ "Asia/Chungking"                    , FOR_V2(0x045B99, 0x01B65A) },
+	{ "Asia/Colombo"                      , FOR_V2(0x045D43, 0x01B70B) },
+	{ "Asia/Dacca"                        , FOR_V2(0x045ED4, 0x01B7C0) },
+	{ "Asia/Damascus"                     , FOR_V2(0x046066, 0x01B877) },
+	{ "Asia/Dhaka"                        , FOR_V2(0x046982, 0x01BBCC) },
+	{ "Asia/Dili"                         , FOR_V2(0x046B14, 0x01BC83) },
+	{ "Asia/Dubai"                        , FOR_V2(0x046C55, 0x01BD1A) },
+	{ "Asia/Dushanbe"                     , FOR_V2(0x046D0C, 0x01BD74) },
+	{ "Asia/Gaza"                         , FOR_V2(0x046F7B, 0x01BE7C) },
+	{ "Asia/Harbin"                       , FOR_V2(0x04789B, 0x01C1E0) },
+	{ "Asia/Hebron"                       , FOR_V2(0x047A45, 0x01C291) },
+	{ "Asia/Ho_Chi_Minh"                  , FOR_V2(0x048380, 0x01C5FE) },
+	{ "Asia/Hong_Kong"                    , FOR_V2(0x048501, 0x01C6AD) },
+	{ "Asia/Hovd"                         , FOR_V2(0x0489B2, 0x01C87C) },
+	{ "Asia/Irkutsk"                      , FOR_V2(0x048FD2, 0x01CADF) },
+	{ "Asia/Istanbul"                     , FOR_V2(0x0494E0, 0x01CCEB) },
+	{ "Asia/Jakarta"                      , FOR_V2(0x049FA7, 0x01D0E9) },
+	{ "Asia/Jayapura"                     , FOR_V2(0x04A133, 0x01D1A4) },
+	{ "Asia/Jerusalem"                    , FOR_V2(0x04A261, 0x01D24E) },
+	{ "Asia/Kabul"                        , FOR_V2(0x04AB46, 0x01D596) },
+	{ "Asia/Kamchatka"                    , FOR_V2(0x04AC19, 0x01D5F8) },
+	{ "Asia/Karachi"                      , FOR_V2(0x04B0F4, 0x01D7FE) },
+	{ "Asia/Kashgar"                      , FOR_V2(0x04B293, 0x01D8B8) },
+	{ "Asia/Kathmandu"                    , FOR_V2(0x04B34A, 0x01D912) },
+	{ "Asia/Katmandu"                     , FOR_V2(0x04B42A, 0x01D97D) },
+	{ "Asia/Khandyga"                     , FOR_V2(0x04B50A, 0x01D9E8) },
+	{ "Asia/Kolkata"                      , FOR_V2(0x04BA63, 0x01DC1F) },
+	{ "Asia/Krasnoyarsk"                  , FOR_V2(0x04BB92, 0x01DCA9) },
+	{ "Asia/Kuala_Lumpur"                 , FOR_V2(0x04C081, 0x01DEAB) },
+	{ "Asia/Kuching"                      , FOR_V2(0x04C22E, 0x01DF79) },
+	{ "Asia/Kuwait"                       , FOR_V2(0x04C450, 0x01E06C) },
+	{ "Asia/Macao"                        , FOR_V2(0x04C507, 0x01E0C6) },
+	{ "Asia/Macau"                        , FOR_V2(0x04C82E, 0x01E206) },
+	{ "Asia/Magadan"                      , FOR_V2(0x04CB55, 0x01E346) },
+	{ "Asia/Makassar"                     , FOR_V2(0x04D05C, 0x01E55F) },
+	{ "Asia/Manila"                       , FOR_V2(0x04D1C8, 0x01E631) },
+	{ "Asia/Muscat"                       , FOR_V2(0x04D33D, 0x01E6CF) },
+	{ "Asia/Nicosia"                      , FOR_V2(0x04D3F4, 0x01E729) },
+	{ "Asia/Novokuznetsk"                 , FOR_V2(0x04DBE0, 0x01EA16) },
+	{ "Asia/Novosibirsk"                  , FOR_V2(0x04E0FD, 0x01EC3B) },
+	{ "Asia/Omsk"                         , FOR_V2(0x04E5D8, 0x01EE30) },
+	{ "Asia/Oral"                         , FOR_V2(0x04EAC6, 0x01F031) },
+	{ "Asia/Phnom_Penh"                   , FOR_V2(0x04EF2D, 0x01F206) },
+	{ "Asia/Pontianak"                    , FOR_V2(0x04F005, 0x01F26C) },
+	{ "Asia/Pyongyang"                    , FOR_V2(0x04F19D, 0x01F333) },
+	{ "Asia/Qatar"                        , FOR_V2(0x04F2E1, 0x01F3CA) },
+	{ "Asia/Qyzylorda"                    , FOR_V2(0x04F3BE, 0x01F435) },
+	{ "Asia/Rangoon"                      , FOR_V2(0x04F824, 0x01F610) },
+	{ "Asia/Riyadh"                       , FOR_V2(0x04F94D, 0x01F699) },
+	{ "Asia/Saigon"                       , FOR_V2(0x04FA04, 0x01F6F3) },
+	{ "Asia/Sakhalin"                     , FOR_V2(0x04FB85, 0x01F7A2) },
+	{ "Asia/Samarkand"                    , FOR_V2(0x050077, 0x01F9A4) },
+	{ "Asia/Seoul"                        , FOR_V2(0x050345, 0x01FADF) },
+	{ "Asia/Shanghai"                     , FOR_V2(0x05058C, 0x01FBD7) },
+	{ "Asia/Singapore"                    , FOR_V2(0x050742, 0x01FC94) },
+	{ "Asia/Srednekolymsk"                , FOR_V2(0x0508FA, 0x01FD5C) },
+	{ "Asia/Taipei"                       , FOR_V2(0x050DFA, 0x01FF69) },
+	{ "Asia/Tashkent"                     , FOR_V2(0x051126, 0x0200AB) },
+	{ "Asia/Tbilisi"                      , FOR_V2(0x0513EA, 0x0201E1) },
+	{ "Asia/Tehran"                       , FOR_V2(0x05186C, 0x0203B4) },
+	{ "Asia/Tel_Aviv"                     , FOR_V2(0x051F06, 0x02062F) },
+	{ "Asia/Thimbu"                       , FOR_V2(0x0527EB, 0x020977) },
+	{ "Asia/Thimphu"                      , FOR_V2(0x0528C8, 0x0209E2) },
+	{ "Asia/Tokyo"                        , FOR_V2(0x0529A5, 0x020A4D) },
+	{ "Asia/Ujung_Pandang"                , FOR_V2(0x052B14, 0x020AE4) },
+	{ "Asia/Ulaanbaatar"                  , FOR_V2(0x052C38, 0x020B6E) },
+	{ "Asia/Ulan_Bator"                   , FOR_V2(0x05323B, 0x020DB4) },
+	{ "Asia/Urumqi"                       , FOR_V2(0x053830, 0x020FEC) },
+	{ "Asia/Ust-Nera"                     , FOR_V2(0x0538F4, 0x021053) },
+	{ "Asia/Vientiane"                    , FOR_V2(0x053E24, 0x021272) },
+	{ "Asia/Vladivostok"                  , FOR_V2(0x053EFC, 0x0212D8) },
+	{ "Asia/Yakutsk"                      , FOR_V2(0x0543E9, 0x0214D7) },
+	{ "Asia/Yekaterinburg"                , FOR_V2(0x0548D5, 0x0216D6) },
+	{ "Asia/Yerevan"                      , FOR_V2(0x054E28, 0x021904) },
+	{ "Atlantic/Azores"                   , FOR_V2(0x055331, 0x021B09) },
+	{ "Atlantic/Bermuda"                  , FOR_V2(0x0560E3, 0x02201D) },
+	{ "Atlantic/Canary"                   , FOR_V2(0x0568C3, 0x022303) },
+	{ "Atlantic/Cape_Verde"               , FOR_V2(0x057056, 0x0225DE) },
+	{ "Atlantic/Faeroe"                   , FOR_V2(0x057160, 0x02265C) },
+	{ "Atlantic/Faroe"                    , FOR_V2(0x057891, 0x022905) },
+	{ "Atlantic/Jan_Mayen"                , FOR_V2(0x057FC2, 0x022BAE) },
+	{ "Atlantic/Madeira"                  , FOR_V2(0x058899, 0x022EF1) },
+	{ "Atlantic/Reykjavik"                , FOR_V2(0x05964A, 0x02340B) },
+	{ "Atlantic/South_Georgia"            , FOR_V2(0x059AFC, 0x0235DD) },
+	{ "Atlantic/St_Helena"                , FOR_V2(0x059B9C, 0x023621) },
+	{ "Atlantic/Stanley"                  , FOR_V2(0x059C52, 0x02367B) },
+	{ "Australia/ACT"                     , FOR_V2(0x05A13C, 0x023862) },
+	{ "Australia/Adelaide"                , FOR_V2(0x05A9F7, 0x023B96) },
+	{ "Australia/Brisbane"                , FOR_V2(0x05B2D0, 0x023ED5) },
+	{ "Australia/Broken_Hill"             , FOR_V2(0x05B4BB, 0x023FB3) },
+	{ "Australia/Canberra"                , FOR_V2(0x05BDC5, 0x024304) },
+	{ "Australia/Currie"                  , FOR_V2(0x05C680, 0x024638) },
+	{ "Australia/Darwin"                  , FOR_V2(0x05CF51, 0x024982) },
+	{ "Australia/Eucla"                   , FOR_V2(0x05D0B2, 0x024A1B) },
+	{ "Australia/Hobart"                  , FOR_V2(0x05D2C3, 0x024B08) },
+	{ "Australia/LHI"                     , FOR_V2(0x05DC07, 0x024E7D) },
+	{ "Australia/Lindeman"                , FOR_V2(0x05E356, 0x02512F) },
+	{ "Australia/Lord_Howe"               , FOR_V2(0x05E588, 0x025227) },
+	{ "Australia/Melbourne"               , FOR_V2(0x05ECE7, 0x0254E9) },
+	{ "Australia/North"                   , FOR_V2(0x05F5AA, 0x025825) },
+	{ "Australia/NSW"                     , FOR_V2(0x05F6F9, 0x0258AC) },
+	{ "Australia/Perth"                   , FOR_V2(0x05FFB4, 0x025BE0) },
+	{ "Australia/Queensland"              , FOR_V2(0x0601C1, 0x025CCF) },
+	{ "Australia/South"                   , FOR_V2(0x060391, 0x025D92) },
+	{ "Australia/Sydney"                  , FOR_V2(0x060C5B, 0x0260C2) },
+	{ "Australia/Tasmania"                , FOR_V2(0x061536, 0x026416) },
+	{ "Australia/Victoria"                , FOR_V2(0x061E61, 0x026772) },
+	{ "Australia/West"                    , FOR_V2(0x06271C, 0x026AA6) },
+	{ "Australia/Yancowinna"              , FOR_V2(0x062907, 0x026B73) },
+	{ "Brazil/Acre"                       , FOR_V2(0x0631F5, 0x026EA8) },
+	{ "Brazil/DeNoronha"                  , FOR_V2(0x063491, 0x026FB9) },
+	{ "Brazil/East"                       , FOR_V2(0x063775, 0x0270DE) },
+	{ "Brazil/West"                       , FOR_V2(0x063F60, 0x0273C0) },
+	{ "Canada/Atlantic"                   , FOR_V2(0x0641D4, 0x0274BD) },
+	{ "Canada/Central"                    , FOR_V2(0x064F4E, 0x0279AA) },
+	{ "Canada/East-Saskatchewan"          , FOR_V2(0x065AA5, 0x027DD5) },
+	{ "Canada/Eastern"                    , FOR_V2(0x065E93, 0x027F63) },
+	{ "Canada/Mountain"                   , FOR_V2(0x066C4E, 0x028464) },
+	{ "Canada/Newfoundland"               , FOR_V2(0x0675BC, 0x0287DF) },
+	{ "Canada/Pacific"                    , FOR_V2(0x068418, 0x028D23) },
+	{ "Canada/Saskatchewan"               , FOR_V2(0x068F79, 0x02914D) },
+	{ "Canada/Yukon"                      , FOR_V2(0x069367, 0x0292DB) },
+	{ "CET"                               , FOR_V2(0x069BA0, 0x0295EF) },
+	{ "Chile/Continental"                 , FOR_V2(0x06A3E2, 0x0298F8) },
+	{ "Chile/EasterIsland"                , FOR_V2(0x06AB5F, 0x029BCD) },
+	{ "CST6CDT"                           , FOR_V2(0x06B1B9, 0x029E38) },
+	{ "Cuba"                              , FOR_V2(0x06BABB, 0x02A189) },
+	{ "EET"                               , FOR_V2(0x06C44C, 0x02A50D) },
+	{ "Egypt"                             , FOR_V2(0x06CBAC, 0x02A7C0) },
+	{ "Eire"                              , FOR_V2(0x06D36C, 0x02AAA0) },
+	{ "EST"                               , FOR_V2(0x06E15F, 0x02AFC2) },
+	{ "EST5EDT"                           , FOR_V2(0x06E1EA, 0x02B006) },
+	{ "Etc/GMT"                           , FOR_V2(0x06EAEC, 0x02B357) },
+	{ "Etc/GMT+0"                         , FOR_V2(0x06EB77, 0x02B39B) },
+	{ "Etc/GMT+1"                         , FOR_V2(0x06EC02, 0x02B3DF) },
+	{ "Etc/GMT+10"                        , FOR_V2(0x06EC95, 0x02B425) },
+	{ "Etc/GMT+11"                        , FOR_V2(0x06ED2C, 0x02B46C) },
+	{ "Etc/GMT+12"                        , FOR_V2(0x06EDC3, 0x02B4B3) },
+	{ "Etc/GMT+2"                         , FOR_V2(0x06EE5A, 0x02B4FA) },
+	{ "Etc/GMT+3"                         , FOR_V2(0x06EEED, 0x02B540) },
+	{ "Etc/GMT+4"                         , FOR_V2(0x06EF80, 0x02B586) },
+	{ "Etc/GMT+5"                         , FOR_V2(0x06F013, 0x02B5CC) },
+	{ "Etc/GMT+6"                         , FOR_V2(0x06F0A6, 0x02B612) },
+	{ "Etc/GMT+7"                         , FOR_V2(0x06F139, 0x02B658) },
+	{ "Etc/GMT+8"                         , FOR_V2(0x06F1CC, 0x02B69E) },
+	{ "Etc/GMT+9"                         , FOR_V2(0x06F25F, 0x02B6E4) },
+	{ "Etc/GMT-0"                         , FOR_V2(0x06F2F2, 0x02B72A) },
+	{ "Etc/GMT-1"                         , FOR_V2(0x06F37D, 0x02B76E) },
+	{ "Etc/GMT-10"                        , FOR_V2(0x06F411, 0x02B7B4) },
+	{ "Etc/GMT-11"                        , FOR_V2(0x06F4A9, 0x02B7FB) },
+	{ "Etc/GMT-12"                        , FOR_V2(0x06F541, 0x02B842) },
+	{ "Etc/GMT-13"                        , FOR_V2(0x06F5D9, 0x02B889) },
+	{ "Etc/GMT-14"                        , FOR_V2(0x06F671, 0x02B8D0) },
+	{ "Etc/GMT-2"                         , FOR_V2(0x06F709, 0x02B917) },
+	{ "Etc/GMT-3"                         , FOR_V2(0x06F79D, 0x02B95D) },
+	{ "Etc/GMT-4"                         , FOR_V2(0x06F831, 0x02B9A3) },
+	{ "Etc/GMT-5"                         , FOR_V2(0x06F8C5, 0x02B9E9) },
+	{ "Etc/GMT-6"                         , FOR_V2(0x06F959, 0x02BA2F) },
+	{ "Etc/GMT-7"                         , FOR_V2(0x06F9ED, 0x02BA75) },
+	{ "Etc/GMT-8"                         , FOR_V2(0x06FA81, 0x02BABB) },
+	{ "Etc/GMT-9"                         , FOR_V2(0x06FB15, 0x02BB01) },
+	{ "Etc/GMT0"                          , FOR_V2(0x06FBA9, 0x02BB47) },
+	{ "Etc/Greenwich"                     , FOR_V2(0x06FC34, 0x02BB8B) },
+	{ "Etc/UCT"                           , FOR_V2(0x06FCBF, 0x02BBCF) },
+	{ "Etc/Universal"                     , FOR_V2(0x06FD4A, 0x02BC13) },
+	{ "Etc/UTC"                           , FOR_V2(0x06FDD5, 0x02BC57) },
+	{ "Etc/Zulu"                          , FOR_V2(0x06FE60, 0x02BC9B) },
+	{ "Europe/Amsterdam"                  , FOR_V2(0x06FEEB, 0x02BCDF) },
+	{ "Europe/Andorra"                    , FOR_V2(0x070A76, 0x02C12E) },
+	{ "Europe/Athens"                     , FOR_V2(0x071159, 0x02C3BB) },
+	{ "Europe/Belfast"                    , FOR_V2(0x071A44, 0x02C70F) },
+	{ "Europe/Belgrade"                   , FOR_V2(0x0728B7, 0x02CC57) },
+	{ "Europe/Berlin"                     , FOR_V2(0x073068, 0x02CF31) },
+	{ "Europe/Bratislava"                 , FOR_V2(0x0739A1, 0x02D2A6) },
+	{ "Europe/Brussels"                   , FOR_V2(0x07428D, 0x02D5E9) },
+	{ "Europe/Bucharest"                  , FOR_V2(0x074E33, 0x02DA31) },
+	{ "Europe/Budapest"                   , FOR_V2(0x0756EC, 0x02DD6C) },
+	{ "Europe/Busingen"                   , FOR_V2(0x07605D, 0x02E0E6) },
+	{ "Europe/Chisinau"                   , FOR_V2(0x0767EF, 0x02E3AE) },
+	{ "Europe/Copenhagen"                 , FOR_V2(0x07717A, 0x02E74D) },
+	{ "Europe/Dublin"                     , FOR_V2(0x0779F6, 0x02EA68) },
+	{ "Europe/Gibraltar"                  , FOR_V2(0x0787E9, 0x02EF8A) },
+	{ "Europe/Guernsey"                   , FOR_V2(0x0793EA, 0x02F3F2) },
+	{ "Europe/Helsinki"                   , FOR_V2(0x07A25D, 0x02F93A) },
+	{ "Europe/Isle_of_Man"                , FOR_V2(0x07A9DE, 0x02FC01) },
+	{ "Europe/Istanbul"                   , FOR_V2(0x07B851, 0x030149) },
+	{ "Europe/Jersey"                     , FOR_V2(0x07C318, 0x030547) },
+	{ "Europe/Kaliningrad"                , FOR_V2(0x07D18B, 0x030A8F) },
+	{ "Europe/Kiev"                       , FOR_V2(0x07D7BC, 0x030D13) },
+	{ "Europe/Lisbon"                     , FOR_V2(0x07E007, 0x031040) },
+	{ "Europe/Ljubljana"                  , FOR_V2(0x07ED98, 0x031549) },
+	{ "Europe/London"                     , FOR_V2(0x07F549, 0x031823) },
+	{ "Europe/Luxembourg"                 , FOR_V2(0x0803BC, 0x031D6B) },
+	{ "Europe/Madrid"                     , FOR_V2(0x080F66, 0x0321C6) },
+	{ "Europe/Malta"                      , FOR_V2(0x0819B5, 0x03259D) },
+	{ "Europe/Mariehamn"                  , FOR_V2(0x082406, 0x032967) },
+	{ "Europe/Minsk"                      , FOR_V2(0x082B87, 0x032C2E) },
+	{ "Europe/Monaco"                     , FOR_V2(0x0830EB, 0x032E52) },
+	{ "Europe/Moscow"                     , FOR_V2(0x083C80, 0x03329E) },
+	{ "Europe/Nicosia"                    , FOR_V2(0x08429B, 0x033519) },
+	{ "Europe/Oslo"                       , FOR_V2(0x084A87, 0x033806) },
+	{ "Europe/Paris"                      , FOR_V2(0x08535E, 0x033B49) },
+	{ "Europe/Podgorica"                  , FOR_V2(0x085F05, 0x033FA0) },
+	{ "Europe/Prague"                     , FOR_V2(0x0866B6, 0x03427A) },
+	{ "Europe/Riga"                       , FOR_V2(0x086FA2, 0x0345BD) },
+	{ "Europe/Rome"                       , FOR_V2(0x087869, 0x034913) },
+	{ "Europe/Samara"                     , FOR_V2(0x0882EB, 0x034CE7) },
+	{ "Europe/San_Marino"                 , FOR_V2(0x0888A2, 0x034F5D) },
+	{ "Europe/Sarajevo"                   , FOR_V2(0x089324, 0x035331) },
+	{ "Europe/Simferopol"                 , FOR_V2(0x089AD5, 0x03560B) },
+	{ "Europe/Skopje"                     , FOR_V2(0x08A0C5, 0x035870) },
+	{ "Europe/Sofia"                      , FOR_V2(0x08A876, 0x035B4A) },
+	{ "Europe/Stockholm"                  , FOR_V2(0x08B0D4, 0x035E63) },
+	{ "Europe/Tallinn"                    , FOR_V2(0x08B85E, 0x036123) },
+	{ "Europe/Tirane"                     , FOR_V2(0x08C0F5, 0x036469) },
+	{ "Europe/Tiraspol"                   , FOR_V2(0x08C933, 0x036774) },
+	{ "Europe/Uzhgorod"                   , FOR_V2(0x08D2BE, 0x036B13) },
+	{ "Europe/Vaduz"                      , FOR_V2(0x08DB09, 0x036E3B) },
+	{ "Europe/Vatican"                    , FOR_V2(0x08E293, 0x0370FB) },
+	{ "Europe/Vienna"                     , FOR_V2(0x08ED15, 0x0374CF) },
+	{ "Europe/Vilnius"                    , FOR_V2(0x08F5DE, 0x03780D) },
+	{ "Europe/Volgograd"                  , FOR_V2(0x08FE81, 0x037B5D) },
+	{ "Europe/Warsaw"                     , FOR_V2(0x0903D1, 0x037D8F) },
+	{ "Europe/Zagreb"                     , FOR_V2(0x090E6E, 0x038181) },
+	{ "Europe/Zaporozhye"                 , FOR_V2(0x09161F, 0x03845B) },
+	{ "Europe/Zurich"                     , FOR_V2(0x091E98, 0x0387AD) },
+	{ "Factory"                           , FOR_V2(0x092622, 0x038A6D) },
+	{ "GB"                                , FOR_V2(0x092736, 0x038ADE) },
+	{ "GB-Eire"                           , FOR_V2(0x0935A9, 0x039026) },
+	{ "GMT"                               , FOR_V2(0x09441C, 0x03956E) },
+	{ "GMT+0"                             , FOR_V2(0x0944A7, 0x0395B2) },
+	{ "GMT-0"                             , FOR_V2(0x094532, 0x0395F6) },
+	{ "GMT0"                              , FOR_V2(0x0945BD, 0x03963A) },
+	{ "Greenwich"                         , FOR_V2(0x094648, 0x03967E) },
+	{ "Hongkong"                          , FOR_V2(0x0946D3, 0x0396C2) },
+	{ "HST"                               , FOR_V2(0x094B84, 0x039891) },
+	{ "Iceland"                           , FOR_V2(0x094C10, 0x0398D5) },
+	{ "Indian/Antananarivo"               , FOR_V2(0x0950C2, 0x039AA7) },
+	{ "Indian/Chagos"                     , FOR_V2(0x0951E9, 0x039B33) },
+	{ "Indian/Christmas"                  , FOR_V2(0x0952BE, 0x039B9A) },
+	{ "Indian/Cocos"                      , FOR_V2(0x09535F, 0x039BDE) },
+	{ "Indian/Comoro"                     , FOR_V2(0x095403, 0x039C22) },
+	{ "Indian/Kerguelen"                  , FOR_V2(0x09552A, 0x039CAE) },
+	{ "Indian/Mahe"                       , FOR_V2(0x0955E1, 0x039D08) },
+	{ "Indian/Maldives"                   , FOR_V2(0x095698, 0x039D62) },
+	{ "Indian/Mauritius"                  , FOR_V2(0x095770, 0x039DC8) },
+	{ "Indian/Mayotte"                    , FOR_V2(0x095879, 0x039E43) },
+	{ "Indian/Reunion"                    , FOR_V2(0x0959A0, 0x039ECF) },
+	{ "Iran"                              , FOR_V2(0x095A57, 0x039F29) },
+	{ "Israel"                            , FOR_V2(0x0960F1, 0x03A1A4) },
+	{ "Jamaica"                           , FOR_V2(0x0969D6, 0x03A4EC) },
+	{ "Japan"                             , FOR_V2(0x096BDD, 0x03A5C2) },
+	{ "Kwajalein"                         , FOR_V2(0x096D4C, 0x03A659) },
+	{ "Libya"                             , FOR_V2(0x096E45, 0x03A6CD) },
+	{ "MET"                               , FOR_V2(0x0970E0, 0x03A7DB) },
+	{ "Mexico/BajaNorte"                  , FOR_V2(0x097922, 0x03AAE4) },
+	{ "Mexico/BajaSur"                    , FOR_V2(0x098262, 0x03AE52) },
+	{ "Mexico/General"                    , FOR_V2(0x09888A, 0x03B0A4) },
+	{ "MST"                               , FOR_V2(0x098EE8, 0x03B307) },
+	{ "MST7MDT"                           , FOR_V2(0x098F73, 0x03B34B) },
+	{ "Navajo"                            , FOR_V2(0x099875, 0x03B69C) },
+	{ "NZ"                                , FOR_V2(0x09A216, 0x03BA26) },
+	{ "NZ-CHAT"                           , FOR_V2(0x09ABBE, 0x03BDB5) },
+	{ "Pacific/Apia"                      , FOR_V2(0x09B3D3, 0x03C0AA) },
+	{ "Pacific/Auckland"                  , FOR_V2(0x09B82D, 0x03C253) },
+	{ "Pacific/Bougainville"              , FOR_V2(0x09C1E3, 0x03C5F0) },
+	{ "Pacific/Chatham"                   , FOR_V2(0x09C313, 0x03C679) },
+	{ "Pacific/Chuuk"                     , FOR_V2(0x09CB37, 0x03C97D) },
+	{ "Pacific/Easter"                    , FOR_V2(0x09CBF0, 0x03C9D6) },
+	{ "Pacific/Efate"                     , FOR_V2(0x09D257, 0x03CC4E) },
+	{ "Pacific/Enderbury"                 , FOR_V2(0x09D441, 0x03CD19) },
+	{ "Pacific/Fakaofo"                   , FOR_V2(0x09D542, 0x03CD98) },
+	{ "Pacific/Fiji"                      , FOR_V2(0x09D613, 0x03CDFA) },
+	{ "Pacific/Funafuti"                  , FOR_V2(0x09DA50, 0x03CF92) },
+	{ "Pacific/Galapagos"                 , FOR_V2(0x09DAF2, 0x03CFD6) },
+	{ "Pacific/Gambier"                   , FOR_V2(0x09DBE2, 0x03D053) },
+	{ "Pacific/Guadalcanal"               , FOR_V2(0x09DCAA, 0x03D0BD) },
+	{ "Pacific/Guam"                      , FOR_V2(0x09DD62, 0x03D117) },
+	{ "Pacific/Honolulu"                  , FOR_V2(0x09DE4F, 0x03D17E) },
+	{ "Pacific/Johnston"                  , FOR_V2(0x09DF75, 0x03D206) },
+	{ "Pacific/Kiritimati"                , FOR_V2(0x09E0A3, 0x03D296) },
+	{ "Pacific/Kosrae"                    , FOR_V2(0x09E1A1, 0x03D312) },
+	{ "Pacific/Kwajalein"                 , FOR_V2(0x09E299, 0x03D388) },
+	{ "Pacific/Majuro"                    , FOR_V2(0x09E39B, 0x03D405) },
+	{ "Pacific/Marquesas"                 , FOR_V2(0x09E47A, 0x03D475) },
+	{ "Pacific/Midway"                    , FOR_V2(0x09E547, 0x03D4E1) },
+	{ "Pacific/Nauru"                     , FOR_V2(0x09E671, 0x03D573) },
+	{ "Pacific/Niue"                      , FOR_V2(0x09E77B, 0x03D5F0) },
+	{ "Pacific/Norfolk"                   , FOR_V2(0x09E869, 0x03D65F) },
+	{ "Pacific/Noumea"                    , FOR_V2(0x09E996, 0x03D6E9) },
+	{ "Pacific/Pago_Pago"                 , FOR_V2(0x09EADC, 0x03D77E) },
+	{ "Pacific/Palau"                     , FOR_V2(0x09EBF8, 0x03D802) },
+	{ "Pacific/Pitcairn"                  , FOR_V2(0x09EC99, 0x03D846) },
+	{ "Pacific/Pohnpei"                   , FOR_V2(0x09ED70, 0x03D8AC) },
+	{ "Pacific/Ponape"                    , FOR_V2(0x09EE25, 0x03D901) },
+	{ "Pacific/Port_Moresby"              , FOR_V2(0x09EECA, 0x03D946) },
+	{ "Pacific/Rarotonga"                 , FOR_V2(0x09EF90, 0x03D998) },
+	{ "Pacific/Saipan"                    , FOR_V2(0x09F1DA, 0x03DA85) },
+	{ "Pacific/Samoa"                     , FOR_V2(0x09F2C7, 0x03DAEC) },
+	{ "Pacific/Tahiti"                    , FOR_V2(0x09F3E3, 0x03DB70) },
+	{ "Pacific/Tarawa"                    , FOR_V2(0x09F4AC, 0x03DBDA) },
+	{ "Pacific/Tongatapu"                 , FOR_V2(0x09F560, 0x03DC2E) },
+	{ "Pacific/Truk"                      , FOR_V2(0x09F6BF, 0x03DCCB) },
+	{ "Pacific/Wake"                      , FOR_V2(0x09F764, 0x03DD10) },
+	{ "Pacific/Wallis"                    , FOR_V2(0x09F814, 0x03DD60) },
+	{ "Pacific/Yap"                       , FOR_V2(0x09F8B6, 0x03DDA4) },
+	{ "Poland"                            , FOR_V2(0x09F95B, 0x03DDE9) },
+	{ "Portugal"                          , FOR_V2(0x0A03F8, 0x03E1DB) },
+	{ "PRC"                               , FOR_V2(0x0A1181, 0x03E6DC) },
+	{ "PST8PDT"                           , FOR_V2(0x0A132B, 0x03E78D) },
+	{ "ROC"                               , FOR_V2(0x0A1C2D, 0x03EADE) },
+	{ "ROK"                               , FOR_V2(0x0A1F59, 0x03EC20) },
+	{ "Singapore"                         , FOR_V2(0x0A21A0, 0x03ED18) },
+	{ "Turkey"                            , FOR_V2(0x0A2358, 0x03EDE0) },
+	{ "UCT"                               , FOR_V2(0x0A2E1F, 0x03F1DE) },
+	{ "Universal"                         , FOR_V2(0x0A2EAA, 0x03F222) },
+	{ "US/Alaska"                         , FOR_V2(0x0A2F35, 0x03F266) },
+	{ "US/Aleutian"                       , FOR_V2(0x0A3891, 0x03F5E0) },
+	{ "US/Arizona"                        , FOR_V2(0x0A41DA, 0x03F951) },
+	{ "US/Central"                        , FOR_V2(0x0A4347, 0x03F9F0) },
+	{ "US/East-Indiana"                   , FOR_V2(0x0A5154, 0x03FF14) },
+	{ "US/Eastern"                        , FOR_V2(0x0A57EB, 0x04018F) },
+	{ "US/Hawaii"                         , FOR_V2(0x0A65D0, 0x04069F) },
+	{ "US/Indiana-Starke"                 , FOR_V2(0x0A66F0, 0x040721) },
+	{ "US/Michigan"                       , FOR_V2(0x0A7081, 0x040AAB) },
+	{ "US/Mountain"                       , FOR_V2(0x0A7935, 0x040DE7) },
+	{ "US/Pacific"                        , FOR_V2(0x0A82D6, 0x041171) },
+	{ "US/Pacific-New"                    , FOR_V2(0x0A8DFF, 0x041587) },
+	{ "US/Samoa"                          , FOR_V2(0x0A9928, 0x04199D) },
+	{ "UTC"                               , FOR_V2(0x0A9A44, 0x041A21) },
+	{ "W-SU"                              , FOR_V2(0x0A9ACF, 0x041A65) },
+	{ "WET"                               , FOR_V2(0x0AA0D3, 0x041CC9) },
+	{ "Zulu"                              , FOR_V2(0x0AA830, 0x041F7C) },
 };
 #ifdef TIMELIB_SUPPORTS_V2DATA
-const unsigned char timelib_timezone_db_data_builtin[698532] = {
+const unsigned char timelib_timezone_db_data_builtin[698555] = {
 #else
-const unsigned char timelib_timezone_db_data_builtin[270325] = {
+const unsigned char timelib_timezone_db_data_builtin[270272] = {
 #endif
 
 
@@ -5125,61 +5125,20 @@ const unsigned char timelib_timezone_db_
 
 /* America/Cayman */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00,
-0x93, 0x0F, 0xB4, 0xFF, 0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0,
-0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0,
-0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70,
-0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70,
-0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70,
-0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0,
-0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0,
-0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0,
-0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70,
-0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70,
-0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70,
-0x7F, 0x98, 0x00, 0x60, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x04, 0xFF, 0xFF,
-0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D,
-0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00,
+0x8B, 0xF4, 0x61, 0xE8, 0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18,
+0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00,
+0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xF8, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x27, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF,
-0x93, 0x0F, 0xB4, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, 0x00, 0x00, 0x00, 0x00,
-0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, 0x00, 0x00, 0x00, 0x00,
-0x7F, 0x98, 0x00, 0x60, 0x00, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03,
-0x02, 0x03, 0x02, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x04, 0xFF,
-0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4B,
-0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32,
-0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
+0x8B, 0xF4, 0x61, 0xE8, 0x00, 0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5,
+0x18, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54,
+0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35,
+0x0A,
 #endif
 0x00, 0xA6, 0xC7, 0x50, 0x00, 0x96, 0x7A, 0x22, 0x00, 0x00, 0x00, 0x00,
 
@@ -11486,8 +11445,8 @@ const unsigned char timelib_timezone_db_
 
 /* America/Metlakatla */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0x80, 0x00, 0x00, 0x00,
 0xCB, 0x89, 0x1A, 0xA0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x26, 0x10, 0xFE, 0xB8, 0x47, 0x20,
 0xFF, 0xA8, 0x2A, 0x10, 0x00, 0x98, 0x29, 0x20, 0x01, 0x88, 0x0C, 0x10, 0x02, 0x78, 0x0B, 0x20,
 0x03, 0x71, 0x28, 0x90, 0x04, 0x61, 0x27, 0xA0, 0x05, 0x51, 0x0A, 0x90, 0x06, 0x41, 0x09, 0xA0,
@@ -11496,17 +11455,32 @@ const unsigned char timelib_timezone_db_
 0x0E, 0xB9, 0xAF, 0x10, 0x0F, 0xA9, 0xAE, 0x20, 0x10, 0x99, 0x91, 0x10, 0x11, 0x89, 0x90, 0x20,
 0x12, 0x79, 0x73, 0x10, 0x13, 0x69, 0x72, 0x20, 0x14, 0x59, 0x55, 0x10, 0x15, 0x49, 0x54, 0x20,
 0x16, 0x39, 0x37, 0x10, 0x17, 0x29, 0x36, 0x20, 0x18, 0x22, 0x53, 0x90, 0x19, 0x09, 0x18, 0x20,
-0x1A, 0x02, 0x35, 0x90, 0x01, 0x02, 0x03, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01,
+0x1A, 0x02, 0x35, 0x90, 0x56, 0x35, 0xE2, 0xA0, 0x56, 0xE5, 0x48, 0x30, 0x58, 0x1E, 0xFF, 0x20,
+0x58, 0xC5, 0x2A, 0x30, 0x59, 0xFE, 0xE1, 0x20, 0x5A, 0xA5, 0x0C, 0x30, 0x5B, 0xDE, 0xC3, 0x20,
+0x5C, 0x84, 0xEE, 0x30, 0x5D, 0xBE, 0xA5, 0x20, 0x5E, 0x64, 0xD0, 0x30, 0x5F, 0x9E, 0x87, 0x20,
+0x60, 0x4D, 0xEC, 0xB0, 0x61, 0x87, 0xA3, 0xA0, 0x62, 0x2D, 0xCE, 0xB0, 0x63, 0x67, 0x85, 0xA0,
+0x64, 0x0D, 0xB0, 0xB0, 0x65, 0x47, 0x67, 0xA0, 0x65, 0xED, 0x92, 0xB0, 0x67, 0x27, 0x49, 0xA0,
+0x67, 0xCD, 0x74, 0xB0, 0x69, 0x07, 0x2B, 0xA0, 0x69, 0xAD, 0x56, 0xB0, 0x6A, 0xE7, 0x0D, 0xA0,
+0x6B, 0x96, 0x73, 0x30, 0x6C, 0xD0, 0x2A, 0x20, 0x6D, 0x76, 0x55, 0x30, 0x6E, 0xB0, 0x0C, 0x20,
+0x6F, 0x56, 0x37, 0x30, 0x70, 0x8F, 0xEE, 0x20, 0x71, 0x36, 0x19, 0x30, 0x72, 0x6F, 0xD0, 0x20,
+0x73, 0x15, 0xFB, 0x30, 0x74, 0x4F, 0xB2, 0x20, 0x74, 0xFF, 0x17, 0xB0, 0x76, 0x38, 0xCE, 0xA0,
+0x76, 0xDE, 0xF9, 0xB0, 0x78, 0x18, 0xB0, 0xA0, 0x78, 0xBE, 0xDB, 0xB0, 0x79, 0xF8, 0x92, 0xA0,
+0x7A, 0x9E, 0xBD, 0xB0, 0x7B, 0xD8, 0x74, 0xA0, 0x7C, 0x7E, 0x9F, 0xB0, 0x7D, 0xB8, 0x56, 0xA0,
+0x7E, 0x5E, 0x81, 0xB0, 0x7F, 0x98, 0x38, 0xA0, 0x01, 0x02, 0x03, 0x01, 0x04, 0x01, 0x04, 0x01,
 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01,
-0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0xFF, 0xFF, 0x84, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x80,
-0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF,
-0x9D, 0x90, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00,
-0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-0x01, 0x00,
+0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
+0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
+0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06,
+0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0xFF, 0xFF, 0x84, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0x8F,
+0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF,
+0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x14, 0xFF, 0xFF, 0x8F, 0x80, 0x01,
+0x19, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54,
+0x00, 0x50, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x41, 0x4B, 0x44, 0x54, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xCE, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF,
 0x7D, 0x87, 0x30, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -11524,19 +11498,46 @@ const unsigned char timelib_timezone_db_
 0x13, 0x69, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00,
 0x15, 0x49, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x37, 0x10, 0x00, 0x00, 0x00, 0x00,
 0x17, 0x29, 0x36, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x53, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x19, 0x09, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x35, 0x90, 0x00, 0x01, 0x02, 0x03,
-0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
+0x19, 0x09, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x35, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x56, 0x35, 0xE2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x48, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x58, 0x1E, 0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC5, 0x2A, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x59, 0xFE, 0xE1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA5, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x5B, 0xDE, 0xC3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xEE, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x5D, 0xBE, 0xA5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0xD0, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x5F, 0x9E, 0x87, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xEC, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x61, 0x87, 0xA3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0xCE, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x63, 0x67, 0x85, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0xB0, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x65, 0x47, 0x67, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x92, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x67, 0x27, 0x49, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x74, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x69, 0x07, 0x2B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x56, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x6A, 0xE7, 0x0D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x73, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x6C, 0xD0, 0x2A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x55, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x6E, 0xB0, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x56, 0x37, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x70, 0x8F, 0xEE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x71, 0x36, 0x19, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x72, 0x6F, 0xD0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xFB, 0x30, 0x00, 0x00, 0x00, 0x00,
+0x74, 0x4F, 0xB2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFF, 0x17, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x76, 0x38, 0xCE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xF9, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x78, 0x18, 0xB0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xDB, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x79, 0xF8, 0x92, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0xBD, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x7B, 0xD8, 0x74, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x9F, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x7D, 0xB8, 0x56, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x81, 0xB0, 0x00, 0x00, 0x00, 0x00,
+0x7F, 0x98, 0x38, 0xA0, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02,
-0x00, 0x00, 0xD6, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0xA6, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0x80,
-0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF,
-0x9D, 0x90, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00,
-0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x01, 0x00, 0x0A, 0x50, 0x53, 0x54, 0x38, 0x0A,
-#endif
-0x00, 0xDD, 0x72, 0x36, 0x00, 0x49, 0xE3, 0x79, 0x00, 0x00, 0x00, 0x2E, 0x50, 0x61, 0x63, 0x69,
-0x66, 0x69, 0x63, 0x20, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x54, 0x69, 0x6D,
-0x65, 0x20, 0x2D, 0x20, 0x41, 0x6E, 0x6E, 0x65, 0x74, 0x74, 0x65, 0x20, 0x49, 0x73, 0x6C, 0x61,
-0x6E, 0x64, 0x2C, 0x20, 0x41, 0x6C, 0x61, 0x73, 0x6B, 0x61,
+0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+0x06, 0x07, 0x06, 0x07, 0x06, 0x00, 0x00, 0xD6, 0x26, 0x00, 0x00, 0xFF, 0xFF, 0x84, 0xA6, 0x00,
+0x00, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x08, 0xFF, 0xFF, 0x9D,
+0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x81, 0x70, 0x00, 0x14, 0xFF,
+0xFF, 0x8F, 0x80, 0x01, 0x19, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54,
+0x00, 0x50, 0x50, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x41, 0x4B,
+0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x0A, 0x41, 0x4B, 0x53, 0x54, 0x39, 0x41, 0x4B, 0x44, 0x54, 0x2C, 0x4D, 0x33,
+0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A,
+#endif
+0x00, 0xDD, 0x72, 0x36, 0x00, 0x49, 0xE3, 0x79, 0x00, 0x00, 0x00, 0x1C, 0x41, 0x6C, 0x61, 0x73,
+0x6B, 0x61, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x41, 0x6E, 0x6E, 0x65, 0x74, 0x74,
+0x65, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64,
 
 /* America/Mexico_City */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -14803,7 +14804,7 @@ const unsigned char timelib_timezone_db_
 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
 
 /* America/Santa_Isabel */
-0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00,
 0xA5, 0xB6, 0xF6, 0x80, 0xA9, 0x79, 0x4F, 0x70, 0xAF, 0xF2, 0x7C, 0xF0, 0xB6, 0x66, 0x64, 0x70,
@@ -14829,21 +14830,21 @@ const unsigned char timelib_timezone_db_
 0x3F, 0x9B, 0x8D, 0x10, 0x40, 0x6F, 0xDC, 0xA0, 0x41, 0x84, 0xA9, 0x90, 0x42, 0x4F, 0xBE, 0xA0,
 0x43, 0x64, 0x8B, 0x90, 0x44, 0x2F, 0xA0, 0xA0, 0x45, 0x44, 0x6D, 0x90, 0x46, 0x0F, 0x82, 0xA0,
 0x47, 0x24, 0x4F, 0x90, 0x47, 0xF8, 0x9F, 0x20, 0x49, 0x04, 0x31, 0x90, 0x49, 0xD8, 0x81, 0x20,
-0x4A, 0xE4, 0x13, 0x90, 0x4B, 0xB8, 0x63, 0x20, 0x4C, 0xCD, 0x30, 0x10, 0x4D, 0x98, 0x45, 0x20,
-0x4E, 0xAD, 0x12, 0x10, 0x4F, 0x78, 0x27, 0x20, 0x50, 0x8C, 0xF4, 0x10, 0x51, 0x61, 0x43, 0xA0,
-0x52, 0x6C, 0xD6, 0x10, 0x53, 0x41, 0x25, 0xA0, 0x54, 0x4C, 0xB8, 0x10, 0x55, 0x21, 0x07, 0xA0,
-0x56, 0x2C, 0x9A, 0x10, 0x57, 0x00, 0xE9, 0xA0, 0x58, 0x15, 0xB6, 0x90, 0x58, 0xE0, 0xCB, 0xA0,
-0x59, 0xF5, 0x98, 0x90, 0x5A, 0xC0, 0xAD, 0xA0, 0x5B, 0xD5, 0x7A, 0x90, 0x5C, 0xA9, 0xCA, 0x20,
-0x5D, 0xB5, 0x5C, 0x90, 0x5E, 0x89, 0xAC, 0x20, 0x5F, 0x95, 0x3E, 0x90, 0x60, 0x69, 0x8E, 0x20,
-0x61, 0x7E, 0x5B, 0x10, 0x62, 0x49, 0x70, 0x20, 0x63, 0x5E, 0x3D, 0x10, 0x64, 0x29, 0x52, 0x20,
-0x65, 0x3E, 0x1F, 0x10, 0x66, 0x12, 0x6E, 0xA0, 0x67, 0x1E, 0x01, 0x10, 0x67, 0xF2, 0x50, 0xA0,
-0x68, 0xFD, 0xE3, 0x10, 0x69, 0xD2, 0x32, 0xA0, 0x6A, 0xDD, 0xC5, 0x10, 0x6B, 0xB2, 0x14, 0xA0,
-0x6C, 0xC6, 0xE1, 0x90, 0x6D, 0x91, 0xF6, 0xA0, 0x6E, 0xA6, 0xC3, 0x90, 0x6F, 0x71, 0xD8, 0xA0,
-0x70, 0x86, 0xA5, 0x90, 0x71, 0x5A, 0xF5, 0x20, 0x72, 0x66, 0x87, 0x90, 0x73, 0x3A, 0xD7, 0x20,
-0x74, 0x46, 0x69, 0x90, 0x75, 0x1A, 0xB9, 0x20, 0x76, 0x2F, 0x86, 0x10, 0x76, 0xFA, 0x9B, 0x20,
-0x78, 0x0F, 0x68, 0x10, 0x78, 0xDA, 0x7D, 0x20, 0x79, 0xEF, 0x4A, 0x10, 0x7A, 0xBA, 0x5F, 0x20,
-0x7B, 0xCF, 0x2C, 0x10, 0x7C, 0xA3, 0x7B, 0xA0, 0x7D, 0xAF, 0x0E, 0x10, 0x7E, 0x83, 0x5D, 0xA0,
-0x7F, 0x8E, 0xF0, 0x10, 0x00, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x04, 0x05, 0x02, 0x03, 0x02,
+0x4A, 0xE4, 0x13, 0x90, 0x4B, 0x9C, 0xB3, 0xA0, 0x4C, 0xD6, 0x6A, 0x90, 0x4D, 0x7C, 0x95, 0xA0,
+0x4E, 0xB6, 0x4C, 0x90, 0x4F, 0x5C, 0x77, 0xA0, 0x50, 0x96, 0x2E, 0x90, 0x51, 0x3C, 0x59, 0xA0,
+0x52, 0x76, 0x10, 0x90, 0x53, 0x1C, 0x3B, 0xA0, 0x54, 0x55, 0xF2, 0x90, 0x54, 0xFC, 0x1D, 0xA0,
+0x56, 0x35, 0xD4, 0x90, 0x56, 0xE5, 0x3A, 0x20, 0x58, 0x1E, 0xF1, 0x10, 0x58, 0xC5, 0x1C, 0x20,
+0x59, 0xFE, 0xD3, 0x10, 0x5A, 0xA4, 0xFE, 0x20, 0x5B, 0xDE, 0xB5, 0x10, 0x5C, 0x84, 0xE0, 0x20,
+0x5D, 0xBE, 0x97, 0x10, 0x5E, 0x64, 0xC2, 0x20, 0x5F, 0x9E, 0x79, 0x10, 0x60, 0x4D, 0xDE, 0xA0,
+0x61, 0x87, 0x95, 0x90, 0x62, 0x2D, 0xC0, 0xA0, 0x63, 0x67, 0x77, 0x90, 0x64, 0x0D, 0xA2, 0xA0,
+0x65, 0x47, 0x59, 0x90, 0x65, 0xED, 0x84, 0xA0, 0x67, 0x27, 0x3B, 0x90, 0x67, 0xCD, 0x66, 0xA0,
+0x69, 0x07, 0x1D, 0x90, 0x69, 0xAD, 0x48, 0xA0, 0x6A, 0xE6, 0xFF, 0x90, 0x6B, 0x96, 0x65, 0x20,
+0x6C, 0xD0, 0x1C, 0x10, 0x6D, 0x76, 0x47, 0x20, 0x6E, 0xAF, 0xFE, 0x10, 0x6F, 0x56, 0x29, 0x20,
+0x70, 0x8F, 0xE0, 0x10, 0x71, 0x36, 0x0B, 0x20, 0x72, 0x6F, 0xC2, 0x10, 0x73, 0x15, 0xED, 0x20,
+0x74, 0x4F, 0xA4, 0x10, 0x74, 0xFF, 0x09, 0xA0, 0x76, 0x38, 0xC0, 0x90, 0x76, 0xDE, 0xEB, 0xA0,
+0x78, 0x18, 0xA2, 0x90, 0x78, 0xBE, 0xCD, 0xA0, 0x79, 0xF8, 0x84, 0x90, 0x7A, 0x9E, 0xAF, 0xA0,
+0x7B, 0xD8, 0x66, 0x90, 0x7C, 0x7E, 0x91, 0xA0, 0x7D, 0xB8, 0x48, 0x90, 0x7E, 0x5E, 0x73, 0xA0,
+0x7F, 0x98, 0x2A, 0x90, 0x00, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x04, 0x05, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
@@ -14852,7 +14853,7 @@ const unsigned char timelib_timezone_db_
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0x94, 0x50, 0x00, 0x00,
+0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0xFF, 0xFF, 0x92, 0x4C, 0x00, 0x00,
 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90,
 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x14, 0x4C, 0x4D,
 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x57,
@@ -14909,34 +14910,34 @@ const unsigned char timelib_timezone_db_
 0x46, 0x0F, 0x82, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x24, 0x4F, 0x90, 0x00, 0x00, 0x00, 0x00,
 0x47, 0xF8, 0x9F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x49, 0x04, 0x31, 0x90, 0x00, 0x00, 0x00, 0x00,
 0x49, 0xD8, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE4, 0x13, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x4B, 0xB8, 0x63, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCD, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x4D, 0x98, 0x45, 0x20, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAD, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x4F, 0x78, 0x27, 0x20, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0xF4, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x51, 0x61, 0x43, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0xD6, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x53, 0x41, 0x25, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0xB8, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x55, 0x21, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x9A, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x57, 0x00, 0xE9, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0xB6, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x58, 0xE0, 0xCB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x98, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x5A, 0xC0, 0xAD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x7A, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x5C, 0xA9, 0xCA, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB5, 0x5C, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x5E, 0x89, 0xAC, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x95, 0x3E, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x60, 0x69, 0x8E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7E, 0x5B, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x62, 0x49, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5E, 0x3D, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x64, 0x29, 0x52, 0x20, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3E, 0x1F, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x66, 0x12, 0x6E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1E, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x67, 0xF2, 0x50, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0xE3, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x69, 0xD2, 0x32, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0xC5, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x6B, 0xB2, 0x14, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0xE1, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x6D, 0x91, 0xF6, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0xC3, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x6F, 0x71, 0xD8, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0xA5, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x71, 0x5A, 0xF5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x87, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x73, 0x3A, 0xD7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x46, 0x69, 0x90, 0x00, 0x00, 0x00, 0x00,
-0x75, 0x1A, 0xB9, 0x20, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x76, 0xFA, 0x9B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x68, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x78, 0xDA, 0x7D, 0x20, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEF, 0x4A, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x7A, 0xBA, 0x5F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCF, 0x2C, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x7C, 0xA3, 0x7B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAF, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x7E, 0x83, 0x5D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0xF0, 0x10, 0x00, 0x01, 0x02, 0x01,
+0x4B, 0x9C, 0xB3, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x6A, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x4D, 0x7C, 0x95, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x4C, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x4F, 0x5C, 0x77, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x2E, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x51, 0x3C, 0x59, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x76, 0x10, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x53, 0x1C, 0x3B, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xF2, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x54, 0xFC, 0x1D, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xD4, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x56, 0xE5, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xF1, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x58, 0xC5, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xD3, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5A, 0xA4, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0xB5, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5C, 0x84, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x97, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x5E, 0x64, 0xC2, 0x20, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x79, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x60, 0x4D, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x95, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x62, 0x2D, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x77, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x64, 0x0D, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x59, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x65, 0xED, 0x84, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x3B, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x67, 0xCD, 0x66, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x69, 0x07, 0x1D, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x69, 0xAD, 0x48, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x6B, 0x96, 0x65, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xD0, 0x1C, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x6D, 0x76, 0x47, 0x20, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xFE, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x6F, 0x56, 0x29, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xE0, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x71, 0x36, 0x0B, 0x20, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0xC2, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x73, 0x15, 0xED, 0x20, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0xA4, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x74, 0xFF, 0x09, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0xC0, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x76, 0xDE, 0xEB, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0xA2, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x78, 0xBE, 0xCD, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x84, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x7A, 0x9E, 0xAF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x7C, 0x7E, 0x91, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x48, 0x90, 0x00, 0x00, 0x00, 0x00,
+0x7E, 0x5E, 0x73, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x2A, 0x90, 0x00, 0x01, 0x02, 0x01,
 0x02, 0x03, 0x02, 0x04, 0x05, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
@@ -14946,19 +14947,15 @@ const unsigned char timelib_timezone_db_
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
-0x03, 0x02, 0xFF, 0xFF, 0x94, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF,
+0x03, 0x02, 0xFF, 0xFF, 0x92, 0x4C, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF,
 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10,
 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53,
 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x50, 0x53, 0x54, 0x38, 0x50,
-0x44, 0x54, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E,
+0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E,
 0x30, 0x0A,
 #endif
-0x00, 0xB7, 0x90, 0x30, 0x00, 0x63, 0x62, 0xB5, 0x00, 0x00, 0x00, 0x3A, 0x4D, 0x65, 0x78, 0x69,
-0x63, 0x61, 0x6E, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65,
-0x20, 0x2D, 0x20, 0x42, 0x61, 0x6A, 0x61, 0x20, 0x43, 0x61, 0x6C, 0x69, 0x66, 0x6F, 0x72, 0x6E,
-0x69, 0x61, 0x20, 0x61, 0x77, 0x61, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x55, 0x53, 0x20,
-0x62, 0x6F, 0x72, 0x64, 0x65, 0x72,
+0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
 
 /* America/Santarem */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -16532,10 +16529,10 @@ const unsigned char timelib_timezone_db_
 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E,
 0x30, 0x0A,
 #endif
-0x00, 0xBA, 0xF8, 0x95, 0x00, 0x60, 0x1A, 0xDD, 0x00, 0x00, 0x00, 0x30, 0x55, 0x53, 0x20, 0x50,
+0x00, 0xBA, 0xF8, 0x95, 0x00, 0x60, 0x1A, 0xDD, 0x00, 0x00, 0x00, 0x27, 0x55, 0x53, 0x20, 0x50,
 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x42, 0x61,
-0x6A, 0x61, 0x20, 0x43, 0x61, 0x6C, 0x69, 0x66, 0x6F, 0x72, 0x6E, 0x69, 0x61, 0x20, 0x6E, 0x65,
-0x61, 0x72, 0x20, 0x55, 0x53, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72,
+0x6A, 0x61, 0x20, 0x43, 0x61, 0x6C, 0x69, 0x66, 0x6F, 0x72, 0x6E, 0x69, 0x61, 0x20, 0x73, 0x74,
+0x61, 0x74, 0x65,
 
 /* America/Toronto */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -19524,8 +19521,8 @@ const unsigned char timelib_timezone_db_
 
 /* Asia/Chita */
 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00,
 0xA1, 0xDB, 0xF9, 0xA0, 0xB5, 0xA3, 0xC5, 0x00, 0x15, 0x27, 0x53, 0x70, 0x16, 0x18, 0x87, 0xE0,
 0x17, 0x08, 0x86, 0xF0, 0x17, 0xF9, 0xBB, 0x60, 0x18, 0xE9, 0xBA, 0x70, 0x19, 0xDA, 0xEE, 0xE0,
 0x1A, 0xCC, 0x3F, 0x70, 0x1B, 0xBC, 0x4C, 0x90, 0x1C, 0xAC, 0x3D, 0x90, 0x1D, 0x9C, 0x2E, 0x90,
@@ -19542,22 +19539,22 @@ const unsigned char timelib_timezone_db_
 0x43, 0x63, 0xAA, 0x90, 0x44, 0x25, 0x77, 0x10, 0x45, 0x43, 0x8C, 0x90, 0x46, 0x05, 0x59, 0x10,
 0x47, 0x23, 0x6E, 0x90, 0x47, 0xEE, 0x75, 0x90, 0x49, 0x03, 0x50, 0x90, 0x49, 0xCE, 0x57, 0x90,
 0x4A, 0xE3, 0x32, 0x90, 0x4B, 0xAE, 0x39, 0x90, 0x4C, 0xCC, 0x4F, 0x10, 0x4D, 0x8E, 0x1B, 0x90,
-0x54, 0x4B, 0xC9, 0x00, 0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03,
-0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x54, 0x4B, 0xC9, 0x00, 0x56, 0xF6, 0xCE, 0x20, 0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02,
+0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06,
+0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x00, 0x00, 0x6A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80,
-0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00,
-0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09,
-0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80,
-0x00, 0x0F, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54,
-0x00, 0x59, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x49, 0x52, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00,
+0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x03, 0x00, 0x00, 0x6A, 0x60, 0x00,
+0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E,
+0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00,
+0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00,
+0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E,
+0x90, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x53,
+0x54, 0x00, 0x49, 0x52, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
+0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x14, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0xDB, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
 0xB5, 0xA3, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x27, 0x53, 0x70, 0x00, 0x00, 0x00, 0x00,
 0x16, 0x18, 0x87, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x08, 0x86, 0xF0, 0x00, 0x00, 0x00, 0x00,
@@ -19590,19 +19587,20 @@ const unsigned char timelib_timezone_db_
 0x47, 0xEE, 0x75, 0x90, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0x50, 0x90, 0x00, 0x00, 0x00, 0x00,
 0x49, 0xCE, 0x57, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0x32, 0x90, 0x00, 0x00, 0x00, 0x00,
 0x4B, 0xAE, 0x39, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0x4F, 0x10, 0x00, 0x00, 0x00, 0x00,
-0x4D, 0x8E, 0x1B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4B, 0xC9, 0x00, 0x00, 0x01, 0x03, 0x02,
-0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
-0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x4D, 0x8E, 0x1B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4B, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x56, 0xF6, 0xCE, 0x20, 0x00, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05,
+0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x06, 0x07, 0x04, 0x02, 0x03,
 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
-0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x00, 0x00,
-0x6A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09,
-0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0,
-0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00,
-0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09,
-0x4C, 0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x49,
-0x52, 0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x49, 0x52, 0x4B, 0x54, 0x2D,
-0x38, 0x0A,
+0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04,
+0x05, 0x04, 0x05, 0x04, 0x08, 0x09, 0x03, 0x00, 0x00, 0x6A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70,
+0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00,
+0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x01,
+0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x70,
+0x80, 0x00, 0x0F, 0x00, 0x00, 0x8C, 0xA0, 0x01, 0x09, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x4C,
+0x4D, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x54, 0x00, 0x59, 0x41, 0x4B, 0x53, 0x54, 0x00, 0x49, 0x52,
+0x4B, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x59, 0x41, 0x4B, 0x54,
+0x2D, 0x39, 0x0A,
 #endif
 0x00, 0xD8, 0xC0, 0x48, 0x01, 0xBF, 0xCB, 0x6A, 0x00, 0x00, 0x00, 0x34, 0x4D, 0x6F, 0x73, 0x63,
 0x6F, 0x77, 0x2B, 0x30, 0x36, 0x20, 0x28, 0x4D, 0x6F, 0x73, 0x63, 0x6F, 0x77, 0x2B, 0x30, 0x35,
@@ -21230,7 +21228,7 @@ const unsigned char timelib_timezone_db_
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x80, 0x00, 0x00, 0x00,
 0x89, 0x7E, 0xFC, 0xA4, 0xCC, 0x95, 0x32, 0xA8, 0xD2, 0x74, 0x12, 0x98, 0xDD, 0xA8, 0xE0, 0xA8,
-0x02, 0x4F, 0xAB, 0x30, 0x3C, 0xAF, 0x45, 0xEC, 0x3D, 0x9F, 0x28, 0xDC, 0x48, 0x41, 0xA0, 0x30,
+0x02, 0x4F, 0xAB, 0x30, 0x3C, 0xAF, 0x45, 0xB0, 0x3D, 0x9F, 0x28, 0xA0, 0x48, 0x41, 0xA0, 0x30,
 0x49, 0x0B, 0x47, 0xA0, 0x49, 0xE4, 0xDD, 0x30, 0x4A, 0xEC, 0x7B, 0x20, 0x00, 0x01, 0x02, 0x01,
 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x00, 0x00, 0x3E, 0xDC, 0x00, 0x00, 0x00, 0x00,
 0x4D, 0x58, 0x00, 0x04, 0x00, 0x00, 0x5B, 0x68, 0x01, 0x04, 0x00, 0x00, 0x46, 0x50, 0x00, 0x08,
@@ -21244,7 +21242,7 @@ const unsigned char timelib_timezone_db_
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x89, 0x7E, 0xFC, 0xA4, 0xFF, 0xFF, 0xFF, 0xFF,
 0xCC, 0x95, 0x32, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x74, 0x12, 0x98, 0xFF, 0xFF, 0xFF, 0xFF,
 0xDD, 0xA8, 0xE0, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x02, 0x4F, 0xAB, 0x30, 0x00, 0x00, 0x00, 0x00,
-0x3C, 0xAF, 0x45, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x9F, 0x28, 0xDC, 0x00, 0x00, 0x00, 0x00,
+0x3C, 0xAF, 0x45, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x9F, 0x28, 0xA0, 0x00, 0x00, 0x00, 0x00,
 0x48, 0x41, 0xA0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0B, 0x47, 0xA0, 0x00, 0x00, 0x00, 0x00,
 0x49, 0xE4, 0xDD, 0x30, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xEC, 0x7B, 0x20, 0x00, 0x01, 0x02, 0x01,
 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x00, 0x00, 0x3E, 0xDC, 0x00, 0x00, 0x00, 0x00,
@@ -23118,7 +23116,7 @@ const unsigned char timelib_timezone_db_
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0xDB, 0x12, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xBB, 0xA2, 0x48, 0x00, 0x00, 0x00, 0x00,
 0x0F, 0x74, 0x2D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x8E, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00,
@@ -23169,18 +23167,19 @@ const unsigned char timelib_timezone_db_
 0x79, 0xBD, 0xC4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xAC, 0x72, 0x48, 0x00, 0x00, 0x00, 0x00,
 0x7B, 0x9E, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x8D, 0xA5, 0xC8, 0x00, 0x00, 0x00, 0x00,
 0x7D, 0x80, 0x2B, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x6E, 0xD9, 0x48, 0x00, 0x00, 0x00, 0x00,
-0x7F, 0x61, 0x5F, 0x38, 0x00, 0x00, 0x00, 0x03, 0x74, 0x0A, 0xD8, 0x00, 0x00, 0x01, 0x02, 0x04,
-0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
+0x7F, 0x61, 0x5F, 0x38, 0x00, 0x01, 0x02, 0x04, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
-0x02, 0x06, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00,
-0x31, 0x38, 0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08,
-0x00, 0x00, 0x3F, 0x48, 0x01, 0x0D, 0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00,
-0x54, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x53, 0x54, 0x00, 0x49, 0x52, 0x44, 0x54, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x0A,
+0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00,
+0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01,
+0x0D, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x0D, 0x00, 0x00, 0x31,
+0x38, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x53, 0x54, 0x00,
+0x49, 0x52, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x0A, 0x49, 0x52, 0x53, 0x54, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x49, 0x52, 0x44,
+0x54, 0x2C, 0x4A, 0x38, 0x30, 0x2F, 0x30, 0x2C, 0x4A, 0x32, 0x36, 0x34, 0x2F, 0x30, 0x0A,
 #endif
 0x00, 0xBF, 0xC0, 0x8A, 0x01, 0x61, 0x23, 0xA5, 0x00, 0x00, 0x00, 0x00,
 
@@ -41527,7 +41526,7 @@ const unsigned char timelib_timezone_db_
 #ifdef TIMELIB_SUPPORTS_V2DATA
 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0xF8, 0x00, 0x00, 0x00,
 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF,
 0xD2, 0xDB, 0x12, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xBB, 0xA2, 0x48, 0x00, 0x00, 0x00, 0x00,
 0x0F, 0x74, 0x2D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x8E, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00,
@@ -41578,18 +41577,19 @@ const unsigned char timelib_timezone_db_
 0x79, 0xBD, 0xC4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xAC, 0x72, 0x48, 0x00, 0x00, 0x00, 0x00,
 0x7B, 0x9E, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x8D, 0xA5, 0xC8, 0x00, 0x00, 0x00, 0x00,
 0x7D, 0x80, 0x2B, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x6E, 0xD9, 0x48, 0x00, 0x00, 0x00, 0x00,
-0x7F, 0x61, 0x5F, 0x38, 0x00, 0x00, 0x00, 0x03, 0x74, 0x0A, 0xD8, 0x00, 0x00, 0x01, 0x02, 0x04,
-0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
+0x7F, 0x61, 0x5F, 0x38, 0x00, 0x01, 0x02, 0x04, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05,
-0x02, 0x06, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00,
-0x31, 0x38, 0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0D, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08,
-0x00, 0x00, 0x3F, 0x48, 0x01, 0x0D, 0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00,
-0x54, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x53, 0x54, 0x00, 0x49, 0x52, 0x44, 0x54, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x0A,
+0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00,
+0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01,
+0x0D, 0x00, 0x00, 0x38, 0x40, 0x00, 0x08, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x0D, 0x00, 0x00, 0x31,
+0x38, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x49, 0x52, 0x53, 0x54, 0x00,
+0x49, 0x52, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x0A, 0x49, 0x52, 0x53, 0x54, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x49, 0x52, 0x44,
+0x54, 0x2C, 0x4A, 0x38, 0x30, 0x2F, 0x30, 0x2C, 0x4A, 0x32, 0x36, 0x34, 0x2F, 0x30, 0x0A,
 #endif
 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,
 
@@ -47275,4 +47275,4 @@ const unsigned char timelib_timezone_db_
 #endif
 0x00, 0x89, 0x54, 0x40, 0x01, 0x12, 0xA8, 0x80, 0x00, 0x00, 0x00, 0x00,};
 
-const timelib_tzdb timezonedb_builtin = { "2015.7", 584, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
+const timelib_tzdb timezonedb_builtin = { "2016.1", 584, timezonedb_idx_builtin, timelib_timezone_db_data_builtin };
diff -pruN 5.6.18+dfsg-4/ext/date/php_date.c 5.6.19+dfsg-1/ext/date/php_date.c
--- 5.6.18+dfsg-4/ext/date/php_date.c	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/php_date.c	2016-03-04 00:09:40.000000000 +0000
@@ -2212,8 +2212,8 @@ static int date_object_compare_date(zval
 	if (!o2->time->sse_uptodate) {
 		timelib_update_ts(o2->time, o2->time->tz_info);
 	}
-	
-	return (o1->time->sse == o2->time->sse) ? 0 : ((o1->time->sse < o2->time->sse) ? -1 : 1);
+
+	return timelib_time_compare(o1->time, o2->time);
 }
 
 static HashTable *date_object_get_gc(zval *object, zval ***table, int *n TSRMLS_DC)
@@ -3160,6 +3160,7 @@ static int php_date_modify(zval *object,
 	timelib_update_ts(dateobj->time, NULL);
 	timelib_update_from_sse(dateobj->time);
 	dateobj->time->have_relative = 0;
+	memset(&dateobj->time->relative, 0, sizeof(dateobj->time->relative));
 	
 	return 1;
 }
diff -pruN 5.6.18+dfsg-4/ext/date/tests/bug68078_negative.phpt 5.6.19+dfsg-1/ext/date/tests/bug68078_negative.phpt
--- 5.6.18+dfsg-4/ext/date/tests/bug68078_negative.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/tests/bug68078_negative.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,19 @@
+--TEST--
+Comparing datetime objects with negative timestamps should account for microseconds
+--FILE--
+<?php
+
+date_default_timezone_set('UTC');
+$earlyDate1 = DateTime::createFromFormat('U.u', '1.8642')->modify('-5 seconds');
+$earlyDate2 = DateTime::createFromFormat('U.u', '1.2768')->modify('-5 seconds');
+$earlyDate3 = DateTime::createFromFormat('U.u', '1.2768')->modify('-5 seconds');
+
+var_dump($earlyDate1 == $earlyDate2);
+var_dump($earlyDate1 < $earlyDate2);
+var_dump($earlyDate2 > $earlyDate1);
+var_dump($earlyDate2 == $earlyDate3);
+--EXPECT--
+bool(false)
+bool(true)
+bool(true)
+bool(true)
diff -pruN 5.6.18+dfsg-4/ext/date/tests/bug68078.phpt 5.6.19+dfsg-1/ext/date/tests/bug68078.phpt
--- 5.6.18+dfsg-4/ext/date/tests/bug68078.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/tests/bug68078.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,19 @@
+--TEST--
+Comparing datetime objects should account for microseconds
+--FILE--
+<?php
+
+date_default_timezone_set('UTC');
+$date1 = DateTime::createFromFormat('U.u', '1448889063.3531');
+$date2 = DateTime::createFromFormat('U.u', '1448889063.5216');
+$date3 = DateTime::createFromFormat('U.u', '1448889063.5216');
+
+var_dump($date1 == $date2);
+var_dump($date1 < $date2);
+var_dump($date2 > $date1);
+var_dump($date2 == $date3);
+--EXPECT--
+bool(false)
+bool(true)
+bool(true)
+bool(true)
diff -pruN 5.6.18+dfsg-4/ext/date/tests/bug71525.phpt 5.6.19+dfsg-1/ext/date/tests/bug71525.phpt
--- 5.6.18+dfsg-4/ext/date/tests/bug71525.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/date/tests/bug71525.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,20 @@
+--TEST--
+Bug #71525 (Calls to date_modify will mutate timelib_rel_time, causing date_date_set issues)
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+$date = new DateTime('2011-12-25 00:00:00');
+$date->modify('first day of next month');
+$date->setDate('2012', '1', '29');
+var_dump($date);
+
+--EXPECTF--
+object(DateTime)#%d (3) {
+  ["date"]=>
+  string(26) "2012-01-29 00:00:00.000000"
+  ["timezone_type"]=>
+  int(3)
+  ["timezone"]=>
+  string(3) "UTC"
+}
diff -pruN 5.6.18+dfsg-4/ext/fileinfo/libmagic/softmagic.c 5.6.19+dfsg-1/ext/fileinfo/libmagic/softmagic.c
--- 5.6.18+dfsg-4/ext/fileinfo/libmagic/softmagic.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/fileinfo/libmagic/softmagic.c	2016-03-03 00:02:11.000000000 +0000
@@ -2114,7 +2114,7 @@ magiccheck(struct magic_set *ms, struct
 			haystack = estrndup(ms->search.s, ms->search.s_len);
 
 			/* match v = 0, no match v = 1 */
-			php_pcre_match_impl(pce, haystack, ms->search.s_len, retval, subpats, 1, 1, PREG_OFFSET_CAPTURE, 0 TSRMLS_CC);
+			php_pcre_match_impl(pce, haystack, ms->search.s_len, retval, subpats, 0, 1, PREG_OFFSET_CAPTURE, 0 TSRMLS_CC);
 			/* Free haystack */
 			efree(haystack);
 			
@@ -2125,98 +2125,37 @@ magiccheck(struct magic_set *ms, struct
 				FREE_ZVAL(pattern);
 				return -1;
 			} else if ((Z_LVAL_P(retval) > 0) && (Z_TYPE_P(subpats) == IS_ARRAY)) {
-				
 				/* Need to fetch global match which equals pmatch[0] */
+				zval **ppzval;
 				HashTable *ht = Z_ARRVAL_P(subpats);
-				HashPosition outer_pos;
-				zval *pattern_match = NULL, *pattern_offset = NULL;
-				
-				zend_hash_internal_pointer_reset_ex(ht, &outer_pos); 
-				
-				if (zend_hash_has_more_elements_ex(ht, &outer_pos) == SUCCESS &&
-					zend_hash_move_forward_ex(ht, &outer_pos)) {
-					
-					zval **ppzval;
-					
-					/* The first element (should be) is the global match 
-					   Need to move to the inner array to get the global match */
-					
-					if (zend_hash_get_current_data_ex(ht, (void**)&ppzval, &outer_pos) != FAILURE) { 
-						
-						HashTable *inner_ht;
-						HashPosition inner_pos;
-						zval **match, **offset;
-						zval tmpcopy = **ppzval, matchcopy, offsetcopy;
-						
-						zval_copy_ctor(&tmpcopy); 
-						INIT_PZVAL(&tmpcopy);
-						
-						inner_ht = Z_ARRVAL(tmpcopy);
-						
-						/* If everything goes according to the master plan
-						   tmpcopy now contains two elements:
-						   0 = the match
-						   1 = starting position of the match */
-						zend_hash_internal_pointer_reset_ex(inner_ht, &inner_pos); 
-						
-						if (zend_hash_has_more_elements_ex(inner_ht, &inner_pos) == SUCCESS &&
-							zend_hash_move_forward_ex(inner_ht, &inner_pos)) {
-						
-							if (zend_hash_get_current_data_ex(inner_ht, (void**)&match, &inner_pos) != FAILURE) { 
-									
-								matchcopy = **match;
-								zval_copy_ctor(&matchcopy);
-								INIT_PZVAL(&matchcopy);
-								convert_to_string(&matchcopy); 
-								
-								MAKE_STD_ZVAL(pattern_match);
-								Z_STRVAL_P(pattern_match) = (char *)Z_STRVAL(matchcopy);
-								Z_STRLEN_P(pattern_match) = Z_STRLEN(matchcopy);
-								Z_TYPE_P(pattern_match) = IS_STRING; 
-
-								zval_dtor(&matchcopy);
-							}
-						}
-						
-						if (zend_hash_has_more_elements_ex(inner_ht, &inner_pos) == SUCCESS &&
-							zend_hash_move_forward_ex(inner_ht, &inner_pos)) {
-							
-							if (zend_hash_get_current_data_ex(inner_ht, (void**)&offset, &inner_pos) != FAILURE) { 
-								
-								offsetcopy = **offset;
-								zval_copy_ctor(&offsetcopy);
-								INIT_PZVAL(&offsetcopy);
-								convert_to_long(&offsetcopy); 
-								
-								MAKE_STD_ZVAL(pattern_offset);
-								Z_LVAL_P(pattern_offset) = Z_LVAL(offsetcopy);
-								Z_TYPE_P(pattern_offset) = IS_LONG;
-								
-								zval_dtor(&offsetcopy);
-							}
+				/* The first element (should be) is the global match 
+				   Need to move to the inner array to get the global match */
+				if (zend_hash_index_find(ht, 0, (void **)&ppzval) == SUCCESS) {
+					zval **match, **offset;
+					/* If everything goes according to the master plan
+					   tmpcopy now contains two elements:
+					   0 = the match
+					   1 = starting position of the match */
+					if (zend_hash_index_find(Z_ARRVAL_PP(ppzval), 0, (void **)&match) == SUCCESS 
+							&& zend_hash_index_find(Z_ARRVAL_PP(ppzval), 1, (void **)&offset) == SUCCESS) {
+						if (Z_TYPE_PP(match) != IS_STRING || Z_TYPE_PP(offset) != IS_LONG) {
+							goto error_out;
 						}
-						zval_dtor(&tmpcopy); 	
-					}
-					
-					if ((pattern_match != NULL) && (pattern_offset != NULL)) {
-						ms->search.s += (int)Z_LVAL_P(pattern_offset); /* this is where the match starts */
-						ms->search.offset += (size_t)Z_LVAL_P(pattern_offset); /* this is where the match starts as size_t */
-						ms->search.rm_len = Z_STRLEN_P(pattern_match) /* This is the length of the matched pattern */;
+						ms->search.s += (int)Z_LVAL_PP(offset); /* this is where the match starts */
+						ms->search.offset += (size_t)Z_LVAL_PP(offset); /* this is where the match starts as size_t */
+						ms->search.rm_len = Z_STRLEN_PP(match) /* This is the length of the matched pattern */;
 						v = 0;
-						
-						efree(pattern_match);
-						efree(pattern_offset);
-						
 					} else {
-						zval_ptr_dtor(&subpats);
-						FREE_ZVAL(retval);
-						zval_dtor(pattern);
-						FREE_ZVAL(pattern);
-						return -1;
+						goto error_out;
 					}
+				} else {
+error_out:
+					zval_ptr_dtor(&subpats);
+					FREE_ZVAL(retval);
+					zval_dtor(pattern);
+					FREE_ZVAL(pattern);
+					return -1;
 				}
-
-
 			} else {
 				v = 1;
 			}
diff -pruN 5.6.18+dfsg-4/ext/fileinfo/libmagic.patch 5.6.19+dfsg-1/ext/fileinfo/libmagic.patch
--- 5.6.18+dfsg-4/ext/fileinfo/libmagic.patch	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/fileinfo/libmagic.patch	2016-03-03 00:02:11.000000000 +0000
@@ -1,6 +1,6 @@
 diff -u libmagic.orig/apprentice.c libmagic/apprentice.c
---- libmagic.orig/apprentice.c	Tue Nov 19 22:01:12 2013
-+++ libmagic/apprentice.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/apprentice.c	2016-01-25 11:17:38.141978563 +0800
++++ libmagic/apprentice.c	2016-01-25 11:19:37.409347842 +0800
 @@ -29,6 +29,8 @@
   * apprentice - make one pass through /etc/magic, learning its secrets.
   */
@@ -530,7 +530,7 @@ diff -u libmagic.orig/apprentice.c libma
  	m->mimetype[0] = '\0';		/* initialise MIME type to none */
  	return 0;
  }
-@@ -2575,59 +2597,76 @@
+@@ -2575,59 +2597,75 @@
  private struct magic_map *
  apprentice_map(struct magic_set *ms, const char *fn)
  {
@@ -544,29 +544,29 @@ diff -u libmagic.orig/apprentice.c libma
  	size_t i;
 +	php_stream *stream = NULL;
 +	php_stream_statbuf st;
-+
-+
-+	TSRMLS_FETCH();
  
 -	fd = -1;
 -	if ((map = CAST(struct magic_map *, calloc(1, sizeof(*map)))) == NULL) {
++
++	TSRMLS_FETCH();
++
 +	if ((map = CAST(struct magic_map *, ecalloc(1, sizeof(*map)))) == NULL) {
  		file_oomem(ms, sizeof(*map));
-+		efree(map);
- 		goto error;
- 	}
- 
+-		goto error;
++		return NULL;
++	}
++
 +	if (fn == NULL) {
 +		map->p = (void *)&php_magic_database;
 +		goto internal_loaded;
-+	}
-+
+ 	}
+ 
 +#ifdef PHP_WIN32
 +	/* Don't bother on windows with php_stream_open_wrapper,
 +	return to give apprentice_load() a chance. */
 +	if (php_stream_stat_path_ex((char *)fn, 0, &st, NULL) == SUCCESS) {
 +               if (st.sb.st_mode & S_IFDIR) {
-+                       goto error;
++                       return NULL;
 +               }
 +       }
 +#endif
@@ -628,7 +628,7 @@ diff -u libmagic.orig/apprentice.c libma
  	if (*ptr != MAGICNO) {
  		if (swap4(*ptr) != MAGICNO) {
  			file_error(ms, 0, "bad magic in `%s'", dbname);
-@@ -2641,17 +2680,29 @@
+@@ -2641,17 +2679,29 @@
  	else
  		version = ptr[1];
  	if (version != VERSIONNO) {
@@ -666,7 +666,7 @@ diff -u libmagic.orig/apprentice.c libma
  	}
  	map->magic[0] = CAST(struct magic *, map->p) + 1;
  	nentries = 0;
-@@ -2664,22 +2715,29 @@
+@@ -2664,22 +2714,29 @@
  			map->magic[i + 1] = map->magic[i] + map->nmagic[i];
  		nentries += map->nmagic[i];
  	}
@@ -701,7 +701,7 @@ diff -u libmagic.orig/apprentice.c libma
  	return NULL;
  }
  
-@@ -2700,14 +2758,19 @@
+@@ -2700,14 +2757,19 @@
  	char *dbname;
  	int rv = -1;
  	uint32_t i;
@@ -724,7 +724,7 @@ diff -u libmagic.orig/apprentice.c libma
  		file_error(ms, errno, "cannot open `%s'", dbname);
  		goto out;
  	}
-@@ -2717,31 +2780,33 @@
+@@ -2717,31 +2779,33 @@
  		goto out;
  	}
  
@@ -764,7 +764,7 @@ diff -u libmagic.orig/apprentice.c libma
  	return rv;
  }
  
-@@ -2754,6 +2819,7 @@
+@@ -2754,6 +2818,7 @@
  {
  	const char *p, *q;
  	char *buf;
@@ -772,7 +772,7 @@ diff -u libmagic.orig/apprentice.c libma
  
  	if (strip) {
  		if ((p = strrchr(fn, '/')) != NULL)
-@@ -2775,16 +2841,18 @@
+@@ -2775,16 +2840,18 @@
  	q++;
  	/* Compatibility with old code that looked in .mime */
  	if (ms->flags & MAGIC_MIME) {
@@ -797,7 +797,7 @@ diff -u libmagic.orig/apprentice.c libma
  
  	/* Compatibility with old code that looked in .mime */
  	if (strstr(p, ".mime") != NULL)
-@@ -2874,7 +2942,7 @@
+@@ -2874,7 +2941,7 @@
  	m->offset = swap4((uint32_t)m->offset);
  	m->in_offset = swap4((uint32_t)m->in_offset);
  	m->lineno = swap4((uint32_t)m->lineno);
@@ -807,8 +807,8 @@ diff -u libmagic.orig/apprentice.c libma
  		m->str_flags = swap4(m->str_flags);
  	}
 diff -u libmagic.orig/ascmagic.c libmagic/ascmagic.c
---- libmagic.orig/ascmagic.c	Thu Feb 13 00:20:53 2014
-+++ libmagic/ascmagic.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/ascmagic.c	2016-01-25 11:17:38.161978563 +0800
++++ libmagic/ascmagic.c	2016-01-25 11:19:37.410347842 +0800
 @@ -139,7 +139,7 @@
  		/* malloc size is a conservative overestimate; could be
  		   improved, or at least realloced after conversion. */
@@ -829,8 +829,8 @@ diff -u libmagic.orig/ascmagic.c libmagi
  	return rv;
  }
 diff -u libmagic.orig/cdf.c libmagic/cdf.c
---- libmagic.orig/cdf.c	Tue Feb 26 17:20:42 2013
-+++ libmagic/cdf.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/cdf.c	2016-01-25 11:17:38.140978563 +0800
++++ libmagic/cdf.c	2016-01-25 11:19:37.410347842 +0800
 @@ -35,7 +35,7 @@
  #include "file.h"
  
@@ -1050,8 +1050,8 @@ diff -u libmagic.orig/cdf.c libmagic/cdf
  				(void)fprintf(stderr, "timestamp %s\n", buf);
  			} else {
 diff -u libmagic.orig/cdf.h libmagic/cdf.h
---- libmagic.orig/cdf.h	Thu Jun 21 00:19:55 2012
-+++ libmagic/cdf.h	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/cdf.h	2016-01-25 11:17:38.160978563 +0800
++++ libmagic/cdf.h	2016-01-25 11:19:37.410347842 +0800
 @@ -35,10 +35,12 @@
  #ifndef _H_CDF_
  #define _H_CDF_
@@ -1103,8 +1103,8 @@ diff -u libmagic.orig/cdf.h libmagic/cdf
      cdf_property_info_t **, size_t *, size_t *);
  int cdf_read_summary_info(const cdf_info_t *, const cdf_header_t *,
 diff -u libmagic.orig/cdf_time.c libmagic/cdf_time.c
---- libmagic.orig/cdf_time.c	Thu Jun 21 00:18:33 2012
-+++ libmagic/cdf_time.c	Sun Nov  9 19:16:18 2014
+--- libmagic.orig/cdf_time.c	2016-01-25 11:17:38.160978563 +0800
++++ libmagic/cdf_time.c	2016-01-25 11:19:37.410347842 +0800
 @@ -96,7 +96,7 @@
  }
  
@@ -1163,8 +1163,8 @@ diff -u libmagic.orig/cdf_time.c libmagi
  	static const cdf_timestamp_t tst = 0x01A5E403C2D59C00ULL;
  	static const char *ref = "Sat Apr 23 01:30:00 1977";
 diff -u libmagic.orig/compress.c libmagic/compress.c
---- libmagic.orig/compress.c	Sun Jan  5 16:55:21 2014
-+++ libmagic/compress.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/compress.c	2016-01-25 11:17:38.149978563 +0800
++++ libmagic/compress.c	2016-01-25 11:19:37.410347842 +0800
 @@ -32,6 +32,7 @@
   *	uncompress(method, old, n, newch) - uncompress old into new, 
   *					    using method, return sizeof new
@@ -1326,8 +1326,8 @@ diff -u libmagic.orig/compress.c libmagi
 -#endif
 +#endif /* if PHP_FILEINFO_UNCOMPRESS */
 diff -u libmagic.orig/file.h libmagic/file.h
---- libmagic.orig/file.h	Thu Feb 13 00:20:53 2014
-+++ libmagic/file.h	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/file.h	2016-01-25 11:17:38.140978563 +0800
++++ libmagic/file.h	2016-01-25 11:19:37.411347842 +0800
 @@ -33,11 +33,9 @@
  #ifndef __file_h__
  #define __file_h__
@@ -1485,24 +1485,22 @@ diff -u libmagic.orig/file.h libmagic/fi
  size_t strlcat(char *, const char *, size_t);
  #endif
  #ifndef HAVE_STRCASESTR
-@@ -535,6 +516,14 @@
- #endif
- #else
+@@ -537,4 +518,12 @@
  #define FILE_RCSID(id)
-+#endif
-+
+ #endif
+ 
 +#ifdef PHP_WIN32
 +#define FINFO_LSEEK_FUNC _lseek
 +#define FINFO_READ_FUNC _read
 +#else
 +#define FINFO_LSEEK_FUNC lseek
 +#define FINFO_READ_FUNC read
- #endif
- 
++#endif
++
  #endif /* __file_h__ */
 diff -u libmagic.orig/fsmagic.c libmagic/fsmagic.c
---- libmagic.orig/fsmagic.c	Sun Dec  1 20:22:13 2013
-+++ libmagic/fsmagic.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/fsmagic.c	2016-01-25 11:17:38.139978563 +0800
++++ libmagic/fsmagic.c	2016-01-25 11:19:37.411347842 +0800
 @@ -59,27 +59,21 @@
  # define minor(dev)  ((dev) & 0xff)
  #endif
@@ -1826,8 +1824,8 @@ diff -u libmagic.orig/fsmagic.c libmagic
  	return ret;
  }
 diff -u libmagic.orig/funcs.c libmagic/funcs.c
---- libmagic.orig/funcs.c	Thu Feb 13 00:20:53 2014
-+++ libmagic/funcs.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/funcs.c	2016-01-25 11:17:38.150978563 +0800
++++ libmagic/funcs.c	2016-01-25 11:19:37.411347842 +0800
 @@ -27,7 +27,7 @@
  #include "file.h"
  
@@ -2165,9 +2163,10 @@ diff -u libmagic.orig/funcs.c libmagic/f
 -	return rv;
 +	return rep_cnt;
  }
+Common subdirectories: libmagic.orig/.libs and libmagic/.libs
 diff -u libmagic.orig/magic.c libmagic/magic.c
---- libmagic.orig/magic.c	Sun Dec  1 20:22:13 2013
-+++ libmagic/magic.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/magic.c	2016-01-25 11:17:38.161978563 +0800
++++ libmagic/magic.c	2016-01-25 11:19:37.411347842 +0800
 @@ -25,11 +25,6 @@
   * SUCH DAMAGE.
   */
@@ -2505,17 +2504,8 @@ diff -u libmagic.orig/magic.c libmagic/m
  public const char *
  magic_error(struct magic_set *ms)
 diff -u libmagic.orig/magic.h libmagic/magic.h
---- libmagic.orig/magic.h	Tue Feb 11 16:30:44 2014
-+++ libmagic/magic.h	Sun Jan  4 17:06:01 2015
-@@ -75,7 +75,7 @@
- #define	MAGIC_NO_CHECK_FORTRAN	0x000000 /* Don't check ascii/fortran */
- #define	MAGIC_NO_CHECK_TROFF	0x000000 /* Don't check ascii/troff */
- 
--#define MAGIC_VERSION		516	/* This implementation */
-+#define MAGIC_VERSION		517	/* This implementation */
- 
- 
- #ifdef __cplusplus
+--- libmagic.orig/magic.h	2016-01-25 11:17:38.139978563 +0800
++++ libmagic/magic.h	2016-01-25 11:19:37.412347842 +0800
 @@ -88,6 +88,7 @@
  
  const char *magic_getpath(const char *, int);
@@ -2532,9 +2522,21 @@ diff -u libmagic.orig/magic.h libmagic/m
  int magic_list(magic_t, const char *);
  int magic_errno(magic_t);
  
+diff -u libmagic.orig/patchlevel.h libmagic/patchlevel.h
+--- libmagic.orig/patchlevel.h	2016-01-25 11:17:38.141978563 +0800
++++ libmagic/patchlevel.h	2016-01-25 11:19:37.412347842 +0800
+@@ -351,7 +351,7 @@
+  *
+  * Revision 1.8  93/02/19  15:01:26  ian
+  * Numerous changes from Guy Harris too numerous to mention but including
+- * byte-order independance, fixing "old-style masking", etc. etc. A bugfix
++ * byte-order independence, fixing "old-style masking", etc. etc. A bugfix
+  * for broken symlinks from martin@@d255s004.zfe.siemens.de.
+  * 
+  * Revision 1.7  93/01/05  14:57:27  ian
 diff -u libmagic.orig/print.c libmagic/print.c
---- libmagic.orig/print.c	Tue Feb 26 19:25:00 2013
-+++ libmagic/print.c	Sun Jan  4 17:04:32 2015
+--- libmagic.orig/print.c	2016-01-25 11:17:38.162978563 +0800
++++ libmagic/print.c	2016-01-25 11:19:37.412347842 +0800
 @@ -28,13 +28,17 @@
  /*
   * print.c - debugging printout routines
@@ -2767,8 +2769,8 @@ diff -u libmagic.orig/print.c libmagic/p
  		t = ts.tv_sec;
  	}
 diff -u libmagic.orig/readcdf.c libmagic/readcdf.c
---- libmagic.orig/readcdf.c	Tue Jan  7 04:13:42 2014
-+++ libmagic/readcdf.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/readcdf.c	2016-01-25 11:17:38.160978563 +0800
++++ libmagic/readcdf.c	2016-01-25 11:19:37.412347842 +0800
 @@ -26,11 +26,15 @@
  #include "file.h"
  
@@ -2984,9 +2986,11 @@ diff -u libmagic.orig/readcdf.c libmagic
  		}
  		if (NOTMIME(ms)) {
  			if (str != NULL) {
+Only in libmagic.orig/: readelf.c
+Only in libmagic.orig/: readelf.h
 diff -u libmagic.orig/softmagic.c libmagic/softmagic.c
---- libmagic.orig/softmagic.c	Thu Feb 13 00:20:53 2014
-+++ libmagic/softmagic.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/softmagic.c	2016-01-25 11:17:38.139978563 +0800
++++ libmagic/softmagic.c	2016-01-25 11:19:45.545347848 +0800
 @@ -50,6 +50,11 @@
  #include <locale.h>
  #endif
@@ -3164,22 +3168,25 @@ diff -u libmagic.orig/softmagic.c libmag
  {
  	/*
  	 * Note: FILE_SEARCH and FILE_REGEX do not actually copy
-@@ -1066,15 +1061,24 @@
+@@ -1066,15 +1061,27 @@
  			const char *last;	/* end of search region */
  			const char *buf;	/* start of search region */
  			const char *end;
 -			size_t lines;
 +			size_t lines, linecnt, bytecnt;
- 
++
 +			linecnt = m->str_range;
 +			bytecnt = linecnt * 80;
-+
+ 
 +			if (bytecnt == 0) {
 +				bytecnt = 8192;
 +			}
 +			if (bytecnt > nbytes) {
 +				bytecnt = nbytes;
 +			}
++			if (offset > bytecnt) {
++				offset = bytecnt;
++			}
  			if (s == NULL) {
  				ms->search.s_len = 0;
  				ms->search.s = NULL;
@@ -3191,7 +3198,7 @@ diff -u libmagic.orig/softmagic.c libmag
  			/* mget() guarantees buf <= last */
  			for (lines = linecnt, b = buf; lines && b < end &&
  			     ((b = CAST(const char *,
-@@ -1087,7 +1091,7 @@
+@@ -1087,7 +1094,7 @@
  					b++;
  			}
  			if (lines)
@@ -3200,7 +3207,7 @@ diff -u libmagic.orig/softmagic.c libmag
  
  			ms->search.s = buf;
  			ms->search.s_len = last - buf;
-@@ -1158,7 +1162,6 @@
+@@ -1158,7 +1165,6 @@
      int *need_separator, int *returnval)
  {
  	uint32_t soffset, offset = ms->offset;
@@ -3208,7 +3215,7 @@ diff -u libmagic.orig/softmagic.c libmag
  	int rv, oneed_separator, in_type;
  	char *sbuf, *rbuf;
  	union VALUETYPE *p = &ms->ms_value;
-@@ -1170,17 +1173,13 @@
+@@ -1170,17 +1176,13 @@
  	}
  
  	if (mcopy(ms, p, m->type, m->flag & INDIR, s, (uint32_t)(offset + o),
@@ -3228,7 +3235,7 @@ diff -u libmagic.orig/softmagic.c libmag
  	}
  
  	if (m->flag & INDIR) {
-@@ -1672,16 +1671,13 @@
+@@ -1672,16 +1674,13 @@
  			if ((ms->flags & MAGIC_DEBUG) != 0)
  				fprintf(stderr, "indirect +offs=%u\n", offset);
  		}
@@ -3246,7 +3253,7 @@ diff -u libmagic.orig/softmagic.c libmag
  		}
  	}
  
-@@ -1755,11 +1751,21 @@
+@@ -1755,11 +1754,21 @@
  		ms->offset = soffset;
  		if (rv == 1) {
  			if ((ms->flags & (MAGIC_MIME|MAGIC_APPLE)) == 0 &&
@@ -3271,7 +3278,7 @@ diff -u libmagic.orig/softmagic.c libmag
  		}
  		return rv;
  
-@@ -1875,6 +1881,42 @@
+@@ -1875,6 +1884,42 @@
  	return file_strncmp(a, b, len, flags);
  }
  
@@ -3314,7 +3321,7 @@ diff -u libmagic.orig/softmagic.c libmag
  private int
  magiccheck(struct magic_set *ms, struct magic *m)
  {
-@@ -2035,63 +2077,151 @@
+@@ -2035,63 +2080,90 @@
  		break;
  	}
  	case FILE_REGEX: {
@@ -3324,6 +3331,43 @@ diff -u libmagic.orig/softmagic.c libmag
 -
 -		if (ms->search.s == NULL)
 -			return 0;
+-
+-		l = 0;
+-		rc = regcomp(&rx, m->value.s,
+-		    REG_EXTENDED|REG_NEWLINE|
+-		    ((m->str_flags & STRING_IGNORE_CASE) ? REG_ICASE : 0));
+-		if (rc) {
+-			(void)regerror(rc, &rx, errmsg, sizeof(errmsg));
+-			file_magerror(ms, "regex error %d, (%s)",
+-			    rc, errmsg);
+-			v = (uint64_t)-1;
+-		}
+-		else {
+-			regmatch_t pmatch[1];
+-#ifndef REG_STARTEND
+-#define	REG_STARTEND	0
+-			size_t l = ms->search.s_len - 1;
+-			char c = ms->search.s[l];
+-			((char *)(intptr_t)ms->search.s)[l] = '\0';
+-#else
+-			pmatch[0].rm_so = 0;
+-			pmatch[0].rm_eo = ms->search.s_len;
+-#endif
+-			rc = regexec(&rx, (const char *)ms->search.s,
+-			    1, pmatch, REG_STARTEND);
+-#if REG_STARTEND == 0
+-			((char *)(intptr_t)ms->search.s)[l] = c;
+-#endif
+-			switch (rc) {
+-			case 0:
+-				ms->search.s += (int)pmatch[0].rm_so;
+-				ms->search.offset += (size_t)pmatch[0].rm_so;
+-				ms->search.rm_len =
+-				    (size_t)(pmatch[0].rm_eo - pmatch[0].rm_so);
+-				v = 0;
+-				break;
+-
+-			case REG_NOMATCH:
 +		zval *pattern;
 +		int options = 0;
 +		pcre_cache_entry *pce;
@@ -3358,7 +3402,7 @@ diff -u libmagic.orig/softmagic.c libmag
 +			haystack = estrndup(ms->search.s, ms->search.s_len);
 +
 +			/* match v = 0, no match v = 1 */
-+			php_pcre_match_impl(pce, haystack, ms->search.s_len, retval, subpats, 1, 1, PREG_OFFSET_CAPTURE, 0 TSRMLS_CC);
++			php_pcre_match_impl(pce, haystack, ms->search.s_len, retval, subpats, 0, 1, PREG_OFFSET_CAPTURE, 0 TSRMLS_CC);
 +			/* Free haystack */
 +			efree(haystack);
 +			
@@ -3369,133 +3413,37 @@ diff -u libmagic.orig/softmagic.c libmag
 +				FREE_ZVAL(pattern);
 +				return -1;
 +			} else if ((Z_LVAL_P(retval) > 0) && (Z_TYPE_P(subpats) == IS_ARRAY)) {
-+				
 +				/* Need to fetch global match which equals pmatch[0] */
++				zval **ppzval;
 +				HashTable *ht = Z_ARRVAL_P(subpats);
-+				HashPosition outer_pos;
-+				zval *pattern_match = NULL, *pattern_offset = NULL;
-+				
-+				zend_hash_internal_pointer_reset_ex(ht, &outer_pos); 
-+				
-+				if (zend_hash_has_more_elements_ex(ht, &outer_pos) == SUCCESS &&
-+					zend_hash_move_forward_ex(ht, &outer_pos)) {
-+					
-+					zval **ppzval;
-+					
-+					/* The first element (should be) is the global match 
-+					   Need to move to the inner array to get the global match */
-+					
-+					if (zend_hash_get_current_data_ex(ht, (void**)&ppzval, &outer_pos) != FAILURE) { 
-+						
-+						HashTable *inner_ht;
-+						HashPosition inner_pos;
-+						zval **match, **offset;
-+						zval tmpcopy = **ppzval, matchcopy, offsetcopy;
-+						
-+						zval_copy_ctor(&tmpcopy); 
-+						INIT_PZVAL(&tmpcopy);
-+						
-+						inner_ht = Z_ARRVAL(tmpcopy);
-+						
-+						/* If everything goes according to the master plan
-+						   tmpcopy now contains two elements:
-+						   0 = the match
-+						   1 = starting position of the match */
-+						zend_hash_internal_pointer_reset_ex(inner_ht, &inner_pos); 
-+						
-+						if (zend_hash_has_more_elements_ex(inner_ht, &inner_pos) == SUCCESS &&
-+							zend_hash_move_forward_ex(inner_ht, &inner_pos)) {
-+						
-+							if (zend_hash_get_current_data_ex(inner_ht, (void**)&match, &inner_pos) != FAILURE) { 
-+									
-+								matchcopy = **match;
-+								zval_copy_ctor(&matchcopy);
-+								INIT_PZVAL(&matchcopy);
-+								convert_to_string(&matchcopy); 
-+								
-+								MAKE_STD_ZVAL(pattern_match);
-+								Z_STRVAL_P(pattern_match) = (char *)Z_STRVAL(matchcopy);
-+								Z_STRLEN_P(pattern_match) = Z_STRLEN(matchcopy);
-+								Z_TYPE_P(pattern_match) = IS_STRING; 
-+
-+								zval_dtor(&matchcopy);
-+							}
++				/* The first element (should be) is the global match 
++				   Need to move to the inner array to get the global match */
++				if (zend_hash_index_find(ht, 0, (void **)&ppzval) == SUCCESS) {
++					zval **match, **offset;
++					/* If everything goes according to the master plan
++					   tmpcopy now contains two elements:
++					   0 = the match
++					   1 = starting position of the match */
++					if (zend_hash_index_find(Z_ARRVAL_PP(ppzval), 0, (void **)&match) == SUCCESS 
++							&& zend_hash_index_find(Z_ARRVAL_PP(ppzval), 1, (void **)&offset) == SUCCESS) {
++						if (Z_TYPE_PP(match) != IS_STRING || Z_TYPE_PP(offset) != IS_LONG) {
++							goto error_out;
 +						}
-+						
-+						if (zend_hash_has_more_elements_ex(inner_ht, &inner_pos) == SUCCESS &&
-+							zend_hash_move_forward_ex(inner_ht, &inner_pos)) {
-+							
-+							if (zend_hash_get_current_data_ex(inner_ht, (void**)&offset, &inner_pos) != FAILURE) { 
-+								
-+								offsetcopy = **offset;
-+								zval_copy_ctor(&offsetcopy);
-+								INIT_PZVAL(&offsetcopy);
-+								convert_to_long(&offsetcopy); 
-+								
-+								MAKE_STD_ZVAL(pattern_offset);
-+								Z_LVAL_P(pattern_offset) = Z_LVAL(offsetcopy);
-+								Z_TYPE_P(pattern_offset) = IS_LONG;
-+								
-+								zval_dtor(&offsetcopy);
-+							}
-+						}
-+						zval_dtor(&tmpcopy); 	
-+					}
-+					
-+					if ((pattern_match != NULL) && (pattern_offset != NULL)) {
-+						ms->search.s += (int)Z_LVAL_P(pattern_offset); /* this is where the match starts */
-+						ms->search.offset += (size_t)Z_LVAL_P(pattern_offset); /* this is where the match starts as size_t */
-+						ms->search.rm_len = Z_STRLEN_P(pattern_match) /* This is the length of the matched pattern */;
++						ms->search.s += (int)Z_LVAL_PP(offset); /* this is where the match starts */
++						ms->search.offset += (size_t)Z_LVAL_PP(offset); /* this is where the match starts as size_t */
++						ms->search.rm_len = Z_STRLEN_PP(match) /* This is the length of the matched pattern */;
 +						v = 0;
-+						
-+						efree(pattern_match);
-+						efree(pattern_offset);
-+						
 +					} else {
-+						zval_ptr_dtor(&subpats);
-+						FREE_ZVAL(retval);
-+						zval_dtor(pattern);
-+						FREE_ZVAL(pattern);
-+						return -1;
++						goto error_out;
 +					}
++				} else {
++error_out:
++					zval_ptr_dtor(&subpats);
++					FREE_ZVAL(retval);
++					zval_dtor(pattern);
++					FREE_ZVAL(pattern);
++					return -1;
 +				}
- 
--		l = 0;
--		rc = regcomp(&rx, m->value.s,
--		    REG_EXTENDED|REG_NEWLINE|
--		    ((m->str_flags & STRING_IGNORE_CASE) ? REG_ICASE : 0));
--		if (rc) {
--			(void)regerror(rc, &rx, errmsg, sizeof(errmsg));
--			file_magerror(ms, "regex error %d, (%s)",
--			    rc, errmsg);
--			v = (uint64_t)-1;
--		}
--		else {
--			regmatch_t pmatch[1];
--#ifndef REG_STARTEND
--#define	REG_STARTEND	0
--			size_t l = ms->search.s_len - 1;
--			char c = ms->search.s[l];
--			((char *)(intptr_t)ms->search.s)[l] = '\0';
--#else
--			pmatch[0].rm_so = 0;
--			pmatch[0].rm_eo = ms->search.s_len;
--#endif
--			rc = regexec(&rx, (const char *)ms->search.s,
--			    1, pmatch, REG_STARTEND);
--#if REG_STARTEND == 0
--			((char *)(intptr_t)ms->search.s)[l] = c;
--#endif
--			switch (rc) {
--			case 0:
--				ms->search.s += (int)pmatch[0].rm_so;
--				ms->search.offset += (size_t)pmatch[0].rm_so;
--				ms->search.rm_len =
--				    (size_t)(pmatch[0].rm_eo - pmatch[0].rm_so);
--				v = 0;
--				break;
- 
--			case REG_NOMATCH:
 +			} else {
  				v = 1;
 -				break;
@@ -3519,8 +3467,8 @@ diff -u libmagic.orig/softmagic.c libmag
  	}
  	case FILE_INDIRECT:
 diff -u libmagic.orig/strcasestr.c libmagic/strcasestr.c
---- libmagic.orig/strcasestr.c	Thu Dec  5 17:57:50 2013
-+++ libmagic/strcasestr.c	Sun Jan  4 17:06:01 2015
+--- libmagic.orig/strcasestr.c	2016-01-25 11:17:38.160978563 +0800
++++ libmagic/strcasestr.c	2016-01-25 11:19:37.413347842 +0800
 @@ -37,6 +37,8 @@
  __RCSID("$NetBSD: strncasecmp.c,v 1.2 2007/06/04 18:19:27 christos Exp $");
  #endif /* LIBC_SCCS and not lint */
diff -pruN 5.6.18+dfsg-4/ext/opcache/ZendAccelerator.c 5.6.19+dfsg-1/ext/opcache/ZendAccelerator.c
--- 5.6.18+dfsg-4/ext/opcache/ZendAccelerator.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/opcache/ZendAccelerator.c	2016-03-03 00:02:11.000000000 +0000
@@ -2370,6 +2370,11 @@ static void accel_deactivate(void)
 	 */
 	TSRMLS_FETCH();
 
+	if (ZCG(cwd)) {
+		efree(ZCG(cwd));
+		ZCG(cwd) = NULL;
+	}
+
 	if (!ZCG(enabled) || !accel_startup_ok) {
 		return;
 	}
@@ -2383,12 +2388,6 @@ static void accel_deactivate(void)
 		zend_accel_fast_shutdown(TSRMLS_C);
 	}
 #endif
-
-	if (ZCG(cwd)) {
-		efree(ZCG(cwd));
-		ZCG(cwd) = NULL;
-	}
-
 }
 
 static int accelerator_remove_cb(zend_extension *element1, zend_extension *element2)
diff -pruN 5.6.18+dfsg-4/ext/openssl/openssl.c 5.6.19+dfsg-1/ext/openssl/openssl.c
--- 5.6.18+dfsg-4/ext/openssl/openssl.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/openssl.c	2016-03-03 00:02:11.000000000 +0000
@@ -1277,6 +1277,10 @@ PHP_MSHUTDOWN_FUNCTION(openssl)
 {
 	EVP_cleanup();
 
+#if OPENSSL_VERSION_NUMBER >= 0x00090805f
+	ERR_free_strings();
+#endif
+
 	php_unregister_url_stream_wrapper("https" TSRMLS_CC);
 	php_unregister_url_stream_wrapper("ftps" TSRMLS_CC);
 
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/002.phpt 5.6.19+dfsg-1/ext/openssl/tests/002.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/002.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/002.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
---TEST--
-openssl_seal() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-
-$a = 1;
-$b = array(1);
-$c = array(1);
-$d = array(1);
-
-var_dump(openssl_seal($a, $b, $c, $d));
-var_dump(openssl_seal($a, $a, $a, array()));
-var_dump(openssl_seal($c, $c, $c, 1));
-var_dump(openssl_seal($b, $b, $b, ""));
-
-echo "Done\n";
-?>
---EXPECTF--	
-Warning: openssl_seal(): not a public key (1th member of pubkeys) in %s on line %d
-bool(false)
-
-Warning: openssl_seal(): Fourth argument to openssl_seal() must be a non-empty array in %s on line %d
-bool(false)
-
-Warning: openssl_seal() expects parameter 1 to be string, array given in %s on line %d
-NULL
-
-Warning: openssl_seal() expects parameter 1 to be string, array given in %s on line %d
-NULL
-Done
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/003.phpt 5.6.19+dfsg-1/ext/openssl/tests/003.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/003.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/003.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,43 +0,0 @@
---TEST--
-openssl_pkcs7_decrypt() and invalid parameters
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-
-function myErrorHandler($errno, $errstr, $errfile, $errline) {
-var_dump($errstr);
-} 
-set_error_handler("myErrorHandler"); 
-
-$a = 1; 
-$b = 1; 
-$c = new stdclass; 
-$d = new stdclass; 
-
-var_dump(openssl_pkcs7_decrypt($a, $b, $c, $d));
-var_dump($c);
-
-var_dump(openssl_pkcs7_decrypt($b, $b, $b, $b));
-var_dump(openssl_pkcs7_decrypt($a, $b, "", ""));
-var_dump(openssl_pkcs7_decrypt($a, $b, true, false));
-var_dump(openssl_pkcs7_decrypt($a, $b, 0, 0));
-
-echo "Done\n";
-?>
---EXPECTF--	
-string(57) "Object of class stdClass could not be converted to string"
-string(45) "Object of class stdClass to string conversion"
-string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
-bool(false)
-object(stdClass)#1 (0) {
-}
-string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
-bool(false)
-string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
-bool(false)
-string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
-bool(false)
-string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
-bool(false)
-Done
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/004.phpt 5.6.19+dfsg-1/ext/openssl/tests/004.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/004.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/004.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,34 +0,0 @@
---TEST--
-openssl_csr_new() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-
-$a = 1;
-var_dump(openssl_csr_new(1,$a));
-var_dump(openssl_csr_new(1,$a,1,1));
-$a = array();
-var_dump(openssl_csr_new(array(), $a, array('config' => __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf'), array()));
-
-//this leaks
-$a = array(1,2);
-$b = array(1,2);
-var_dump(openssl_csr_new($a, $b, array('config' => __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf')));
-
-
-echo "Done\n";
-?>
---EXPECTF--	
-Warning: openssl_csr_new() expects parameter 1 to be array, integer given in %s on line %d
-NULL
-
-Warning: openssl_csr_new() expects parameter 1 to be array, integer given in %s on line %d
-NULL
-
-Warning: openssl_csr_new(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
-
-Warning: openssl_csr_new(): add1_attr_by_txt challengePassword_min -> 4 (failed; check error queue and value of string_mask OpenSSL option if illegal characters are reported) in %s on line %d
-bool(false)
-resource(%d) of type (OpenSSL X.509 CSR)
-Done
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/005_crt.txt 5.6.19+dfsg-1/ext/openssl/tests/005_crt.txt
--- 5.6.18+dfsg-4/ext/openssl/tests/005_crt.txt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/005_crt.txt	1970-01-01 00:00:00.000000000 +0000
@@ -1,22 +0,0 @@
------BEGIN NEW CERTIFICATE REQUEST-----
-MIIDYzCCAswCAQAwgYcxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZCBCcmFi
-YW50MQ0wCwYDVQQHEwRVZGVuMRMwEQYDVQQKEwpUcmljb25uZWN0MRMwEQYDVQQL
-EwpUcmljb25uZWN0MScwJQYDVQQDHh4AKgAuAHQAcgBpAGMAbwBuAG4AZQBjAHQA
-LgBuAGwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANjE/qKAKgo93162HhtX
-OZdvunF5eG/PFK2yn6uAUDWgZciPoKBslgL6a6sK+RdcS7LjWdjWEOOANGzZY1Kk
-FelzxrIjIGSGJHC9eubebdu2LWFFM5cEMDiH0QSD9Rdiy7svSLWvngUDYj0wwd+m
-iV2duzUFHnusj9iVPpD9s47RAgMBAAGgggGZMBoGCisGAQQBgjcNAgMxDBYKNS4y
-LjM3OTAuMjB7BgorBgEEAYI3AgEOMW0wazAOBgNVHQ8BAf8EBAMCBPAwRAYJKoZI
-hvcNAQkPBDcwNTAOBggqhkiG9w0DAgICAIAwDgYIKoZIhvcNAwQCAgCAMAcGBSsO
-AwIHMAoGCCqGSIb3DQMHMBMGA1UdJQQMMAoGCCsGAQUFBwMBMIH9BgorBgEEAYI3
-DQICMYHuMIHrAgEBHloATQBpAGMAcgBvAHMAbwBmAHQAIABSAFMAQQAgAFMAQwBo
-AGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2
-AGkAZABlAHIDgYkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAADANBgkqhkiG9w0BAQUFAAOBgQA4agiUkIblhF+n0wth4vQY+PwMadyaBpA4
-epr4TKL0QEkA0bQBbIERw5dDE3WQi6aVFJe6y870QymBwmKIvfBBfOyyA0IlQq/n
-uybhzQNQbSMKF1T82hpfh1w2RwVGaGrw7f6qH+CLyP1ydvBPvmD88HwiibNBBB3c
-R23mEEGYUQ==
------END NEW CERTIFICATE REQUEST-----
-
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/005.phpt 5.6.19+dfsg-1/ext/openssl/tests/005.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/005.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/005.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,34 +0,0 @@
---TEST--
-openssl_csr_get_subject() tests
---SKIPIF--
-<?php 
-if (!extension_loaded("openssl")) die("skip"); 
-if (!function_exists("utf8_decode")) die("skip");
-?>
---FILE--
-<?php
-
-$csr = file_get_contents(dirname(__FILE__) . '/005_crt.txt');
-if ($out = openssl_csr_get_subject($csr, 1)) {
-	var_dump($out);
-}
-echo "\n";
-$cn = utf8_decode($out['CN']);
-var_dump($cn);
---EXPECTF--	
-array(6) {
-  ["C"]=>
-  string(2) "NL"
-  ["ST"]=>
-  string(13) "Noord Brabant"
-  ["L"]=>
-  string(4) "Uden"
-  ["O"]=>
-  string(10) "Triconnect"
-  ["OU"]=>
-  string(10) "Triconnect"
-  ["CN"]=>
-  string(15) "*.triconnect.nl"
-}
-
-string(15) "*.triconnect.nl"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/006.phpt 5.6.19+dfsg-1/ext/openssl/tests/006.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/006.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/006.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,25 +0,0 @@
---TEST--
-openssl_pkey_new() with an empty sub-array arg generates a malformed resource
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-/* openssl_pkey_get_details() segfaults when getting the information
-	from openssl_pkey_new() with an empty sub-array arg 		*/
-
-$rsa = array("rsa" => array());
-$dsa = array("dsa" => array());
-$dh = array("dh" => array());
-
-openssl_pkey_get_details(openssl_pkey_new($rsa));
-openssl_pkey_get_details(openssl_pkey_new($dsa));
-openssl_pkey_get_details(openssl_pkey_new($dh));
-?>
---EXPECTF--
-
-Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in %s on line %d
-
-Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in %s on line %d
-
-Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in %s on line %d
-
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/007.phpt 5.6.19+dfsg-1/ext/openssl/tests/007.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/007.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/007.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,60 +0,0 @@
---TEST--
-openssl_x509_read() and openssl_x509_free() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$fp = fopen(dirname(__FILE__) . "/cert.crt","r");
-$a = fread($fp,8192);
-fclose($fp); 
-
-$b = "file://" . dirname(__FILE__) . "/cert.crt";
-$c = "invalid cert";
-$d = openssl_x509_read($a);
-$e = array();
-$f = array($b);
-
-var_dump($res = openssl_x509_read($a));         // read cert as a string
-openssl_x509_free($res);
-var_dump($res);
-var_dump($res = openssl_x509_read($b));         // read cert as a filename string
-openssl_x509_free($res);
-var_dump($res);
-var_dump($res = openssl_x509_read($c));         // read an invalid cert, fails
-openssl_x509_free($res);
-var_dump($res);
-var_dump($res = openssl_x509_read($d));         // read cert from a resource
-openssl_x509_free($res);
-var_dump($res);
-var_dump($res = openssl_x509_read($e));         // read an array
-openssl_x509_free($res);
-var_dump($res);
-var_dump($res = openssl_x509_read($f));         // read an array with the filename
-openssl_x509_free($res);
-var_dump($res);
-?>
---EXPECTF--
-resource(%d) of type (OpenSSL X.509)
-resource(%d) of type (Unknown)
-resource(%d) of type (OpenSSL X.509)
-resource(%d) of type (Unknown)
-
-Warning: openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate! in %s on line %d
-bool(false)
-
-Warning: openssl_x509_free() expects parameter 1 to be resource, boolean given in %s on line %d
-bool(false)
-resource(%d) of type (OpenSSL X.509)
-resource(%d) of type (Unknown)
-
-Warning: openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate! in %s on line %d
-bool(false)
-
-Warning: openssl_x509_free() expects parameter 1 to be resource, boolean given in %s on line %d
-bool(false)
-
-Warning: openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate! in %s on line %d
-bool(false)
-
-Warning: openssl_x509_free() expects parameter 1 to be resource, boolean given in %s on line %d
-bool(false)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/008.phpt 5.6.19+dfsg-1/ext/openssl/tests/008.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/008.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/008.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,74 +0,0 @@
---TEST--
-openssl_x509_export() and openssl_x509_export_to_file() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$fp = fopen(dirname(__FILE__) . "/cert.crt","r");
-$a = fread($fp,8192);
-fclose($fp); 
-
-$b = "file://" . dirname(__FILE__) . "/cert.crt";
-$c = "invalid cert";
-$d = openssl_x509_read($a);
-$e = array();
-
-var_dump(openssl_x509_export($a, $output));	// read cert as a binary string
-var_dump(openssl_x509_export($b, $output2));	// read cert from a filename string
-var_dump(openssl_x509_export($c, $output3));	// read an invalid cert, fails
-var_dump(openssl_x509_export($d, $output4));	// read cert from a resource
-var_dump(openssl_x509_export($e, $output5));	// read an array, fails
-
-$outfilename = tempnam("/tmp", "ssl");
-if ($outfilename === false)
-        die("failed to get a temporary filename!");
-
-echo "---\n";
-
-var_dump(openssl_x509_export_to_file($a, $outfilename));      // read cert as a binary string
-var_dump(openssl_x509_export_to_file($b, $outfilename));      // read cert from a filename string
-var_dump(openssl_x509_export_to_file($c, $outfilename));      // read an invalid cert, fails
-var_dump(openssl_x509_export_to_file($d, $outfilename));      // read cert from a resource
-var_dump(openssl_x509_export_to_file($e, $outfilename));      // read an array, fails
-echo "---\n";
-
-var_dump($exists = file_exists($outfilename));
-if ($exists) {
-        @unlink($outfilename);
-}
-echo "---\n";
-
-var_dump(strcmp($output, $a));
-var_dump(strcmp($output, $output2));
-var_dump(strcmp($output, $output3));
-var_dump(strcmp($output, $output4));	// different
-var_dump(strcmp($output, $output5));	// different
-?>
---EXPECTF--
-bool(true)
-bool(true)
-
-Warning: openssl_x509_export(): cannot get cert from parameter 1 in %s on line %d
-bool(false)
-bool(true)
-
-Warning: openssl_x509_export(): cannot get cert from parameter 1 in %s on line %d
-bool(false)
----
-bool(true)
-bool(true)
-
-Warning: openssl_x509_export_to_file(): cannot get cert from parameter 1 in %s on line %d
-bool(false)
-bool(true)
-
-Warning: openssl_x509_export_to_file(): cannot get cert from parameter 1 in %s on line %d
-bool(false)
----
-bool(true)
----
-int(0)
-int(0)
-int(%d)
-int(0)
-int(%d)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/009.phpt 5.6.19+dfsg-1/ext/openssl/tests/009.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/009.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/009.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,29 +0,0 @@
---TEST--
-openssl_x509_check_private_key() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$fp = fopen(dirname(__FILE__) . "/cert.crt","r");
-$a = fread($fp,8192);
-fclose($fp);
-
-$fp = fopen(dirname(__FILE__) . "/private.key","r");
-$b = fread($fp,8192);
-fclose($fp);
-
-$cert = "file://" . dirname(__FILE__) . "/cert.crt";
-$key = "file://" . dirname(__FILE__) . "/private.key";
-
-var_dump(openssl_x509_check_private_key($cert, $key));
-var_dump(openssl_x509_check_private_key("", $key));
-var_dump(openssl_x509_check_private_key($cert, ""));
-var_dump(openssl_x509_check_private_key("", ""));
-var_dump(openssl_x509_check_private_key($a, $b));
-?>
---EXPECT--
-bool(true)
-bool(false)
-bool(false)
-bool(false)
-bool(true)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/011.phpt 5.6.19+dfsg-1/ext/openssl/tests/011.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/011.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/011.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
---TEST--
-openssl_encrypt() and openssl_decrypt() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "openssl_encrypt() and openssl_decrypt() tests";
-$method = "AES-128-CBC";
-$password = "openssl";
-
-$ivlen = openssl_cipher_iv_length($method);
-$iv    = '';
-srand(time() + ((microtime(true) * 1000000) % 1000000));
-while(strlen($iv) < $ivlen) $iv .= chr(rand(0,255));
-
-$encrypted = openssl_encrypt($data, $method, $password, 0, $iv);
-$output = openssl_decrypt($encrypted, $method, $password, 0, $iv);
-var_dump($output);
-$encrypted = openssl_encrypt($data, $method, $password, OPENSSL_RAW_DATA, $iv);
-$output = openssl_decrypt($encrypted, $method, $password, OPENSSL_RAW_DATA, $iv);
-var_dump($output);
-// if we want to manage our own padding
-$padded_data = $data . str_repeat(' ', 16 - (strlen($data) % 16));
-$encrypted = openssl_encrypt($padded_data, $method, $password, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
-$output = openssl_decrypt($encrypted, $method, $password, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
-var_dump(rtrim($output));
-?>
---EXPECT--
-string(45) "openssl_encrypt() and openssl_decrypt() tests"
-string(45) "openssl_encrypt() and openssl_decrypt() tests"
-string(45) "openssl_encrypt() and openssl_decrypt() tests"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/012.phpt 5.6.19+dfsg-1/ext/openssl/tests/012.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/012.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/012.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
---TEST--
-openssl_seal() error tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "openssl_open() test";
-$pub_key = "file://" . dirname(__FILE__) . "/public.key";
-$wrong = "wrong";
-
-openssl_seal($data, $sealed, $ekeys, array($pub_key));                  // no output
-openssl_seal($data, $sealed, $ekeys, array($pub_key, $pub_key));        // no output
-openssl_seal($data, $sealed, $ekeys, array($pub_key, $wrong));
-openssl_seal($data, $sealed, $ekeys, $pub_key);
-openssl_seal($data, $sealed, $ekeys, array());
-openssl_seal($data, $sealed, $ekeys, array($wrong));
-?>
---EXPECTF--
-
-Warning: openssl_seal(): not a public key (2th member of pubkeys) in %s on line %d
-
-Warning: openssl_seal() expects parameter 4 to be array, string given in %s on line %d
-
-Warning: openssl_seal(): Fourth argument to openssl_seal() must be a non-empty array in %s on line %d
-
-Warning: openssl_seal(): not a public key (1th member of pubkeys) in %s on line %d
-
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/013.phpt 5.6.19+dfsg-1/ext/openssl/tests/013.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/013.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/013.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,28 +0,0 @@
---TEST--
-openssl_open() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "openssl_open() test";
-$pub_key = "file://" . dirname(__FILE__) . "/public.key";
-$priv_key = "file://" . dirname(__FILE__) . "/private.key";
-$wrong = "wrong";
-
-openssl_seal($data, $sealed, $ekeys, array($pub_key, $pub_key, $pub_key));
-openssl_open($sealed, $output, $ekeys[0], $priv_key);
-var_dump($output);
-openssl_open($sealed, $output2, $ekeys[1], $wrong);
-var_dump($output2);
-openssl_open($sealed, $output3, $ekeys[2], $priv_key);
-var_dump($output3);
-openssl_open($sealed, $output4, $wrong, $priv_key);
-var_dump($output4);
-?>
---EXPECTF--
-string(19) "openssl_open() test"
-
-Warning: openssl_open(): unable to coerce parameter 4 into a private key in %s on line %d
-NULL
-string(19) "openssl_open() test"
-NULL
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/014.phpt 5.6.19+dfsg-1/ext/openssl/tests/014.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/014.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/014.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
---TEST--
-openssl_private_encrypt() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "Testing openssl_private_encrypt()";
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$pubkey = "file://" . dirname(__FILE__) . "/public.key";
-$wrong = "wrong";
-class test {
-        function __toString() {
-                return "test";
-        }
-}
-$obj = new test;
-
-var_dump(openssl_private_encrypt($data, $encrypted, $privkey));
-var_dump(openssl_private_encrypt($data, $encrypted, $pubkey));
-var_dump(openssl_private_encrypt($data, $encrypted, $wrong));
-var_dump(openssl_private_encrypt($data, $encrypted, $obj));
-var_dump(openssl_private_encrypt($obj, $encrypted, $privkey));
-openssl_public_decrypt($encrypted, $output, $pubkey);
-var_dump($output);
-?>
---EXPECTF--
-bool(true)
-
-Warning: openssl_private_encrypt(): key param is not a valid private key in %s on line %d
-bool(false)
-
-Warning: openssl_private_encrypt(): key param is not a valid private key in %s on line %d
-bool(false)
-
-Warning: openssl_private_encrypt(): key param is not a valid private key in %s on line %d
-bool(false)
-bool(true)
-string(4) "test"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/015.phpt 5.6.19+dfsg-1/ext/openssl/tests/015.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/015.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/015.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,39 +0,0 @@
---TEST--
-openssl_public_encrypt() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "Testing openssl_public_encrypt()";
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$pubkey = "file://" . dirname(__FILE__) . "/public.key";
-$wrong = "wrong";
-class test {
-        function __toString() {
-                return "test";
-        }
-}
-$obj = new test;
-
-var_dump(openssl_public_encrypt($data, $encrypted, $pubkey));
-var_dump(openssl_public_encrypt($data, $encrypted, $privkey));
-var_dump(openssl_public_encrypt($data, $encrypted, $wrong));
-var_dump(openssl_public_encrypt($data, $encrypted, $obj));
-var_dump(openssl_public_encrypt($obj, $encrypted, $pubkey));
-openssl_private_decrypt($encrypted, $output, $privkey);
-var_dump($output);
-?>
---EXPECTF--
-bool(true)
-
-Warning: openssl_public_encrypt(): key parameter is not a valid public key in %s on line %d
-bool(false)
-
-Warning: openssl_public_encrypt(): key parameter is not a valid public key in %s on line %d
-bool(false)
-
-Warning: openssl_public_encrypt(): key parameter is not a valid public key in %s on line %d
-bool(false)
-bool(true)
-string(4) "test"
-
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/016.phpt 5.6.19+dfsg-1/ext/openssl/tests/016.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/016.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/016.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,48 +0,0 @@
---TEST--
-openssl_public_decrypt() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "Testing openssl_public_decrypt()";
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$pubkey = "file://" . dirname(__FILE__) . "/public.key";
-$wrong = "wrong";
-
-openssl_private_encrypt($data, $encrypted, $privkey);
-var_dump(openssl_public_decrypt($encrypted, $output, $pubkey));
-var_dump($output);
-var_dump(openssl_public_decrypt($encrypted, $output2, $wrong));
-var_dump($output2);
-var_dump(openssl_public_decrypt($wrong, $output3, $pubkey));
-var_dump($output3);
-var_dump(openssl_public_decrypt($encrypted, $output4, array()));
-var_dump($output4);
-var_dump(openssl_public_decrypt($encrypted, $output5, array($pubkey)));
-var_dump($output5);
-var_dump(openssl_public_decrypt($encrypted, $output6, array($pubkey, "")));
-var_dump($output6);
-?>
---EXPECTF--
-bool(true)
-string(32) "Testing openssl_public_decrypt()"
-
-Warning: openssl_public_decrypt(): key parameter is not a valid public key in %s on line %d
-bool(false)
-NULL
-bool(false)
-NULL
-
-Warning: openssl_public_decrypt(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
-
-Warning: openssl_public_decrypt(): key parameter is not a valid public key in %s on line %d
-bool(false)
-NULL
-
-Warning: openssl_public_decrypt(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
-
-Warning: openssl_public_decrypt(): key parameter is not a valid public key in %s on line %d
-bool(false)
-NULL
-bool(true)
-string(32) "Testing openssl_public_decrypt()"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/017.phpt 5.6.19+dfsg-1/ext/openssl/tests/017.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/017.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/017.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,40 +0,0 @@
---TEST--
-openssl_private_decrypt() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "Testing openssl_public_decrypt()";
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$pubkey = "file://" . dirname(__FILE__) . "/public.key";
-$wrong = "wrong";
-
-openssl_public_encrypt($data, $encrypted, $pubkey);
-var_dump(openssl_private_decrypt($encrypted, $output, $privkey));
-var_dump($output);
-var_dump(openssl_private_decrypt($encrypted, $output2, $wrong));
-var_dump($output2);
-var_dump(openssl_private_decrypt($wrong, $output3, $privkey));
-var_dump($output3);
-var_dump(openssl_private_decrypt($encrypted, $output4, array($privkey)));
-var_dump($output4);
-var_dump(openssl_private_decrypt($encrypted, $output5, array($privkey, "")));
-var_dump($output5);
-?>
---EXPECTF--
-bool(true)
-string(32) "Testing openssl_public_decrypt()"
-
-Warning: openssl_private_decrypt(): key parameter is not a valid private key in %s on line %d
-bool(false)
-NULL
-bool(false)
-NULL
-
-Warning: openssl_private_decrypt(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
-
-Warning: openssl_private_decrypt(): key parameter is not a valid private key in %s on line %d
-bool(false)
-NULL
-bool(true)
-string(32) "Testing openssl_public_decrypt()"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/018.phpt 5.6.19+dfsg-1/ext/openssl/tests/018.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/018.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/018.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,22 +0,0 @@
---TEST--
-openssl_sign() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "Testing openssl_sign()";
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$wrong = "wrong";
-
-var_dump(openssl_sign($data, $sign, $privkey));                 // no output
-var_dump(openssl_sign($data, $sign, $wrong));
-var_dump(openssl_sign(array(), $sign, $privkey));
-?>
---EXPECTF--	
-bool(true)
-
-Warning: openssl_sign(): supplied key param cannot be coerced into a private key in %s on line %d
-bool(false)
-
-Warning: openssl_sign() expects parameter 1 to be string, array given in %s on line %d
-NULL
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/019.phpt 5.6.19+dfsg-1/ext/openssl/tests/019.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/019.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/019.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,28 +0,0 @@
---TEST--
-openssl_verify() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$data = "Testing openssl_verify()";
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$pubkey = "file://" . dirname(__FILE__) . "/public.key";
-$wrong = "wrong";
-
-openssl_sign($data, $sign, $privkey);
-var_dump(openssl_verify($data, $sign, $pubkey));
-var_dump(openssl_verify($data, $sign, $privkey));
-var_dump(openssl_verify($data, $sign, $wrong));
-var_dump(openssl_verify($data, $wrong, $pubkey));
-var_dump(openssl_verify($wrong, $sign, $pubkey));
-?>
---EXPECTF--
-int(1)
-
-Warning: openssl_verify(): supplied key param cannot be coerced into a public key in %s on line %d
-bool(false)
-
-Warning: openssl_verify(): supplied key param cannot be coerced into a public key in %s on line %d
-bool(false)
-int(0)
-int(0)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/021.phpt 5.6.19+dfsg-1/ext/openssl/tests/021.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/021.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/021.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,80 +0,0 @@
---TEST--
-openssl_csr_sign() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$cert = "file://" . dirname(__FILE__) . "/cert.crt";
-$priv = "file://" . dirname(__FILE__) . "/private.key";
-$wrong = "wrong";
-$pub = "file://" . dirname(__FILE__) . "/public.key";
-$config = __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf';
-$config_arg = array('config' => $config);
-
-$dn = array(
-	"countryName" => "BR",
-	"stateOrProvinceName" => "Rio Grande do Sul",
-	"localityName" => "Porto Alegre",
-	"commonName" => "Henrique do N. Angelo",
-	"emailAddress" => "hnangelo@php.net"
-	);
-
-$args = array(
-	"digest_alg" => "sha1",
-	"private_key_bits" => 2048,
-	"private_key_type" => OPENSSL_KEYTYPE_DSA,
-	"encrypt_key" => true,
-	"config" => $config
-	);
-
-$privkey = openssl_pkey_new($config_arg);
-$csr = openssl_csr_new($dn, $privkey, $args);
-var_dump(openssl_csr_sign($csr, null, $privkey, 365, $args));
-var_dump(openssl_csr_sign($csr, null, $privkey, 365, $config_arg));
-var_dump(openssl_csr_sign($csr, $cert, $priv, 365, $config_arg));
-var_dump(openssl_csr_sign($csr, $wrong, $privkey, 365));
-var_dump(openssl_csr_sign($csr, null, $wrong, 365));
-var_dump(openssl_csr_sign($csr, null, $privkey, $wrong));
-var_dump(openssl_csr_sign($csr, null, $privkey, 365, $wrong));
-var_dump(openssl_csr_sign($wrong, null, $privkey, 365));
-var_dump(openssl_csr_sign(array(), null, $privkey, 365));
-var_dump(openssl_csr_sign($csr, array(), $privkey, 365));
-var_dump(openssl_csr_sign($csr, null, array(), 365));
-var_dump(openssl_csr_sign($csr, null, $privkey, array()));
-var_dump(openssl_csr_sign($csr, null, $privkey, 365, $config_arg));
-?>
---EXPECTF--
-resource(%d) of type (OpenSSL X.509)
-resource(%d) of type (OpenSSL X.509)
-resource(%d) of type (OpenSSL X.509)
-
-Warning: openssl_csr_sign(): cannot get cert from parameter 2 in %s on line %d
-bool(false)
-
-Warning: openssl_csr_sign(): cannot get private key from parameter 3 in %s on line %d
-bool(false)
-
-Warning: openssl_csr_sign() expects parameter 4 to be long, string given in %s on line %d
-NULL
-
-Warning: openssl_csr_sign() expects parameter 5 to be array, string given in %s on line %d
-NULL
-
-Warning: openssl_csr_sign(): cannot get CSR from parameter 1 in %s on line %d
-bool(false)
-
-Warning: openssl_csr_sign(): cannot get CSR from parameter 1 in %s on line %d
-bool(false)
-
-Warning: openssl_csr_sign(): cannot get cert from parameter 2 in %s on line %d
-bool(false)
-
-Warning: openssl_csr_sign(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
-
-Warning: openssl_csr_sign(): cannot get private key from parameter 3 in %s on line %d
-bool(false)
-
-Warning: openssl_csr_sign() expects parameter 4 to be long, array given in %s on line %d
-NULL
-resource(%d) of type (OpenSSL X.509)
-
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/022.phpt 5.6.19+dfsg-1/ext/openssl/tests/022.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/022.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/022.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,48 +0,0 @@
---TEST--
-openssl_csr_export() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$wrong = "wrong";
-$config = __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf';
-$config_arg = array('config' => $config);
-
-$dn = array(
-	"countryName" => "BR",
-	"stateOrProvinceName" => "Rio Grande do Sul",
-	"localityName" => "Porto Alegre",
-	"commonName" => "Henrique do N. Angelo",
-	"emailAddress" => "hnangelo@php.net"
-	);
-
-$args = array(
-	"digest_alg" => "sha1",
-	"private_key_bits" => 2048,
-	"private_key_type" => OPENSSL_KEYTYPE_DSA,
-	"encrypt_key" => true,
-	"config" => $config,
-	);
-
-$privkey = openssl_pkey_new($config_arg);
-$csr = openssl_csr_new($dn, $privkey, $args);
-var_dump(openssl_csr_export($csr, $output));
-var_dump(openssl_csr_export($wrong, $output));
-var_dump(openssl_csr_export($privkey, $output));
-var_dump(openssl_csr_export(array(), $output));
-var_dump(openssl_csr_export($csr, $output, false));
-?>
---EXPECTF--
-bool(true)
-
-Warning: openssl_csr_export() expects parameter 1 to be resource, string given in %s on line %d
-NULL
-
-Warning: openssl_csr_export(): supplied resource is not a valid OpenSSL X.509 CSR resource in %s on line %d
-
-Warning: openssl_csr_export(): cannot get CSR from parameter 1 in %s on line %d
-bool(false)
-
-Warning: openssl_csr_export() expects parameter 1 to be resource, array given in %s on line %d
-NULL
-bool(true)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/023.phpt 5.6.19+dfsg-1/ext/openssl/tests/023.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/023.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/023.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,64 +0,0 @@
---TEST--
-openssl_pkcs7_encrypt() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$infile = dirname(__FILE__) . "/cert.crt";
-$outfile = tempnam("/tmp", "ssl");
-if ($outfile === false)
-	die("failed to get a temporary filename!");
-$outfile2 = tempnam("/tmp", "ssl");
-if ($outfile2 === false)
-	die("failed to get a temporary filename!");
-
-$single_cert = "file://" . dirname(__FILE__) . "/cert.crt";
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$multi_certs = array($single_cert, $single_cert);
-$assoc_headers = array("To" => "test@test", "Subject" => "testing openssl_pkcs7_encrypt()");
-$headers = array("test@test", "testing openssl_pkcs7_encrypt()");
-$empty_headers = array();
-$wrong = "wrong";
-$empty = "";
-
-var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $headers));
-var_dump(openssl_pkcs7_decrypt($outfile, $outfile2, $single_cert, $privkey));
-var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $assoc_headers));
-var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $empty_headers));
-var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $wrong));
-var_dump(openssl_pkcs7_encrypt($wrong, $outfile, $single_cert, $headers));
-var_dump(openssl_pkcs7_encrypt($empty, $outfile, $single_cert, $headers));
-var_dump(openssl_pkcs7_encrypt($infile, $empty, $single_cert, $headers));
-var_dump(openssl_pkcs7_encrypt($infile, $outfile, $wrong, $headers));
-var_dump(openssl_pkcs7_encrypt($infile, $outfile, $empty, $headers));
-var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $empty));
-var_dump(openssl_pkcs7_encrypt($infile, $outfile, $multi_certs, $headers));
-
-if (file_exists($outfile)) {
-	echo "true\n";
-	unlink($outfile);
-}
-if (file_exists($outfile2)) {
-	echo "true\n";
-	unlink($outfile2);
-}
-?>
---EXPECTF--
-bool(true)
-bool(true)
-bool(true)
-bool(true)
-
-Warning: openssl_pkcs7_encrypt() expects parameter 4 to be array, string given in %s on line %d
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-
-Warning: openssl_pkcs7_encrypt() expects parameter 4 to be array, string given in %s on line %d
-bool(false)
-bool(true)
-true
-true
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/024.phpt 5.6.19+dfsg-1/ext/openssl/tests/024.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/024.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/024.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,64 +0,0 @@
---TEST--
-openssl_pkcs7_decrypt() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$infile = dirname(__FILE__) . "/cert.crt";
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$encrypted = tempnam("/tmp", "ssl");
-if ($encrypted === false)
-	die("failed to get a temporary filename!");
-$outfile = tempnam("/tmp", "ssl");
-if ($outfile === false) {
-	unlink($outfile);
-	die("failed to get a temporary filename!");
-}
-
-$single_cert = "file://" . dirname(__FILE__) . "/cert.crt";
-$headers = array("test@test", "testing openssl_pkcs7_encrypt()");
-$wrong = "wrong";
-$empty = "";
-
-openssl_pkcs7_encrypt($infile, $encrypted, $single_cert, $headers);
-var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $single_cert, $privkey));
-var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $single_cert, $wrong));
-var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $wrong, $privkey));
-var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, null, $privkey));
-var_dump(openssl_pkcs7_decrypt($wrong, $outfile, $single_cert, $privkey));
-var_dump(openssl_pkcs7_decrypt($empty, $outfile, $single_cert, $privkey));
-var_dump(openssl_pkcs7_decrypt($encrypted, $empty, $single_cert, $privkey));
-var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $empty, $privkey));
-var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $single_cert, $empty));
-
-if (file_exists($encrypted)) {
-	echo "true\n";
-	unlink($encrypted);
-}
-if (file_exists($outfile)) {
-	echo "true\n";
-	unlink($outfile);
-}
-?>
---EXPECTF--
-bool(true)
-
-Warning: openssl_pkcs7_decrypt(): unable to get private key in %s on line %d
-bool(false)
-
-Warning: openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert in %s on line %d
-bool(false)
-
-Warning: openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert in %s on line %d
-bool(false)
-bool(false)
-bool(false)
-bool(false)
-
-Warning: openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert in %s on line %d
-bool(false)
-
-Warning: openssl_pkcs7_decrypt(): unable to get private key in %s on line %d
-bool(false)
-true
-true
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/025.phpt 5.6.19+dfsg-1/ext/openssl/tests/025.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/025.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/025.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,65 +0,0 @@
---TEST--
-openssl_pkcs7_sign() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$infile = dirname(__FILE__) . "/cert.crt";
-$outfile = tempnam("/tmp", "ssl");
-if ($outfile === false)
-	die("failed to get a temporary filename!");
-
-$privkey = "file://" . dirname(__FILE__) . "/private.key";
-$single_cert = "file://" . dirname(__FILE__) . "/cert.crt";
-$assoc_headers = array("To" => "test@test", "Subject" => "testing openssl_pkcs7_sign()");
-$headers = array("test@test", "testing openssl_pkcs7_sign()");
-$empty_headers = array();
-$wrong = "wrong";
-$empty = "";
-
-var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $headers));
-var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $assoc_headers));
-var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $empty_headers));
-var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $wrong));
-var_dump(openssl_pkcs7_sign($wrong, $outfile, $single_cert, $privkey, $headers));
-var_dump(openssl_pkcs7_sign($empty, $outfile, $single_cert, $privkey, $headers));
-var_dump(openssl_pkcs7_sign($infile, $empty, $single_cert, $privkey, $headers));
-var_dump(openssl_pkcs7_sign($infile, $outfile, $wrong, $privkey, $headers));
-var_dump(openssl_pkcs7_sign($infile, $outfile, $empty, $privkey, $headers));
-var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $empty));
-var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $wrong, $headers));
-
-if (file_exists($outfile)) {
-	echo "true\n";
-	unlink($outfile);
-}
-?>
---EXPECTF--
-bool(true)
-bool(true)
-bool(true)
-
-Warning: openssl_pkcs7_sign() expects parameter 5 to be array, string given in %s on line %d
-NULL
-
-Warning: openssl_pkcs7_sign(): error opening input file %s in %s on line %d
-bool(false)
-
-Warning: openssl_pkcs7_sign(): error opening input file %s in %s on line %d
-bool(false)
-
-Warning: openssl_pkcs7_sign(): error opening output file %s in %s on line %d
-bool(false)
-
-Warning: openssl_pkcs7_sign(): error getting cert in %s on line %d
-bool(false)
-
-Warning: openssl_pkcs7_sign(): error getting cert in %s on line %d
-bool(false)
-
-Warning: openssl_pkcs7_sign() expects parameter 5 to be array, string given in %s on line %d
-NULL
-
-Warning: openssl_pkcs7_sign(): error getting private key in %s on line %d
-bool(false)
-true
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/026.phpt 5.6.19+dfsg-1/ext/openssl/tests/026.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/026.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/026.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,12 +0,0 @@
---TEST--
-Options type checks
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-$x = openssl_pkey_new();
-$csr = openssl_csr_new(["countryName" => "DE"], $x, ["x509_extensions" => 0xDEADBEEF]);
-?>
-DONE
---EXPECT--
-DONE
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/027.phpt 5.6.19+dfsg-1/ext/openssl/tests/027.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/027.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/027.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,52 +0,0 @@
---TEST--
-openssl_pkey_export() with EC key
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
-if (!defined('OPENSSL_KEYTYPE_EC')) die("skip no EC available");
-?>
---FILE--
-<?php
-$key = openssl_pkey_get_private('file://' . dirname(__FILE__) . '/private_ec.key');
-var_dump($key);
-
-var_dump(openssl_pkey_export($key, $output));
-echo $output;
-
-// Load the private key from the exported pem string
-$details = openssl_pkey_get_details(openssl_pkey_get_private($output));
-var_dump(OPENSSL_KEYTYPE_EC === $details['type']);
-
-// Export key with passphrase
-openssl_pkey_export($key, $output, 'passphrase');
-
-$details = openssl_pkey_get_details(openssl_pkey_get_private($output, 'passphrase'));
-var_dump(OPENSSL_KEYTYPE_EC === $details['type']);
-
-// Read public key
-$pKey = openssl_pkey_get_public('file://' . dirname(__FILE__) . '/public_ec.key');
-var_dump($pKey);
-// The details are the same for a public or private key
-var_dump($details === openssl_pkey_get_details($pKey));
-
-
-// Export to file
-$tempname = tempnam(sys_get_temp_dir(), 'openssl_ec');
-var_dump(openssl_pkey_export_to_file($key, $tempname));
-$details = openssl_pkey_get_details(openssl_pkey_get_private('file://' . $tempname));
-var_dump(OPENSSL_KEYTYPE_EC === $details['type']);
-
-// Clean the temporary file
-@unlink($tempname);
-
-?>
---EXPECTF--
-resource(%d) of type (OpenSSL key)
-bool(true)
------BEGIN EC PRIVATE KEY-----%a-----END EC PRIVATE KEY-----
-bool(true)
-bool(true)
-resource(%d) of type (OpenSSL key)
-bool(true)
-bool(true)
-bool(true)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/028.phpt 5.6.19+dfsg-1/ext/openssl/tests/028.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/028.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/028.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,28 +0,0 @@
---TEST--
-openssl_pkey_get_details() with EC key
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
-if (!defined('OPENSSL_KEYTYPE_EC')) die("skip no EC available");
-?>
---FILE--
-<?php
-$key = openssl_pkey_get_private('file://' . dirname(__FILE__) . '/private_ec.key');
-
-print_r(openssl_pkey_get_details($key));
-?>
---EXPECTF--
-Array
-(
-    [bits] => 256
-    [key] => -----BEGIN PUBLIC KEY-----%a
------END PUBLIC KEY-----
-
-    [ec] => Array
-        (
-            [curve_name] => prime256v1
-            [curve_oid] => 1.2.840.10045.3.1.7
-        )
-
-    [type] => 3
-)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/bug60632.phpt 5.6.19+dfsg-1/ext/openssl/tests/bug60632.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/bug60632.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/bug60632.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -10,7 +10,8 @@ $pkey = openssl_pkey_new(array(
 	'digest_alg' => 'sha256',
 	'private_key_bits' => 1024,
 	'private_key_type' => OPENSSL_KEYTYPE_RSA,
-	'encrypt_key' => false
+	'encrypt_key' => false,
+	'config' => __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf',
 ));
 $details = openssl_pkey_get_details($pkey);
 $test_pubkey = $details['key'];
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/cert.csr 5.6.19+dfsg-1/ext/openssl/tests/cert.csr
--- 5.6.18+dfsg-4/ext/openssl/tests/cert.csr	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/cert.csr	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,22 @@
+-----BEGIN NEW CERTIFICATE REQUEST-----
+MIIDYzCCAswCAQAwgYcxCzAJBgNVBAYTAk5MMRYwFAYDVQQIEw1Ob29yZCBCcmFi
+YW50MQ0wCwYDVQQHEwRVZGVuMRMwEQYDVQQKEwpUcmljb25uZWN0MRMwEQYDVQQL
+EwpUcmljb25uZWN0MScwJQYDVQQDHh4AKgAuAHQAcgBpAGMAbwBuAG4AZQBjAHQA
+LgBuAGwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANjE/qKAKgo93162HhtX
+OZdvunF5eG/PFK2yn6uAUDWgZciPoKBslgL6a6sK+RdcS7LjWdjWEOOANGzZY1Kk
+FelzxrIjIGSGJHC9eubebdu2LWFFM5cEMDiH0QSD9Rdiy7svSLWvngUDYj0wwd+m
+iV2duzUFHnusj9iVPpD9s47RAgMBAAGgggGZMBoGCisGAQQBgjcNAgMxDBYKNS4y
+LjM3OTAuMjB7BgorBgEEAYI3AgEOMW0wazAOBgNVHQ8BAf8EBAMCBPAwRAYJKoZI
+hvcNAQkPBDcwNTAOBggqhkiG9w0DAgICAIAwDgYIKoZIhvcNAwQCAgCAMAcGBSsO
+AwIHMAoGCCqGSIb3DQMHMBMGA1UdJQQMMAoGCCsGAQUFBwMBMIH9BgorBgEEAYI3
+DQICMYHuMIHrAgEBHloATQBpAGMAcgBvAHMAbwBmAHQAIABSAFMAQQAgAFMAQwBo
+AGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2
+AGkAZABlAHIDgYkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAADANBgkqhkiG9w0BAQUFAAOBgQA4agiUkIblhF+n0wth4vQY+PwMadyaBpA4
+epr4TKL0QEkA0bQBbIERw5dDE3WQi6aVFJe6y870QymBwmKIvfBBfOyyA0IlQq/n
+uybhzQNQbSMKF1T82hpfh1w2RwVGaGrw7f6qH+CLyP1ydvBPvmD88HwiibNBBB3c
+R23mEEGYUQ==
+-----END NEW CERTIFICATE REQUEST-----
+
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_csr_export_bacis.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_csr_export_bacis.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_csr_export_bacis.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_csr_export_bacis.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,48 @@
+--TEST--
+openssl_csr_export() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$wrong = "wrong";
+$config = __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf';
+$config_arg = array('config' => $config);
+
+$dn = array(
+	"countryName" => "BR",
+	"stateOrProvinceName" => "Rio Grande do Sul",
+	"localityName" => "Porto Alegre",
+	"commonName" => "Henrique do N. Angelo",
+	"emailAddress" => "hnangelo@php.net"
+);
+
+$args = array(
+	"digest_alg" => "sha1",
+	"private_key_bits" => 2048,
+	"private_key_type" => OPENSSL_KEYTYPE_DSA,
+	"encrypt_key" => true,
+	"config" => $config,
+);
+
+$privkey = openssl_pkey_new($config_arg);
+$csr = openssl_csr_new($dn, $privkey, $args);
+var_dump(openssl_csr_export($csr, $output));
+var_dump(openssl_csr_export($wrong, $output));
+var_dump(openssl_csr_export($privkey, $output));
+var_dump(openssl_csr_export(array(), $output));
+var_dump(openssl_csr_export($csr, $output, false));
+?>
+--EXPECTF--
+bool(true)
+
+Warning: openssl_csr_export() expects parameter 1 to be resource, string given in %s on line %d
+NULL
+
+Warning: openssl_csr_export(): supplied resource is not a valid OpenSSL X.509 CSR resource in %s on line %d
+
+Warning: openssl_csr_export(): cannot get CSR from parameter 1 in %s on line %d
+bool(false)
+
+Warning: openssl_csr_export() expects parameter 1 to be resource, array given in %s on line %d
+NULL
+bool(true)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_csr_get_subject_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_csr_get_subject_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_csr_get_subject_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_csr_get_subject_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,34 @@
+--TEST--
+openssl_csr_get_subject() tests
+--SKIPIF--
+<?php 
+if (!extension_loaded("openssl")) die("skip"); 
+if (!function_exists("utf8_decode")) die("skip");
+?>
+--FILE--
+<?php
+
+$csr = file_get_contents(dirname(__FILE__) . '/cert.csr');
+if ($out = openssl_csr_get_subject($csr, 1)) {
+	var_dump($out);
+}
+echo "\n";
+$cn = utf8_decode($out['CN']);
+var_dump($cn);
+--EXPECTF--	
+array(6) {
+  ["C"]=>
+  string(2) "NL"
+  ["ST"]=>
+  string(13) "Noord Brabant"
+  ["L"]=>
+  string(4) "Uden"
+  ["O"]=>
+  string(10) "Triconnect"
+  ["OU"]=>
+  string(10) "Triconnect"
+  ["CN"]=>
+  string(15) "*.triconnect.nl"
+}
+
+string(15) "*.triconnect.nl"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_csr_new_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_csr_new_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_csr_new_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_csr_new_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,41 @@
+--TEST--
+openssl_csr_new() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+
+$a = 1;
+var_dump(openssl_csr_new(1,$a));
+var_dump(openssl_csr_new(1,$a,1,1));
+$a = array();
+
+$conf = array('config' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'openssl.cnf');
+var_dump(openssl_csr_new(array(), $a, $conf, array()));
+
+// this leaks
+$a = array(1,2);
+$b = array(1,2);
+var_dump(openssl_csr_new($a, $b, $conf));
+
+// options type check
+$x = openssl_pkey_new($conf);
+var_dump(openssl_csr_new(["countryName" => "DE"], $x, $conf + ["x509_extensions" => 0xDEADBEEF]));
+
+
+echo "Done\n";
+?>
+--EXPECTF--	
+Warning: openssl_csr_new() expects parameter 1 to be array, integer given in %s on line %d
+NULL
+
+Warning: openssl_csr_new() expects parameter 1 to be array, integer given in %s on line %d
+NULL
+
+Warning: openssl_csr_new(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
+
+Warning: openssl_csr_new(): add1_attr_by_txt challengePassword_min -> 4 (failed; check error queue and value of string_mask OpenSSL option if illegal characters are reported) in %s on line %d
+bool(false)
+resource(%d) of type (OpenSSL X.509 CSR)
+resource(%d) of type (OpenSSL X.509 CSR)
+Done
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_csr_sign_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_csr_sign_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_csr_sign_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_csr_sign_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,80 @@
+--TEST--
+openssl_csr_sign() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$cert = "file://" . dirname(__FILE__) . "/cert.crt";
+$priv = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$wrong = "wrong";
+$pub = "file://" . dirname(__FILE__) . "/public.key";
+$config = __DIR__ . DIRECTORY_SEPARATOR . 'openssl.cnf';
+$config_arg = array('config' => $config);
+
+$dn = array(
+	"countryName" => "BR",
+	"stateOrProvinceName" => "Rio Grande do Sul",
+	"localityName" => "Porto Alegre",
+	"commonName" => "Henrique do N. Angelo",
+	"emailAddress" => "hnangelo@php.net"
+	);
+
+$args = array(
+	"digest_alg" => "sha1",
+	"private_key_bits" => 2048,
+	"private_key_type" => OPENSSL_KEYTYPE_DSA,
+	"encrypt_key" => true,
+	"config" => $config
+	);
+
+$privkey = openssl_pkey_new($config_arg);
+$csr = openssl_csr_new($dn, $privkey, $args);
+var_dump(openssl_csr_sign($csr, null, $privkey, 365, $args));
+var_dump(openssl_csr_sign($csr, null, $privkey, 365, $config_arg));
+var_dump(openssl_csr_sign($csr, $cert, $priv, 365, $config_arg));
+var_dump(openssl_csr_sign($csr, $wrong, $privkey, 365));
+var_dump(openssl_csr_sign($csr, null, $wrong, 365));
+var_dump(openssl_csr_sign($csr, null, $privkey, $wrong));
+var_dump(openssl_csr_sign($csr, null, $privkey, 365, $wrong));
+var_dump(openssl_csr_sign($wrong, null, $privkey, 365));
+var_dump(openssl_csr_sign(array(), null, $privkey, 365));
+var_dump(openssl_csr_sign($csr, array(), $privkey, 365));
+var_dump(openssl_csr_sign($csr, null, array(), 365));
+var_dump(openssl_csr_sign($csr, null, $privkey, array()));
+var_dump(openssl_csr_sign($csr, null, $privkey, 365, $config_arg));
+?>
+--EXPECTF--
+resource(%d) of type (OpenSSL X.509)
+resource(%d) of type (OpenSSL X.509)
+resource(%d) of type (OpenSSL X.509)
+
+Warning: openssl_csr_sign(): cannot get cert from parameter 2 in %s on line %d
+bool(false)
+
+Warning: openssl_csr_sign(): cannot get private key from parameter 3 in %s on line %d
+bool(false)
+
+Warning: openssl_csr_sign() expects parameter 4 to be long, string given in %s on line %d
+NULL
+
+Warning: openssl_csr_sign() expects parameter 5 to be array, string given in %s on line %d
+NULL
+
+Warning: openssl_csr_sign(): cannot get CSR from parameter 1 in %s on line %d
+bool(false)
+
+Warning: openssl_csr_sign(): cannot get CSR from parameter 1 in %s on line %d
+bool(false)
+
+Warning: openssl_csr_sign(): cannot get cert from parameter 2 in %s on line %d
+bool(false)
+
+Warning: openssl_csr_sign(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
+
+Warning: openssl_csr_sign(): cannot get private key from parameter 3 in %s on line %d
+bool(false)
+
+Warning: openssl_csr_sign() expects parameter 4 to be long, array given in %s on line %d
+NULL
+resource(%d) of type (OpenSSL X.509)
+
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_decrypt_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_decrypt_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_decrypt_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_decrypt_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,31 @@
+--TEST--
+openssl_decrypt() tests dependent on openssl_encrypt
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = "openssl_encrypt() and openssl_decrypt() tests";
+$method = "AES-128-CBC";
+$password = "openssl";
+
+$ivlen = openssl_cipher_iv_length($method);
+$iv    = '';
+srand(time() + ((microtime(true) * 1000000) % 1000000));
+while(strlen($iv) < $ivlen) $iv .= chr(rand(0,255));
+
+$encrypted = openssl_encrypt($data, $method, $password, 0, $iv);
+$output = openssl_decrypt($encrypted, $method, $password, 0, $iv);
+var_dump($output);
+$encrypted = openssl_encrypt($data, $method, $password, OPENSSL_RAW_DATA, $iv);
+$output = openssl_decrypt($encrypted, $method, $password, OPENSSL_RAW_DATA, $iv);
+var_dump($output);
+// if we want to manage our own padding
+$padded_data = $data . str_repeat(' ', 16 - (strlen($data) % 16));
+$encrypted = openssl_encrypt($padded_data, $method, $password, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
+$output = openssl_decrypt($encrypted, $method, $password, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
+var_dump(rtrim($output));
+?>
+--EXPECT--
+string(45) "openssl_encrypt() and openssl_decrypt() tests"
+string(45) "openssl_encrypt() and openssl_decrypt() tests"
+string(45) "openssl_encrypt() and openssl_decrypt() tests"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_open_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_open_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_open_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_open_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,28 @@
+--TEST--
+openssl_open() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = "openssl_open() test";
+$pub_key = "file://" . dirname(__FILE__) . "/public.key";
+$priv_key = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$wrong = "wrong";
+
+openssl_seal($data, $sealed, $ekeys, array($pub_key, $pub_key, $pub_key));
+openssl_open($sealed, $output, $ekeys[0], $priv_key);
+var_dump($output);
+openssl_open($sealed, $output2, $ekeys[1], $wrong);
+var_dump($output2);
+openssl_open($sealed, $output3, $ekeys[2], $priv_key);
+var_dump($output3);
+openssl_open($sealed, $output4, $wrong, $priv_key);
+var_dump($output4);
+?>
+--EXPECTF--
+string(19) "openssl_open() test"
+
+Warning: openssl_open(): unable to coerce parameter 4 into a private key in %s on line %d
+NULL
+string(19) "openssl_open() test"
+NULL
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pbkdf2_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pbkdf2_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pbkdf2_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pbkdf2_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,26 @@
+--TEST--
+openssl_pbkdf2() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl") || !function_exists("openssl_pbkdf2")) print "skip"; ?>
+--FILE--
+<?php
+// official test vectors
+var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 1)));
+var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 2)));
+var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 4096)));
+
+/* really slow but should be:
+string(40) "eefe3d61cd4da4e4e9945b3d6ba2158c2634e984"
+var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 16777216)));
+*/
+
+var_dump(bin2hex(openssl_pbkdf2('passwordPASSWORDpassword', 'saltSALTsaltSALTsaltSALTsaltSALTsalt', 25, 4096)));
+var_dump(bin2hex(openssl_pbkdf2("pass\0word", "sa\0lt", 16, 4096)));
+
+?>
+--EXPECTF--
+string(40) "0c60c80f961f0e71f3a9b524af6012062fe037a6"
+string(40) "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957"
+string(40) "4b007901b765489abead49d926f721d065a429c1"
+string(50) "3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038"
+string(32) "56fa6aa75548099dcc37d7f03425e0c3"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pbkdf2.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pbkdf2.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pbkdf2.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pbkdf2.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,26 +0,0 @@
---TEST--
-openssl_pbkdf2() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl") || !function_exists("openssl_pbkdf2")) print "skip"; ?>
---FILE--
-<?php
-// official test vectors
-var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 1)));
-var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 2)));
-var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 4096)));
-
-/* really slow but should be:
-string(40) "eefe3d61cd4da4e4e9945b3d6ba2158c2634e984"
-var_dump(bin2hex(openssl_pbkdf2('password', 'salt', 20, 16777216)));
-*/
-
-var_dump(bin2hex(openssl_pbkdf2('passwordPASSWORDpassword', 'saltSALTsaltSALTsaltSALTsaltSALTsalt', 25, 4096)));
-var_dump(bin2hex(openssl_pbkdf2("pass\0word", "sa\0lt", 16, 4096)));
-
-?>
---EXPECTF--
-string(40) "0c60c80f961f0e71f3a9b524af6012062fe037a6"
-string(40) "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957"
-string(40) "4b007901b765489abead49d926f721d065a429c1"
-string(50) "3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038"
-string(32) "56fa6aa75548099dcc37d7f03425e0c3"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_peer_fingerprint_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_peer_fingerprint_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_peer_fingerprint_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_peer_fingerprint_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,54 @@
+--TEST--
+Testing peer fingerprint on connection
+--SKIPIF--
+<?php 
+if (!extension_loaded("openssl")) die("skip openssl not loaded");
+if (!function_exists("proc_open")) die("skip no proc_open");
+--FILE--
+<?php
+$serverCode = <<<'CODE'
+    $serverUri = "ssl://127.0.0.1:64321";
+    $serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
+    $serverCtx = stream_context_create(['ssl' => [
+        'local_cert' => __DIR__ . '/bug54992.pem'
+    ]]);
+
+    $server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
+    phpt_notify();
+
+    @stream_socket_accept($server, 1);
+    @stream_socket_accept($server, 1);
+CODE;
+
+$clientCode = <<<'CODE'
+    $serverUri = "ssl://127.0.0.1:64321";
+    $clientFlags = STREAM_CLIENT_CONNECT;
+    $clientCtx = stream_context_create(['ssl' => [
+        'verify_peer'       => true,
+        'cafile'            => __DIR__ . '/bug54992-ca.pem',
+        'capture_peer_cert'    => true,
+        'peer_name'          => 'bug54992.local',
+    ]]);
+
+    phpt_wait();
+
+    // should be: 81cafc260aa8d82956ebc6212a362ecc
+    stream_context_set_option($clientCtx, 'ssl', 'peer_fingerprint', '81cafc260aa8d82956ebc6212a362ece');
+    var_dump(stream_socket_client($serverUri, $errno, $errstr, 2, $clientFlags, $clientCtx));
+
+    stream_context_set_option($clientCtx, 'ssl', 'peer_fingerprint', [
+        'sha256' => '78ea579f2c3b439359dec5dac9d445108772927427c4780037e87df3799a0aa0',
+    ]);
+    var_dump(stream_socket_client($serverUri, $errno, $errstr, 2, $clientFlags, $clientCtx));
+CODE;
+
+include 'ServerClientTestCase.inc';
+ServerClientTestCase::getInstance()->run($clientCode, $serverCode);
+--EXPECTF--
+Warning: stream_socket_client(): peer_fingerprint match failure in %s on line %d
+
+Warning: stream_socket_client(): Failed to enable crypto in %s on line %d
+
+Warning: stream_socket_client(): unable to connect to ssl://127.0.0.1:64321 (Unknown error) in %s on line %d
+bool(false)
+resource(%d) of type (stream)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_peer_fingerprint.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_peer_fingerprint.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_peer_fingerprint.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_peer_fingerprint.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,54 +0,0 @@
---TEST--
-Testing peer fingerprint on connection
---SKIPIF--
-<?php 
-if (!extension_loaded("openssl")) die("skip openssl not loaded");
-if (!function_exists("proc_open")) die("skip no proc_open");
---FILE--
-<?php
-$serverCode = <<<'CODE'
-    $serverUri = "ssl://127.0.0.1:64321";
-    $serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
-    $serverCtx = stream_context_create(['ssl' => [
-        'local_cert' => __DIR__ . '/bug54992.pem'
-    ]]);
-
-    $server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
-    phpt_notify();
-
-    @stream_socket_accept($server, 1);
-    @stream_socket_accept($server, 1);
-CODE;
-
-$clientCode = <<<'CODE'
-    $serverUri = "ssl://127.0.0.1:64321";
-    $clientFlags = STREAM_CLIENT_CONNECT;
-    $clientCtx = stream_context_create(['ssl' => [
-        'verify_peer'       => true,
-        'cafile'            => __DIR__ . '/bug54992-ca.pem',
-        'capture_peer_cert'    => true,
-        'peer_name'          => 'bug54992.local',
-    ]]);
-
-    phpt_wait();
-
-    // should be: 81cafc260aa8d82956ebc6212a362ecc
-    stream_context_set_option($clientCtx, 'ssl', 'peer_fingerprint', '81cafc260aa8d82956ebc6212a362ece');
-    var_dump(stream_socket_client($serverUri, $errno, $errstr, 2, $clientFlags, $clientCtx));
-
-    stream_context_set_option($clientCtx, 'ssl', 'peer_fingerprint', [
-        'sha256' => '78ea579f2c3b439359dec5dac9d445108772927427c4780037e87df3799a0aa0',
-    ]);
-    var_dump(stream_socket_client($serverUri, $errno, $errstr, 2, $clientFlags, $clientCtx));
-CODE;
-
-include 'ServerClientTestCase.inc';
-ServerClientTestCase::getInstance()->run($clientCode, $serverCode);
---EXPECTF--
-Warning: stream_socket_client(): peer_fingerprint match failure in %s on line %d
-
-Warning: stream_socket_client(): Failed to enable crypto in %s on line %d
-
-Warning: stream_socket_client(): unable to connect to ssl://127.0.0.1:64321 (Unknown error) in %s on line %d
-bool(false)
-resource(%d) of type (stream)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkcs7_decrypt_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkcs7_decrypt_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkcs7_decrypt_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkcs7_decrypt_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,64 @@
+--TEST--
+openssl_pkcs7_decrypt() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$infile = dirname(__FILE__) . "/cert.crt";
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$encrypted = tempnam("/tmp", "ssl");
+if ($encrypted === false)
+	die("failed to get a temporary filename!");
+$outfile = tempnam("/tmp", "ssl");
+if ($outfile === false) {
+	unlink($outfile);
+	die("failed to get a temporary filename!");
+}
+
+$single_cert = "file://" . dirname(__FILE__) . "/cert.crt";
+$headers = array("test@test", "testing openssl_pkcs7_encrypt()");
+$wrong = "wrong";
+$empty = "";
+
+openssl_pkcs7_encrypt($infile, $encrypted, $single_cert, $headers);
+var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $single_cert, $privkey));
+var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $single_cert, $wrong));
+var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $wrong, $privkey));
+var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, null, $privkey));
+var_dump(openssl_pkcs7_decrypt($wrong, $outfile, $single_cert, $privkey));
+var_dump(openssl_pkcs7_decrypt($empty, $outfile, $single_cert, $privkey));
+var_dump(openssl_pkcs7_decrypt($encrypted, $empty, $single_cert, $privkey));
+var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $empty, $privkey));
+var_dump(openssl_pkcs7_decrypt($encrypted, $outfile, $single_cert, $empty));
+
+if (file_exists($encrypted)) {
+	echo "true\n";
+	unlink($encrypted);
+}
+if (file_exists($outfile)) {
+	echo "true\n";
+	unlink($outfile);
+}
+?>
+--EXPECTF--
+bool(true)
+
+Warning: openssl_pkcs7_decrypt(): unable to get private key in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert in %s on line %d
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+Warning: openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs7_decrypt(): unable to get private key in %s on line %d
+bool(false)
+true
+true
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkcs7_decrypt_error.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkcs7_decrypt_error.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkcs7_decrypt_error.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkcs7_decrypt_error.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,43 @@
+--TEST--
+openssl_pkcs7_decrypt() and invalid parameters
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+
+function myErrorHandler($errno, $errstr, $errfile, $errline) {
+	var_dump($errstr);
+} 
+set_error_handler("myErrorHandler"); 
+
+$a = 1; 
+$b = 1; 
+$c = new stdclass; 
+$d = new stdclass; 
+
+var_dump(openssl_pkcs7_decrypt($a, $b, $c, $d));
+var_dump($c);
+
+var_dump(openssl_pkcs7_decrypt($b, $b, $b, $b));
+var_dump(openssl_pkcs7_decrypt($a, $b, "", ""));
+var_dump(openssl_pkcs7_decrypt($a, $b, true, false));
+var_dump(openssl_pkcs7_decrypt($a, $b, 0, 0));
+
+echo "Done\n";
+?>
+--EXPECTF--	
+string(57) "Object of class stdClass could not be converted to string"
+string(45) "Object of class stdClass to string conversion"
+string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
+bool(false)
+object(stdClass)#1 (0) {
+}
+string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
+bool(false)
+string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
+bool(false)
+string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
+bool(false)
+string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
+bool(false)
+Done
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkcs7_encrypt_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkcs7_encrypt_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkcs7_encrypt_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkcs7_encrypt_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,64 @@
+--TEST--
+openssl_pkcs7_encrypt() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$infile = dirname(__FILE__) . "/cert.crt";
+$outfile = tempnam("/tmp", "ssl");
+if ($outfile === false)
+	die("failed to get a temporary filename!");
+$outfile2 = tempnam("/tmp", "ssl");
+if ($outfile2 === false)
+	die("failed to get a temporary filename!");
+
+$single_cert = "file://" . dirname(__FILE__) . "/cert.crt";
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$multi_certs = array($single_cert, $single_cert);
+$assoc_headers = array("To" => "test@test", "Subject" => "testing openssl_pkcs7_encrypt()");
+$headers = array("test@test", "testing openssl_pkcs7_encrypt()");
+$empty_headers = array();
+$wrong = "wrong";
+$empty = "";
+
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $headers));
+var_dump(openssl_pkcs7_decrypt($outfile, $outfile2, $single_cert, $privkey));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $assoc_headers));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $empty_headers));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $wrong));
+var_dump(openssl_pkcs7_encrypt($wrong, $outfile, $single_cert, $headers));
+var_dump(openssl_pkcs7_encrypt($empty, $outfile, $single_cert, $headers));
+var_dump(openssl_pkcs7_encrypt($infile, $empty, $single_cert, $headers));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, $wrong, $headers));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, $empty, $headers));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, $single_cert, $empty));
+var_dump(openssl_pkcs7_encrypt($infile, $outfile, $multi_certs, $headers));
+
+if (file_exists($outfile)) {
+	echo "true\n";
+	unlink($outfile);
+}
+if (file_exists($outfile2)) {
+	echo "true\n";
+	unlink($outfile2);
+}
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+
+Warning: openssl_pkcs7_encrypt() expects parameter 4 to be array, string given in %s on line %d
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+Warning: openssl_pkcs7_encrypt() expects parameter 4 to be array, string given in %s on line %d
+bool(false)
+bool(true)
+true
+true
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkcs7_sign_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkcs7_sign_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkcs7_sign_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkcs7_sign_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,66 @@
+--TEST--
+openssl_pkcs7_sign() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$infile = dirname(__FILE__) . "/cert.crt";
+$outfile = tempnam("/tmp", "ssl");
+if ($outfile === false) {
+	die("failed to get a temporary filename!");
+}
+
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$single_cert = "file://" . dirname(__FILE__) . "/cert.crt";
+$assoc_headers = array("To" => "test@test", "Subject" => "testing openssl_pkcs7_sign()");
+$headers = array("test@test", "testing openssl_pkcs7_sign()");
+$empty_headers = array();
+$wrong = "wrong";
+$empty = "";
+
+var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $headers));
+var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $assoc_headers));
+var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $empty_headers));
+var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $wrong));
+var_dump(openssl_pkcs7_sign($wrong, $outfile, $single_cert, $privkey, $headers));
+var_dump(openssl_pkcs7_sign($empty, $outfile, $single_cert, $privkey, $headers));
+var_dump(openssl_pkcs7_sign($infile, $empty, $single_cert, $privkey, $headers));
+var_dump(openssl_pkcs7_sign($infile, $outfile, $wrong, $privkey, $headers));
+var_dump(openssl_pkcs7_sign($infile, $outfile, $empty, $privkey, $headers));
+var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $privkey, $empty));
+var_dump(openssl_pkcs7_sign($infile, $outfile, $single_cert, $wrong, $headers));
+
+if (file_exists($outfile)) {
+	echo "true\n";
+	unlink($outfile);
+}
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+bool(true)
+
+Warning: openssl_pkcs7_sign() expects parameter 5 to be array, string given in %s on line %d
+NULL
+
+Warning: openssl_pkcs7_sign(): error opening input file %s in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs7_sign(): error opening input file %s in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs7_sign(): error opening output file %s in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs7_sign(): error getting cert in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs7_sign(): error getting cert in %s on line %d
+bool(false)
+
+Warning: openssl_pkcs7_sign() expects parameter 5 to be array, string given in %s on line %d
+NULL
+
+Warning: openssl_pkcs7_sign(): error getting private key in %s on line %d
+bool(false)
+true
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkey_export_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkey_export_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkey_export_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkey_export_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,54 @@
+--TEST--
+openssl_pkey_export() with EC key
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+if (!defined('OPENSSL_KEYTYPE_EC')) die("skip no EC available");
+?>
+--FILE--
+<?php
+$key = openssl_pkey_get_private('file://' . dirname(__FILE__) . '/private_ec.key');
+var_dump($key);
+
+$config_arg = array("config" => __DIR__ . DIRECTORY_SEPARATOR . "openssl.cnf");
+
+var_dump(openssl_pkey_export($key, $output, NULL, $config_arg));
+echo $output;
+
+// Load the private key from the exported pem string
+$details = openssl_pkey_get_details(openssl_pkey_get_private($output));
+var_dump(OPENSSL_KEYTYPE_EC === $details['type']);
+
+// Export key with passphrase
+openssl_pkey_export($key, $output, 'passphrase', $config_arg);
+
+$details = openssl_pkey_get_details(openssl_pkey_get_private($output, 'passphrase'));
+var_dump(OPENSSL_KEYTYPE_EC === $details['type']);
+
+// Read public key
+$pKey = openssl_pkey_get_public('file://' . dirname(__FILE__) . '/public_ec.key');
+var_dump($pKey);
+// The details are the same for a public or private key
+var_dump($details === openssl_pkey_get_details($pKey));
+
+
+// Export to file
+$tempname = tempnam(sys_get_temp_dir(), 'openssl_ec');
+var_dump(openssl_pkey_export_to_file($key, $tempname, NULL, $config_arg));
+$details = openssl_pkey_get_details(openssl_pkey_get_private('file://' . $tempname));
+var_dump(OPENSSL_KEYTYPE_EC === $details['type']);
+
+// Clean the temporary file
+@unlink($tempname);
+
+?>
+--EXPECTF--
+resource(%d) of type (OpenSSL key)
+bool(true)
+-----BEGIN EC PRIVATE KEY-----%a-----END EC PRIVATE KEY-----
+bool(true)
+bool(true)
+resource(%d) of type (OpenSSL key)
+bool(true)
+bool(true)
+bool(true)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkey_get_details_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkey_get_details_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkey_get_details_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkey_get_details_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,28 @@
+--TEST--
+openssl_pkey_get_details() with EC key
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+if (!defined('OPENSSL_KEYTYPE_EC')) die("skip no EC available");
+?>
+--FILE--
+<?php
+$key = openssl_pkey_get_private('file://' . dirname(__FILE__) . '/private_ec.key');
+
+print_r(openssl_pkey_get_details($key));
+?>
+--EXPECTF--
+Array
+(
+    [bits] => 256
+    [key] => -----BEGIN PUBLIC KEY-----%a
+-----END PUBLIC KEY-----
+
+    [ec] => Array
+        (
+            [curve_name] => prime256v1
+            [curve_oid] => 1.2.840.10045.3.1.7
+        )
+
+    [type] => 3
+)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkey_new_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkey_new_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_pkey_new_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_pkey_new_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,25 @@
+--TEST--
+openssl_pkey_new() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+/* openssl_pkey_get_details() segfaults when getting the information
+	from openssl_pkey_new() with an empty sub-array arg 		*/
+
+$rsa = array("rsa" => array());
+$dsa = array("dsa" => array());
+$dh = array("dh" => array());
+
+openssl_pkey_get_details(openssl_pkey_new($rsa));
+openssl_pkey_get_details(openssl_pkey_new($dsa));
+openssl_pkey_get_details(openssl_pkey_new($dh));
+?>
+--EXPECTF--
+
+Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in %s on line %d
+
+Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in %s on line %d
+
+Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in %s on line %d
+
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_private_decrypt_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_private_decrypt_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_private_decrypt_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_private_decrypt_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,40 @@
+--TEST--
+openssl_private_decrypt() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = "Testing openssl_public_decrypt()";
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$pubkey = "file://" . dirname(__FILE__) . "/public.key";
+$wrong = "wrong";
+
+openssl_public_encrypt($data, $encrypted, $pubkey);
+var_dump(openssl_private_decrypt($encrypted, $output, $privkey));
+var_dump($output);
+var_dump(openssl_private_decrypt($encrypted, $output2, $wrong));
+var_dump($output2);
+var_dump(openssl_private_decrypt($wrong, $output3, $privkey));
+var_dump($output3);
+var_dump(openssl_private_decrypt($encrypted, $output4, array($privkey)));
+var_dump($output4);
+var_dump(openssl_private_decrypt($encrypted, $output5, array($privkey, "")));
+var_dump($output5);
+?>
+--EXPECTF--
+bool(true)
+string(32) "Testing openssl_public_decrypt()"
+
+Warning: openssl_private_decrypt(): key parameter is not a valid private key in %s on line %d
+bool(false)
+NULL
+bool(false)
+NULL
+
+Warning: openssl_private_decrypt(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
+
+Warning: openssl_private_decrypt(): key parameter is not a valid private key in %s on line %d
+bool(false)
+NULL
+bool(true)
+string(32) "Testing openssl_public_decrypt()"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_private_encrypt_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_private_encrypt_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_private_encrypt_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_private_encrypt_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,39 @@
+--TEST--
+openssl_private_encrypt() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = "Testing openssl_private_encrypt()";
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$pubkey = "file://" . dirname(__FILE__) . "/public.key";
+$wrong = "wrong";
+
+class test {
+	function __toString() {
+		return "test";
+	}
+}
+$obj = new test;
+
+var_dump(openssl_private_encrypt($data, $encrypted, $privkey));
+var_dump(openssl_private_encrypt($data, $encrypted, $pubkey));
+var_dump(openssl_private_encrypt($data, $encrypted, $wrong));
+var_dump(openssl_private_encrypt($data, $encrypted, $obj));
+var_dump(openssl_private_encrypt($obj, $encrypted, $privkey));
+openssl_public_decrypt($encrypted, $output, $pubkey);
+var_dump($output);
+?>
+--EXPECTF--
+bool(true)
+
+Warning: openssl_private_encrypt(): key param is not a valid private key in %s on line %d
+bool(false)
+
+Warning: openssl_private_encrypt(): key param is not a valid private key in %s on line %d
+bool(false)
+
+Warning: openssl_private_encrypt(): key param is not a valid private key in %s on line %d
+bool(false)
+bool(true)
+string(4) "test"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_public_decrypt_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_public_decrypt_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_public_decrypt_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_public_decrypt_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,48 @@
+--TEST--
+openssl_public_decrypt() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = "Testing openssl_public_decrypt()";
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$pubkey = "file://" . dirname(__FILE__) . "/public.key";
+$wrong = "wrong";
+
+openssl_private_encrypt($data, $encrypted, $privkey);
+var_dump(openssl_public_decrypt($encrypted, $output, $pubkey));
+var_dump($output);
+var_dump(openssl_public_decrypt($encrypted, $output2, $wrong));
+var_dump($output2);
+var_dump(openssl_public_decrypt($wrong, $output3, $pubkey));
+var_dump($output3);
+var_dump(openssl_public_decrypt($encrypted, $output4, array()));
+var_dump($output4);
+var_dump(openssl_public_decrypt($encrypted, $output5, array($pubkey)));
+var_dump($output5);
+var_dump(openssl_public_decrypt($encrypted, $output6, array($pubkey, "")));
+var_dump($output6);
+?>
+--EXPECTF--
+bool(true)
+string(32) "Testing openssl_public_decrypt()"
+
+Warning: openssl_public_decrypt(): key parameter is not a valid public key in %s on line %d
+bool(false)
+NULL
+bool(false)
+NULL
+
+Warning: openssl_public_decrypt(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
+
+Warning: openssl_public_decrypt(): key parameter is not a valid public key in %s on line %d
+bool(false)
+NULL
+
+Warning: openssl_public_decrypt(): key array must be of the form array(0 => key, 1 => phrase) in %s on line %d
+
+Warning: openssl_public_decrypt(): key parameter is not a valid public key in %s on line %d
+bool(false)
+NULL
+bool(true)
+string(32) "Testing openssl_public_decrypt()"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_public_encrypt_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_public_encrypt_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_public_encrypt_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_public_encrypt_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,40 @@
+--TEST--
+openssl_public_encrypt() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = "Testing openssl_public_encrypt()";
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$pubkey = "file://" . dirname(__FILE__) . "/public.key";
+$wrong = "wrong";
+
+class test {
+	function __toString() {
+		return "test";
+	}
+}
+$obj = new test;
+
+var_dump(openssl_public_encrypt($data, $encrypted, $pubkey));
+var_dump(openssl_public_encrypt($data, $encrypted, $privkey));
+var_dump(openssl_public_encrypt($data, $encrypted, $wrong));
+var_dump(openssl_public_encrypt($data, $encrypted, $obj));
+var_dump(openssl_public_encrypt($obj, $encrypted, $pubkey));
+openssl_private_decrypt($encrypted, $output, $privkey);
+var_dump($output);
+?>
+--EXPECTF--
+bool(true)
+
+Warning: openssl_public_encrypt(): key parameter is not a valid public key in %s on line %d
+bool(false)
+
+Warning: openssl_public_encrypt(): key parameter is not a valid public key in %s on line %d
+bool(false)
+
+Warning: openssl_public_encrypt(): key parameter is not a valid public key in %s on line %d
+bool(false)
+bool(true)
+string(4) "test"
+
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_random_pseudo_bytes_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_random_pseudo_bytes_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_random_pseudo_bytes_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_random_pseudo_bytes_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,22 @@
+--TEST--
+openssl_random_pseudo_bytes() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+for ($i = 0; $i < 10; $i++) {
+	var_dump(bin2hex(openssl_random_pseudo_bytes($i, $strong)));
+}
+
+?>
+--EXPECTF--
+string(0) ""
+string(2) "%s"
+string(4) "%s"
+string(6) "%s"
+string(8) "%s"
+string(10) "%s"
+string(12) "%s"
+string(14) "%s"
+string(16) "%s"
+string(18) "%s"
\ No newline at end of file
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_random_pseudo_bytes.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_random_pseudo_bytes.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_random_pseudo_bytes.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_random_pseudo_bytes.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,22 +0,0 @@
---TEST--
-openssl_random_pseudo_bytes() tests
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; ?>
---FILE--
-<?php
-for ($i = 0; $i < 10; $i++) {
-	var_dump(bin2hex(openssl_random_pseudo_bytes($i, $strong)));
-}
-
-?>
---EXPECTF--
-string(0) ""
-string(2) "%s"
-string(4) "%s"
-string(6) "%s"
-string(8) "%s"
-string(10) "%s"
-string(12) "%s"
-string(14) "%s"
-string(16) "%s"
-string(18) "%s"
\ No newline at end of file
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_seal_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_seal_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_seal_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_seal_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,58 @@
+--TEST--
+openssl_seal() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+// simple tests
+$a = 1;
+$b = array(1);
+$c = array(1);
+$d = array(1);
+
+var_dump(openssl_seal($a, $b, $c, $d));
+var_dump(openssl_seal($a, $a, $a, array()));
+var_dump(openssl_seal($c, $c, $c, 1));
+var_dump(openssl_seal($b, $b, $b, ""));
+
+// tests with cert
+$data = "openssl_open() test";
+$pub_key = "file://" . dirname(__FILE__) . "/public.key";
+$wrong = "wrong";
+
+var_dump(openssl_seal($data, $sealed, $ekeys, array($pub_key)));                  // no output
+var_dump(openssl_seal($data, $sealed, $ekeys, array($pub_key, $pub_key)));        // no output
+var_dump(openssl_seal($data, $sealed, $ekeys, array($pub_key, $wrong)));
+var_dump(openssl_seal($data, $sealed, $ekeys, $pub_key));
+var_dump(openssl_seal($data, $sealed, $ekeys, array()));
+var_dump(openssl_seal($data, $sealed, $ekeys, array($wrong)));
+
+echo "Done\n";
+?>
+--EXPECTF--	
+Warning: openssl_seal(): not a public key (1th member of pubkeys) in %s on line %d
+bool(false)
+
+Warning: openssl_seal(): Fourth argument to openssl_seal() must be a non-empty array in %s on line %d
+bool(false)
+
+Warning: openssl_seal() expects parameter 1 to be string, array given in %s on line %d
+NULL
+
+Warning: openssl_seal() expects parameter 1 to be string, array given in %s on line %d
+NULL
+int(19)
+int(19)
+
+Warning: openssl_seal(): not a public key (2th member of pubkeys) in %s on line %d
+bool(false)
+
+Warning: openssl_seal() expects parameter 4 to be array, string given in %s on line %d
+NULL
+
+Warning: openssl_seal(): Fourth argument to openssl_seal() must be a non-empty array in %s on line %d
+bool(false)
+
+Warning: openssl_seal(): not a public key (1th member of pubkeys) in %s on line %d
+bool(false)
+Done
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_sign_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_sign_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_sign_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_sign_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,22 @@
+--TEST--
+openssl_sign() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = "Testing openssl_sign()";
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$wrong = "wrong";
+
+var_dump(openssl_sign($data, $sign, $privkey));                 // no output
+var_dump(openssl_sign($data, $sign, $wrong));
+var_dump(openssl_sign(array(), $sign, $privkey));
+?>
+--EXPECTF--	
+bool(true)
+
+Warning: openssl_sign(): supplied key param cannot be coerced into a private key in %s on line %d
+bool(false)
+
+Warning: openssl_sign() expects parameter 1 to be string, array given in %s on line %d
+NULL
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_export_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_export_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_export_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_export_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,60 @@
+--TEST--
+openssl_spki_export() tests for exporting public key
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+if (!@openssl_pkey_new()) die("skip cannot create private key");
+?>
+--FILE--
+<?php
+
+/* array of private key sizes to test */
+$key_sizes = array(1024, 2048, 4096);
+$pkeys = array();
+foreach ($key_sizes as $key_size) {
+	$key_file = "file://" . dirname(__FILE__) . "/private_rsa_" . $key_size . ".key";
+	$pkeys[] = openssl_pkey_get_private($key_file);
+}
+
+
+/* array of available hashings to test */
+$algo = array(
+	OPENSSL_ALGO_MD4,
+	OPENSSL_ALGO_MD5,
+	OPENSSL_ALGO_SHA1,
+	OPENSSL_ALGO_SHA224,
+	OPENSSL_ALGO_SHA256,
+	OPENSSL_ALGO_SHA384,
+	OPENSSL_ALGO_SHA512,
+	OPENSSL_ALGO_RMD160
+);
+
+/* loop over key sizes for test */
+foreach ($pkeys as $pkey) {
+
+	/* loop to create and verify results */
+	foreach ($algo as $value) {
+		$spkac = openssl_spki_new($pkey, _uuid(), $value);
+		echo openssl_spki_export(preg_replace('/SPKAC=/', '', $spkac));
+	}
+}
+
+/* generate a random challenge */
+function _uuid() {
+	return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
+		mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
+		mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
+		mt_rand(0, 0xffff), mt_rand(0, 0xffff));
+}
+
+
+?>
+--EXPECTREGEX--
+\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
+\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
+\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
+\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
+\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
+\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
+\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
+\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_export_challenge_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_export_challenge_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_export_challenge_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_export_challenge_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,103 @@
+--TEST--
+openssl_spki_export_challenge() tests for exporting challenge
+--INI--
+error_reporting=0
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+if (!@openssl_pkey_new()) die("skip cannot create private key");
+?>
+--FILE--
+<?php
+
+/* array of private key sizes to test */
+$key_sizes = array(1024, 2048, 4096);
+$pkeys = array();
+foreach ($key_sizes as $key_size) {
+	$key_file = "file://" . dirname(__FILE__) . "/private_rsa_" . $key_size . ".key";
+	$pkeys[] = openssl_pkey_get_private($key_file);
+}
+
+
+/* array of available hashings to test */
+$algo = array(
+	OPENSSL_ALGO_MD4,
+	OPENSSL_ALGO_MD5,
+	OPENSSL_ALGO_SHA1,
+	OPENSSL_ALGO_SHA224,
+	OPENSSL_ALGO_SHA256,
+	OPENSSL_ALGO_SHA384,
+	OPENSSL_ALGO_SHA512,
+	OPENSSL_ALGO_RMD160
+);
+
+/* loop over key sizes for test */
+foreach ($pkeys as $pkey) {
+
+	/* loop to create and verify results */
+	foreach ($algo as $value) {
+		$spkac = openssl_spki_new($pkey, _uuid(), $value);
+		var_dump(openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $spkac)));
+		var_dump(openssl_spki_export_challenge($spkac  . 'Make it fail'));
+	}
+}
+
+/* generate a random challenge */
+function _uuid() {
+	return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
+		mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
+		mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
+		mt_rand(0, 0xffff), mt_rand(0, 0xffff));
+}
+
+
+?>
+--EXPECTREGEX--
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
+string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
+bool\(false\)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_export_challenge.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_export_challenge.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_export_challenge.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_export_challenge.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,105 +0,0 @@
---TEST--
-Testing openssl_spki_export_challenge()
-Creates SPKAC for all available key sizes & signature algorithms and exports challenge
---INI--
-error_reporting=0
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
-if (!@openssl_pkey_new()) die("skip cannot create private key");
-?>
---FILE--
-<?php
-
-/* array of private key sizes to test */
-$ksize = array('1024'=>1024,
-			   '2048'=>2048,
-			   '4096'=>4096);
-
-/* array of available hashings to test */
-$algo = array('md4'=>OPENSSL_ALGO_MD4,
-              'md5'=>OPENSSL_ALGO_MD5,
-              'sha1'=>OPENSSL_ALGO_SHA1,
-			  'sha224'=>OPENSSL_ALGO_SHA224,
-              'sha256'=>OPENSSL_ALGO_SHA256,
-              'sha384'=>OPENSSL_ALGO_SHA384,
-              'sha512'=>OPENSSL_ALGO_SHA512,
-              'rmd160'=>OPENSSL_ALGO_RMD160);
-
-/* loop over key sizes for test */
-foreach($ksize as $k => $v) {
-
-	/* generate new private key of specified size to use for tests */
-	$pkey = openssl_pkey_new(array('digest_alg' => 'sha512',
-	                               'private_key_type' => OPENSSL_KEYTYPE_RSA,
-	                               'private_key_bits' => $v));
-	openssl_pkey_export($pkey, $pass);
-
-	/* loop to create and verify results */
-	foreach($algo as $key => $value) {
-		$spkac = openssl_spki_new($pkey, _uuid(), $value);
-		var_dump(openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $spkac)));
-		var_dump(openssl_spki_export_challenge($spkac.'Make it fail'));
-	}
-	openssl_free_key($pkey);
-}
-
-/* generate a random challenge */
-function _uuid()
-{
- return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
-                mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
-                mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
-                mt_rand(0, 0xffff), mt_rand(0, 0xffff));
-}
-
-?>
---EXPECTREGEX--
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
-string\(36\) \"[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}\"
-bool\(false\)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_export.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_export.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_export.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_export.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,62 +0,0 @@
---TEST--
-Testing openssl_spki_export()
-Creates SPKAC for all available key sizes & signature algorithms and exports public key
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
-if (!@openssl_pkey_new()) die("skip cannot create private key");
-?>
---FILE--
-<?php
-
-/* array of private key sizes to test */
-$ksize = array('1024'=>1024,
-			   '2048'=>2048,
-			   '4096'=>4096);
-
-/* array of available hashings to test */
-$algo = array('md4'=>OPENSSL_ALGO_MD4,
-              'md5'=>OPENSSL_ALGO_MD5,
-              'sha1'=>OPENSSL_ALGO_SHA1,
-			  'sha224'=>OPENSSL_ALGO_SHA224,
-              'sha256'=>OPENSSL_ALGO_SHA256,
-              'sha384'=>OPENSSL_ALGO_SHA384,
-              'sha512'=>OPENSSL_ALGO_SHA512,
-              'rmd160'=>OPENSSL_ALGO_RMD160);
-
-/* loop over key sizes for test */
-foreach($ksize as $k => $v) {
-
-	/* generate new private key of specified size to use for tests */
-	$pkey = openssl_pkey_new(array('digest_alg' => 'sha512',
-	                               'private_key_type' => OPENSSL_KEYTYPE_RSA,
-	                               'private_key_bits' => $v));
-	openssl_pkey_export($pkey, $pass);
-
-	/* loop to create and verify results */
-	foreach($algo as $key => $value) {
-		$spkac = openssl_spki_new($pkey, _uuid(), $value);
-		echo openssl_spki_export(preg_replace('/SPKAC=/', '', $spkac));
-	}
-	openssl_free_key($pkey);
-}
-
-/* generate a random challenge */
-function _uuid()
-{
- return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
-                mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
-                mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
-                mt_rand(0, 0xffff), mt_rand(0, 0xffff));
-}
-
-?>
---EXPECTREGEX--
-\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
-\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
-\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
-\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
-\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
-\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
-\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
-\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\-.*\-\-\-\-\-END PUBLIC KEY\-\-\-\-\-
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_new_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_new_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_new_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_new_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,73 @@
+--TEST--
+openssl_spki_new() test for creating SPKI string
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+?>
+--FILE--
+<?php
+
+/* array of private key sizes to test */
+$key_sizes = array(1024, 2048, 4096);
+$pkeys = array();
+foreach ($key_sizes as $key_size) {
+	$key_file = "file://" . dirname(__FILE__) . "/private_rsa_" . $key_size . ".key";
+	$pkeys[] = openssl_pkey_get_private($key_file);
+}
+
+
+/* array of available hashings to test */
+$algo = array(
+	OPENSSL_ALGO_MD4,
+	OPENSSL_ALGO_MD5,
+	OPENSSL_ALGO_SHA1,
+	OPENSSL_ALGO_SHA224,
+	OPENSSL_ALGO_SHA256,
+	OPENSSL_ALGO_SHA384,
+	OPENSSL_ALGO_SHA512,
+	OPENSSL_ALGO_RMD160
+);
+
+/* loop over key sizes for test */
+foreach ($pkeys as $pkey) {
+
+	/* loop to create and verify results */
+	foreach ($algo as $value) {
+		var_dump(openssl_spki_new($pkey, _uuid(), $value));
+	}
+}
+
+/* generate a random challenge */
+function _uuid() {
+	return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
+		mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
+		mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
+		mt_rand(0, 0xffff), mt_rand(0, 0xffff));
+}
+
+?>
+--EXPECTF--
+string(478) "%s"
+string(478) "%s"
+string(478) "%s"
+string(478) "%s"
+string(478) "%s"
+string(478) "%s"
+string(478) "%s"
+string(474) "%s"
+string(830) "%s"
+string(830) "%s"
+string(830) "%s"
+string(830) "%s"
+string(830) "%s"
+string(830) "%s"
+string(830) "%s"
+string(826) "%s"
+string(1510) "%s"
+string(1510) "%s"
+string(1510) "%s"
+string(1510) "%s"
+string(1510) "%s"
+string(1510) "%s"
+string(1510) "%s"
+string(1506) "%s"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_new.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_new.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_new.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_new.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,77 +0,0 @@
---TEST--
-Testing openssl_spki_new()
-Tests SPKAC for all available private key sizes & hashing algorithms
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
-if (!@openssl_pkey_new()) die("skip cannot create private key");
-?>
---FILE--
-<?php
-
-/* array of private key sizes to test */
-$ksize = array('1024'=>1024,
-			   '2048'=>2048,
-			   '4096'=>4096);
-
-/* array of available hashings to test */
-$algo = array('md4'=>OPENSSL_ALGO_MD4,
-              'md5'=>OPENSSL_ALGO_MD5,
-              'sha1'=>OPENSSL_ALGO_SHA1,
-			  'sha224'=>OPENSSL_ALGO_SHA224,
-              'sha256'=>OPENSSL_ALGO_SHA256,
-              'sha384'=>OPENSSL_ALGO_SHA384,
-              'sha512'=>OPENSSL_ALGO_SHA512,
-              'rmd160'=>OPENSSL_ALGO_RMD160);
-
-/* loop over key sizes for test */
-foreach($ksize as $k => $v) {
-
-	/* generate new private key of specified size to use for tests */
-	$pkey = openssl_pkey_new(array('digest_alg' => 'sha512',
-	                               'private_key_type' => OPENSSL_KEYTYPE_RSA,
-	                               'private_key_bits' => $v));
-	openssl_pkey_export($pkey, $pass);
-
-	/* loop to create and verify results */
-	foreach($algo as $key => $value) {
-		var_dump(openssl_spki_new($pkey, _uuid(), $value));
-	}
-	openssl_free_key($pkey);
-}
-
-/* generate a random challenge */
-function _uuid()
-{
- return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
-                mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
-                mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
-                mt_rand(0, 0xffff), mt_rand(0, 0xffff));
-}
-
-?>
---EXPECTF--
-string(478) "%s"
-string(478) "%s"
-string(478) "%s"
-string(478) "%s"
-string(478) "%s"
-string(478) "%s"
-string(478) "%s"
-string(474) "%s"
-string(830) "%s"
-string(830) "%s"
-string(830) "%s"
-string(830) "%s"
-string(830) "%s"
-string(830) "%s"
-string(830) "%s"
-string(826) "%s"
-string(1510) "%s"
-string(1510) "%s"
-string(1510) "%s"
-string(1510) "%s"
-string(1510) "%s"
-string(1510) "%s"
-string(1510) "%s"
-string(1506) "%s"
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_verify_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_verify_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_verify_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_verify_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,88 @@
+--TEST--
+openssl_spki_verify() tests for valid signature
+--INI--
+error_reporting=0
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+?>
+--FILE--
+<?php
+
+/* array of private key sizes to test */
+$key_sizes = array(1024, 2048, 4096);
+$pkeys = array();
+foreach ($key_sizes as $key_size) {
+	$key_file = "file://" . dirname(__FILE__) . "/private_rsa_" . $key_size . ".key";
+	$pkeys[] = openssl_pkey_get_private($key_file);
+}
+
+
+/* array of available hashings to test */
+$algo = array(
+	OPENSSL_ALGO_SHA1,
+	OPENSSL_ALGO_SHA224,
+	OPENSSL_ALGO_SHA256,
+	OPENSSL_ALGO_SHA384,
+	OPENSSL_ALGO_SHA512,
+	OPENSSL_ALGO_RMD160
+);
+
+/* loop over key sizes for test */
+foreach ($pkeys as $pkey) {
+
+	/* loop to create and verify results */
+	foreach ($algo as $value) {
+		$spkac = openssl_spki_new($pkey, _uuid(), $value);
+		var_dump(openssl_spki_verify(preg_replace('/SPKAC=/', '', $spkac)));
+		var_dump(openssl_spki_verify($spkac . 'Make it fail'));
+	}
+}
+
+/* generate a random challenge */
+function _uuid() {
+	return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
+		mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
+		mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
+		mt_rand(0, 0xffff), mt_rand(0, 0xffff));
+}
+
+
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+bool(false)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_verify.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_verify.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_spki_verify.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_spki_verify.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,91 +0,0 @@
---TEST--
-Testing openssl_spki_verify()
-Creates SPKAC for all available key sizes & signature algorithms and tests for valid signature
---INI--
-error_reporting=0
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
-if (!@openssl_pkey_new()) die("skip cannot create private key");
-?>
---FILE--
-<?php
-
-/* array of private key sizes to test */
-$ksize = array('1024'=>1024,
-               '2048'=>2048,
-			   '4096'=>4096);
-
-/* array of available hashings to test */
-$algo = array('sha1'=>OPENSSL_ALGO_SHA1,
-			  'sha224'=>OPENSSL_ALGO_SHA224,
-              'sha256'=>OPENSSL_ALGO_SHA256,
-              'sha384'=>OPENSSL_ALGO_SHA384,
-              'sha512'=>OPENSSL_ALGO_SHA512,
-              'rmd160'=>OPENSSL_ALGO_RMD160);
-
-/* loop over key sizes for test */
-foreach($ksize as $k => $v) {
-
-	/* generate new private key of specified size to use for tests */
-	$pkey = openssl_pkey_new(array('digest_alg' => 'sha512',
-	                               'private_key_type' => OPENSSL_KEYTYPE_RSA,
-	                               'private_key_bits' => $v));
-	openssl_pkey_export($pkey, $pass);
-
-	/* loop to create and verify results */
-	foreach($algo as $key => $value) {
-		$spkac = openssl_spki_new($pkey, _uuid(), $value);
-		var_dump(openssl_spki_verify(preg_replace('/SPKAC=/', '', $spkac)));
-		var_dump(openssl_spki_verify($spkac.'Make it fail'));
-	}
-	openssl_free_key($pkey);
-}
-
-/* generate a random challenge */
-function _uuid()
-{
- return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff),
-                mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000,
-                mt_rand(0, 0x3fff) | 0x8000, mt_rand(0, 0xffff),
-                mt_rand(0, 0xffff), mt_rand(0, 0xffff));
-}
-
-?>
---EXPECT--
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
-bool(true)
-bool(false)
\ No newline at end of file
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_verify_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_verify_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_verify_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_verify_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,28 @@
+--TEST--
+openssl_verify() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$data = "Testing openssl_verify()";
+$privkey = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+$pubkey = "file://" . dirname(__FILE__) . "/public.key";
+$wrong = "wrong";
+
+openssl_sign($data, $sign, $privkey);
+var_dump(openssl_verify($data, $sign, $pubkey));
+var_dump(openssl_verify($data, $sign, $privkey));
+var_dump(openssl_verify($data, $sign, $wrong));
+var_dump(openssl_verify($data, $wrong, $pubkey));
+var_dump(openssl_verify($wrong, $sign, $pubkey));
+?>
+--EXPECTF--
+int(1)
+
+Warning: openssl_verify(): supplied key param cannot be coerced into a public key in %s on line %d
+bool(false)
+
+Warning: openssl_verify(): supplied key param cannot be coerced into a public key in %s on line %d
+bool(false)
+int(0)
+int(0)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_check_private_key_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_check_private_key_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_check_private_key_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_check_private_key_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,29 @@
+--TEST--
+openssl_x509_check_private_key() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$fp = fopen(dirname(__FILE__) . "/cert.crt","r");
+$a = fread($fp, 8192);
+fclose($fp);
+
+$fp = fopen(dirname(__FILE__) . "/private_rsa_1024.key","r");
+$b = fread($fp, 8192);
+fclose($fp);
+
+$cert = "file://" . dirname(__FILE__) . "/cert.crt";
+$key = "file://" . dirname(__FILE__) . "/private_rsa_1024.key";
+
+var_dump(openssl_x509_check_private_key($cert, $key));
+var_dump(openssl_x509_check_private_key("", $key));
+var_dump(openssl_x509_check_private_key($cert, ""));
+var_dump(openssl_x509_check_private_key("", ""));
+var_dump(openssl_x509_check_private_key($a, $b));
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(false)
+bool(false)
+bool(true)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_export_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_export_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_export_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_export_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,41 @@
+--TEST--
+openssl_x509_export() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$cert_file = dirname(__FILE__) . "/cert.crt";
+
+$a = file_get_contents($cert_file);
+$b = "file://" . $cert_file;
+$c = "invalid cert";
+$d = openssl_x509_read($a);
+$e = array();
+
+var_dump(openssl_x509_export($a, $output));  // read cert as a binary string
+var_dump(openssl_x509_export($b, $output2)); // read cert from a filename string
+var_dump(openssl_x509_export($c, $output3)); // read an invalid cert, fails
+var_dump(openssl_x509_export($d, $output4)); // read cert from a resource
+var_dump(openssl_x509_export($e, $output5)); // read an array, fails
+
+var_dump(strcmp($output, $a));
+var_dump(strcmp($output, $output2));
+var_dump(strcmp($output, $output3));
+var_dump(strcmp($output, $output4)); // different
+var_dump(strcmp($output, $output5)); // different
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+
+Warning: openssl_x509_export(): cannot get cert from parameter 1 in %s on line %d
+bool(false)
+bool(true)
+
+Warning: openssl_x509_export(): cannot get cert from parameter 1 in %s on line %d
+bool(false)
+int(0)
+int(0)
+int(%d)
+int(0)
+int(%d)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_export_to_file_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_export_to_file_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_export_to_file_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_export_to_file_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,42 @@
+--TEST--
+openssl_x509_export_to_file() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$outfilename = dirname(__FILE__) . "/openssl_x509_export_to_file__outfilename.tmp";
+$cert_file = dirname(__FILE__) . "/cert.crt";
+
+$a = file_get_contents($cert_file);
+$b = "file://" . $cert_file;
+$c = "invalid cert";
+$d = openssl_x509_read($a);
+$e = array();
+
+var_dump(openssl_x509_export_to_file($a, $outfilename)); // read cert as a binary string
+var_dump(openssl_x509_export_to_file($b, $outfilename)); // read cert from a filename string
+var_dump(openssl_x509_export_to_file($c, $outfilename)); // read an invalid cert, fails
+var_dump(openssl_x509_export_to_file($d, $outfilename)); // read cert from a resource
+var_dump(openssl_x509_export_to_file($e, $outfilename)); // read an array, fails
+echo "---\n";
+var_dump($exists = file_exists($outfilename));
+?>
+--CLEAN--
+<?php
+$outfilename = dirname(__FILE__) . "/openssl_x509_export_to_file__outfilename.tmp";
+if (file_exists($outfilename)) {
+	unlink($outfilename);
+}
+?>
+--EXPECTF--
+bool(true)
+bool(true)
+
+Warning: openssl_x509_export_to_file(): cannot get cert from parameter 1 in %s on line %d
+bool(false)
+bool(true)
+
+Warning: openssl_x509_export_to_file(): cannot get cert from parameter 1 in %s on line %d
+bool(false)
+---
+bool(true)
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_fingerprint_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_fingerprint_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_fingerprint_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_fingerprint_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,47 @@
+--TEST--
+openssl_x509_fingerprint() tests
+--SKIPIF--
+<?php
+if (!extension_loaded("openssl")) die("skip");
+?>
+--FILE--
+<?php
+
+$cert = "file://" . dirname(__FILE__) . "/cert.crt";
+
+echo "** Testing with no parameters **\n";
+var_dump(openssl_x509_fingerprint());
+
+echo "** Testing default functionality **\n";
+var_dump(openssl_x509_fingerprint($cert));
+
+echo "** Testing hash method md5 **\n";
+var_dump(openssl_x509_fingerprint($cert, 'md5'));
+
+echo "**Testing raw output md5 **\n";
+var_dump(bin2hex(openssl_x509_fingerprint($cert, 'md5', true)));
+
+echo "** Testing bad certification **\n";
+var_dump(openssl_x509_fingerprint('123'));
+echo "** Testing bad hash method **\n";
+var_dump(openssl_x509_fingerprint($cert, 'xx45'));
+--EXPECTF--
+** Testing with no parameters **
+
+Warning: openssl_x509_fingerprint() expects at least 1 parameter, 0 given in %s on line %d
+NULL
+** Testing default functionality **
+string(40) "6e6fd1ea10a5a23071d61c728ee9b40df6dbc33c"
+** Testing hash method md5 **
+string(32) "ac77008e172897e06c0b065294487a67"
+**Testing raw output md5 **
+string(32) "ac77008e172897e06c0b065294487a67"
+** Testing bad certification **
+
+Warning: openssl_x509_fingerprint(): cannot get cert from parameter 1 in %s on line %d
+bool(false)
+** Testing bad hash method **
+
+Warning: openssl_x509_fingerprint(): Unknown signature algorithm in %s on line %d
+bool(false)
+
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_fingerprint.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_fingerprint.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_fingerprint.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_fingerprint.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,47 +0,0 @@
---TEST--
-Testing openssl_x509_fingerprint()
---SKIPIF--
-<?php
-if (!extension_loaded("openssl")) die("skip");
-?>
---FILE--
-<?php
-
-$cert = "file://" . dirname(__FILE__) . "/cert.crt";
-
-echo "** Testing with no parameters **\n";
-var_dump(openssl_x509_fingerprint());
-
-echo "** Testing default functionality **\n";
-var_dump(openssl_x509_fingerprint($cert));
-
-echo "** Testing hash method md5 **\n";
-var_dump(openssl_x509_fingerprint($cert, 'md5'));
-
-echo "**Testing raw output md5 **\n";
-var_dump(bin2hex(openssl_x509_fingerprint($cert, 'md5', true)));
-
-echo "** Testing bad certification **\n";
-var_dump(openssl_x509_fingerprint('123'));
-echo "** Testing bad hash method **\n";
-var_dump(openssl_x509_fingerprint($cert, 'xx45'));
---EXPECTF--
-** Testing with no parameters **
-
-Warning: openssl_x509_fingerprint() expects at least 1 parameter, 0 given in %s on line %d
-NULL
-** Testing default functionality **
-string(40) "6e6fd1ea10a5a23071d61c728ee9b40df6dbc33c"
-** Testing hash method md5 **
-string(32) "ac77008e172897e06c0b065294487a67"
-**Testing raw output md5 **
-string(32) "ac77008e172897e06c0b065294487a67"
-** Testing bad certification **
-
-Warning: openssl_x509_fingerprint(): cannot get cert from parameter 1 in %s on line %d
-bool(false)
-** Testing bad hash method **
-
-Warning: openssl_x509_fingerprint(): Unknown signature algorithm in %s on line %d
-bool(false)
-
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_free_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_free_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_free_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_free_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+openssl_x509_free() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+var_dump($res = openssl_x509_read("file://" . dirname(__FILE__) . "/cert.crt"));
+openssl_x509_free($res);
+var_dump($res);
+openssl_x509_free(false);
+?>
+--EXPECTF--
+resource(%d) of type (OpenSSL X.509)
+resource(%d) of type (Unknown)
+
+Warning: openssl_x509_free() expects parameter 1 to be resource, boolean given in %s on line %d
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_parse_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_parse_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_parse_basic.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_parse_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -1,5 +1,5 @@
 --TEST--
-openssl_x509_parse() basic test
+openssl_x509_parse() tests
 --SKIPIF--
 <?php if (!extension_loaded("openssl")) print "skip"; 
 if (OPENSSL_VERSION_NUMBER < 0x10000000) die("skip Output requires OpenSSL 1.0");
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_parse_basic_v9.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_parse_basic_v9.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_parse_basic_v9.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_parse_basic_v9.phpt	1970-01-01 00:00:00.000000000 +0000
@@ -1,276 +0,0 @@
---TEST--
-openssl_x509_parse() basic test for OpenSSL 0.9
---SKIPIF--
-<?php if (!extension_loaded("openssl")) print "skip"; 
-if (OPENSSL_VERSION_NUMBER > 0x10000000) die("skip Output requires OpenSSL 0.9");
-?>
---FILE--
-<?php
-$cert = "file://" . dirname(__FILE__) . "/cert.crt";
-
-var_dump(openssl_x509_parse($cert));
-var_dump(openssl_x509_parse($cert, false));
-?>
---EXPECTF--
-array(12) {
-  ["name"]=>
-  string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
-  ["subject"]=>
-  array(5) {
-    ["C"]=>
-    string(2) "BR"
-    ["ST"]=>
-    string(17) "Rio Grande do Sul"
-    ["L"]=>
-    string(12) "Porto Alegre"
-    ["CN"]=>
-    string(21) "Henrique do N. Angelo"
-    ["emailAddress"]=>
-    string(16) "hnangelo@php.net"
-  }
-  ["hash"]=>
-  string(8) "%s"
-  ["issuer"]=>
-  array(5) {
-    ["C"]=>
-    string(2) "BR"
-    ["ST"]=>
-    string(17) "Rio Grande do Sul"
-    ["L"]=>
-    string(12) "Porto Alegre"
-    ["CN"]=>
-    string(21) "Henrique do N. Angelo"
-    ["emailAddress"]=>
-    string(16) "hnangelo@php.net"
-  }
-  ["version"]=>
-  int(2)
-  ["serialNumber"]=>
-  string(20) "12593567369101004962"
-  ["validFrom"]=>
-  string(13) "080630102843Z"
-  ["validTo"]=>
-  string(13) "080730102843Z"
-  ["validFrom_time_t"]=>
-  int(1214821723)
-  ["validTo_time_t"]=>
-  int(1217413723)
-  ["purposes"]=>
-  array(8) {
-    [1]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(9) "sslclient"
-    }
-    [2]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(9) "sslserver"
-    }
-    [3]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(11) "nssslserver"
-    }
-    [4]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(9) "smimesign"
-    }
-    [5]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(12) "smimeencrypt"
-    }
-    [6]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(7) "crlsign"
-    }
-    [7]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(3) "any"
-    }
-    [8]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(10) "ocsphelper"
-    }
-  }
-  ["extensions"]=>
-  array(3) {
-    ["subjectKeyIdentifier"]=>
-    string(59) "DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D"
-    ["authorityKeyIdentifier"]=>
-    string(202) "keyid:DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D
-DirName:/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net
-serial:AE:C5:56:CC:72:37:50:A2
-"
-    ["basicConstraints"]=>
-    string(7) "CA:TRUE"
-  }
-}
-array(12) {
-  ["name"]=>
-  string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
-  ["subject"]=>
-  array(5) {
-    ["countryName"]=>
-    string(2) "BR"
-    ["stateOrProvinceName"]=>
-    string(17) "Rio Grande do Sul"
-    ["localityName"]=>
-    string(12) "Porto Alegre"
-    ["commonName"]=>
-    string(21) "Henrique do N. Angelo"
-    ["emailAddress"]=>
-    string(16) "hnangelo@php.net"
-  }
-  ["hash"]=>
-  string(8) "%s"
-  ["issuer"]=>
-  array(5) {
-    ["countryName"]=>
-    string(2) "BR"
-    ["stateOrProvinceName"]=>
-    string(17) "Rio Grande do Sul"
-    ["localityName"]=>
-    string(12) "Porto Alegre"
-    ["commonName"]=>
-    string(21) "Henrique do N. Angelo"
-    ["emailAddress"]=>
-    string(16) "hnangelo@php.net"
-  }
-  ["version"]=>
-  int(2)
-  ["serialNumber"]=>
-  string(20) "12593567369101004962"
-  ["validFrom"]=>
-  string(13) "080630102843Z"
-  ["validTo"]=>
-  string(13) "080730102843Z"
-  ["validFrom_time_t"]=>
-  int(1214821723)
-  ["validTo_time_t"]=>
-  int(1217413723)
-  ["purposes"]=>
-  array(8) {
-    [1]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(10) "SSL client"
-    }
-    [2]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(10) "SSL server"
-    }
-    [3]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(19) "Netscape SSL server"
-    }
-    [4]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(14) "S/MIME signing"
-    }
-    [5]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(17) "S/MIME encryption"
-    }
-    [6]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(11) "CRL signing"
-    }
-    [7]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(11) "Any Purpose"
-    }
-    [8]=>
-    array(3) {
-      [0]=>
-      bool(true)
-      [1]=>
-      bool(true)
-      [2]=>
-      string(11) "OCSP helper"
-    }
-  }
-  ["extensions"]=>
-  array(3) {
-    ["subjectKeyIdentifier"]=>
-    string(59) "DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D"
-    ["authorityKeyIdentifier"]=>
-    string(202) "keyid:DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D
-DirName:/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net
-serial:AE:C5:56:CC:72:37:50:A2
-"
-    ["basicConstraints"]=>
-    string(7) "CA:TRUE"
-  }
-}
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_parse_v9_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_parse_v9_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_parse_v9_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_parse_v9_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,276 @@
+--TEST--
+openssl_x509_parse() basic test for OpenSSL 0.9
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; 
+if (OPENSSL_VERSION_NUMBER > 0x10000000) die("skip Output requires OpenSSL 0.9");
+?>
+--FILE--
+<?php
+$cert = "file://" . dirname(__FILE__) . "/cert.crt";
+
+var_dump(openssl_x509_parse($cert));
+var_dump(openssl_x509_parse($cert, false));
+?>
+--EXPECTF--
+array(12) {
+  ["name"]=>
+  string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
+  ["subject"]=>
+  array(5) {
+    ["C"]=>
+    string(2) "BR"
+    ["ST"]=>
+    string(17) "Rio Grande do Sul"
+    ["L"]=>
+    string(12) "Porto Alegre"
+    ["CN"]=>
+    string(21) "Henrique do N. Angelo"
+    ["emailAddress"]=>
+    string(16) "hnangelo@php.net"
+  }
+  ["hash"]=>
+  string(8) "%s"
+  ["issuer"]=>
+  array(5) {
+    ["C"]=>
+    string(2) "BR"
+    ["ST"]=>
+    string(17) "Rio Grande do Sul"
+    ["L"]=>
+    string(12) "Porto Alegre"
+    ["CN"]=>
+    string(21) "Henrique do N. Angelo"
+    ["emailAddress"]=>
+    string(16) "hnangelo@php.net"
+  }
+  ["version"]=>
+  int(2)
+  ["serialNumber"]=>
+  string(20) "12593567369101004962"
+  ["validFrom"]=>
+  string(13) "080630102843Z"
+  ["validTo"]=>
+  string(13) "080730102843Z"
+  ["validFrom_time_t"]=>
+  int(1214821723)
+  ["validTo_time_t"]=>
+  int(1217413723)
+  ["purposes"]=>
+  array(8) {
+    [1]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(9) "sslclient"
+    }
+    [2]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(9) "sslserver"
+    }
+    [3]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(11) "nssslserver"
+    }
+    [4]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(9) "smimesign"
+    }
+    [5]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(12) "smimeencrypt"
+    }
+    [6]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(7) "crlsign"
+    }
+    [7]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(3) "any"
+    }
+    [8]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(10) "ocsphelper"
+    }
+  }
+  ["extensions"]=>
+  array(3) {
+    ["subjectKeyIdentifier"]=>
+    string(59) "DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D"
+    ["authorityKeyIdentifier"]=>
+    string(202) "keyid:DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D
+DirName:/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net
+serial:AE:C5:56:CC:72:37:50:A2
+"
+    ["basicConstraints"]=>
+    string(7) "CA:TRUE"
+  }
+}
+array(12) {
+  ["name"]=>
+  string(96) "/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net"
+  ["subject"]=>
+  array(5) {
+    ["countryName"]=>
+    string(2) "BR"
+    ["stateOrProvinceName"]=>
+    string(17) "Rio Grande do Sul"
+    ["localityName"]=>
+    string(12) "Porto Alegre"
+    ["commonName"]=>
+    string(21) "Henrique do N. Angelo"
+    ["emailAddress"]=>
+    string(16) "hnangelo@php.net"
+  }
+  ["hash"]=>
+  string(8) "%s"
+  ["issuer"]=>
+  array(5) {
+    ["countryName"]=>
+    string(2) "BR"
+    ["stateOrProvinceName"]=>
+    string(17) "Rio Grande do Sul"
+    ["localityName"]=>
+    string(12) "Porto Alegre"
+    ["commonName"]=>
+    string(21) "Henrique do N. Angelo"
+    ["emailAddress"]=>
+    string(16) "hnangelo@php.net"
+  }
+  ["version"]=>
+  int(2)
+  ["serialNumber"]=>
+  string(20) "12593567369101004962"
+  ["validFrom"]=>
+  string(13) "080630102843Z"
+  ["validTo"]=>
+  string(13) "080730102843Z"
+  ["validFrom_time_t"]=>
+  int(1214821723)
+  ["validTo_time_t"]=>
+  int(1217413723)
+  ["purposes"]=>
+  array(8) {
+    [1]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(10) "SSL client"
+    }
+    [2]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(10) "SSL server"
+    }
+    [3]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(19) "Netscape SSL server"
+    }
+    [4]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(14) "S/MIME signing"
+    }
+    [5]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(17) "S/MIME encryption"
+    }
+    [6]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(11) "CRL signing"
+    }
+    [7]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(11) "Any Purpose"
+    }
+    [8]=>
+    array(3) {
+      [0]=>
+      bool(true)
+      [1]=>
+      bool(true)
+      [2]=>
+      string(11) "OCSP helper"
+    }
+  }
+  ["extensions"]=>
+  array(3) {
+    ["subjectKeyIdentifier"]=>
+    string(59) "DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D"
+    ["authorityKeyIdentifier"]=>
+    string(202) "keyid:DB:7E:40:72:BD:5C:35:85:EC:29:29:81:12:E8:62:68:6A:B7:3F:7D
+DirName:/C=BR/ST=Rio Grande do Sul/L=Porto Alegre/CN=Henrique do N. Angelo/emailAddress=hnangelo@php.net
+serial:AE:C5:56:CC:72:37:50:A2
+"
+    ["basicConstraints"]=>
+    string(7) "CA:TRUE"
+  }
+}
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_read_basic.phpt 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_read_basic.phpt
--- 5.6.18+dfsg-4/ext/openssl/tests/openssl_x509_read_basic.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/openssl_x509_read_basic.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,37 @@
+--TEST--
+openssl_x509_read() tests
+--SKIPIF--
+<?php if (!extension_loaded("openssl")) print "skip"; ?>
+--FILE--
+<?php
+$fp = fopen(dirname(__FILE__) . "/cert.crt","r");
+$a = fread($fp,8192);
+fclose($fp); 
+
+$b = "file://" . dirname(__FILE__) . "/cert.crt";
+$c = "invalid cert";
+$d = openssl_x509_read($a);
+$e = array();
+$f = array($b);
+
+var_dump(openssl_x509_read($a)); // read cert as a string
+var_dump(openssl_x509_read($b)); // read cert as a filename string
+var_dump(openssl_x509_read($c)); // read an invalid cert, fails
+var_dump(openssl_x509_read($d)); // read cert from a resource
+var_dump(openssl_x509_read($e)); // read an array
+var_dump(openssl_x509_read($f)); // read an array with the filename
+?>
+--EXPECTF--
+resource(%d) of type (OpenSSL X.509)
+resource(%d) of type (OpenSSL X.509)
+
+Warning: openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate! in %s on line %d
+bool(false)
+resource(%d) of type (OpenSSL X.509)
+
+Warning: openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate! in %s on line %d
+bool(false)
+
+Warning: openssl_x509_read(): supplied parameter cannot be coerced into an X509 certificate! in %s on line %d
+bool(false)
+
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/private.key 5.6.19+dfsg-1/ext/openssl/tests/private.key
--- 5.6.18+dfsg-4/ext/openssl/tests/private.key	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/private.key	1970-01-01 00:00:00.000000000 +0000
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDLXp6PkCtbpV+P1gwFQWH6Ez0U83uEmS8IGnpeI8Fk8rY/vHOZ
-zZZaxRCw+loyc342qCDIQheMOCNm5Fkevz06q757/oooiLR3yryYGKiKG1IZIipl
-mtsC95oKrzUSKk60wuI1mbgpMUP5LKi/Tvxes5PmkUtXfimz2qgkeUcPpQIDAQAB
-AoGBAMcP/dp+fsI9FFYBaVC3mASlUjOwxKWdH3kqGb8N9p4uKRAoEWtp3hNJM7ZX
-x3P8sn0jgrsiXlRFGvn65/T9shp8hj+CdJKg2jKCs7S58v60TLfSvOQSIYsw9Qm9
-Bsx4hKfz+d52ptuJRbv8tDxsYP3D/KjQfpX1OysiP/WBfeg9AkEA+AGT0goqjWOM
-YgFtZGrefIegF31XSCQTaLIml6/2JwF+oBKjJUQFar2Rwn6qUwrsGtSPMM0Iz8ry
-9uvUbs8PPwJBANHsuTVWzLf8TJNGc+xIlhvzKFkF0nJIWx4ozhlMNDQMMF/3FRSo
-zvHIgUnpG9Vwa2GtjTDnD8jHtzTauAZmjBsCQCGDVQ5VAVsJ0LaNqtKe/mGlkiSa
-c2j0Nws2x7BHvuOWeB35ZsJqZrD93OyDYVDHcRBPGOpnSoGJ0zs6swImSNECQHSH
-0BgH4wSPDYMDrP4RHSLOzCr+zF+cQthvFll8r83kpkXfRth9DMOy5fI9cLH/Adzr
-FmF7Iov2MYEpmNYUvtkCQHfW0ntkVY9xS2/VTs57F5tUkfNG2hG74pJM6vSfTNWn
-R/oI5m2sDtRWQ88LCYJMEmIZhN00Ys4xOSoTs+SUakY=
------END RSA PRIVATE KEY-----
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/private_rsa_1024.key 5.6.19+dfsg-1/ext/openssl/tests/private_rsa_1024.key
--- 5.6.18+dfsg-4/ext/openssl/tests/private_rsa_1024.key	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/private_rsa_1024.key	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDLXp6PkCtbpV+P1gwFQWH6Ez0U83uEmS8IGnpeI8Fk8rY/vHOZ
+zZZaxRCw+loyc342qCDIQheMOCNm5Fkevz06q757/oooiLR3yryYGKiKG1IZIipl
+mtsC95oKrzUSKk60wuI1mbgpMUP5LKi/Tvxes5PmkUtXfimz2qgkeUcPpQIDAQAB
+AoGBAMcP/dp+fsI9FFYBaVC3mASlUjOwxKWdH3kqGb8N9p4uKRAoEWtp3hNJM7ZX
+x3P8sn0jgrsiXlRFGvn65/T9shp8hj+CdJKg2jKCs7S58v60TLfSvOQSIYsw9Qm9
+Bsx4hKfz+d52ptuJRbv8tDxsYP3D/KjQfpX1OysiP/WBfeg9AkEA+AGT0goqjWOM
+YgFtZGrefIegF31XSCQTaLIml6/2JwF+oBKjJUQFar2Rwn6qUwrsGtSPMM0Iz8ry
+9uvUbs8PPwJBANHsuTVWzLf8TJNGc+xIlhvzKFkF0nJIWx4ozhlMNDQMMF/3FRSo
+zvHIgUnpG9Vwa2GtjTDnD8jHtzTauAZmjBsCQCGDVQ5VAVsJ0LaNqtKe/mGlkiSa
+c2j0Nws2x7BHvuOWeB35ZsJqZrD93OyDYVDHcRBPGOpnSoGJ0zs6swImSNECQHSH
+0BgH4wSPDYMDrP4RHSLOzCr+zF+cQthvFll8r83kpkXfRth9DMOy5fI9cLH/Adzr
+FmF7Iov2MYEpmNYUvtkCQHfW0ntkVY9xS2/VTs57F5tUkfNG2hG74pJM6vSfTNWn
+R/oI5m2sDtRWQ88LCYJMEmIZhN00Ys4xOSoTs+SUakY=
+-----END RSA PRIVATE KEY-----
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/private_rsa_2048.key 5.6.19+dfsg-1/ext/openssl/tests/private_rsa_2048.key
--- 5.6.18+dfsg-4/ext/openssl/tests/private_rsa_2048.key	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/private_rsa_2048.key	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEArbUmVW1Y+rJzZRC3DYB0kdIgvk7MAday78ybGPPDhVlbAb4C
+jWbaPs4nyUCTEt9KVG0H7pXHxDbWSsC2974zdvqlP0L2op1/M2SteTcGCBOdwGH2
+jORVAZL8/WbTOf9IpKAM77oN14scsyOlQBJqhh+xrLg8ksB2dOos54yDqo0Tq7R5
+tldV+alKZXWlJnqRCfFuxvqtfWI5nGTAedVZhvjQfLQQgujfXHoFWoGbXn2buzfw
+KGJEeqWPbQOZF/FeOJPlgOBhhDb3BAFNVCtM3k71Rblj54pNd3yvq152xsgFd0o3
+s15fuSwZgerUjeEuw/wTK9k7vyp+MrIQHQmPdQIDAQABAoIBABPDKDlP12+uHbLB
+1BGVK63rWg5MqKkM5A6kGIEeOoBRSilIlMHBkdLTYXNkBVeAT9SLEvvxzmhkVLzs
+b+R/nxtKKMKpu6WEhZQzQAkqWWVR1gCtJH+i+ojTUDUEHcPbZ0hTbSVY5XpAOWOo
+CoTfk37u3CfqTfnkK5XhjnpJYjFk60fLeTKKG90xb4WmPGCOxBZGeI9yk+gEgMVx
+4qYBQEgcaJEBXebvM0q8BCDh/rlYxwQ/q0RJ6W1D84SOeyYv/9LesFZSbnUN16tA
+/YezkhYVkVIrQFzh1al7NKvWEUZ3Yx3AEuggKtijlZyO9zOAOigSiFQjtqOl7S6e
+jbVfLYECgYEA51E5TNvN6IW6p58wOXTmINnsW3sDYS1CyPh3TkSvWU2OqMXJxQSA
+bASpXtqicAY32wkBOiazyY/+L7x1ReG/8z3tTm53AsYwkLKrgUfjdrOFhXWk8QI3
+0WS/1hS7qZ4Ycxi5B2X+rPPLnc2+mUvaEX6/B2Fjbqp4nIt+ZAE8SvcCgYEAwD47
+anMk8z68wdgzxY4J10sgCKfgHCe7J8ikpzloznX1HnbZTWf74FLlA/8ctfFJCVAy
+4dG1s0D+JSpxxMSkk4hvi10Ha6t5U+BreD9VPAQRspGSKhn8JfwvLfKPH65uazBP
+yvBtVIdagBf/msLfF33vkrQSjAEJM1njl6XMEfMCgYB1BddqNa0G3Figol0gRC6E
+Iht78FC2YdJun5yj4QWgtSbd5Sn9XRinDPiufwc8izjIu9Z+F8ROzWT3u2zMzLdy
+FDswuZvFsIQzP+CaB8dgbtO2v9yQ/OFGMqUGZfjGh6+w0qoQvx3HW5MAI20wWnpY
+7Xkw/6jw/JcGA2AOsb1R4wKBgQCFfnF54Q1GkEk4/m4tAA4bX4KWICUCyCAxZyXX
+LYl23PhiuDr7gnqockevt8ZzHWMPQY6juyFGoZoZqtinv7lc7YAvsWEGxmMQ+KUI
+Mkp4y4aSjn2GGNc8dVs5t9blNBZe/oRaMwxohzkz+/Y1vJ54TK5BHCRI7is6anAd
+jTchOwKBgQDP9yOdQTfUwJRUMERWmzXWU2oDXeEMdpbGPLGJ4/e/hu1CW7bdQRoc
+jBSEpn3hOodmdwdmoXtbJReMCE8qS6yVHNn4orpJf+uOBr5fVnHwttFfN8HID9js
+Lml8jAAQItMFw1CEPR75NVdFb7ksNKlxE9376tG63JhrTttRGwO3CA==
+-----END RSA PRIVATE KEY-----
diff -pruN 5.6.18+dfsg-4/ext/openssl/tests/private_rsa_4096.key 5.6.19+dfsg-1/ext/openssl/tests/private_rsa_4096.key
--- 5.6.18+dfsg-4/ext/openssl/tests/private_rsa_4096.key	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/openssl/tests/private_rsa_4096.key	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKAIBAAKCAgEAtlmPieG4yL/HQ1j98U+VqlAzO55+aSHKXOV9q5+uTevtzXVV
+s+rOPUAlPkUi7kcp3Yrum+Y0rNCnTNpSmpFB2f/Y1rHb6Rxn8SXzWSq8BM0BhbCm
+yE+PY3DyIBizX6isb13vJyvU7f8Ayv4xAQ/ve8ytFAnBXUdIhtQNygraxvr8aoZw
+81cBRQ8NhBkk/qDZWVkOiePC9voZ05sENhL4aUZw3Xew2JtZyw+lRxheczkYYc71
+OQuOKoU06j3ZpLhdhtdjpOVC6csIk9qyq8ki8t9m66a2BdiPaz1cWGZGqQg4SDrJ
+0XKG6/wdSWgdUKMp0wB2Kwph2SWwLm7BQEpdtMtXnNGB2dT+lffjtqRvyT4HKO03
+R9b7ZxUVA34Tzi+kX04g3e4qI4eD0bsHYwioUlkKf/q7E1+WjwaQ2LLbOUnWeKqb
+wGBsZYMWeWGTc/FO4oyDJBG9gnsqmSHasAsxsW6ojsGnz9IXywpwInlz+R4pB+ua
+dXHiUZEuT8lCdBUWKAtCIb/F9cNEJg/Vq0iVoWFaOYd5D4PHXV5aXjEx18ez7GvN
+98XPYNXQmVBmsIlOHQpytz0RdrlstksxBqWhaBUT3ZJU6czchNgYeFsEuYKkUNK+
+fwQLhA9aeT6RBdet2efhyaf4y3vQFb5kxx4JcljXjIYVR3yB9iZnD0WGQxkCAwEA
+AQKCAgBHrhkQmFxs/YY04SyhySkKFBCvpPQIG7JSphuqdVCtbMrD8xXHbcu4pBh/
+y+mZRPweDFkTi4C1VigNu9ywydza9wmkC7JohjQNxV9Nc9EJChVJGlHVeADjlCh5
+mXwZZFK0THaQLVi8XXtQUG+u/TaksaZvtA4Avt6xsXXiMDYj9dF3hnWsEk17ehlU
+DhZOyafmyW0/ovqm31V7qvoSz446w+fmBwDLhPXdLr9HnTqzjIQbHqGi1PoDmO1e
+DwYZDCgns0+GKGEPSjKK/HMzuBM26b6pb5Up4yEthKdiUIICPCrzqbhfzudeqHJS
+wsyTQDBWs13AOYqRM5F4Dy2EOjdvCgt2zElO0c3r/pOTplk3/v7VrsqiNN33xGfc
+4zGw3d0xLjQRhA9vhG5Kdtqqs1GqZDf3mNmPxv8gHJDdB6Twkk9iNlUnV5neew6R
+0KKklZvMApE+KMVrRKmez0+ab/ktpoAe9Xox9ChBfLaZQgJlDwNDktjRu8RT1da8
+L6SMy5+mP+aSKxWxgNGoM0BQiv3DBriyTuyhcu+2SIr4c0LrWqedZRI1eRREZjhG
+VLBpftvQH7AMTZuIHXYjtF8XcZneaa2/fI7SNH6RpPc7WJmLCF3ufjv6HVp3qA8B
+ahRCgsr4sBZDJqwMkbNJQfuF/zNOAGmO5VRBodb/P9UQeEVeAQKCAQEA6TkahKZq
+374hUnElMH3mmYPVxOKfqx4EMrS+MP8cjXXmiw7bWjQlufcmbMhxHaXkGiU9+/TB
+VdFPtLZvo7Aa+m2sHCySJ1pG2T4kkmV9cNVExKPllraH3/QvDK3o34aA2DxgOXAT
+33wxlxvmmaMmrjjP6BZduvS/W/vwL6+aA1erZbsBuA1CoeyiyE95zdcD43+TlZWi
+fwCqCZ27wrKHCPFcEN/ecpjKQTQQdogDNWdJJzaTH7y3iWNOsLdTNeLRYrvu94dS
+J9n7cCoLCEFzdylaXx/jGCNrnaNtqDj46JHW6XSQ6e3D0UpV2hx5V2+0q1gbEhWe
+wtBrhGsHj/jj+QKCAQEAyCiOlcE6a1tjIdMihAO1hqdUiFcIKzoiDQKNBEaY9ELz
+oWkuZj2fUnhjeAKhkQ4ZheH6+fk2Tt0+kU1Jl+Iym/ciE/m/N8RUyqq2FOnmwktz
+yGqD9fQeLix2b2txp+0dyi1niQ+S8ZKAJBbxKTb3CBefowrkz5JK7+jWqaUDNQ5h
+8KoGCcAB8kSkXGgqVOapXyGb31YdyM3X1mJGv95jO4A+OmFI2faPAOtZrg9EicSI
+7U84bfFMhfhrpxZuU7Bbyz6Kg9hleAv0q/3tBFSJvMTOiuM7OFtlUAByL+pWwZ9Y
+haQ4ojojsPaQ6pMmf0JNXwnp8Rhz2+QNDyFzRm/gIQKCAQEA3dmA/S/kuAL/ZZHV
+g4QvyFYdEdVVdwvtiGJgDPGPsoy1ig/O3sZ+IKEWPyKIX2B/U9ObW8Hd6wlZXZix
+J68Maq3Kq15GhQKeJGa1mUDLi3qDmN4jNjNZmtKHsvL3czFZ/Nep3NldPhjAf3J9
+8CW/VLkcJDSqYn4QTaqhNms/APDzTKkQIIkUmj0kN5FKV2CyBUVFGWSml1MFbHJL
+ug/i3cHiBvc9fhsTQeUJyAbnrnQapR+H4ge9OwZpQzaQA9FHxjjpPzLNFrWHNZH4
+vpisAm0m1xfZCQwggWqFlCDlvS2FlrtYYf3XaI3ijsDJOEA9R0RfM9u3Eq/5ppO9
+NNnX2QKCAQAJ63ilk14B1BWlp4EeadClS8W0vBt7iPYHDwlOHPGXqXnJlhzmlEdB
+HxZO7FJ1je1V5U069k7quaxQJzRugpdfg2/87XO8n85T/QHpJ254UqT6Wc0Qc3jL
+cQitnPWVDPtc+cMX193AezI+l6R8Fm1HyWPwAKo2X1m3aiK5ZaQzDPNtqf+CnDF8
+gEplCgSPEJ90R4YiG3J+cTUxOs2m1K62VDTBT/D8XGvZ79ASAE+1RDhFCpgRWtQg
+D5/GOCZfn23tNLxIrIDa4jzOCVelz0rEQDy8RWa59E2hGWSPW13RWsRYWzszTw5V
+xuKHvaM6y15qR2OAv2V+kF7VUSMVapYBAoIBAEyZDn9H+IMQBkRyZgxPLsE5cgd3
+DeR2Txn2RxQBpop9+lgniuq/NVHiUIRscynsJ01/bFifmFNkgD2cRORy7SU+wsNr
+zsWlLPO1e/axdfMsT0OIBOQ84jZ6FDGi5JnqnC8zVVPU7g2iNoDEtA7ltlXknUUX
+uigFoR1CXoNz8KdW+18MtYDjBLR1crfGa+zqPOpxfjoXBhehtCKG9ZxtrBSWq6mz
+lR9N5Tv9USiJW1r6+85aLsC5E9ARjAxMLhTKvD+NXbQDwZJgfM/vs1eZ6eIYMYE9
+lB7kMFfHKqsagNXdyhRFzfEfx+FkKTHaqC6V5rOp6q0t8AO41ZvZO/tKdi8=
+-----END RSA PRIVATE KEY-----
diff -pruN 5.6.18+dfsg-4/ext/pdo/Makefile.frag 5.6.19+dfsg-1/ext/pdo/Makefile.frag
--- 5.6.18+dfsg-4/ext/pdo/Makefile.frag	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/pdo/Makefile.frag	2016-03-03 00:02:11.000000000 +0000
@@ -10,7 +10,7 @@ $(srcdir)/pdo_sql_parser.c: $(srcdir)/pd
 	(cd $(top_srcdir); $(RE2C) --no-generation-date -o ext/pdo/pdo_sql_parser.c ext/pdo/pdo_sql_parser.re)
 
 install-pdo-headers:
-	@echo "Installing PDO headers:          $(INSTALL_ROOT)$(phpincludedir)/ext/pdo/"
+	@echo "Installing PDO headers:           $(INSTALL_ROOT)$(phpincludedir)/ext/pdo/"
 	@$(mkinstalldirs) $(INSTALL_ROOT)$(phpincludedir)/ext/pdo
 	@for f in $(PDO_HEADER_FILES); do \
 		if test -f "$(top_srcdir)/$$f"; then \
diff -pruN 5.6.18+dfsg-4/ext/pdo_mysql/mysql_driver.c 5.6.19+dfsg-1/ext/pdo_mysql/mysql_driver.c
--- 5.6.18+dfsg-4/ext/pdo_mysql/mysql_driver.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/pdo_mysql/mysql_driver.c	2016-03-03 00:02:11.000000000 +0000
@@ -658,31 +658,31 @@ static int pdo_mysql_handle_factory(pdo_
 		init_cmd = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_INIT_COMMAND, NULL TSRMLS_CC);
 		if (init_cmd) {
 			if (mysql_options(H->server, MYSQL_INIT_COMMAND, (const char *)init_cmd)) {
-				efree(init_cmd);
+				str_efree(init_cmd);
 				pdo_mysql_error(dbh);
 				goto cleanup;
 			}
-			efree(init_cmd);
+			str_efree(init_cmd);
 		}
 #ifndef PDO_USE_MYSQLND		
 		default_file = pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_READ_DEFAULT_FILE, NULL TSRMLS_CC);
 		if (default_file) {
 			if (mysql_options(H->server, MYSQL_READ_DEFAULT_FILE, (const char *)default_file)) {
-				efree(default_file);
+				str_efree(default_file);
 				pdo_mysql_error(dbh);
 				goto cleanup;
 			}
-			efree(default_file);
+			str_efree(default_file);
 		}
 		
 		default_group= pdo_attr_strval(driver_options, PDO_MYSQL_ATTR_READ_DEFAULT_GROUP, NULL TSRMLS_CC);
 		if (default_group) {
 			if (mysql_options(H->server, MYSQL_READ_DEFAULT_GROUP, (const char *)default_group)) {
-				efree(default_group);
+				str_efree(default_group);
 				pdo_mysql_error(dbh);
 				goto cleanup;
 			}
-			efree(default_group);
+			str_efree(default_group);
 		}
 #endif
 		compress = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_COMPRESS, 0 TSRMLS_CC);
@@ -702,19 +702,19 @@ static int pdo_mysql_handle_factory(pdo_
 		if (ssl_key || ssl_cert || ssl_ca || ssl_capath || ssl_cipher) {
 			mysql_ssl_set(H->server, ssl_key, ssl_cert, ssl_ca, ssl_capath, ssl_cipher);
 			if (ssl_key) {
-				efree(ssl_key);
+				str_efree(ssl_key);
 			}
 			if (ssl_cert) {
-				efree(ssl_cert);
+				str_efree(ssl_cert);
 			}
 			if (ssl_ca) {
-				efree(ssl_ca);
+				str_efree(ssl_ca);
 			}
 			if (ssl_capath) {
-				efree(ssl_capath);
+				str_efree(ssl_capath);
 			}
 			if (ssl_cipher) {
-				efree(ssl_cipher);
+				str_efree(ssl_cipher);
 			}
 		}
 
@@ -724,10 +724,10 @@ static int pdo_mysql_handle_factory(pdo_
 			if (public_key) {
 				if (mysql_options(H->server, MYSQL_SERVER_PUBLIC_KEY, public_key)) {
 					pdo_mysql_error(dbh);
-					efree(public_key);
+					str_efree(public_key);
 					goto cleanup;
 				}
-				efree(public_key);
+				str_efree(public_key);
 			}
 		}
 #endif
diff -pruN 5.6.18+dfsg-4/ext/pdo_mysql/tests/bug71569.phpt 5.6.19+dfsg-1/ext/pdo_mysql/tests/bug71569.phpt
--- 5.6.18+dfsg-4/ext/pdo_mysql/tests/bug71569.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/pdo_mysql/tests/bug71569.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,23 @@
+--TEST--
+Bug #71569 (#70389 fix causes segmentation fault)
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+MySQLPDOTest::skip();
+?>
+--FILE--
+<?php
+require(dirname(__FILE__). DIRECTORY_SEPARATOR . 'config.inc');
+
+try {
+    new PDO(PDO_MYSQL_TEST_DSN, PDO_MYSQL_TEST_USER, PDO_MYSQL_TEST_PASS, [
+        PDO::MYSQL_ATTR_INIT_COMMAND => null,
+    ]);
+} catch (PDOException $e) {
+    echo $e->getMessage();
+}
+
+?>
+--EXPECT--
+SQLSTATE[42000] [1065] Query was empty
Binary files 5.6.18+dfsg-4/ext/phar/tests/bug70433.zip and 5.6.19+dfsg-1/ext/phar/tests/bug70433.zip differ
diff -pruN 5.6.18+dfsg-4/ext/phar/tests/bug71331.phpt 5.6.19+dfsg-1/ext/phar/tests/bug71331.phpt
--- 5.6.18+dfsg-4/ext/phar/tests/bug71331.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/phar/tests/bug71331.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -8,8 +8,8 @@ $p = new PharData(__DIR__."/bug71331.tar
 ?>
 DONE
 --EXPECTF--
-Fatal error: Uncaught exception 'UnexpectedValueException' with message 'phar error: "%s/bug71331.tar" is a corrupted tar file (invalid entry size)' in %s/bug71331.php:2
+Fatal error: Uncaught exception 'UnexpectedValueException' with message 'phar error: "%s%ebug71331.tar" is a corrupted tar file (invalid entry size)' in %s%ebug71331.php:2
 Stack trace:
-#0 %s/bug71331.php(2): PharData->__construct('%s')
+#0 %s%ebug71331.php(2): PharData->__construct('%s')
 #1 {main}
-  thrown in %s/bug71331.php on line 2
\ No newline at end of file
+  thrown in %s%ebug71331.php on line 2
diff -pruN 5.6.18+dfsg-4/ext/phar/tests/bug71488.phpt 5.6.19+dfsg-1/ext/phar/tests/bug71488.phpt
--- 5.6.18+dfsg-4/ext/phar/tests/bug71488.phpt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/phar/tests/bug71488.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -7,6 +7,7 @@ Phar: bug #71488: Stack overflow when de
 $p = new PharData(__DIR__."/bug71488.tar");
 $newp = $p->decompress("test");
 ?>
+
 DONE
 --CLEAN--
 <?php
diff -pruN 5.6.18+dfsg-4/ext/phar/tests/bug71498.phpt 5.6.19+dfsg-1/ext/phar/tests/bug71498.phpt
--- 5.6.18+dfsg-4/ext/phar/tests/bug71498.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/phar/tests/bug71498.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,17 @@
+--TEST--
+Phar: bug #71498: Out-of-Bound Read in phar_parse_zipfile()
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--FILE--
+<?php
+try {
+$p = new PharData(__DIR__."/bug71498.zip");
+} catch(UnexpectedValueException $e) {
+	echo $e->getMessage();
+}
+?>
+
+DONE
+--EXPECTF--
+phar error: end of central directory not found in zip-based phar "%s/bug71498.zip"
+DONE
\ No newline at end of file
Binary files 5.6.18+dfsg-4/ext/phar/tests/bug71498.zip and 5.6.19+dfsg-1/ext/phar/tests/bug71498.zip differ
diff -pruN 5.6.18+dfsg-4/ext/phar/zip.c 5.6.19+dfsg-1/ext/phar/zip.c
--- 5.6.18+dfsg-4/ext/phar/zip.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/phar/zip.c	2016-03-03 00:02:11.000000000 +0000
@@ -159,7 +159,7 @@ static void phar_zip_u2d_time(time_t tim
  *
  * Parse a new one and add it to the cache, returning either SUCCESS or
  * FAILURE, and setting pphar to the pointer to the manifest entry
- * 
+ *
  * This is used by phar_open_from_fp to process a zip-based phar, but can be called
  * directly.
  */
@@ -199,7 +199,7 @@ int phar_parse_zipfile(php_stream *fp, c
 	}
 
 	while ((p=(char *) memchr(p + 1, 'P', (size_t) (size - (p + 1 - buf)))) != NULL) {
-		if (!memcmp(p + 1, "K\5\6", 3)) {
+		if ((p - buf) + sizeof(locator) <= size && !memcmp(p + 1, "K\5\6", 3)) {
 			memcpy((void *)&locator, (void *) p, sizeof(locator));
 			if (PHAR_GET_16(locator.centraldisk) != 0 || PHAR_GET_16(locator.disknumber) != 0) {
 				/* split archives not handled */
@@ -1161,7 +1161,7 @@ int phar_zip_flush(phar_archive_data *ph
 	static const char newstub[] = "<?php // zip-based phar archive stub file\n__HALT_COMPILER();";
 	char halt_stub[] = "__HALT_COMPILER();";
 	char *tmp;
-	
+
 	php_stream *stubfile, *oldfile;
 	php_serialize_data_t metadata_hash;
 	int free_user_stub, closeoldfile = 0;
diff -pruN 5.6.18+dfsg-4/ext/sqlite3/sqlite3.c 5.6.19+dfsg-1/ext/sqlite3/sqlite3.c
--- 5.6.18+dfsg-4/ext/sqlite3/sqlite3.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/sqlite3/sqlite3.c	2016-03-03 00:02:11.000000000 +0000
@@ -123,7 +123,8 @@ PHP_METHOD(sqlite3, open)
 	if (strlen(filename) != filename_len) {
 		return;
 	}
-	if (memcmp(filename, ":memory:", sizeof(":memory:")) != 0) {
+	if (filename_len != sizeof(":memory:")-1 ||
+			memcmp(filename, ":memory:", sizeof(":memory:")-1) != 0) {
 		if (!(fullpath = expand_filepath(filename, NULL TSRMLS_CC))) {
 			zend_throw_exception(zend_exception_get_default(TSRMLS_C), "Unable to expand filepath", 0 TSRMLS_CC);
 			return;
diff -pruN 5.6.18+dfsg-4/ext/standard/string.c 5.6.19+dfsg-1/ext/standard/string.c
--- 5.6.18+dfsg-4/ext/standard/string.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/standard/string.c	2016-03-03 00:02:11.000000000 +0000
@@ -4590,6 +4590,7 @@ PHPAPI size_t php_strip_tags_ex(char *rb
 	int br, i=0, depth=0, in_q = 0;
 	int state = 0, pos;
 	char *allow_free = NULL;
+	char is_xml = 0;
 
 	if (stateptr)
 		state = *stateptr;
@@ -4689,7 +4690,10 @@ PHPAPI size_t php_strip_tags_ex(char *rb
 				switch (state) {
 					case 1: /* HTML/XML */
 						lc = '>';
-						in_q = state = 0;
+						if (is_xml && *(p -1) == '-') {
+							break;
+						}
+						in_q = state = is_xml = 0;
 						if (allow) {
 							if (tp - tbuf >= PHP_TAG_BUF_SIZE) {
 								pos = tp - tbuf;
@@ -4818,8 +4822,8 @@ PHPAPI size_t php_strip_tags_ex(char *rb
 				 * state == 2 (PHP). Switch back to HTML.
 				 */
 
-				if (state == 2 && p > buf+2 && strncasecmp(p-2, "xm", 2) == 0) {
-					state = 1;
+				if (state == 2 && p > buf+4 && strncasecmp(p-4, "<?xm", 4) == 0) {
+					state = 1; is_xml=1;
 					break;
 				}
 
diff -pruN 5.6.18+dfsg-4/ext/standard/tests/strings/bug70720.phpt 5.6.19+dfsg-1/ext/standard/tests/strings/bug70720.phpt
--- 5.6.18+dfsg-4/ext/standard/tests/strings/bug70720.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/standard/tests/strings/bug70720.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,16 @@
+--TEST--
+Bug #70720 (strip_tags() doesnt handle "xml" correctly)
+--FILE--
+<?php
+var_dump(strip_tags('<?php $dom->test(); ?> this is a test'));
+var_dump(strip_tags('<?php $xml->test(); ?> this is a test'));
+var_dump(strip_tags('<?xml $xml->test(); ?> this is a test'));
+
+/* "->" case in HTML */
+var_dump(strip_tags("<span class=sf-dump-> this is a test</span>"));
+?>
+--EXPECTF--
+string(15) " this is a test"
+string(15) " this is a test"
+string(15) " this is a test"
+string(15) " this is a test"
diff -pruN 5.6.18+dfsg-4/ext/wddx/tests/bug71587.phpt 5.6.19+dfsg-1/ext/wddx/tests/bug71587.phpt
--- 5.6.18+dfsg-4/ext/wddx/tests/bug71587.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/wddx/tests/bug71587.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,43 @@
+--TEST--
+Bug #71587 (Use-After-Free / Double-Free in WDDX Deserialize)
+--SKIPIF--
+<?php
+if (!extension_loaded("wddx")) print "skip";
+?>
+--FILE--
+<?php
+
+$xml = <<<EOF
+<?xml version='1.0' ?>
+<!DOCTYPE wddxPacket SYSTEM 'wddx_0100.dtd'>
+<wddxPacket version='1.0'>
+    <array>
+         <var name='ML'></var>
+            <string>manhluat</string>
+         <var name='ML2'></var>
+         	<boolean value='a'/>
+         <boolean value='true'/>
+    </array>
+</wddxPacket>
+EOF;
+
+$wddx = wddx_deserialize($xml);
+var_dump($wddx);
+// Print mem leak
+foreach($wddx as $k=>$v)
+	printf("Key: %s\nValue: %s\n",bin2hex($k),bin2hex($v));
+
+?>
+DONE
+--EXPECTF--
+array(2) {
+  [0]=>
+  string(8) "manhluat"
+  [1]=>
+  bool(true)
+}
+Key: 30
+Value: 6d616e686c756174
+Key: 31
+Value: 31
+DONE
diff -pruN 5.6.18+dfsg-4/ext/wddx/wddx.c 5.6.19+dfsg-1/ext/wddx/wddx.c
--- 5.6.18+dfsg-4/ext/wddx/wddx.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/wddx/wddx.c	2016-03-03 00:02:11.000000000 +0000
@@ -934,6 +934,16 @@ static void php_wddx_pop_element(void *u
 		!strcmp(name, EL_DATETIME)) {
 		wddx_stack_top(stack, (void**)&ent1);
 
+		if (!ent1->data) {
+			if (stack->top > 1) {
+				stack->top--;
+			} else {
+				stack->done = 1;
+			}
+			efree(ent1);
+			return;
+		}
+
 		if (!strcmp(name, EL_BINARY)) {
 			int new_len=0;
 			unsigned char *new_str;
@@ -1030,6 +1040,7 @@ static void php_wddx_pop_element(void *u
 		}
 	} else if (!strcmp(name, EL_VAR) && stack->varname) {
 		efree(stack->varname);
+		stack->varname = NULL;
 	} else if (!strcmp(name, EL_FIELD)) {
 		st_entry *ent;
 		wddx_stack_top(stack, (void **)&ent);
@@ -1049,7 +1060,7 @@ static void php_wddx_process_data(void *
 
 	if (!wddx_stack_is_empty(stack) && !stack->done) {
 		wddx_stack_top(stack, (void**)&ent);
-		switch (Z_TYPE_P(ent)) {
+		switch (ent->type) {
 			case ST_STRING:
 				if (Z_STRLEN_P(ent->data) == 0) {
 					STR_FREE(Z_STRVAL_P(ent->data));
@@ -1088,11 +1099,11 @@ static void php_wddx_process_data(void *
 				} else if (!strcmp(s, "false")) {
 					Z_LVAL_P(ent->data) = 0;
 				} else {
-					stack->top--;
 					zval_ptr_dtor(&ent->data);
-					if (ent->varname)
+					if (ent->varname) {
 						efree(ent->varname);
-					efree(ent);
+					}
+					ent->data = NULL;
 				}
 				break;
 
diff -pruN 5.6.18+dfsg-4/ext/xsl/tests/bug71540.phpt 5.6.19+dfsg-1/ext/xsl/tests/bug71540.phpt
--- 5.6.18+dfsg-4/ext/xsl/tests/bug71540.phpt	1970-01-01 00:00:00.000000000 +0000
+++ 5.6.19+dfsg-1/ext/xsl/tests/bug71540.phpt	2016-03-03 00:02:11.000000000 +0000
@@ -0,0 +1,67 @@
+--TEST--
+Bug #71540 (NULL pointer dereference in xsl_ext_function_php())
+--SKIPIF--
+<?php
+if (!extension_loaded('xsl')) die("skip Extension XSL is required\n");
+?>
+--FILE--
+<?php
+$xml = <<<EOB
+<allusers>
+ <user>
+  <uid>bob</uid>
+ </user>
+</allusers>
+EOB;
+$xsl = <<<EOB
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" 
+     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+     xmlns:php="http://php.net/xsl">
+<xsl:output method="html" encoding="utf-8" indent="yes"/>
+ <xsl:template match="allusers">
+  <html><body>
+    <h2>Users</h2>
+    <table>
+    <xsl:for-each select="user">
+      <tr><td>
+        <xsl:value-of
+             select="php:function('test',uid,test(test))"/>
+      </td></tr>
+    </xsl:for-each>
+    </table>
+  </body></html>
+ </xsl:template>
+</xsl:stylesheet>
+EOB;
+
+$xmldoc = new DOMDocument();
+$xmldoc->loadXML($xml);
+$xsldoc = new DOMDocument();
+$xsldoc->loadXML($xsl);
+
+$proc = new XSLTProcessor();
+$proc->registerPHPFunctions();
+$proc->importStyleSheet($xsldoc);
+echo $proc->transformToXML($xmldoc);
+?>
+DONE
+--EXPECTF--
+Warning: XSLTProcessor::transformToXml(): xmlXPathCompOpEval: function test not found in %sbug71540.php on line %d
+
+Warning: XSLTProcessor::transformToXml(): Unregistered function in %sbug71540.php on line %d
+
+Warning: XSLTProcessor::transformToXml(): Stack usage errror in %sbug71540.php on line %d
+
+Warning: XSLTProcessor::transformToXml(): Stack usage errror in %sbug71540.php on line %d
+
+Warning: XSLTProcessor::transformToXml(): xmlXPathCompiledEval: 2 objects left on the stack. in %sbug71540.php on line %d
+
+Warning: XSLTProcessor::transformToXml(): runtime error: file %s line 13 element value-of in %sbug71540.php on line %d
+
+Warning: XSLTProcessor::transformToXml(): XPath evaluation returned no result. in %sbug71540.php on line %d
+<html xmlns:php="http://php.net/xsl"><body>
+<h2>Users</h2>
+<table><tr><td></td></tr></table>
+</body></html>
+DONE
\ No newline at end of file
diff -pruN 5.6.18+dfsg-4/ext/xsl/xsltprocessor.c 5.6.19+dfsg-1/ext/xsl/xsltprocessor.c
--- 5.6.18+dfsg-4/ext/xsl/xsltprocessor.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/xsl/xsltprocessor.c	2016-03-03 00:02:11.000000000 +0000
@@ -239,6 +239,10 @@ static void xsl_ext_function_php(xmlXPat
 	for (i = nargs - 2; i >= 0; i--) {
 		obj = valuePop(ctxt);
 		MAKE_STD_ZVAL(args[i]);
+		if (obj == NULL) {
+			ZVAL_NULL(args[i]);
+			continue;
+		}
 		switch (obj->type) {
 			case XPATH_STRING:
 				ZVAL_STRING(args[i],  obj->stringval, 1);
diff -pruN 5.6.18+dfsg-4/ext/zip/php_zip.c 5.6.19+dfsg-1/ext/zip/php_zip.c
--- 5.6.18+dfsg-4/ext/zip/php_zip.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/ext/zip/php_zip.c	2016-03-03 00:02:11.000000000 +0000
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: d040d206d1a9ea6ebaaa007ad186da532d8ba024 $ */
+/* $Id: ccd0467fd353f0f5c2d8834a51ab217aa6053e0d $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2713,7 +2713,7 @@ static ZIPARCHIVE_METHOD(extractTo)
 
 		for (i = 0; i < filecount; i++) {
 			char *file = (char*)zip_get_name(intern, i, ZIP_FL_UNCHANGED);
-			if (!php_zip_extract_file(intern, pathto, file, strlen(file) TSRMLS_CC)) {
+			if (!file || !php_zip_extract_file(intern, pathto, file, strlen(file) TSRMLS_CC)) {
 					RETURN_FALSE;
 			}
 		}
@@ -3162,7 +3162,7 @@ static PHP_MINFO_FUNCTION(zip)
 	php_info_print_table_start();
 
 	php_info_print_table_row(2, "Zip", "enabled");
-	php_info_print_table_row(2, "Extension Version","$Id: d040d206d1a9ea6ebaaa007ad186da532d8ba024 $");
+	php_info_print_table_row(2, "Extension Version","$Id: ccd0467fd353f0f5c2d8834a51ab217aa6053e0d $");
 	php_info_print_table_row(2, "Zip version", PHP_ZIP_VERSION);
 	php_info_print_table_row(2, "Libzip version", LIBZIP_VERSION);
 
diff -pruN 5.6.18+dfsg-4/main/php_version.h 5.6.19+dfsg-1/main/php_version.h
--- 5.6.18+dfsg-4/main/php_version.h	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/main/php_version.h	2016-03-03 00:02:11.000000000 +0000
@@ -2,7 +2,7 @@
 /* edit configure.in to change version number */
 #define PHP_MAJOR_VERSION 5
 #define PHP_MINOR_VERSION 6
-#define PHP_RELEASE_VERSION 18
+#define PHP_RELEASE_VERSION 19
 #define PHP_EXTRA_VERSION ""
-#define PHP_VERSION "5.6.18"
-#define PHP_VERSION_ID 50618
+#define PHP_VERSION "5.6.19"
+#define PHP_VERSION_ID 50619
diff -pruN 5.6.18+dfsg-4/Makefile.global 5.6.19+dfsg-1/Makefile.global
--- 5.6.18+dfsg-4/Makefile.global	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/Makefile.global	2016-03-03 00:02:11.000000000 +0000
@@ -53,7 +53,7 @@ install-headers:
 			paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \
 		done; \
 		$(mkinstalldirs) $$paths && \
-		echo "Installing header files:          $(INSTALL_ROOT)$(phpincludedir)/" && \
+		echo "Installing header files:           $(INSTALL_ROOT)$(phpincludedir)/" && \
 		for i in `echo $(INSTALL_HEADERS)`; do \
 			if test "$(PHP_PECL_EXTENSION)"; then \
 				src=`echo $$i | $(SED) -e "s#ext/$(PHP_PECL_EXTENSION)/##g"`; \
diff -pruN 5.6.18+dfsg-4/NEWS 5.6.19+dfsg-1/NEWS
--- 5.6.18+dfsg-4/NEWS	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/NEWS	2016-03-03 00:02:11.000000000 +0000
@@ -1,16 +1,62 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+03 Mar 2016, PHP 5.6.19
+
+- CLI server:
+  . Fixed bug #71559 (Built-in HTTP server, we can download file in web by bug).
+    (Johannes, Anatol)
+
+- CURL:
+  . Fixed bug #71523 (Copied handle with new option CURLOPT_HTTPHEADER crashes
+    while curl_multi_exec). (Laruence)
+
+- Date:
+  . Fixed bug #68078 (Datetime comparisons ignore microseconds). (Willem-Jan
+    Zijderveld)
+  . Fixed bug #71525 (Calls to date_modify will mutate timelib_rel_time,
+    causing date_date_set issues). (Sean DuBois)
+
+- Fileinfo:
+  . Fixed bug #71434 (finfo throws notice for specific python file). (Laruence)
+
+- FPM:
+  . Fixed bug #62172 (FPM not working with Apache httpd 2.4 balancer/fcgi
+    setup). (Matt Haught, Remi)
+
+- Opcache:
+  . Fixed bug  #71584 (Possible use-after-free of ZCG(cwd) in Zend Opcache).
+    (Yussuf Khalil)
+
+- PDO MySQL:
+  . Fixed bug #71569 (#70389 fix causes segmentation fault). (Nikita)
+
+- Phar:
+  . Fixed bug #71498 (Out-of-Bound Read in phar_parse_zipfile()). (Stas)
+
+- Standard:
+  . Fixed bug #70720 (strip_tags improper php code parsing). (Julien)
+
+- WDDX:
+  . Fixed bug #71587 (Use-After-Free / Double-Free in WDDX Deserialize). (Stas)
+
+- XSL:
+  . Fixed bug #71540 (NULL pointer dereference in xsl_ext_function_php()).
+    (Stas)
+
+- Zip:
+  . Fixed bug #71561 (NULL pointer dereference in Zip::ExtractTo). (Laruence)
+
 04 Feb 2016, PHP 5.6.18
 
 - Core:
-  . Fixed bug #71039 (exec functions ignore length but look for NULL termination).
-    (Anatol)
+  . Fixed bug #71039 (exec functions ignore length but look for NULL
+    termination). (Anatol)
   . Fixed bug #71089 (No check to duplicate zend_extension). (Remi)
   . Fixed bug #71201 (round() segfault on 64-bit builds). (Anatol)
   . Added support for new HTTP 451 code. (Julien)
   . Fixed bug #71273 (A wrong ext directory setup in php.ini leads to crash).
     (Anatol)
-  . Fixed bug #71323 (Output of stream_get_meta_data can be falsified by its 
+  . Fixed bug #71323 (Output of stream_get_meta_data can be falsified by its
     input). (Leo Gaspard)
   . Fixed bug #71459 (Integer overflow in iptcembed()). (Stas)
 
@@ -26,6 +72,9 @@ PHP
   . Fixed bug #71024 (Unable to use PHP 7.0 x64 side-by-side with PHP 5.6 x32
     on the same server). (Anatol)
 
+- PCRE:
+  . Upgraded bundled PCRE library to 8.38.
+
 - Phar:
   . Fixed bug #71354 (Heap corruption in tar/zip/phar parser). (Stas)
   . Fixed bug #71391 (NULL Pointer Dereference in phar_tar_setupmetadata()).
@@ -80,8 +129,8 @@ PHP
   . Fixed bug #60052 (Integer returned as a 64bit integer on X64_86). (Mariuz)
 
 - WDDX:
-  . Fixed bug #70661 (Use After Free Vulnerability in WDDX Packet Deserialization).
-    (taoguangchen at icloud dot com)
+  . Fixed bug #70661 (Use After Free Vulnerability in WDDX Packet
+    Deserialization). (taoguangchen at icloud dot com)
   . Fixed bug #70741 (Session WDDX Packet Deserialization Type Confusion
     Vulnerability). (taoguangchen at icloud dot com)
 
diff -pruN 5.6.18+dfsg-4/.pc/0001-libtool_fixes.patch/configure.in 5.6.19+dfsg-1/.pc/0001-libtool_fixes.patch/configure.in
--- 5.6.18+dfsg-4/.pc/0001-libtool_fixes.patch/configure.in	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0001-libtool_fixes.patch/configure.in	2016-03-03 00:02:11.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=5
 PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=18
+PHP_RELEASE_VERSION=19
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 5.6.18+dfsg-4/.pc/0003-debian_quirks.patch/configure.in 5.6.19+dfsg-1/.pc/0003-debian_quirks.patch/configure.in
--- 5.6.18+dfsg-4/.pc/0003-debian_quirks.patch/configure.in	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0003-debian_quirks.patch/configure.in	2016-03-04 00:09:40.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=5
 PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=18
+PHP_RELEASE_VERSION=19
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 5.6.18+dfsg-4/.pc/0007-extension_api.patch/configure.in 5.6.19+dfsg-1/.pc/0007-extension_api.patch/configure.in
--- 5.6.18+dfsg-4/.pc/0007-extension_api.patch/configure.in	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0007-extension_api.patch/configure.in	2016-03-04 00:09:40.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=5
 PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=18
+PHP_RELEASE_VERSION=19
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 5.6.18+dfsg-4/.pc/0007-extension_api.patch/scripts/php-config.in 5.6.19+dfsg-1/.pc/0007-extension_api.patch/scripts/php-config.in
--- 5.6.18+dfsg-4/.pc/0007-extension_api.patch/scripts/php-config.in	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0007-extension_api.patch/scripts/php-config.in	2016-03-04 00:09:40.000000000 +0000
@@ -10,7 +10,7 @@ include_dir="@includedir@/php/@DEBIAN_PH
 includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/lib $(getconf LFS_CFLAGS)"
 ldflags="-L$prefix/lib/php/@DEBIAN_PHP_API@ @PHP_LDFLAGS@"
 libs="@EXTRA_LIBS@"
-extension_dir='@EXTENSION_DIR@'
+extension_dir="@EXTENSION_DIR@"
 man_dir=`eval echo @mandir@`
 program_prefix="@program_prefix@"
 program_suffix="@program_suffix@"
diff -pruN 5.6.18+dfsg-4/.pc/0026-php-5.3.9-gnusrc.patch/configure.in 5.6.19+dfsg-1/.pc/0026-php-5.3.9-gnusrc.patch/configure.in
--- 5.6.18+dfsg-4/.pc/0026-php-5.3.9-gnusrc.patch/configure.in	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0026-php-5.3.9-gnusrc.patch/configure.in	2016-03-04 00:09:40.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=5
 PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=18
+PHP_RELEASE_VERSION=19
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 5.6.18+dfsg-4/.pc/0031-expose_all_built_and_installed_apis.patch/scripts/php-config.in 5.6.19+dfsg-1/.pc/0031-expose_all_built_and_installed_apis.patch/scripts/php-config.in
--- 5.6.18+dfsg-4/.pc/0031-expose_all_built_and_installed_apis.patch/scripts/php-config.in	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0031-expose_all_built_and_installed_apis.patch/scripts/php-config.in	2016-03-04 00:09:40.000000000 +0000
@@ -10,7 +10,7 @@ include_dir="@includedir@/php/@DEBIAN_PH
 includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/lib $(getconf LFS_CFLAGS)"
 ldflags="-L$prefix/lib/php/@DEBIAN_PHP_API@ @PHP_LDFLAGS@"
 libs="@EXTRA_LIBS@"
-extension_dir='@EXTENSION_DIR@'
+extension_dir="@EXTENSION_DIR@"
 man_dir=`eval echo @mandir@`
 program_prefix="@program_prefix@"
 program_suffix="@program_suffix@"
diff -pruN 5.6.18+dfsg-4/.pc/0032-Use-system-timezone.patch/ext/date/php_date.c 5.6.19+dfsg-1/.pc/0032-Use-system-timezone.patch/ext/date/php_date.c
--- 5.6.18+dfsg-4/.pc/0032-Use-system-timezone.patch/ext/date/php_date.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0032-Use-system-timezone.patch/ext/date/php_date.c	2016-03-03 00:02:11.000000000 +0000
@@ -2195,8 +2195,8 @@ static int date_object_compare_date(zval
 	if (!o2->time->sse_uptodate) {
 		timelib_update_ts(o2->time, o2->time->tz_info);
 	}
-	
-	return (o1->time->sse == o2->time->sse) ? 0 : ((o1->time->sse < o2->time->sse) ? -1 : 1);
+
+	return timelib_time_compare(o1->time, o2->time);
 }
 
 static HashTable *date_object_get_gc(zval *object, zval ***table, int *n TSRMLS_DC)
@@ -3143,6 +3143,7 @@ static int php_date_modify(zval *object,
 	timelib_update_ts(dateobj->time, NULL);
 	timelib_update_from_sse(dateobj->time);
 	dateobj->time->have_relative = 0;
+	memset(&dateobj->time->relative, 0, sizeof(dateobj->time->relative));
 	
 	return 1;
 }
diff -pruN 5.6.18+dfsg-4/.pc/0037-php-5.4.9-fixheader.patch/configure.in 5.6.19+dfsg-1/.pc/0037-php-5.4.9-fixheader.patch/configure.in
--- 5.6.18+dfsg-4/.pc/0037-php-5.4.9-fixheader.patch/configure.in	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0037-php-5.4.9-fixheader.patch/configure.in	2016-03-04 00:09:40.000000000 +0000
@@ -119,7 +119,7 @@ int zend_sprintf(char *buffer, const cha
 
 PHP_MAJOR_VERSION=5
 PHP_MINOR_VERSION=6
-PHP_RELEASE_VERSION=18
+PHP_RELEASE_VERSION=19
 PHP_EXTRA_VERSION=""
 PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
 PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
diff -pruN 5.6.18+dfsg-4/.pc/0042-Add-patch-to-remove-build-timestamps-from-generated-.patch/sapi/fpm/fpm/fpm_main.c 5.6.19+dfsg-1/.pc/0042-Add-patch-to-remove-build-timestamps-from-generated-.patch/sapi/fpm/fpm/fpm_main.c
--- 5.6.18+dfsg-4/.pc/0042-Add-patch-to-remove-build-timestamps-from-generated-.patch/sapi/fpm/fpm/fpm_main.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/.pc/0042-Add-patch-to-remove-build-timestamps-from-generated-.patch/sapi/fpm/fpm/fpm_main.c	2016-03-03 00:02:11.000000000 +0000
@@ -1108,11 +1108,14 @@ static void init_request_info(TSRMLS_D)
 		}
 
 #define APACHE_PROXY_FCGI_PREFIX "proxy:fcgi://"
-		/* Fix proxy URLs in SCRIPT_FILENAME generated by Apache mod_proxy_fcgi:
+#define APACHE_PROXY_BALANCER_PREFIX "proxy:balancer://"
+		/* Fix proxy URLs in SCRIPT_FILENAME generated by Apache mod_proxy_fcgi and mod_proxy_balancer:
 		 *     proxy:fcgi://localhost:9000/some-dir/info.php/test?foo=bar
+		 *     proxy:balancer://localhost:9000/some-dir/info.php/test?foo=bar
 		 * should be changed to:
 		 *     /some-dir/info.php/test
 		 * See: http://bugs.php.net/bug.php?id=54152
+		 *      http://bugs.php.net/bug.php?id=62172
 		 *      https://issues.apache.org/bugzilla/show_bug.cgi?id=50851
 		 */
 		if (env_script_filename &&
@@ -1122,6 +1125,27 @@ static void init_request_info(TSRMLS_D)
 			while (*p != '\0' && *p != '/') {
 				p++;	/* move past hostname and port */
 			}
+			if (*p != '\0') {
+				/* Copy path portion in place to avoid memory leak.  Note
+				 * that this also affects what script_path_translated points
+				 * to. */
+				memmove(env_script_filename, p, strlen(p) + 1);
+				apache_was_here = 1;
+			}
+			/* ignore query string if sent by Apache (RewriteRule) */
+			p = strchr(env_script_filename, '?');
+			if (p) {
+				*p =0;
+			}
+		}
+
+		if (env_script_filename &&
+			strncasecmp(env_script_filename, APACHE_PROXY_BALANCER_PREFIX, sizeof(APACHE_PROXY_BALANCER_PREFIX) - 1) == 0) {
+			/* advance to first character of hostname */
+			char *p = env_script_filename + (sizeof(APACHE_PROXY_BALANCER_PREFIX) - 1);
+			while (*p != '\0' && *p != '/') {
+				p++;	/* move past hostname and port */
+			}
 			if (*p != '\0') {
 				/* Copy path portion in place to avoid memory leak.  Note
 				 * that this also affects what script_path_translated points
diff -pruN 5.6.18+dfsg-4/sapi/cli/php_cli_server.c 5.6.19+dfsg-1/sapi/cli/php_cli_server.c
--- 5.6.18+dfsg-4/sapi/cli/php_cli_server.c	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/sapi/cli/php_cli_server.c	2016-03-03 00:02:11.000000000 +0000
@@ -2058,6 +2058,19 @@ static int php_cli_server_begin_send_sta
 		return php_cli_server_send_error_page(server, client, 400 TSRMLS_CC);
 	}
 
+#ifdef PHP_WIN32
+	/* The win32 namespace will cut off trailing dots and spaces. Since the
+	   VCWD functionality isn't used here, a sophisticated functionality
+	   would have to be reimplemented to know ahead there are no files
+	   with invalid names there. The simplest is just to forbid invalid
+	   filenames, which is done here. */
+	if (client->request.path_translated &&
+		('.' == client->request.path_translated[client->request.path_translated_len-1] ||
+		 ' ' == client->request.path_translated[client->request.path_translated_len-1])) {
+		return php_cli_server_send_error_page(server, client, 500 TSRMLS_CC);
+	}
+#endif
+
 	fd = client->request.path_translated ? open(client->request.path_translated, O_RDONLY): -1;
 	if (fd < 0) {
 		return php_cli_server_send_error_page(server, client, 404 TSRMLS_CC);
diff -pruN 5.6.18+dfsg-4/sapi/fpm/fpm/fpm_main.c 5.6.19+dfsg-1/sapi/fpm/fpm/fpm_main.c
--- 5.6.18+dfsg-4/sapi/fpm/fpm/fpm_main.c	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/sapi/fpm/fpm/fpm_main.c	2016-03-04 00:09:40.000000000 +0000
@@ -1108,11 +1108,14 @@ static void init_request_info(TSRMLS_D)
 		}
 
 #define APACHE_PROXY_FCGI_PREFIX "proxy:fcgi://"
-		/* Fix proxy URLs in SCRIPT_FILENAME generated by Apache mod_proxy_fcgi:
+#define APACHE_PROXY_BALANCER_PREFIX "proxy:balancer://"
+		/* Fix proxy URLs in SCRIPT_FILENAME generated by Apache mod_proxy_fcgi and mod_proxy_balancer:
 		 *     proxy:fcgi://localhost:9000/some-dir/info.php/test?foo=bar
+		 *     proxy:balancer://localhost:9000/some-dir/info.php/test?foo=bar
 		 * should be changed to:
 		 *     /some-dir/info.php/test
 		 * See: http://bugs.php.net/bug.php?id=54152
+		 *      http://bugs.php.net/bug.php?id=62172
 		 *      https://issues.apache.org/bugzilla/show_bug.cgi?id=50851
 		 */
 		if (env_script_filename &&
@@ -1122,6 +1125,27 @@ static void init_request_info(TSRMLS_D)
 			while (*p != '\0' && *p != '/') {
 				p++;	/* move past hostname and port */
 			}
+			if (*p != '\0') {
+				/* Copy path portion in place to avoid memory leak.  Note
+				 * that this also affects what script_path_translated points
+				 * to. */
+				memmove(env_script_filename, p, strlen(p) + 1);
+				apache_was_here = 1;
+			}
+			/* ignore query string if sent by Apache (RewriteRule) */
+			p = strchr(env_script_filename, '?');
+			if (p) {
+				*p =0;
+			}
+		}
+
+		if (env_script_filename &&
+			strncasecmp(env_script_filename, APACHE_PROXY_BALANCER_PREFIX, sizeof(APACHE_PROXY_BALANCER_PREFIX) - 1) == 0) {
+			/* advance to first character of hostname */
+			char *p = env_script_filename + (sizeof(APACHE_PROXY_BALANCER_PREFIX) - 1);
+			while (*p != '\0' && *p != '/') {
+				p++;	/* move past hostname and port */
+			}
 			if (*p != '\0') {
 				/* Copy path portion in place to avoid memory leak.  Note
 				 * that this also affects what script_path_translated points
diff -pruN 5.6.18+dfsg-4/sapi/fpm/Makefile.frag 5.6.19+dfsg-1/sapi/fpm/Makefile.frag
--- 5.6.18+dfsg-4/sapi/fpm/Makefile.frag	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/sapi/fpm/Makefile.frag	2016-03-03 00:02:11.000000000 +0000
@@ -18,6 +18,6 @@ install-fpm: $(SAPI_FPM_PATH)
 	@$(mkinstalldirs) $(INSTALL_ROOT)$(mandir)/man8
 	@$(INSTALL_DATA) sapi/fpm/php-fpm.8 $(INSTALL_ROOT)$(mandir)/man8/php-fpm$(program_suffix).8
 
-	@echo "Installing PHP FPM status page:      $(INSTALL_ROOT)$(datadir)/fpm/"
+	@echo "Installing PHP FPM status page:   $(INSTALL_ROOT)$(datadir)/fpm/"
 	@$(mkinstalldirs) $(INSTALL_ROOT)$(datadir)/fpm
 	@$(INSTALL_DATA) sapi/fpm/status.html $(INSTALL_ROOT)$(datadir)/fpm/status.html
diff -pruN 5.6.18+dfsg-4/sapi/litespeed/Makefile.frag 5.6.19+dfsg-1/sapi/litespeed/Makefile.frag
--- 5.6.18+dfsg-4/sapi/litespeed/Makefile.frag	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/sapi/litespeed/Makefile.frag	2016-03-03 00:02:11.000000000 +0000
@@ -4,6 +4,6 @@ $(SAPI_LITESPEED_PATH): $(PHP_GLOBAL_OBJ
 	$(BUILD_LITESPEED)
 
 install-litespeed: $(SAPI_LITESPEED_PATH)
-	@echo "Installing PHP LiteSpeed binary:   $(INSTALL_ROOT)$(bindir)/"
+	@echo "Installing PHP LiteSpeed binary:  $(INSTALL_ROOT)$(bindir)/"
 	@$(INSTALL) -m 0755 $(SAPI_LITESPEED_PATH) $(INSTALL_ROOT)$(bindir)/lsphp
 
diff -pruN 5.6.18+dfsg-4/scripts/php-config.in 5.6.19+dfsg-1/scripts/php-config.in
--- 5.6.18+dfsg-4/scripts/php-config.in	2016-03-04 00:09:38.000000000 +0000
+++ 5.6.19+dfsg-1/scripts/php-config.in	2016-03-04 00:09:40.000000000 +0000
@@ -10,7 +10,7 @@ include_dir="@includedir@/php/@DEBIAN_PH
 includes="-I$include_dir -I$include_dir/main -I$include_dir/TSRM -I$include_dir/Zend -I$include_dir/ext -I$include_dir/ext/date/lib $(getconf LFS_CFLAGS)"
 ldflags="-L$prefix/lib/php/@DEBIAN_PHP_API@ @PHP_LDFLAGS@"
 libs="@EXTRA_LIBS@"
-extension_dir='@EXTENSION_DIR@'
+extension_dir="@EXTENSION_DIR@"
 man_dir=`eval echo @mandir@`
 program_prefix="@program_prefix@"
 program_suffix="@program_suffix@"
diff -pruN 5.6.18+dfsg-4/win32/build/config.w32.h.in 5.6.19+dfsg-1/win32/build/config.w32.h.in
--- 5.6.18+dfsg-4/win32/build/config.w32.h.in	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/win32/build/config.w32.h.in	2016-03-03 00:02:11.000000000 +0000
@@ -15,7 +15,7 @@
 #define PEAR_INSTALLDIR "@PREFIX@\\pear"
 #define PHP_BINDIR "@PREFIX@"
 #define PHP_DATADIR "@PREFIX@"
-#define PHP_EXTENSION_DIR "@PREFIX@"
+#define PHP_EXTENSION_DIR "@PREFIX@\\ext"
 #define PHP_INCLUDE_PATH	".;@PREFIX@\\pear"
 #define PHP_LIBDIR "@PREFIX@"
 #define PHP_LOCALSTATEDIR "@PREFIX@"
diff -pruN 5.6.18+dfsg-4/win32/build/confutils.js 5.6.19+dfsg-1/win32/build/confutils.js
--- 5.6.18+dfsg-4/win32/build/confutils.js	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/win32/build/confutils.js	2016-03-03 00:02:11.000000000 +0000
@@ -2016,7 +2016,8 @@ function generate_makefile()
 			var dll = "php_" + extensions_enabled[i][0] + ".dll";
 			MF.WriteLine("	@copy $(BUILD_DIR)\\" + lib + " $(BUILD_DIR_DEV)\\lib");
 			MF.WriteLine("  @if not exist $(PHP_PREFIX) mkdir $(PHP_PREFIX) >nul");
-			MF.WriteLine("	@copy $(BUILD_DIR)\\" + dll + " $(PHP_PREFIX)");
+			MF.WriteLine("  @if not exist $(PHP_PREFIX)\\ext mkdir $(PHP_PREFIX)\\ext >nul");
+			MF.WriteLine("	@copy $(BUILD_DIR)\\" + dll + " $(PHP_PREFIX)\\ext");
 		}
 	} else {
 		MF.WriteBlankLines(1);
diff -pruN 5.6.18+dfsg-4/win32/build/libs_version.txt 5.6.19+dfsg-1/win32/build/libs_version.txt
--- 5.6.18+dfsg-4/win32/build/libs_version.txt	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/win32/build/libs_version.txt	2016-03-03 00:02:11.000000000 +0000
@@ -13,4 +13,4 @@ libssh2-1.6.0
 libtidy-20090406
 libxslt-1.1.27
 libxml-2.9.3
-openssl-1.0.1q
+openssl-1.0.1r
diff -pruN 5.6.18+dfsg-4/win32/build/Makefile 5.6.19+dfsg-1/win32/build/Makefile
--- 5.6.18+dfsg-4/win32/build/Makefile	2016-02-03 08:38:08.000000000 +0000
+++ 5.6.19+dfsg-1/win32/build/Makefile	2016-03-03 00:02:11.000000000 +0000
@@ -207,9 +207,12 @@ install-sdk: build-devel
 
 really-install:
 	@if not exist $(PHP_PREFIX) mkdir $(PHP_PREFIX)
+	@if not exist $(PHP_PREFIX)\ext mkdir $(PHP_PREFIX)\ext
 	@echo Installing files under $(PHP_PREFIX)
 	@copy $(BUILD_DIR)\*.exe $(PHP_PREFIX) /y >nul
-	@copy $(BUILD_DIR)\*.dll $(PHP_PREFIX) /y >nul
+	@copy $(BUILD_DIR)\php_*.dll $(PHP_PREFIX)\ext /y >nul
+	dir /b $(BUILD_DIR)\php_*.dll > $(BUILD_DIR)\extension_dlls.txt
+	@xcopy $(BUILD_DIR)\*.dll /exclude:$(BUILD_DIR)\extension_dlls.txt $(PHP_PREFIX) /y >nul
 	@echo Registering event source with syslog (requires admin rights)
 	@echo It's okay for this step to fail:
 	-$(PHP_PREFIX)\php.exe -n -dextension_dir=$(PHP_PREFIX) win32/build/registersyslog.php $(PHP_PREFIX)\$(PHPDLL)
