ソースを参照

导出会议列表调整规则为到达办公室

qr 2 ヶ月 前
コミット
32babce0a8
100 ファイル変更1770 行追加3515 行削除
  1. 8 5
      include/composer.json
  2. 105 29
      include/composer.lock
  3. 21 32
      include/vendor/composer/autoload_classmap.php
  4. 1 1
      include/vendor/composer/autoload_psr4.php
  5. 22 32
      include/vendor/composer/autoload_static.php
  6. 134 31
      include/vendor/composer/installed.json
  7. 17 8
      include/vendor/composer/installed.php
  8. 2 2
      include/vendor/composer/platform_check.php
  9. 0 4
      include/vendor/maennchen/zipstream-php/.phive/phars.xml
  10. 0 71
      include/vendor/maennchen/zipstream-php/.php-cs-fixer.dist.php
  11. 0 15
      include/vendor/maennchen/zipstream-php/.phpdoc/template/base.html.twig
  12. 0 1
      include/vendor/maennchen/zipstream-php/.tool-versions
  13. 35 26
      include/vendor/maennchen/zipstream-php/README.md
  14. 4 39
      include/vendor/maennchen/zipstream-php/composer.json
  15. 0 79
      include/vendor/maennchen/zipstream-php/guides/ContentLength.rst
  16. 0 33
      include/vendor/maennchen/zipstream-php/guides/FlySystem.rst
  17. 0 16
      include/vendor/maennchen/zipstream-php/guides/Nginx.rst
  18. 0 61
      include/vendor/maennchen/zipstream-php/guides/Options.rst
  19. 0 18
      include/vendor/maennchen/zipstream-php/guides/PSR7Streams.rst
  20. 0 33
      include/vendor/maennchen/zipstream-php/guides/StreamOutput.rst
  21. 0 126
      include/vendor/maennchen/zipstream-php/guides/Symfony.rst
  22. 0 22
      include/vendor/maennchen/zipstream-php/guides/Varnish.rst
  23. 0 85
      include/vendor/maennchen/zipstream-php/guides/index.rst
  24. 0 39
      include/vendor/maennchen/zipstream-php/phpdoc.dist.xml
  25. 16 13
      include/vendor/maennchen/zipstream-php/phpunit.xml.dist
  26. 2 0
      include/vendor/maennchen/zipstream-php/psalm.xml
  27. 19 21
      include/vendor/maennchen/zipstream-php/src/Bigint.php
  28. 1 2
      include/vendor/maennchen/zipstream-php/src/DeflateStream.php
  29. 0 1
      include/vendor/maennchen/zipstream-php/src/Exception.php
  30. 0 1
      include/vendor/maennchen/zipstream-php/src/Exception/EncodingException.php
  31. 0 1
      include/vendor/maennchen/zipstream-php/src/Exception/FileNotFoundException.php
  32. 0 1
      include/vendor/maennchen/zipstream-php/src/Exception/FileNotReadableException.php
  33. 0 1
      include/vendor/maennchen/zipstream-php/src/Exception/IncompatibleOptionsException.php
  34. 0 1
      include/vendor/maennchen/zipstream-php/src/Exception/OverflowException.php
  35. 0 1
      include/vendor/maennchen/zipstream-php/src/Exception/StreamNotReadableException.php
  36. 113 119
      include/vendor/maennchen/zipstream-php/src/File.php
  37. 6 21
      include/vendor/maennchen/zipstream-php/src/Option/Archive.php
  38. 5 11
      include/vendor/maennchen/zipstream-php/src/Option/File.php
  39. 2 4
      include/vendor/maennchen/zipstream-php/src/Option/Method.php
  40. 3 6
      include/vendor/maennchen/zipstream-php/src/Option/Version.php
  41. 40 52
      include/vendor/maennchen/zipstream-php/src/Stream.php
  42. 73 82
      include/vendor/maennchen/zipstream-php/src/ZipStream.php
  43. 0 1
      include/vendor/maennchen/zipstream-php/test/BigintTest.php
  44. 139 203
      include/vendor/maennchen/zipstream-php/test/ZipStreamTest.php
  45. 0 1
      include/vendor/maennchen/zipstream-php/test/bootstrap.php
  46. 6 7
      include/vendor/maennchen/zipstream-php/test/bug/BugHonorFileTimeTest.php
  47. 8 279
      include/vendor/phpoffice/phpspreadsheet/CHANGELOG.md
  48. 7 32
      include/vendor/phpoffice/phpspreadsheet/CONTRIBUTING.md
  49. 9 49
      include/vendor/phpoffice/phpspreadsheet/README.md
  50. 11 17
      include/vendor/phpoffice/phpspreadsheet/composer.json
  51. 267 536
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Calculation.php
  52. 0 1
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Category.php
  53. 43 33
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database.php
  54. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DAverage.php
  55. 2 6
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DCount.php
  56. 2 6
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DCountA.php
  57. 1 1
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DGet.php
  58. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DMax.php
  59. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DMin.php
  60. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DProduct.php
  61. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DStDev.php
  62. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DStDevP.php
  63. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DSum.php
  64. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DVar.php
  65. 2 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DVarP.php
  66. 2 20
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DatabaseAbstract.php
  67. 130 105
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTime.php
  68. 3 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Date.php
  69. 1 6
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/DateValue.php
  70. 4 4
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Difference.php
  71. 0 2
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Month.php
  72. 2 7
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/TimeValue.php
  73. 0 147
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/FormattedNumber.php
  74. 0 10
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/Operand.php
  75. 0 344
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/StructuredReference.php
  76. 197 176
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering.php
  77. 1 8
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselI.php
  78. 3 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselJ.php
  79. 1 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BitWise.php
  80. 1 1
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Complex.php
  81. 0 2
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertBase.php
  82. 3 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertBinary.php
  83. 3 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertUOM.php
  84. 5 10
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Erf.php
  85. 6 11
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ErfC.php
  86. 1 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Exception.php
  87. 152 111
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial.php
  88. 2 4
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Amortization.php
  89. 1 4
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/Interest.php
  90. 1 3
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/InterestAndPrincipal.php
  91. 7 73
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Variable/NonPeriodic.php
  92. 5 13
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Variable/Periodic.php
  93. 1 10
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Coupons.php
  94. 2 11
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Depreciation.php
  95. 0 8
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/AccruedInterest.php
  96. 6 6
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Price.php
  97. 2 2
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Yields.php
  98. 6 7
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/FormulaParser.php
  99. 80 47
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Functions.php
  100. 0 0
      include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Information/Value.php

+ 8 - 5
include/composer.json

@@ -1,17 +1,20 @@
 {
     "require": {
-        "phpoffice/phpword": "^0.17.0",
-		"aliyuncs/oss-sdk-php": "~2.4",
-        "alibabacloud/dysmsapi-20170525": "^2.0.24",
         "alibabacloud/darabonba-openapi": "^0.2.10",
+        "alibabacloud/dysmsapi-20170525": "^2.0.24",
         "alibabacloud/tea-console": "^0.1.0",
         "alibabacloud/tea-utils": "^0.2.19",
-        "phpoffice/phpspreadsheet": "^1.21"
+        "aliyuncs/oss-sdk-php": "~2.4",
+        "phpoffice/phpspreadsheet": "^1.21",
+        "phpoffice/phpword": "^0.17.0",
+        "tecnickcom/tcpdf": "^6.8"
     },
     "autoload": {
         "psr-4": {
             "AlibabaCloud\\SDK\\Sample\\": "src",
-            "PhpOffice\\PhpSpreadsheet\\": "vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet"
+            "PhpOffice\\PhpSpreadsheet\\": "vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet",
+            "PhpOffice\\PhpWord\\": "vendor/phpoffice/phpword/src/PhpWord"
+
         }
     },
     "scripts": {

+ 105 - 29
include/composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "3de165c1b4131138fa9ebc6228204f83",
+    "content-hash": "3264e0c8312d779af9c24946361ceaf4",
     "packages": [
         {
             "name": "adbario/php-dot-notation",
@@ -1128,16 +1128,16 @@
         },
         {
             "name": "maennchen/zipstream-php",
-            "version": "2.2.6",
+            "version": "2.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/maennchen/ZipStream-PHP.git",
-                "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f"
+                "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f",
-                "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f",
+                "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58",
+                "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58",
                 "shasum": "",
                 "mirrors": [
                     {
@@ -1148,18 +1148,15 @@
             },
             "require": {
                 "myclabs/php-enum": "^1.5",
-                "php": "^7.4 || ^8.0",
+                "php": ">= 7.1",
                 "psr/http-message": "^1.0",
                 "symfony/polyfill-mbstring": "^1.0"
             },
             "require-dev": {
                 "ext-zip": "*",
-                "friendsofphp/php-cs-fixer": "^3.9",
-                "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0",
+                "guzzlehttp/guzzle": ">= 6.3",
                 "mikey179/vfsstream": "^1.6",
-                "php-coveralls/php-coveralls": "^2.4",
-                "phpunit/phpunit": "^8.5.8 || ^9.4.2",
-                "vimeo/psalm": "^4.1"
+                "phpunit/phpunit": ">= 7.5"
             },
             "type": "library",
             "autoload": {
@@ -1196,7 +1193,7 @@
             ],
             "support": {
                 "issues": "https://github.com/maennchen/ZipStream-PHP/issues",
-                "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.6"
+                "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.1.0"
             },
             "funding": [
                 {
@@ -1208,7 +1205,7 @@
                     "type": "open_collective"
                 }
             ],
-            "time": "2022-11-25T18:57:19+00:00"
+            "time": "2020-05-30T13:11:16+00:00"
         },
         {
             "name": "markbaker/complex",
@@ -1620,16 +1617,16 @@
         },
         {
             "name": "phpoffice/phpspreadsheet",
-            "version": "1.29.7",
+            "version": "1.25.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
-                "reference": "02c8625411dcb96e1f63d58c47460284e15b2e80"
+                "reference": "a317a09e7def49852400a4b3eca4a4b0790ceeb5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/02c8625411dcb96e1f63d58c47460284e15b2e80",
-                "reference": "02c8625411dcb96e1f63d58c47460284e15b2e80",
+                "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/a317a09e7def49852400a4b3eca4a4b0790ceeb5",
+                "reference": "a317a09e7def49852400a4b3eca4a4b0790ceeb5",
                 "shasum": "",
                 "mirrors": [
                     {
@@ -1653,26 +1650,26 @@
                 "ext-zip": "*",
                 "ext-zlib": "*",
                 "ezyang/htmlpurifier": "^4.15",
-                "maennchen/zipstream-php": "^2.1 || ^3.0",
+                "maennchen/zipstream-php": "^2.1",
                 "markbaker/complex": "^3.0",
                 "markbaker/matrix": "^3.0",
-                "php": "^7.4 || ^8.0",
+                "php": "^7.3 || ^8.0",
                 "psr/http-client": "^1.0",
                 "psr/http-factory": "^1.0",
                 "psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
             },
             "require-dev": {
-                "dealerdirect/phpcodesniffer-composer-installer": "dev-main",
-                "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0",
+                "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+                "dompdf/dompdf": "^1.0 || ^2.0",
                 "friendsofphp/php-cs-fixer": "^3.2",
-                "mitoteam/jpgraph": "^10.3",
-                "mpdf/mpdf": "^8.1.1",
+                "mitoteam/jpgraph": "10.2.4",
+                "mpdf/mpdf": "8.1.1",
                 "phpcompatibility/php-compatibility": "^9.3",
                 "phpstan/phpstan": "^1.1",
                 "phpstan/phpstan-phpunit": "^1.0",
                 "phpunit/phpunit": "^8.5 || ^9.0",
                 "squizlabs/php_codesniffer": "^3.7",
-                "tecnickcom/tcpdf": "^6.5"
+                "tecnickcom/tcpdf": "6.5"
             },
             "suggest": {
                 "dompdf/dompdf": "Option for rendering PDF with PDF Writer",
@@ -1725,9 +1722,9 @@
             ],
             "support": {
                 "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
-                "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.7"
+                "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.25.2"
             },
-            "time": "2024-12-27T05:10:37+00:00"
+            "time": "2022-09-25T17:21:01+00:00"
         },
         {
             "name": "phpoffice/phpword",
@@ -2349,6 +2346,85 @@
             "time": "2024-09-09T11:45:10+00:00"
         },
         {
+            "name": "tecnickcom/tcpdf",
+            "version": "6.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/tecnickcom/TCPDF.git",
+                "reference": "14ffa0e308f5634aa2489568b4b90b24073b6731"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/14ffa0e308f5634aa2489568b4b90b24073b6731",
+                "reference": "14ffa0e308f5634aa2489568b4b90b24073b6731",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "ext-curl": "*",
+                "php": ">=7.1.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "config",
+                    "include",
+                    "tcpdf.php",
+                    "tcpdf_parser.php",
+                    "tcpdf_import.php",
+                    "tcpdf_barcodes_1d.php",
+                    "tcpdf_barcodes_2d.php",
+                    "include/tcpdf_colors.php",
+                    "include/tcpdf_filters.php",
+                    "include/tcpdf_font_data.php",
+                    "include/tcpdf_fonts.php",
+                    "include/tcpdf_images.php",
+                    "include/tcpdf_static.php",
+                    "include/barcodes/datamatrix.php",
+                    "include/barcodes/pdf417.php",
+                    "include/barcodes/qrcode.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "Nicola Asuni",
+                    "email": "info@tecnick.com",
+                    "role": "lead"
+                }
+            ],
+            "description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
+            "homepage": "http://www.tcpdf.org/",
+            "keywords": [
+                "PDFD32000-2008",
+                "TCPDF",
+                "barcodes",
+                "datamatrix",
+                "pdf",
+                "pdf417",
+                "qrcode"
+            ],
+            "support": {
+                "issues": "https://github.com/tecnickcom/TCPDF/issues",
+                "source": "https://github.com/tecnickcom/TCPDF/tree/6.8.0"
+            },
+            "funding": [
+                {
+                    "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&currency_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20tcpdf%20project",
+                    "type": "custom"
+                }
+            ],
+            "time": "2024-12-23T13:34:57+00:00"
+        },
+        {
             "name": "zendframework/zend-escaper",
             "version": "2.6.1",
             "source": {
@@ -2412,10 +2488,10 @@
     "packages-dev": [],
     "aliases": [],
     "minimum-stability": "stable",
-    "stability-flags": {},
+    "stability-flags": [],
     "prefer-stable": true,
     "prefer-lowest": false,
-    "platform": {},
-    "platform-dev": {},
+    "platform": [],
+    "platform-dev": [],
     "plugin-api-version": "2.6.0"
 }

+ 21 - 32
include/vendor/composer/autoload_classmap.php

@@ -212,6 +212,7 @@ return array(
     'Darabonba\\OpenApi\\Models\\OpenApiRequest' => $vendorDir . '/alibabacloud/darabonba-openapi/src/Models/OpenApiRequest.php',
     'Darabonba\\OpenApi\\Models\\Params' => $vendorDir . '/alibabacloud/darabonba-openapi/src/Models/Params.php',
     'Darabonba\\OpenApi\\OpenApiClient' => $vendorDir . '/alibabacloud/darabonba-openapi/src/OpenApiClient.php',
+    'Datamatrix' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php',
     'GuzzleHttp\\BodySummarizer' => $vendorDir . '/guzzlehttp/guzzle/src/BodySummarizer.php',
     'GuzzleHttp\\BodySummarizerInterface' => $vendorDir . '/guzzlehttp/guzzle/src/BodySummarizerInterface.php',
     'GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php',
@@ -768,6 +769,7 @@ return array(
     'OSS\\Signer\\SignerV4' => $vendorDir . '/aliyuncs/oss-sdk-php/src/OSS/Signer/SignerV4.php',
     'OneSm\\Sm3' => $vendorDir . '/lizhichao/one-sm/src/Sm3.php',
     'OneSm\\Sm4' => $vendorDir . '/lizhichao/one-sm/src/Sm4.php',
+    'PDF417' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/pdf417.php',
     'PclZip' => $vendorDir . '/pclzip/pclzip/pclzip.lib.php',
     'PhpOffice\\Common\\Adapter\\Zip\\PclZipAdapter' => $vendorDir . '/phpoffice/common/src/Common/Adapter/Zip/PclZipAdapter.php',
     'PhpOffice\\Common\\Adapter\\Zip\\ZipArchiveAdapter' => $vendorDir . '/phpoffice/common/src/Common/Adapter/Zip/ZipArchiveAdapter.php',
@@ -821,10 +823,7 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\ArrayArgumentProcessor' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/ArrayArgumentProcessor.php',
     'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\BranchPruner' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/BranchPruner.php',
     'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\CyclicReferenceStack' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/CyclicReferenceStack.php',
-    'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\FormattedNumber' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/FormattedNumber.php',
     'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Logger' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Logger.php',
-    'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Operands\\Operand' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/Operand.php',
-    'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Operands\\StructuredReference' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/StructuredReference.php',
     'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering.php',
     'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselI' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselI.php',
     'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselJ' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselJ.php',
@@ -1001,11 +1000,9 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Cell\\DefaultValueBinder' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DefaultValueBinder.php',
     'PhpOffice\\PhpSpreadsheet\\Cell\\Hyperlink' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Hyperlink.php',
     'PhpOffice\\PhpSpreadsheet\\Cell\\IValueBinder' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/IValueBinder.php',
-    'PhpOffice\\PhpSpreadsheet\\Cell\\IgnoredErrors' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/IgnoredErrors.php',
     'PhpOffice\\PhpSpreadsheet\\Cell\\RowRange' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/RowRange.php',
     'PhpOffice\\PhpSpreadsheet\\Cell\\StringValueBinder' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/StringValueBinder.php',
     'PhpOffice\\PhpSpreadsheet\\Chart\\Axis' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Axis.php',
-    'PhpOffice\\PhpSpreadsheet\\Chart\\AxisText' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/AxisText.php',
     'PhpOffice\\PhpSpreadsheet\\Chart\\Chart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Chart.php',
     'PhpOffice\\PhpSpreadsheet\\Chart\\ChartColor' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/ChartColor.php',
     'PhpOffice\\PhpSpreadsheet\\Chart\\DataSeries' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/DataSeries.php',
@@ -1033,8 +1030,6 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Exception' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Exception.php',
     'PhpOffice\\PhpSpreadsheet\\HashTable' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/HashTable.php',
     'PhpOffice\\PhpSpreadsheet\\Helper\\Dimension' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Dimension.php',
-    'PhpOffice\\PhpSpreadsheet\\Helper\\Downloader' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Downloader.php',
-    'PhpOffice\\PhpSpreadsheet\\Helper\\Handler' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Handler.php',
     'PhpOffice\\PhpSpreadsheet\\Helper\\Html' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Html.php',
     'PhpOffice\\PhpSpreadsheet\\Helper\\Sample' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Sample.php',
     'PhpOffice\\PhpSpreadsheet\\Helper\\Size' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Size.php',
@@ -1090,15 +1085,12 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Namespaces' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Namespaces.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\PageSetup' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/PageSetup.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Properties' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php',
-    'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SharedFormula' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SharedFormula.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SheetViewOptions' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SheetViewOptions.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SheetViews' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SheetViews.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Styles' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Styles.php',
-    'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\TableReader' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/TableReader.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Theme' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Theme.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\WorkbookView' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/WorkbookView.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xml' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml.php',
-    'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\DataValidations' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/DataValidations.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\PageSettings' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/PageSettings.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Properties' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Properties.php',
     'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style.php',
@@ -1128,6 +1120,12 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Shared\\File' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php',
     'PhpOffice\\PhpSpreadsheet\\Shared\\Font' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Font.php',
     'PhpOffice\\PhpSpreadsheet\\Shared\\IntOrFloat' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/IntOrFloat.php',
+    'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\CholeskyDecomposition' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/CholeskyDecomposition.php',
+    'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\EigenvalueDecomposition' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/EigenvalueDecomposition.php',
+    'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\LUDecomposition' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/LUDecomposition.php',
+    'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\Matrix' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/Matrix.php',
+    'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\QRDecomposition' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/QRDecomposition.php',
+    'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\SingularValueDecomposition' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/SingularValueDecomposition.php',
     'PhpOffice\\PhpSpreadsheet\\Shared\\OLE' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE.php',
     'PhpOffice\\PhpSpreadsheet\\Shared\\OLERead' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLERead.php',
     'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\ChainedBlockStream' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/ChainedBlockStream.php',
@@ -1178,28 +1176,12 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\FractionFormatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/FractionFormatter.php',
     'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\NumberFormatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/NumberFormatter.php',
     'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\PercentageFormatter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/PercentageFormatter.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Accounting' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Accounting.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Currency' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Currency.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Date' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Date.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\DateTime' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/DateTime.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\DateTimeWizard' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/DateTimeWizard.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Duration' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Duration.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Locale' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Locale.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Number' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Number.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\NumberBase' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/NumberBase.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Percentage' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Percentage.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Scientific' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Scientific.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Time' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Time.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Wizard' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Wizard.php',
     'PhpOffice\\PhpSpreadsheet\\Style\\Protection' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Protection.php',
-    'PhpOffice\\PhpSpreadsheet\\Style\\RgbTint' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/RgbTint.php',
     'PhpOffice\\PhpSpreadsheet\\Style\\Style' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Style.php',
     'PhpOffice\\PhpSpreadsheet\\Style\\Supervisor' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Supervisor.php',
-    'PhpOffice\\PhpSpreadsheet\\Theme' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Theme.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter\\Column' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter/Column.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter\\Column\\Rule' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter/Column/Rule.php',
-    'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFit' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFit.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\BaseDrawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/BaseDrawing.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\CellIterator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/CellIterator.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\Column' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Column.php',
@@ -1213,7 +1195,6 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\HeaderFooterDrawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/HeaderFooterDrawing.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\Iterator' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Iterator.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\MemoryDrawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/MemoryDrawing.php',
-    'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageBreak' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageBreak.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageMargins' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageMargins.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageSetup' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageSetup.php',
     'PhpOffice\\PhpSpreadsheet\\Worksheet\\Protection' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Protection.php',
@@ -1266,14 +1247,12 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Worksheet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Worksheet.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Xf' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Xf.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx.php',
-    'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\AutoFilter' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/AutoFilter.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Chart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Chart.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Comments' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Comments.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\ContentTypes' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\DefinedNames' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/DefinedNames.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\DocProps' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/DocProps.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Drawing' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Drawing.php',
-    'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\FunctionPrefix' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/FunctionPrefix.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Rels' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Rels.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\RelsRibbon' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/RelsRibbon.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\RelsVBA' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/RelsVBA.php',
@@ -1284,9 +1263,7 @@ return array(
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Workbook' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Workbook.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Worksheet' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php',
     'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\WriterPart' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/WriterPart.php',
-    'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream0' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream0.php',
-    'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream2' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream2.php',
-    'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream3' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream3.php',
+    'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Xlfn' => $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Xlfn.php',
     'PhpOffice\\PhpWord\\Collection\\AbstractCollection' => $vendorDir . '/phpoffice/phpword/src/PhpWord/Collection/AbstractCollection.php',
     'PhpOffice\\PhpWord\\Collection\\Bookmarks' => $vendorDir . '/phpoffice/phpword/src/PhpWord/Collection/Bookmarks.php',
     'PhpOffice\\PhpWord\\Collection\\Charts' => $vendorDir . '/phpoffice/phpword/src/PhpWord/Collection/Charts.php',
@@ -1599,8 +1576,20 @@ return array(
     'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php',
     'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php',
     'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php',
+    'QRcode' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/qrcode.php',
     'Stringable' => $vendorDir . '/myclabs/php-enum/stubs/Stringable.php',
     'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
+    'TCPDF' => $vendorDir . '/tecnickcom/tcpdf/tcpdf.php',
+    'TCPDF2DBarcode' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_barcodes_2d.php',
+    'TCPDFBarcode' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_barcodes_1d.php',
+    'TCPDF_COLORS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_colors.php',
+    'TCPDF_FILTERS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_filters.php',
+    'TCPDF_FONTS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_fonts.php',
+    'TCPDF_FONT_DATA' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_font_data.php',
+    'TCPDF_IMAGES' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_images.php',
+    'TCPDF_IMPORT' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_import.php',
+    'TCPDF_PARSER' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_parser.php',
+    'TCPDF_STATIC' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_static.php',
     'Zend\\Escaper\\Escaper' => $vendorDir . '/zendframework/zend-escaper/src/Escaper.php',
     'Zend\\Escaper\\Exception\\ExceptionInterface' => $vendorDir . '/zendframework/zend-escaper/src/Exception/ExceptionInterface.php',
     'Zend\\Escaper\\Exception\\InvalidArgumentException' => $vendorDir . '/zendframework/zend-escaper/src/Exception/InvalidArgumentException.php',

+ 1 - 1
include/vendor/composer/autoload_psr4.php

@@ -13,7 +13,7 @@ return array(
     'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
     'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
     'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
-    'PhpOffice\\PhpWord\\' => array($vendorDir . '/phpoffice/phpword/src/PhpWord'),
+    'PhpOffice\\PhpWord\\' => array($vendorDir . '/phpoffice/phpword/src/PhpWord', $vendorDir . '/phpoffice/phpword/src/PhpWord'),
     'PhpOffice\\PhpSpreadsheet\\' => array($vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet', $vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet'),
     'PhpOffice\\Common\\' => array($vendorDir . '/phpoffice/common/src/Common'),
     'OneSm\\' => array($vendorDir . '/lizhichao/one-sm/src'),

+ 22 - 32
include/vendor/composer/autoload_static.php

@@ -109,6 +109,7 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpWord\\' => 
         array (
             0 => __DIR__ . '/..' . '/phpoffice/phpword/src/PhpWord',
+            1 => __DIR__ . '/..' . '/phpoffice/phpword/src/PhpWord',
         ),
         'PhpOffice\\PhpSpreadsheet\\' => 
         array (
@@ -422,6 +423,7 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'Darabonba\\OpenApi\\Models\\OpenApiRequest' => __DIR__ . '/..' . '/alibabacloud/darabonba-openapi/src/Models/OpenApiRequest.php',
         'Darabonba\\OpenApi\\Models\\Params' => __DIR__ . '/..' . '/alibabacloud/darabonba-openapi/src/Models/Params.php',
         'Darabonba\\OpenApi\\OpenApiClient' => __DIR__ . '/..' . '/alibabacloud/darabonba-openapi/src/OpenApiClient.php',
+        'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php',
         'GuzzleHttp\\BodySummarizer' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/BodySummarizer.php',
         'GuzzleHttp\\BodySummarizerInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/BodySummarizerInterface.php',
         'GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php',
@@ -978,6 +980,7 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'OSS\\Signer\\SignerV4' => __DIR__ . '/..' . '/aliyuncs/oss-sdk-php/src/OSS/Signer/SignerV4.php',
         'OneSm\\Sm3' => __DIR__ . '/..' . '/lizhichao/one-sm/src/Sm3.php',
         'OneSm\\Sm4' => __DIR__ . '/..' . '/lizhichao/one-sm/src/Sm4.php',
+        'PDF417' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/pdf417.php',
         'PclZip' => __DIR__ . '/..' . '/pclzip/pclzip/pclzip.lib.php',
         'PhpOffice\\Common\\Adapter\\Zip\\PclZipAdapter' => __DIR__ . '/..' . '/phpoffice/common/src/Common/Adapter/Zip/PclZipAdapter.php',
         'PhpOffice\\Common\\Adapter\\Zip\\ZipArchiveAdapter' => __DIR__ . '/..' . '/phpoffice/common/src/Common/Adapter/Zip/ZipArchiveAdapter.php',
@@ -1031,10 +1034,7 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\ArrayArgumentProcessor' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/ArrayArgumentProcessor.php',
         'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\BranchPruner' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/BranchPruner.php',
         'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\CyclicReferenceStack' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/CyclicReferenceStack.php',
-        'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\FormattedNumber' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/FormattedNumber.php',
         'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Logger' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Logger.php',
-        'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Operands\\Operand' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/Operand.php',
-        'PhpOffice\\PhpSpreadsheet\\Calculation\\Engine\\Operands\\StructuredReference' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/StructuredReference.php',
         'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering.php',
         'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselI' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselI.php',
         'PhpOffice\\PhpSpreadsheet\\Calculation\\Engineering\\BesselJ' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselJ.php',
@@ -1211,11 +1211,9 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Cell\\DefaultValueBinder' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DefaultValueBinder.php',
         'PhpOffice\\PhpSpreadsheet\\Cell\\Hyperlink' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Hyperlink.php',
         'PhpOffice\\PhpSpreadsheet\\Cell\\IValueBinder' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/IValueBinder.php',
-        'PhpOffice\\PhpSpreadsheet\\Cell\\IgnoredErrors' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/IgnoredErrors.php',
         'PhpOffice\\PhpSpreadsheet\\Cell\\RowRange' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/RowRange.php',
         'PhpOffice\\PhpSpreadsheet\\Cell\\StringValueBinder' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/StringValueBinder.php',
         'PhpOffice\\PhpSpreadsheet\\Chart\\Axis' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Axis.php',
-        'PhpOffice\\PhpSpreadsheet\\Chart\\AxisText' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/AxisText.php',
         'PhpOffice\\PhpSpreadsheet\\Chart\\Chart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/Chart.php',
         'PhpOffice\\PhpSpreadsheet\\Chart\\ChartColor' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/ChartColor.php',
         'PhpOffice\\PhpSpreadsheet\\Chart\\DataSeries' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Chart/DataSeries.php',
@@ -1243,8 +1241,6 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Exception' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Exception.php',
         'PhpOffice\\PhpSpreadsheet\\HashTable' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/HashTable.php',
         'PhpOffice\\PhpSpreadsheet\\Helper\\Dimension' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Dimension.php',
-        'PhpOffice\\PhpSpreadsheet\\Helper\\Downloader' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Downloader.php',
-        'PhpOffice\\PhpSpreadsheet\\Helper\\Handler' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Handler.php',
         'PhpOffice\\PhpSpreadsheet\\Helper\\Html' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Html.php',
         'PhpOffice\\PhpSpreadsheet\\Helper\\Sample' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Sample.php',
         'PhpOffice\\PhpSpreadsheet\\Helper\\Size' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Helper/Size.php',
@@ -1300,15 +1296,12 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Namespaces' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Namespaces.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\PageSetup' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/PageSetup.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Properties' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Properties.php',
-        'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SharedFormula' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SharedFormula.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SheetViewOptions' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SheetViewOptions.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\SheetViews' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/SheetViews.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Styles' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Styles.php',
-        'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\TableReader' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/TableReader.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\Theme' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/Theme.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xlsx\\WorkbookView' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xlsx/WorkbookView.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xml' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml.php',
-        'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\DataValidations' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/DataValidations.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\PageSettings' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/PageSettings.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Properties' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Properties.php',
         'PhpOffice\\PhpSpreadsheet\\Reader\\Xml\\Style' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Reader/Xml/Style.php',
@@ -1338,6 +1331,12 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Shared\\File' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/File.php',
         'PhpOffice\\PhpSpreadsheet\\Shared\\Font' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/Font.php',
         'PhpOffice\\PhpSpreadsheet\\Shared\\IntOrFloat' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/IntOrFloat.php',
+        'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\CholeskyDecomposition' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/CholeskyDecomposition.php',
+        'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\EigenvalueDecomposition' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/EigenvalueDecomposition.php',
+        'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\LUDecomposition' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/LUDecomposition.php',
+        'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\Matrix' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/Matrix.php',
+        'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\QRDecomposition' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/QRDecomposition.php',
+        'PhpOffice\\PhpSpreadsheet\\Shared\\JAMA\\SingularValueDecomposition' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/JAMA/SingularValueDecomposition.php',
         'PhpOffice\\PhpSpreadsheet\\Shared\\OLE' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE.php',
         'PhpOffice\\PhpSpreadsheet\\Shared\\OLERead' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLERead.php',
         'PhpOffice\\PhpSpreadsheet\\Shared\\OLE\\ChainedBlockStream' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Shared/OLE/ChainedBlockStream.php',
@@ -1388,28 +1387,12 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\FractionFormatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/FractionFormatter.php',
         'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\NumberFormatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/NumberFormatter.php',
         'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\PercentageFormatter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/PercentageFormatter.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Accounting' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Accounting.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Currency' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Currency.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Date' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Date.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\DateTime' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/DateTime.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\DateTimeWizard' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/DateTimeWizard.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Duration' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Duration.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Locale' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Locale.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Number' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Number.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\NumberBase' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/NumberBase.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Percentage' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Percentage.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Scientific' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Scientific.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Time' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Time.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\NumberFormat\\Wizard\\Wizard' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/NumberFormat/Wizard/Wizard.php',
         'PhpOffice\\PhpSpreadsheet\\Style\\Protection' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Protection.php',
-        'PhpOffice\\PhpSpreadsheet\\Style\\RgbTint' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/RgbTint.php',
         'PhpOffice\\PhpSpreadsheet\\Style\\Style' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Style.php',
         'PhpOffice\\PhpSpreadsheet\\Style\\Supervisor' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Supervisor.php',
-        'PhpOffice\\PhpSpreadsheet\\Theme' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Theme.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter\\Column' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter/Column.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFilter\\Column\\Rule' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFilter/Column/Rule.php',
-        'PhpOffice\\PhpSpreadsheet\\Worksheet\\AutoFit' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/AutoFit.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\BaseDrawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/BaseDrawing.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\CellIterator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/CellIterator.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\Column' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Column.php',
@@ -1423,7 +1406,6 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\HeaderFooterDrawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/HeaderFooterDrawing.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\Iterator' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Iterator.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\MemoryDrawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/MemoryDrawing.php',
-        'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageBreak' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageBreak.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageMargins' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageMargins.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\PageSetup' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/PageSetup.php',
         'PhpOffice\\PhpSpreadsheet\\Worksheet\\Protection' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Protection.php',
@@ -1476,14 +1458,12 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Worksheet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Worksheet.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xls\\Xf' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xls/Xf.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx.php',
-        'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\AutoFilter' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/AutoFilter.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Chart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Chart.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Comments' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Comments.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\ContentTypes' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\DefinedNames' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/DefinedNames.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\DocProps' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/DocProps.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Drawing' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Drawing.php',
-        'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\FunctionPrefix' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/FunctionPrefix.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Rels' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Rels.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\RelsRibbon' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/RelsRibbon.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\RelsVBA' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/RelsVBA.php',
@@ -1494,9 +1474,7 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Workbook' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Workbook.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Worksheet' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php',
         'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\WriterPart' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/WriterPart.php',
-        'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream0' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream0.php',
-        'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream2' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream2.php',
-        'PhpOffice\\PhpSpreadsheet\\Writer\\ZipStream3' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/ZipStream3.php',
+        'PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx\\Xlfn' => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Xlfn.php',
         'PhpOffice\\PhpWord\\Collection\\AbstractCollection' => __DIR__ . '/..' . '/phpoffice/phpword/src/PhpWord/Collection/AbstractCollection.php',
         'PhpOffice\\PhpWord\\Collection\\Bookmarks' => __DIR__ . '/..' . '/phpoffice/phpword/src/PhpWord/Collection/Bookmarks.php',
         'PhpOffice\\PhpWord\\Collection\\Charts' => __DIR__ . '/..' . '/phpoffice/phpword/src/PhpWord/Collection/Charts.php',
@@ -1809,8 +1787,20 @@ class ComposerStaticInitff37f5b4184a4e18c158bea5256cbb73
         'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php',
         'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php',
         'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php',
+        'QRcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/qrcode.php',
         'Stringable' => __DIR__ . '/..' . '/myclabs/php-enum/stubs/Stringable.php',
         'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
+        'TCPDF' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf.php',
+        'TCPDF2DBarcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_barcodes_2d.php',
+        'TCPDFBarcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_barcodes_1d.php',
+        'TCPDF_COLORS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_colors.php',
+        'TCPDF_FILTERS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_filters.php',
+        'TCPDF_FONTS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_fonts.php',
+        'TCPDF_FONT_DATA' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_font_data.php',
+        'TCPDF_IMAGES' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_images.php',
+        'TCPDF_IMPORT' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_import.php',
+        'TCPDF_PARSER' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_parser.php',
+        'TCPDF_STATIC' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_static.php',
         'Zend\\Escaper\\Escaper' => __DIR__ . '/..' . '/zendframework/zend-escaper/src/Escaper.php',
         'Zend\\Escaper\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/zendframework/zend-escaper/src/Exception/ExceptionInterface.php',
         'Zend\\Escaper\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/zendframework/zend-escaper/src/Exception/InvalidArgumentException.php',

+ 134 - 31
include/vendor/composer/installed.json

@@ -1173,17 +1173,17 @@
         },
         {
             "name": "maennchen/zipstream-php",
-            "version": "2.2.6",
-            "version_normalized": "2.2.6.0",
+            "version": "2.1.0",
+            "version_normalized": "2.1.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/maennchen/ZipStream-PHP.git",
-                "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f"
+                "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f",
-                "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f",
+                "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58",
+                "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58",
                 "shasum": "",
                 "mirrors": [
                     {
@@ -1194,20 +1194,17 @@
             },
             "require": {
                 "myclabs/php-enum": "^1.5",
-                "php": "^7.4 || ^8.0",
+                "php": ">= 7.1",
                 "psr/http-message": "^1.0",
                 "symfony/polyfill-mbstring": "^1.0"
             },
             "require-dev": {
                 "ext-zip": "*",
-                "friendsofphp/php-cs-fixer": "^3.9",
-                "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0",
+                "guzzlehttp/guzzle": ">= 6.3",
                 "mikey179/vfsstream": "^1.6",
-                "php-coveralls/php-coveralls": "^2.4",
-                "phpunit/phpunit": "^8.5.8 || ^9.4.2",
-                "vimeo/psalm": "^4.1"
+                "phpunit/phpunit": ">= 7.5"
             },
-            "time": "2022-11-25T18:57:19+00:00",
+            "time": "2020-05-30T13:11:16+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -1244,7 +1241,7 @@
             ],
             "support": {
                 "issues": "https://github.com/maennchen/ZipStream-PHP/issues",
-                "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.6"
+                "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.1.0"
             },
             "funding": [
                 {
@@ -1579,7 +1576,13 @@
                 "type": "zip",
                 "url": "https://api.github.com/repos/ivanlanin/pclzip/zipball/19dd1de9d3f5fc4d7d70175b4c344dee329f45fd",
                 "reference": "19dd1de9d3f5fc4d7d70175b4c344dee329f45fd",
-                "shasum": ""
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
             },
             "time": "2014-06-05T11:42:24+00:00",
             "type": "library",
@@ -1623,7 +1626,13 @@
                 "type": "zip",
                 "url": "https://api.github.com/repos/PHPOffice/Common/zipball/edb5d32b1e3400a35a5c91e2539ed6f6ce925e4d",
                 "reference": "edb5d32b1e3400a35a5c91e2539ed6f6ce925e4d",
-                "shasum": ""
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
             },
             "require": {
                 "pclzip/pclzip": "^2.8",
@@ -1674,17 +1683,17 @@
         },
         {
             "name": "phpoffice/phpspreadsheet",
-            "version": "1.29.7",
-            "version_normalized": "1.29.7.0",
+            "version": "1.25.2",
+            "version_normalized": "1.25.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
-                "reference": "02c8625411dcb96e1f63d58c47460284e15b2e80"
+                "reference": "a317a09e7def49852400a4b3eca4a4b0790ceeb5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/02c8625411dcb96e1f63d58c47460284e15b2e80",
-                "reference": "02c8625411dcb96e1f63d58c47460284e15b2e80",
+                "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/a317a09e7def49852400a4b3eca4a4b0790ceeb5",
+                "reference": "a317a09e7def49852400a4b3eca4a4b0790ceeb5",
                 "shasum": "",
                 "mirrors": [
                     {
@@ -1708,26 +1717,26 @@
                 "ext-zip": "*",
                 "ext-zlib": "*",
                 "ezyang/htmlpurifier": "^4.15",
-                "maennchen/zipstream-php": "^2.1 || ^3.0",
+                "maennchen/zipstream-php": "^2.1",
                 "markbaker/complex": "^3.0",
                 "markbaker/matrix": "^3.0",
-                "php": "^7.4 || ^8.0",
+                "php": "^7.3 || ^8.0",
                 "psr/http-client": "^1.0",
                 "psr/http-factory": "^1.0",
                 "psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
             },
             "require-dev": {
-                "dealerdirect/phpcodesniffer-composer-installer": "dev-main",
-                "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0",
+                "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+                "dompdf/dompdf": "^1.0 || ^2.0",
                 "friendsofphp/php-cs-fixer": "^3.2",
-                "mitoteam/jpgraph": "^10.3",
-                "mpdf/mpdf": "^8.1.1",
+                "mitoteam/jpgraph": "10.2.4",
+                "mpdf/mpdf": "8.1.1",
                 "phpcompatibility/php-compatibility": "^9.3",
                 "phpstan/phpstan": "^1.1",
                 "phpstan/phpstan-phpunit": "^1.0",
                 "phpunit/phpunit": "^8.5 || ^9.0",
                 "squizlabs/php_codesniffer": "^3.7",
-                "tecnickcom/tcpdf": "^6.5"
+                "tecnickcom/tcpdf": "6.5"
             },
             "suggest": {
                 "dompdf/dompdf": "Option for rendering PDF with PDF Writer",
@@ -1736,7 +1745,7 @@
                 "mpdf/mpdf": "Option for rendering PDF with PDF Writer",
                 "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
             },
-            "time": "2024-12-27T05:10:37+00:00",
+            "time": "2022-09-25T17:21:01+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -1782,7 +1791,7 @@
             ],
             "support": {
                 "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
-                "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.7"
+                "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.25.2"
             },
             "install-path": "../phpoffice/phpspreadsheet"
         },
@@ -1799,7 +1808,13 @@
                 "type": "zip",
                 "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/b8346af548d399acd9e30fc76ab0c55c2fec03a5",
                 "reference": "b8346af548d399acd9e30fc76ab0c55c2fec03a5",
-                "shasum": ""
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
             },
             "require": {
                 "ext-xml": "*",
@@ -2427,6 +2442,88 @@
             "install-path": "../symfony/polyfill-mbstring"
         },
         {
+            "name": "tecnickcom/tcpdf",
+            "version": "6.8.0",
+            "version_normalized": "6.8.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/tecnickcom/TCPDF.git",
+                "reference": "14ffa0e308f5634aa2489568b4b90b24073b6731"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/14ffa0e308f5634aa2489568b4b90b24073b6731",
+                "reference": "14ffa0e308f5634aa2489568b4b90b24073b6731",
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
+            },
+            "require": {
+                "ext-curl": "*",
+                "php": ">=7.1.0"
+            },
+            "time": "2024-12-23T13:34:57+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "classmap": [
+                    "config",
+                    "include",
+                    "tcpdf.php",
+                    "tcpdf_parser.php",
+                    "tcpdf_import.php",
+                    "tcpdf_barcodes_1d.php",
+                    "tcpdf_barcodes_2d.php",
+                    "include/tcpdf_colors.php",
+                    "include/tcpdf_filters.php",
+                    "include/tcpdf_font_data.php",
+                    "include/tcpdf_fonts.php",
+                    "include/tcpdf_images.php",
+                    "include/tcpdf_static.php",
+                    "include/barcodes/datamatrix.php",
+                    "include/barcodes/pdf417.php",
+                    "include/barcodes/qrcode.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "Nicola Asuni",
+                    "email": "info@tecnick.com",
+                    "role": "lead"
+                }
+            ],
+            "description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
+            "homepage": "http://www.tcpdf.org/",
+            "keywords": [
+                "PDFD32000-2008",
+                "TCPDF",
+                "barcodes",
+                "datamatrix",
+                "pdf",
+                "pdf417",
+                "qrcode"
+            ],
+            "support": {
+                "issues": "https://github.com/tecnickcom/TCPDF/issues",
+                "source": "https://github.com/tecnickcom/TCPDF/tree/6.8.0"
+            },
+            "funding": [
+                {
+                    "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&currency_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20tcpdf%20project",
+                    "type": "custom"
+                }
+            ],
+            "install-path": "../tecnickcom/tcpdf"
+        },
+        {
             "name": "zendframework/zend-escaper",
             "version": "2.6.1",
             "version_normalized": "2.6.1.0",
@@ -2439,7 +2536,13 @@
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/3801caa21b0ca6aca57fa1c42b08d35c395ebd5f",
                 "reference": "3801caa21b0ca6aca57fa1c42b08d35c395ebd5f",
-                "shasum": ""
+                "shasum": "",
+                "mirrors": [
+                    {
+                        "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+                        "preferred": true
+                    }
+                ]
             },
             "require": {
                 "php": "^5.6 || ^7.0"

+ 17 - 8
include/vendor/composer/installed.php

@@ -3,7 +3,7 @@
         'name' => '__root__',
         'pretty_version' => 'dev-master',
         'version' => 'dev-master',
-        'reference' => '69619a9f84dba5eabf881dd56f8313088fc176ac',
+        'reference' => '501931dec530ee5d7e350004dfa3c5a27ec631f0',
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -13,7 +13,7 @@
         '__root__' => array(
             'pretty_version' => 'dev-master',
             'version' => 'dev-master',
-            'reference' => '69619a9f84dba5eabf881dd56f8313088fc176ac',
+            'reference' => '501931dec530ee5d7e350004dfa3c5a27ec631f0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
@@ -173,9 +173,9 @@
             'dev_requirement' => false,
         ),
         'maennchen/zipstream-php' => array(
-            'pretty_version' => '2.2.6',
-            'version' => '2.2.6.0',
-            'reference' => '30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f',
+            'pretty_version' => '2.1.0',
+            'version' => '2.1.0.0',
+            'reference' => 'c4c5803cc1f93df3d2448478ef79394a5981cc58',
             'type' => 'library',
             'install_path' => __DIR__ . '/../maennchen/zipstream-php',
             'aliases' => array(),
@@ -236,9 +236,9 @@
             'dev_requirement' => false,
         ),
         'phpoffice/phpspreadsheet' => array(
-            'pretty_version' => '1.29.7',
-            'version' => '1.29.7.0',
-            'reference' => '02c8625411dcb96e1f63d58c47460284e15b2e80',
+            'pretty_version' => '1.25.2',
+            'version' => '1.25.2.0',
+            'reference' => 'a317a09e7def49852400a4b3eca4a4b0790ceeb5',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpoffice/phpspreadsheet',
             'aliases' => array(),
@@ -349,6 +349,15 @@
             'aliases' => array(),
             'dev_requirement' => false,
         ),
+        'tecnickcom/tcpdf' => array(
+            'pretty_version' => '6.8.0',
+            'version' => '6.8.0.0',
+            'reference' => '14ffa0e308f5634aa2489568b4b90b24073b6731',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../tecnickcom/tcpdf',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
         'zendframework/zend-escaper' => array(
             'pretty_version' => '2.6.1',
             'version' => '2.6.1.0',

+ 2 - 2
include/vendor/composer/platform_check.php

@@ -4,8 +4,8 @@
 
 $issues = array();
 
-if (!(PHP_VERSION_ID >= 70400)) {
-    $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.';
+if (!(PHP_VERSION_ID >= 70300)) {
+    $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
 }
 
 if ($issues) {

+ 0 - 4
include/vendor/maennchen/zipstream-php/.phive/phars.xml

@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<phive xmlns="https://phar.io/phive">
-  <phar name="phpdocumentor" version="^3.3.1" installed="3.3.1" location="./tools/phpdocumentor" copy="false"/>
-</phive>

+ 0 - 71
include/vendor/maennchen/zipstream-php/.php-cs-fixer.dist.php

@@ -1,71 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * PHP-CS-Fixer config for ZipStream-PHP
- * @author Nicolas CARPi <nico-git@deltablot.email>
- * @copyright 2022 Nicolas CARPi
- * @see https://github.com/maennchen/ZipStream-PHP
- * @license MIT
- * @package maennchen/ZipStream-PHP
- */
-
-use PhpCsFixer\Config;
-use PhpCsFixer\Finder;
-
-$finder = Finder::create()
-    ->exclude('.github')
-    ->exclude('.phpdoc')
-    ->exclude('docs')
-    ->exclude('tools')
-    ->exclude('vendor')
-    ->in(__DIR__);
-
-$config = new Config();
-return $config->setRules([
-        '@PER' => true,
-        '@PER:risky' => true,
-        '@PHP81Migration' => true,
-        '@PHPUnit84Migration:risky' => true,
-        'array_syntax' => ['syntax' => 'short'],
-        'class_attributes_separation' => true,
-        'declare_strict_types' => true,
-        'dir_constant' => true,
-        'is_null' => true,
-        'no_homoglyph_names' => true,
-        'no_null_property_initialization' => true,
-        'no_php4_constructor' => true,
-        'no_unused_imports' => true,
-        'no_useless_else' => true,
-        'non_printable_character' => true,
-        'ordered_imports' => true,
-        'ordered_class_elements' => true,
-        'php_unit_construct' => true,
-        'pow_to_exponentiation' => true,
-        'psr_autoloading' => true,
-        'random_api_migration' => true,
-        'return_assignment' => true,
-        'self_accessor' => true,
-        'semicolon_after_instruction' => true,
-        'short_scalar_cast' => true,
-        'simplified_null_return' => true,
-        'single_blank_line_before_namespace' => true,
-        'single_class_element_per_statement' => true,
-        'single_line_comment_style' => true,
-        'single_quote' => true,
-        'space_after_semicolon' => true,
-        'standardize_not_equals' => true,
-        'strict_param' => true,
-        'ternary_operator_spaces' => true,
-        'trailing_comma_in_multiline' => true,
-        'trim_array_spaces' => true,
-        'unary_operator_spaces' => true,
-        'global_namespace_import' => [
-            'import_classes' => true,
-            'import_functions' => true,
-            'import_constants' => true,
-        ],
-    ])
-    ->setFinder($finder)
-    ->setRiskyAllowed(true);

+ 0 - 15
include/vendor/maennchen/zipstream-php/.phpdoc/template/base.html.twig

@@ -1,15 +0,0 @@
-{% extends 'layout.html.twig' %}
-
-{% set topMenu = {
-    "menu": [
-        { "name": "Guides", "url": "https://maennchen.dev/ZipStream-PHP/guide/index.html"},
-        { "name": "API", "url": "https://maennchen.dev/ZipStream-PHP/classes/ZipStream-ZipStream.html"},
-        { "name": "Issues", "url": "https://github.com/maennchen/ZipStream-PHP/issues"},
-    ],
-    "social": [
-        { "iconClass": "fab fa-github", "url": "https://github.com/maennchen/ZipStream-PHP"},
-        { "iconClass": "fas fa-envelope-open-text", "url": "https://github.com/maennchen/ZipStream-PHP/discussions"},
-        { "iconClass": "fas fa-money-bill", "url": "https://opencollective.com/zipstream"},
-    ]
-}
-%}

+ 0 - 1
include/vendor/maennchen/zipstream-php/.tool-versions

@@ -1 +0,0 @@
-php 8.1.13

+ 35 - 26
include/vendor/maennchen/zipstream-php/README.md

@@ -1,17 +1,12 @@
 # ZipStream-PHP
 
-[![Main Branch](https://github.com/maennchen/ZipStream-PHP/actions/workflows/branch_main.yml/badge.svg)](https://github.com/maennchen/ZipStream-PHP/actions/workflows/branch_main.yml)
-[![Coverage Status](https://coveralls.io/repos/github/maennchen/ZipStream-PHP/badge.svg?branch=main)](https://coveralls.io/github/maennchen/ZipStream-PHP?branch=main)
+[![Build Status](https://travis-ci.org/maennchen/ZipStream-PHP.svg?branch=master)](https://travis-ci.org/maennchen/ZipStream-PHP)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/maennchen/ZipStream-PHP/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/maennchen/ZipStream-PHP/)
+[![Code Coverage](https://scrutinizer-ci.com/g/maennchen/ZipStream-PHP/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/maennchen/ZipStream-PHP/)
 [![Latest Stable Version](https://poser.pugx.org/maennchen/zipstream-php/v/stable)](https://packagist.org/packages/maennchen/zipstream-php)
 [![Total Downloads](https://poser.pugx.org/maennchen/zipstream-php/downloads)](https://packagist.org/packages/maennchen/zipstream-php)
 [![Financial Contributors on Open Collective](https://opencollective.com/zipstream/all/badge.svg?label=financial+contributors)](https://opencollective.com/zipstream) [![License](https://img.shields.io/github/license/maennchen/zipstream-php.svg)](LICENSE)
 
-## Unstable Branch
-
-The `main` branch is not stable. Please see the
-[releases](https://github.com/maennchen/ZipStream-PHP/releases) for a stable
-version.
-
 ## Overview
 
 A fast and simple streaming zip file downloader for PHP. Using this library will save you from having to write the Zip to disk. You can directly send it to the user, which is much faster. It can work with S3 buckets or any PSR7 Stream.
@@ -26,10 +21,7 @@ Simply add a dependency on maennchen/zipstream-php to your project's composer.js
 composer require maennchen/zipstream-php
 ```
 
-## Usage
-
-For detailed instructions, please check the
-[Documentation](https://maennchen.dev/ZipStream-PHP/).
+## Usage and options
 
 Here's a simple example:
 
@@ -50,20 +42,39 @@ $zip->addFile('hello.txt', 'This is the contents of hello.txt');
 // add a file named 'some_image.jpg' from a local file 'path/to/image.jpg'
 $zip->addFileFromPath('some_image.jpg', 'path/to/image.jpg');
 
+// add a file named 'goodbye.txt' from an open stream resource
+$fp = tmpfile();
+fwrite($fp, 'The quick brown fox jumped over the lazy dog.');
+rewind($fp);
+$zip->addFileFromStream('goodbye.txt', $fp);
+fclose($fp);
+
 // finish the zip stream
 $zip->finish();
 ```
 
+You can also add comments, modify file timestamps, and customize (or
+disable) the HTTP headers. It is also possible to specify the storage method when adding files,
+the current default storage method is 'deflate' i.e files are stored with Compression mode 0x08.
+
+See the [Wiki](https://github.com/maennchen/ZipStream-PHP/wiki) for details.
+
+## Known issue
+
+The native Mac OS archive extraction tool might not open archives in some conditions. A workaround is to disable the Zip64 feature with the option `$opt->setEnableZip64(false)`. This limits the archive to 4 Gb and 64k files but will allow Mac OS users to open them without issue. See #116.
+
+The linux `unzip` utility might not handle properly unicode characters. It is recommended to extract with another tool like [7-zip](https://www.7-zip.org/). See #146.
+
 ## Upgrade to version 2.0.0
 
-- Only the self opened streams will be closed (#139)
-  If you were relying on ZipStream to close streams that the library didn't open,
-  you'll need to close them yourself now.
+* Only the self opened streams will be closed (#139)
+If you were relying on ZipStream to close streams that the library didn't open,
+you'll need to close them yourself now.
 
 ## Upgrade to version 1.0.0
 
-- All options parameters to all function have been moved from an `array` to structured option objects. See [the wiki](https://github.com/maennchen/ZipStream-PHP/wiki/Available-options) for examples.
-- The whole library has been refactored. The minimal PHP requirement has been raised to PHP 7.1.
+* All options parameters to all function have been moved from an `array` to structured option objects. See [the wiki](https://github.com/maennchen/ZipStream-PHP/wiki/Available-options) for examples.
+* The whole library has been refactored. The minimal PHP requirement has been raised to PHP 7.1.
 
 ## Usage with Symfony and S3
 
@@ -71,23 +82,21 @@ You can find example code on [the wiki](https://github.com/maennchen/ZipStream-P
 
 ## Contributing
 
-ZipStream-PHP is a collaborative project. Please take a look at the
-[.github/CONTRIBUTING.md](.github/CONTRIBUTING.md) file.
+ZipStream-PHP is a collaborative project. Please take a look at the [CONTRIBUTING.md](CONTRIBUTING.md) file.
 
 ## About the Authors
 
-- Paul Duncan <pabs@pablotron.org> - https://pablotron.org/
-- Jonatan Männchen <jonatan@maennchen.ch> - https://maennchen.dev
-- Jesse G. Donat <donatj@gmail.com> - https://donatstudios.com
-- Nicolas CARPi <nico-git@deltablot.email> - https://www.deltablot.com
-- Nik Barham <nik@brokencube.co.uk> - https://www.brokencube.co.uk
+* Paul Duncan <pabs@pablotron.org> - https://pablotron.org/
+* Jonatan Männchen <jonatan@maennchen.ch> - https://maennchen.dev
+* Jesse G. Donat <donatj@gmail.com> - https://donatstudios.com
+* Nicolas CARPi <nico-git@deltablot.email> - https://www.deltablot.com
+* Nik Barham <nik@brokencube.co.uk> - https://www.brokencube.co.uk
 
 ## Contributors
 
 ### Code Contributors
 
-This project exists thanks to all the people who contribute.
-[[Contribute](.github/CONTRIBUTING.md)].
+This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
 <a href="https://github.com/maennchen/ZipStream-PHP/graphs/contributors"><img src="https://opencollective.com/zipstream/contributors.svg?width=890&button=false" /></a>
 
 ### Financial Contributors

+ 4 - 39
include/vendor/maennchen/zipstream-php/composer.json

@@ -22,55 +22,20 @@
     }
   ],
   "require": {
-    "php": "^7.4 || ^8.0",
+    "php": ">= 7.1",
     "symfony/polyfill-mbstring": "^1.0",
     "psr/http-message": "^1.0",
     "myclabs/php-enum": "^1.5"
   },
   "require-dev": {
-    "phpunit/phpunit": "^8.5.8 || ^9.4.2",
-    "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0",
+    "phpunit/phpunit": ">= 7.5",
+    "guzzlehttp/guzzle": ">= 6.3",
     "ext-zip": "*",
-    "mikey179/vfsstream": "^1.6",
-    "vimeo/psalm": "^4.1",
-    "php-coveralls/php-coveralls": "^2.4",
-    "friendsofphp/php-cs-fixer": "^3.9"
-  },
-  "scripts": {
-    "format": "php-cs-fixer fix",
-    "test": "composer run test:unit && composer run test:formatted && composer run test:lint",
-    "test:unit": "phpunit --coverage-clover=coverage.clover.xml",
-    "test:formatted": "composer run format -- --dry-run --stop-on-violation --using-cache=no",
-    "test:lint": "psalm --stats --show-info --find-unused-psalm-suppress",
-    "coverage:report": "php-coveralls --coverage_clover=coverage.clover.xml --json_path=coveralls-upload.json -v",
-    "install:tools": "phive install --trust-gpg-keys 0x67F861C3D889C656",
-    "docs:generate": "tools/phpdocumentor --sourcecode"
+    "mikey179/vfsstream": "^1.6"
   },
   "autoload": {
     "psr-4": {
       "ZipStream\\": "src/"
     }
-  },
-  "archive": {
-    "exclude": [
-      "/composer.lock",
-      "/docs",
-      "/.gitattributes",
-      "/.github",
-      "/.gitignore",
-      "/guides",
-      "/.phive",
-      "/.php-cs-fixer.cache",
-      "/.php-cs-fixer.dist.php",
-      "/.phpdoc",
-      "/phpdoc.dist.xml",
-      "/.phpunit.result.cache",
-      "/phpunit.xml.dist",
-      "/psalm.xml",
-      "/test",
-      "/tools",
-      "/.tool-versions",
-      "/vendor"
-    ]
   }
 }

+ 0 - 79
include/vendor/maennchen/zipstream-php/guides/ContentLength.rst

@@ -1,79 +0,0 @@
-Adding Content-Length header
-=============
-
-Adding a ``Content-Length`` header for ``ZipStream`` is not trivial since the
-size is not known beforehand.
-
-The following workaround adds an approximated header:
-
-.. code-block:: php
-
-    class Zip
-    {
-        /** @var string */
-        private $name;
-
-        private $files = [];
-
-        public function __construct($name)
-        {
-            $this->name = $name;
-        }
-
-        public function addFile($name, $data)
-        {
-            $this->files[] = ['type' => 'addFile', 'name' => $name, 'data' => $data];
-        }
-
-        public function addFileFromPath($name, $path)
-        {
-            $this->files[] = ['type' => 'addFileFromPath', 'name' => $name, 'path' => $path];
-        }
-
-        public function getEstimate()
-        {
-            $estimate = 22;
-            foreach ($this->files as $file) {
-            $estimate += 76 + 2 * strlen($file['name']);
-            if ($file['type'] === 'addFile') {
-                $estimate += strlen($file['data']);
-            }
-            if ($file['type'] === 'addFileFromPath') {
-                $estimate += filesize($file['path']);
-            }
-            }
-            return $estimate;
-        }
-
-        public function finish()
-        {
-            header('Content-Length: ' . $this->getEstimate());
-            $options = new \ZipStream\Option\Archive();
-            $options->setSendHttpHeaders(true);
-            $options->setEnableZip64(false);
-            $options->setDeflateLevel(-1);
-            $zip = new \ZipStream\ZipStream($this->name, $options);
-
-            $fileOptions = new \ZipStream\Option\File();
-            $fileOptions->setMethod(\ZipStream\Option\Method::STORE());
-            foreach ($this->files as $file) {
-            if ($file['type'] === 'addFile') {
-                $zip->addFile($file['name'], $file['data'], $fileOptions);
-            }
-            if ($file['type'] === 'addFileFromPath') {
-                $zip->addFileFromPath($file['name'], $file['path'], $fileOptions);
-            }
-            }
-            $zip->finish();
-            exit;
-        }
-    }
-
-It only works with the following constraints:
-
-- All file content is known beforehand.
-- Content Deflation is disabled
-
-Thanks to
-`partiellkorrekt <https://github.com/maennchen/ZipStream-PHP/issues/89#issuecomment-1047949274>`_
-for this workaround.

+ 0 - 33
include/vendor/maennchen/zipstream-php/guides/FlySystem.rst

@@ -1,33 +0,0 @@
-Usage with FlySystem
-===============
-
-For saving or uploading the generated zip, you can use the
-`Flysystem <https://flysystem.thephpleague.com>`_ package, and its many
-adapters.
-
-For that you will need to provide another stream than the ``php://output``
-default one, and pass it to Flysystem ``putStream`` method.
-
-.. code-block:: php
-
-    // Open Stream only once for read and write since it's a memory stream and
-    // the content is lost when closing the stream / opening another one
-    $tempStream = fopen('php://memory', 'w+');
-
-    // Init Options
-    $zipStreamOptions = new Archive();
-    $zipStreamOptions->setOutputStream($tempStream);
-
-    // Create Zip Archive
-    $zipStream = new ZipStream('test.zip', $zipStreamOptions);
-    $zipStream->addFile('test.txt', 'text');
-    $zipStream->finish();
-
-    // Store File (see Flysystem documentation, and all its framework integration)
-    $adapter = new Local(__DIR__.'/path/to/folder'); // Can be any adapter (AWS, Google, Ftp, etc.)
-    $filesystem = new Filesystem($adapter);
-
-    $filesystem->putStream('test.zip', $tempStream)
-
-    // Close Stream
-    fclose($tempStream);

+ 0 - 16
include/vendor/maennchen/zipstream-php/guides/Nginx.rst

@@ -1,16 +0,0 @@
-Usage with nginx
-=============
-
-If you are using nginx as a webserver, it will try to buffer the response.
-So you'll want to disable this with a custom header:
-
-.. code-block:: php
-    header('X-Accel-Buffering: no');
-    # or with the Response class from Symfony
-    $response->headers->set('X-Accel-Buffering', 'no');
-
-Alternatively, you can tweak the
-`fastcgi cache parameters <https://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffers>`_
-within nginx config.
-
-See `original issue <https://github.com/maennchen/ZipStream-PHP/issues/77>`_.

+ 0 - 61
include/vendor/maennchen/zipstream-php/guides/Options.rst

@@ -1,61 +0,0 @@
-Available options
-===============
-
-Here is the full list of options available to you. You can also have a look at
-``src/Option/Archive.php`` file.
-
-First, an instance of ``ZipStream\Option\Archive`` needs to be created, and
-after that you use setters methods to modify the values.
-
-.. code-block:: php
-    use ZipStream\ZipStream;
-    use ZipStream\Option\Archive as ArchiveOptions;
-
-    require_once 'vendor/autoload.php';
-
-    $opt = new ArchiveOptions();
-
-    // Define output stream (argument is of type resource)
-    $opt->setOutputStream($fd);
-
-    // Set the deflate level (default is 6; use -1 to disable it)
-    $opt->setDeflateLevel(6);
-
-    // Add a comment to the zip file
-    $opt->setComment('This is a comment.');
-
-    // Size, in bytes, of the largest file to try and load into memory (used by addFileFromPath()).  Large files may also be compressed differently; see the 'largeFileMethod' option.
-    $opt->setLargeFileSize(30000000);
-
-    // How to handle large files.  Legal values are STORE (the default), or DEFLATE. Store sends the file raw and is significantly faster, while DEFLATE compresses the file and is much, much slower. Note that deflate must compress the file twice and is extremely slow.
-    $opt->setLargeFileMethod(ZipStream\Option\Method::STORE());
-    $opt->setLargeFileMethod(ZipStream\Option\Method::DEFLATE());
-
-    // Send http headers (default is false)
-    $opt->setSendHttpHeaders(false);
-
-    // HTTP Content-Disposition.  Defaults to 'attachment', where FILENAME is the specified filename. Note that this does nothing if you are not sending HTTP headers.
-    $opt->setContentDisposition('attachment');
-
-    // Set the content type (does nothing if you are not sending HTTP headers)
-    $opt->setContentType('application/x-zip');
-
-    // Set the function called for setting headers. Default is the `header()` of PHP
-    $opt->setHttpHeaderCallback('header');
-
-    // Enable streaming files with single read where general purpose bit 3 indicates local file header contain zero values in crc and size fields, these appear only after file contents in data descriptor block. Default is false. Set to true if your input stream is remote (used with addFileFromStream()).
-    $opt->setZeroHeader(false);
-
-    // Enable reading file stat for determining file size. When a 32-bit system reads file size that is over 2 GB, invalid value appears in file size due to integer overflow. Should be disabled on 32-bit systems with method addFileFromPath if any file may exceed 2 GB. In this case file will be read in blocks and correct size will be determined from content. Default is true.
-    $opt->setStatFiles(true);
-
-    // Enable zip64 extension, allowing very large archives (> 4Gb or file count > 64k)
-    // default is true
-    $opt->setEnableZip64(true);
-
-    // Flush output buffer after every write
-    // default is false
-    $opt->setFlushOutput(true);
-
-    // Now that everything is set you can pass the options to the ZipStream instance
-    $zip = new ZipStream('example.zip', $opt);

+ 0 - 18
include/vendor/maennchen/zipstream-php/guides/PSR7Streams.rst

@@ -1,18 +0,0 @@
-Usage with PSR 7 Streams
-===============
-
-PSR-7 streams are `standardized streams <https://www.php-fig.org/psr/psr-7/>`_.
-
-ZipStream-PHP supports working with these streams with the function
-``addFileFromPsr7Stream``. 
-
-For all parameters of the function see the API documentation.
-
-Example
----------------
-
-.. code-block:: php
-    
-    $stream = $response->getBody();
-    // add a file named 'streamfile.txt' from the content of the stream
-    $zip->addFileFromPsr7Stream('streamfile.txt', $stream);

+ 0 - 33
include/vendor/maennchen/zipstream-php/guides/StreamOutput.rst

@@ -1,33 +0,0 @@
-Stream Output
-===============
-
-Stream to S3 Bucket
----------------
-
-.. code-block:: php
-    use Aws\S3\S3Client;
-    use Aws\Credentials\CredentialProvider;
-    use ZipStream\Option\Archive;
-    use ZipStream\ZipStream;
-
-    $bucket = 'your bucket name';
-    $client = new S3Client([
-        'region' => 'your region',
-        'version' => 'latest',
-        'bucketName' => $bucket,
-        'credentials' => CredentialProvider::defaultProvider(),
-    ]);
-    $client->registerStreamWrapper();
-
-    $zipFile = fopen("s3://$bucket/example.zip", 'w');
-
-    $options = new Archive();
-    $options->setEnableZip64(false);
-    $options->setOutputStream($zipFile);
-
-    $zip = new ZipStream(null, $options);
-    $zip->addFile('file1.txt', 'File1 data');
-    $zip->addFile('file2.txt', 'File2 data');
-    $zip->finish();
-
-    fclose($zipFile);

+ 0 - 126
include/vendor/maennchen/zipstream-php/guides/Symfony.rst

@@ -1,126 +0,0 @@
-Usage with Symfony
-===============
-
-Overview for using ZipStream in Symfony
---------
-
-Using ZipStream in Symfony requires use of Symfony's ``StreamedResponse`` when
-used in controller actions.
-
-Wrap your call to the relevant ``ZipStream`` stream method (i.e. ``addFile``,
-``addFileFromPath``, ``addFileFromStream``) in Symfony's ``StreamedResponse``
-function passing in any required arguments for your use case.
-
-Using Symfony's ``StreamedResponse`` will allow Symfony to stream output from
-ZipStream correctly to users' browsers and avoid a corrupted final zip landing
-on the users' end.
-
-Example for using ``ZipStream`` in a controller action to zip stream files
-stored in an AWS S3 bucket by key:
-
-.. code-block:: php
-
-    use Symfony\Component\HttpFoundation\StreamedResponse;
-    use Aws\S3\S3Client;
-    use ZipStream;
-
-    //...
-
-    /**
-    * @Route("/zipstream", name="zipstream")
-    */
-    public function zipStreamAction()
-    {
-        //sample test file on s3
-        $s3keys = array(
-        "ziptestfolder/file1.txt"
-        );
-
-        $s3Client = $this->get('app.amazon.s3'); //s3client service
-        $s3Client->registerStreamWrapper(); //required
-
-        //using StreamedResponse to wrap ZipStream functionality for files on AWS s3.
-        $response = new StreamedResponse(function() use($s3keys, $s3Client)
-        {
-            // Define suitable options for ZipStream Archive.
-            $options = new \ZipStream\Option\Archive();
-            $options->setContentType('application/octet-stream');
-            // this is needed to prevent issues with truncated zip files
-            $options->setZeroHeader(true);
-            $options->setComment('test zip file.');
-
-            //initialise zipstream with output zip filename and options.
-            $zip = new ZipStream\ZipStream('test.zip', $options);
-
-            //loop keys - useful for multiple files
-            foreach ($s3keys as $key) {
-                // Get the file name in S3 key so we can save it to the zip
-                //file using the same name.
-                $fileName = basename($key);
-
-                //concatenate s3path.
-                $bucket = 'bucketname'; //replace with your bucket name or get from parameters file.
-                $s3path = "s3://" . $bucket . "/" . $key;
-
-                //addFileFromStream
-                if ($streamRead = fopen($s3path, 'r')) {
-                $zip->addFileFromStream($fileName, $streamRead);
-                } else {
-                die('Could not open stream for reading');
-                }
-            }
-
-            $zip->finish();
-
-        });
-
-        return $response;
-    }
-
-In the above example, files on AWS S3 are being streamed from S3 to the Symfon
-application via ``fopen`` call when the s3Client has ``registerStreamWrapper``
-applied. This stream is then passed to ``ZipStream`` via the
-``addFileFromStream`` function, which ZipStream then streams as a zip to the
-client browser via Symfony's ``StreamedResponse``. No Zip is created server
-side, which makes this approach a more efficient solution for streaming zips to
-the client browser especially for larger files.
-
-For the above use case you will need to have installed
-`aws/aws-sdk-php-symfony <https://github.com/aws/aws-sdk-php-symfony>`_ to
-support accessing S3 objects in your Symfony web application. This is not
-required for locally stored files on you server you intend to stream via
-``ZipStream``.
-
-See official Symfony documentation for details on
-`Symfony's StreamedResponse <https://symfony.com/doc/current/components/http_foundation.html#streaming-a-response>`_ 
-``Symfony\Component\HttpFoundation\StreamedResponse``.
-
-Note from `S3 documentation <https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/s3-stream-wrapper.html>`_:
-
-    Streams opened in "r" mode only allow data to be read from the stream, and
-    are not seekable by default. This is so that data can be downloaded from
-    Amazon S3 in a truly streaming manner, where previously read bytes do not
-    need to be buffered into memory. If you need a stream to be seekable, you
-    can pass seekable into the stream context options of a function.
-
-Make sure to configure your S3 context correctly!
-
-Uploading a file
---------
-
-You need to add correct permissions
-(see `#120 <https://github.com/maennchen/ZipStream-PHP/issues/120>`_)
-
-**example code**
-
-
-.. code-block:: php
-
-    $path = "s3://{$adapter->getBucket()}/{$this->getArchivePath()}";
-
-    // the important bit
-    $outputContext = stream_context_create([
-        's3' => ['ACL' => 'public-read'],
-    ]);
-
-    fopen($path, 'w', null, $outputContext);

+ 0 - 22
include/vendor/maennchen/zipstream-php/guides/Varnish.rst

@@ -1,22 +0,0 @@
-Usage with Varnish
-=============
-
-Serving a big zip with varnish in between can cause random stream close.
-This can be solved by adding attached code to the vcl file.
-
-To avoid the problem, add the following to your varnish config file:
-
-.. code-block::
-    sub vcl_recv {
-        # Varnish can’t intercept the discussion anymore
-        # helps for streaming big zips
-        if (req.url ~ "\.(tar|gz|zip|7z|exe)$") {
-            return (pipe);
-        }
-    }
-    # Varnish can’t intercept the discussion anymore
-    # helps for streaming big zips
-    sub vcl_pipe {
-        set bereq.http.connection = "close";
-        return (pipe);
-    }

+ 0 - 85
include/vendor/maennchen/zipstream-php/guides/index.rst

@@ -1,85 +0,0 @@
-ZipStream PHP
-=============
-
-A fast and simple streaming zip file downloader for PHP. Using this library will
-save you from having to write the Zip to disk. You can directly send it to the
-user, which is much faster. It can work with S3 buckets or any PSR7 Stream.
-
-.. toctree::
-
-   index
-   Symfony
-   Options
-   StreamOutput
-   FlySystem
-   PSR7Streams
-   Nginx
-   Varnish
-   ContentLength
-
-Installation
----------------
-
-Simply add a dependency on ``maennchen/zipstream-php`` to your project's
-``composer.json`` file if you use Composer to manage the dependencies of your
-project. Use following command to add the package to your project's dependencies:
-
-.. code-block:: sh
-   composer require maennchen/zipstream-php
-
-Usage Intro
----------------
-
-Here's a simple example:
-
-.. code-block:: php
-
-   // Autoload the dependencies
-   require 'vendor/autoload.php';
-
-   // enable output of HTTP headers
-   $options = new ZipStream\Option\Archive();
-   $options->setSendHttpHeaders(true);
-
-   // create a new zipstream object
-   $zip = new ZipStream\ZipStream('example.zip', $options);
-
-   // create a file named 'hello.txt'
-   $zip->addFile('hello.txt', 'This is the contents of hello.txt');
-
-   // add a file named 'some_image.jpg' from a local file 'path/to/image.jpg'
-   $zip->addFileFromPath('some_image.jpg', 'path/to/image.jpg');
-
-   // add a file named 'goodbye.txt' from an open stream resource
-   $fp = tmpfile();
-   fwrite($fp, 'The quick brown fox jumped over the lazy dog.');
-   rewind($fp);
-   $zip->addFileFromStream('goodbye.txt', $fp);
-   fclose($fp);
-
-   // finish the zip stream
-   $zip->finish();
-
-You can also add comments, modify file timestamps, and customize (or
-disable) the HTTP headers. It is also possible to specify the storage method
-when adding files, the current default storage method is ``DEFLATE``
-i.e files are stored with Compression mode 0x08.
-
-Known Issues
----------------
-
-The native Mac OS archive extraction tool prior to macOS 10.15 might not open
-archives in some conditions. A workaround is to disable the Zip64 feature with
-the option ``enableZip64: false``. This limits the archive to 4 Gb and 64k files
-but will allow users on macOS 10.14 and below to open them without issue.
-See `#116 <https://github.com/maennchen/ZipStream-PHP/issues/146>`_.
-
-The linux ``unzip`` utility might not handle properly unicode characters.
-It is recommended to extract with another tool like
-`7-zip <https://www.7-zip.org/>`_.
-See `#146 <https://github.com/maennchen/ZipStream-PHP/issues/146>`_.
-
-It is the responsability of the client code to make sure that files are not
-saved with the same path, as it is not possible for the library to figure it out
-while streaming a zip.
-See `#154 <https://github.com/maennchen/ZipStream-PHP/issues/154>`_.

+ 0 - 39
include/vendor/maennchen/zipstream-php/phpdoc.dist.xml

@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<phpdocumentor
-        configVersion="3"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="https://www.phpdoc.org"
-        xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/phpDocumentor/phpDocumentor/master/data/xsd/phpdoc.xsd"
->
-    <title>ZipStream-PHP</title>
-    <paths>
-        <output>docs</output>
-    </paths>
-    <version number="3.0.0">
-        <folder>latest</folder>
-        <api>
-            <source dsn=".">
-                <path>src</path>
-            </source>
-            <output>api</output>
-            <ignore hidden="true" symlinks="true">
-                <path>tests/**/*</path>
-                <path>vendor/**/*</path>
-            </ignore>
-            <extensions>
-                <extension>php</extension>
-            </extensions>
-            <visibility>public</visibility>
-            <default-package-name>ZipStream</default-package-name>
-            <include-source>true</include-source>
-        </api>
-        <guide>
-            <source dsn=".">
-                <path>guides</path>
-            </source>
-            <output>guide</output>
-        </guide>
-    </version>
-    <setting name="guides.enabled" value="true"/>
-    <template name="default" />
-</phpdocumentor>

+ 16 - 13
include/vendor/maennchen/zipstream-php/phpunit.xml.dist

@@ -1,14 +1,17 @@
-<?xml version="1.0"?>
-<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="test/bootstrap.php" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
-  <coverage processUncoveredFiles="true">
-    <include>
-      <directory suffix=".php">src</directory>
-    </include>
-  </coverage>
-  <testsuites>
-    <testsuite name="Application">
-      <directory>test</directory>
-    </testsuite>
-  </testsuites>
-  <logging/>
+<phpunit bootstrap="test/bootstrap.php">
+    <testsuites>
+        <testsuite name="Application">
+            <directory>test</directory>
+        </testsuite>
+    </testsuites>
+
+    <logging>
+        <log type="coverage-clover" target="clover.xml"/>
+    </logging>
+
+    <filter>
+        <whitelist processUncoveredFilesFromWhitelist="true">
+            <directory suffix=".php">src</directory>
+        </whitelist>
+    </filter>
 </phpunit>

+ 2 - 0
include/vendor/maennchen/zipstream-php/psalm.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0"?>
 <psalm
+    totallyTyped="false"
     resolveFromConfigFile="true"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="https://getpsalm.org/schema/config"
@@ -33,6 +34,7 @@
         <MissingReturnType errorLevel="info" />
         <MissingPropertyType errorLevel="info" />
         <InvalidDocblock errorLevel="info" />
+        <MisplacedRequiredParam errorLevel="info" />
 
         <PropertyNotSetInConstructor errorLevel="info" />
         <MissingConstructor errorLevel="info" />

+ 19 - 21
include/vendor/maennchen/zipstream-php/src/Bigint.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream;
@@ -24,6 +23,22 @@ class Bigint
     }
 
     /**
+     * Fill the bytes field with int
+     *
+     * @param int $value
+     * @param int $start
+     * @param int $count
+     * @return void
+     */
+    protected function fillBytes(int $value, int $start, int $count): void
+    {
+        for ($i = 0; $i < $count; $i++) {
+            $this->bytes[$start + $i] = $i >= PHP_INT_SIZE ? 0 : $value & 0xFF;
+            $value >>= 8;
+        }
+    }
+
+    /**
      * Get an instance
      *
      * @param int $value
@@ -43,7 +58,7 @@ class Bigint
      */
     public static function fromLowHigh(int $low, int $high): self
     {
-        $bigint = new self();
+        $bigint = new Bigint();
         $bigint->fillBytes($low, 0, 4);
         $bigint->fillBytes($high, 4, 4);
         return $bigint;
@@ -93,7 +108,6 @@ class Bigint
     /**
      * Check if is over 32
      *
-     * @psalm-suppress ArgumentTypeCoercion
      * @param bool $force
      * @return bool
      */
@@ -135,7 +149,7 @@ class Bigint
      * @param Bigint $other
      * @return Bigint
      */
-    public function add(self $other): self
+    public function add(Bigint $other): Bigint
     {
         $result = clone $this;
         $overflow = false;
@@ -151,24 +165,8 @@ class Bigint
             }
         }
         if ($overflow) {
-            throw new OverflowException();
+            throw new OverflowException;
         }
         return $result;
     }
-
-    /**
-     * Fill the bytes field with int
-     *
-     * @param int $value
-     * @param int $start
-     * @param int $count
-     * @return void
-     */
-    protected function fillBytes(int $value, int $start, int $count): void
-    {
-        for ($i = 0; $i < $count; $i++) {
-            $this->bytes[$start + $i] = $i >= PHP_INT_SIZE ? 0 : $value & 0xFF;
-            $value >>= 8;
-        }
-    }
 }

+ 1 - 2
include/vendor/maennchen/zipstream-php/src/DeflateStream.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream;
@@ -59,7 +58,7 @@ class DeflateStream extends Stream
             'comment' => $options->getComment(),
             'method' => $options->getMethod(),
             'deflateLevel' => $options->getDeflateLevel(),
-            'time' => $options->getTime(),
+            'time' => $options->getTime()
         ];
         $this->filter = stream_filter_append(
             $this->stream,

+ 0 - 1
include/vendor/maennchen/zipstream-php/src/Exception.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream;

+ 0 - 1
include/vendor/maennchen/zipstream-php/src/Exception/EncodingException.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Exception;

+ 0 - 1
include/vendor/maennchen/zipstream-php/src/Exception/FileNotFoundException.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Exception;

+ 0 - 1
include/vendor/maennchen/zipstream-php/src/Exception/FileNotReadableException.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Exception;

+ 0 - 1
include/vendor/maennchen/zipstream-php/src/Exception/IncompatibleOptionsException.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Exception;

+ 0 - 1
include/vendor/maennchen/zipstream-php/src/Exception/OverflowException.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Exception;

+ 0 - 1
include/vendor/maennchen/zipstream-php/src/Exception/StreamNotReadableException.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Exception;

+ 113 - 119
include/vendor/maennchen/zipstream-php/src/File.php

@@ -1,11 +1,10 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream;
 
-use HashContext;
 use Psr\Http\Message\StreamInterface;
+use ZipStream\Exception\EncodingException;
 use ZipStream\Exception\FileNotFoundException;
 use ZipStream\Exception\FileNotReadableException;
 use ZipStream\Exception\OverflowException;
@@ -15,15 +14,13 @@ use ZipStream\Option\Version;
 
 class File
 {
-    public const HASH_ALGORITHM = 'crc32b';
-
-    public const BIT_ZERO_HEADER = 0x0008;
-
-    public const BIT_EFS_UTF8 = 0x0800;
+    const HASH_ALGORITHM = 'crc32b';
 
-    public const COMPUTE = 1;
+    const BIT_ZERO_HEADER = 0x0008;
+    const BIT_EFS_UTF8 = 0x0800;
 
-    public const SEND = 2;
+    const COMPUTE = 1;
+    const SEND = 2;
 
     private const CHUNKED_READ_BLOCK_SIZE = 1048576;
 
@@ -41,7 +38,6 @@ class File
      * @var Bigint
      */
     public $len;
-
     /**
      * @var Bigint
      */
@@ -79,9 +75,8 @@ class File
      * @var resource
      */
     private $deflate;
-
     /**
-     * @var HashContext
+     * @var resource
      */
     private $hash;
 
@@ -165,17 +160,21 @@ class File
             // Sets Bit 11: Language encoding flag (EFS).  If this bit is set,
             // the filename and comment fields for this file
             // MUST be encoded using UTF-8. (see APPENDIX D)
-            if (mb_check_encoding($name, 'UTF-8') &&
-                mb_check_encoding($comment, 'UTF-8')) {
-                $this->bits |= self::BIT_EFS_UTF8;
+            if (!mb_check_encoding($name, 'UTF-8') ||
+                !mb_check_encoding($comment, 'UTF-8')) {
+                throw new EncodingException(
+                    'File name and comment should use UTF-8 ' .
+                    'if one of them does not fit into ASCII range.'
+                );
             }
+            $this->bits |= self::BIT_EFS_UTF8;
         }
 
         if ($this->method->equals(Method::DEFLATE())) {
             $this->version = Version::DEFLATE();
         }
 
-        $force = (bool)($this->bits & self::BIT_ZERO_HEADER) &&
+        $force = (boolean)($this->bits & self::BIT_ZERO_HEADER) &&
             $this->zip->opt->isEnableZip64();
 
         $footer = $this->buildZip64ExtraBlock($force);
@@ -228,97 +227,6 @@ class File
     }
 
     /**
-     * Create and send data descriptor footer for this file.
-     *
-     * @return void
-     */
-    public function addFileFooter(): void
-    {
-        if ($this->bits & self::BIT_ZERO_HEADER) {
-            // compressed and uncompressed size
-            $sizeFormat = 'V';
-            if ($this->zip->opt->isEnableZip64()) {
-                $sizeFormat = 'P';
-            }
-            $fields = [
-                ['V', ZipStream::DATA_DESCRIPTOR_SIGNATURE],
-                ['V', $this->crc],              // CRC32
-                [$sizeFormat, $this->zlen],     // Length of compressed data
-                [$sizeFormat, $this->len],      // Length of original data
-            ];
-
-            $footer = ZipStream::packFields($fields);
-            $this->zip->send($footer);
-        } else {
-            $footer = '';
-        }
-        $this->totalLength = $this->hlen->add($this->zlen)->add(Bigint::init(strlen($footer)));
-        $this->zip->addToCdr($this);
-    }
-
-    public function processStream(StreamInterface $stream): void
-    {
-        $this->zlen = new Bigint();
-        $this->len = new Bigint();
-
-        if ($this->zip->opt->isZeroHeader()) {
-            $this->processStreamWithZeroHeader($stream);
-        } else {
-            $this->processStreamWithComputedHeader($stream);
-        }
-    }
-
-    /**
-     * Send CDR record for specified file.
-     *
-     * @return string
-     */
-    public function getCdrFile(): string
-    {
-        $name = static::filterFilename($this->name);
-
-        // get attributes
-        $comment = $this->opt->getComment();
-
-        // get dos timestamp
-        $time = static::dosTime($this->opt->getTime()->getTimestamp());
-
-        $footer = $this->buildZip64ExtraBlock();
-
-        $fields = [
-            ['V', ZipStream::CDR_FILE_SIGNATURE],   // Central file header signature
-            ['v', ZipStream::ZIP_VERSION_MADE_BY],  // Made by version
-            ['v', $this->version->getValue()],      // Extract by version
-            ['v', $this->bits],                     // General purpose bit flags - data descriptor flag set
-            ['v', $this->method->getValue()],       // Compression method
-            ['V', $time],                           // Timestamp (DOS Format)
-            ['V', $this->crc],                      // CRC32
-            ['V', $this->zlen->getLowFF()],         // Compressed Data Length
-            ['V', $this->len->getLowFF()],          // Original Data Length
-            ['v', strlen($name)],                   // Length of filename
-            ['v', strlen($footer)],                 // Extra data len (see above)
-            ['v', strlen($comment)],                // Length of comment
-            ['v', 0],                               // Disk number
-            ['v', 0],                               // Internal File Attributes
-            ['V', 32],                              // External File Attributes
-            ['V', $this->ofs->getLowFF()],           // Relative offset of local header
-        ];
-
-        // pack fields, then append name and comment
-        $header = ZipStream::packFields($fields);
-
-        return $header . $name . $footer . $comment;
-    }
-
-    /**
-     * @return Bigint
-     */
-    public function getTotalLength(): Bigint
-    {
-        return $this->totalLength;
-    }
-
-    /**
      * Convert a UNIX timestamp to a DOS timestamp.
      *
      * @param int $when
@@ -331,14 +239,14 @@ class File
 
         // set lower-bound on dates
         if ($d['year'] < 1980) {
-            $d = [
+            $d = array(
                 'year' => 1980,
                 'mon' => 1,
                 'mday' => 1,
                 'hours' => 0,
                 'minutes' => 0,
-                'seconds' => 0,
-            ];
+                'seconds' => 0
+            );
         }
 
         // remove extra years from 1980
@@ -356,6 +264,7 @@ class File
 
     protected function buildZip64ExtraBlock(bool $force = false): string
     {
+
         $fields = [];
         if ($this->len->isOver32($force)) {
             $fields[] = ['P', $this->len];          // Length of original data
@@ -382,14 +291,50 @@ class File
             $this->version = Version::ZIP64();
         }
 
-        if ($this->bits & self::BIT_EFS_UTF8) {
-            // Put the tricky entry to
-            // force Linux unzip to lookup EFS flag.
-            $fields[] = ['v', 0x5653];  // Choose 'ZS' for proprietary usage
-            $fields[] = ['v', 0x0000];  // zero length
+        return ZipStream::packFields($fields);
+    }
+
+    /**
+     * Create and send data descriptor footer for this file.
+     *
+     * @return void
+     */
+
+    public function addFileFooter(): void
+    {
+
+        if ($this->bits & self::BIT_ZERO_HEADER) {
+            // compressed and uncompressed size
+            $sizeFormat = 'V';
+            if ($this->zip->opt->isEnableZip64()) {
+                $sizeFormat = 'P';
+            }
+            $fields = [
+                ['V', ZipStream::DATA_DESCRIPTOR_SIGNATURE],
+                ['V', $this->crc],              // CRC32
+                [$sizeFormat, $this->zlen],     // Length of compressed data
+                [$sizeFormat, $this->len],      // Length of original data
+            ];
+
+            $footer = ZipStream::packFields($fields);
+            $this->zip->send($footer);
+        } else {
+            $footer = '';
         }
+        $this->totalLength = $this->hlen->add($this->zlen)->add(Bigint::init(strlen($footer)));
+        $this->zip->addToCdr($this);
+    }
 
-        return ZipStream::packFields($fields);
+    public function processStream(StreamInterface $stream): void
+    {
+        $this->zlen = new Bigint();
+        $this->len = new Bigint();
+
+        if ($this->zip->opt->isZeroHeader()) {
+            $this->processStreamWithZeroHeader($stream);
+        } else {
+            $this->processStreamWithComputedHeader($stream);
+        }
     }
 
     protected function processStreamWithZeroHeader(StreamInterface $stream): void
@@ -409,7 +354,7 @@ class File
             $data = $stream->read(self::CHUNKED_READ_BLOCK_SIZE);
             $total += strlen($data);
             if ($size > 0 && $total > $size) {
-                $data = substr($data, 0, strlen($data)-($total - $size));
+                $data = substr($data, 0 , strlen($data)-($total - $size));
             }
             $this->deflateData($stream, $data, $options);
             if ($options & self::SEND) {
@@ -421,8 +366,7 @@ class File
 
     protected function deflateInit(): void
     {
-        $hash = hash_init(self::HASH_ALGORITHM);
-        $this->hash = $hash;
+        $this->hash = hash_init(self::HASH_ALGORITHM);
         if ($this->method->equals(Method::DEFLATE())) {
             $this->deflate = deflate_init(
                 ZLIB_ENCODING_RAW,
@@ -480,4 +424,54 @@ class File
         $this->readStream($stream, self::SEND);
         $this->addFileFooter();
     }
+
+    /**
+     * Send CDR record for specified file.
+     *
+     * @return string
+     */
+    public function getCdrFile(): string
+    {
+        $name = static::filterFilename($this->name);
+
+        // get attributes
+        $comment = $this->opt->getComment();
+
+        // get dos timestamp
+        $time = static::dosTime($this->opt->getTime()->getTimestamp());
+
+        $footer = $this->buildZip64ExtraBlock();
+
+        $fields = [
+            ['V', ZipStream::CDR_FILE_SIGNATURE],   // Central file header signature
+            ['v', ZipStream::ZIP_VERSION_MADE_BY],  // Made by version
+            ['v', $this->version->getValue()],      // Extract by version
+            ['v', $this->bits],                     // General purpose bit flags - data descriptor flag set
+            ['v', $this->method->getValue()],       // Compression method
+            ['V', $time],                           // Timestamp (DOS Format)
+            ['V', $this->crc],                      // CRC32
+            ['V', $this->zlen->getLowFF()],         // Compressed Data Length
+            ['V', $this->len->getLowFF()],          // Original Data Length
+            ['v', strlen($name)],                   // Length of filename
+            ['v', strlen($footer)],                 // Extra data len (see above)
+            ['v', strlen($comment)],                // Length of comment
+            ['v', 0],                               // Disk number
+            ['v', 0],                               // Internal File Attributes
+            ['V', 32],                              // External File Attributes
+            ['V', $this->ofs->getLowFF()]           // Relative offset of local header
+        ];
+
+        // pack fields, then append name and comment
+        $header = ZipStream::packFields($fields);
+
+        return $header . $name . $footer . $comment;
+    }
+
+    /**
+     * @return Bigint
+     */
+    public function getTotalLength(): Bigint
+    {
+        return $this->totalLength;
+    }
 }

+ 6 - 21
include/vendor/maennchen/zipstream-php/src/Option/Archive.php

@@ -1,20 +1,15 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Option;
 
-use Psr\Http\Message\StreamInterface;
-
 final class Archive
 {
-    public const DEFAULT_DEFLATE_LEVEL = 6;
-
+    const DEFAULT_DEFLATE_LEVEL = 6;
     /**
      * @var string
      */
     private $comment = '';
-
     /**
      * Size, in bytes, of the largest file to try
      * and load into memory (used by
@@ -25,7 +20,6 @@ final class Archive
      * @var int
      */
     private $largeFileSize = 20 * 1024 * 1024;
-
     /**
      * How to handle large files.  Legal values are
      * Method::STORE() (the default), or
@@ -38,7 +32,6 @@ final class Archive
      * @var Method
      */
     private $largeFileMethod;
-
     /**
      * Boolean indicating whether or not to send
      * the HTTP headers for this file.
@@ -46,14 +39,12 @@ final class Archive
      * @var bool
      */
     private $sendHttpHeaders = false;
-
     /**
      * The method called to send headers
      *
      * @var Callable
      */
     private $httpHeaderCallback = 'header';
-
     /**
      * Enable Zip64 extension, supporting very large
      * archives (any size > 4 GB or file count > 64k)
@@ -61,7 +52,6 @@ final class Archive
      * @var bool
      */
     private $enableZip64 = true;
-
     /**
      * Enable streaming files with single read where
      * general purpose bit 3 indicates local file header
@@ -72,7 +62,6 @@ final class Archive
      * @var bool
      */
     private $zeroHeader = false;
-
     /**
      * Enable reading file stat for determining file size.
      * When a 32-bit system reads file size that is
@@ -86,13 +75,11 @@ final class Archive
      * @var bool
      */
     private $statFiles = true;
-
     /**
      * Enable flush after every write to output stream.
      * @var bool
      */
     private $flushOutput = false;
-
     /**
      * HTTP Content-Disposition.  Defaults to
      * 'attachment', where
@@ -104,7 +91,6 @@ final class Archive
      * @var string
      */
     private $contentDisposition = 'attachment';
-
     /**
      * Note that this does nothing if you are
      * not sending HTTP headers.
@@ -112,14 +98,13 @@ final class Archive
      * @var string
      */
     private $contentType = 'application/x-zip';
-
     /**
      * @var int
      */
     private $deflateLevel = 6;
 
     /**
-     * @var StreamInterface|resource
+     * @var resource
      */
     private $outputStream;
 
@@ -172,12 +157,12 @@ final class Archive
         $this->sendHttpHeaders = $sendHttpHeaders;
     }
 
-    public function getHttpHeaderCallback(): callable
+    public function getHttpHeaderCallback(): Callable
     {
         return $this->httpHeaderCallback;
     }
 
-    public function setHttpHeaderCallback(callable $httpHeaderCallback): void
+    public function setHttpHeaderCallback(Callable $httpHeaderCallback): void
     {
         $this->httpHeaderCallback = $httpHeaderCallback;
     }
@@ -243,7 +228,7 @@ final class Archive
     }
 
     /**
-     * @return StreamInterface|resource
+     * @return resource
      */
     public function getOutputStream()
     {
@@ -251,7 +236,7 @@ final class Archive
     }
 
     /**
-     * @param StreamInterface|resource $outputStream
+     * @param resource $outputStream
      */
     public function setOutputStream($outputStream): void
     {

+ 5 - 11
include/vendor/maennchen/zipstream-php/src/Option/File.php

@@ -1,11 +1,9 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Option;
 
 use DateTime;
-use DateTimeInterface;
 
 final class File
 {
@@ -13,22 +11,18 @@ final class File
      * @var string
      */
     private $comment = '';
-
     /**
      * @var Method
      */
     private $method;
-
     /**
      * @var int
      */
     private $deflateLevel;
-
     /**
-     * @var DateTimeInterface
+     * @var DateTime
      */
     private $time;
-
     /**
      * @var int
      */
@@ -89,17 +83,17 @@ final class File
     }
 
     /**
-     * @return DateTimeInterface
+     * @return DateTime
      */
-    public function getTime(): DateTimeInterface
+    public function getTime(): DateTime
     {
         return $this->time;
     }
 
     /**
-     * @param DateTimeInterface $time
+     * @param DateTime $time
      */
-    public function setTime(DateTimeInterface $time): void
+    public function setTime(DateTime $time): void
     {
         $this->time = $time;
     }

+ 2 - 4
include/vendor/maennchen/zipstream-php/src/Option/Method.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Option;
@@ -15,7 +14,6 @@ use MyCLabs\Enum\Enum;
  */
 class Method extends Enum
 {
-    public const STORE = 0x00;
-
-    public const DEFLATE = 0x08;
+    const STORE = 0x00;
+    const DEFLATE = 0x08;
 }

+ 3 - 6
include/vendor/maennchen/zipstream-php/src/Option/Version.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream\Option;
@@ -17,9 +16,7 @@ use MyCLabs\Enum\Enum;
  */
 class Version extends Enum
 {
-    public const STORE = 0x000A; // 1.00
-
-    public const DEFLATE = 0x0014; // 2.00
-
-    public const ZIP64 = 0x002D; // 4.50
+    const STORE = 0x000A; // 1.00
+    const DEFLATE = 0x0014; // 2.00
+    const ZIP64 = 0x002D; // 4.50
 }

+ 40 - 52
include/vendor/maennchen/zipstream-php/src/Stream.php

@@ -1,11 +1,8 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream;
 
-use function mb_strlen;
-
 use Psr\Http\Message\StreamInterface;
 use RuntimeException;
 
@@ -26,29 +23,6 @@ class Stream implements StreamInterface
     }
 
     /**
-     * Reads all data from the stream into a string, from the beginning to end.
-     *
-     * This method MUST attempt to seek to the beginning of the stream before
-     * reading data and read the stream until the end is reached.
-     *
-     * Warning: This could attempt to load a large amount of data into memory.
-     *
-     * This method MUST NOT raise an exception in order to conform with PHP's
-     * string casting operations.
-     *
-     * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
-     * @return string
-     */
-    public function __toString(): string
-    {
-        try {
-            $this->seek(0);
-        } catch (RuntimeException $e) {
-        }
-        return (string) stream_get_contents($this->stream);
-    }
-
-    /**
      * Closes the stream and any underlying resources.
      *
      * @return void
@@ -76,6 +50,28 @@ class Stream implements StreamInterface
     }
 
     /**
+     * Reads all data from the stream into a string, from the beginning to end.
+     *
+     * This method MUST attempt to seek to the beginning of the stream before
+     * reading data and read the stream until the end is reached.
+     *
+     * Warning: This could attempt to load a large amount of data into memory.
+     *
+     * This method MUST NOT raise an exception in order to conform with PHP's
+     * string casting operations.
+     *
+     * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
+     * @return string
+     */
+    public function __toString(): string
+    {
+        try {
+            $this->seek(0);
+        } catch (\RuntimeException $e) {}
+        return (string) stream_get_contents($this->stream);
+    }
+
+    /**
      * Seek to a position in the stream.
      *
      * @link http://www.php.net/manual/en/function.fseek.php
@@ -85,15 +81,15 @@ class Stream implements StreamInterface
      *     PHP $whence values for `fseek()`.  SEEK_SET: Set position equal to
      *     offset bytes SEEK_CUR: Set position to current location plus offset
      *     SEEK_END: Set position to end-of-stream plus offset.
-     * @throws RuntimeException on failure.
+     * @throws \RuntimeException on failure.
      */
     public function seek($offset, $whence = SEEK_SET): void
     {
         if (!$this->isSeekable()) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
         if (fseek($this->stream, $offset, $whence) !== 0) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
     }
 
@@ -140,13 +136,13 @@ class Stream implements StreamInterface
      * Returns the current position of the file read/write pointer
      *
      * @return int Position of the file pointer
-     * @throws RuntimeException on error.
+     * @throws \RuntimeException on error.
      */
     public function tell(): int
     {
         $position = ftell($this->stream);
         if ($position === false) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
         return $position;
     }
@@ -169,7 +165,7 @@ class Stream implements StreamInterface
      *
      * @see seek()
      * @link http://www.php.net/manual/en/function.fseek.php
-     * @throws RuntimeException on failure.
+     * @throws \RuntimeException on failure.
      */
     public function rewind(): void
     {
@@ -181,17 +177,17 @@ class Stream implements StreamInterface
      *
      * @param string $string The string that is to be written.
      * @return int Returns the number of bytes written to the stream.
-     * @throws RuntimeException on failure.
+     * @throws \RuntimeException on failure.
      */
     public function write($string): int
     {
         if (!$this->isWritable()) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
         if (fwrite($this->stream, $string) === false) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
-        return mb_strlen($string);
+        return \mb_strlen($string);
     }
 
     /**
@@ -201,11 +197,7 @@ class Stream implements StreamInterface
      */
     public function isWritable(): bool
     {
-        $mode = $this->getMetadata('mode');
-        if (!is_string($mode)) {
-            throw new RuntimeException('Could not get stream mode from metadata!');
-        }
-        return preg_match('/[waxc+]/', $mode) === 1;
+        return preg_match('/[waxc+]/', $this->getMetadata('mode')) === 1;
     }
 
     /**
@@ -216,16 +208,16 @@ class Stream implements StreamInterface
      *     call returns fewer bytes.
      * @return string Returns the data read from the stream, or an empty string
      *     if no bytes are available.
-     * @throws RuntimeException if an error occurs.
+     * @throws \RuntimeException if an error occurs.
      */
     public function read($length): string
     {
         if (!$this->isReadable()) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
         $result = fread($this->stream, $length);
         if ($result === false) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
         return $result;
     }
@@ -237,28 +229,24 @@ class Stream implements StreamInterface
      */
     public function isReadable(): bool
     {
-        $mode = $this->getMetadata('mode');
-        if (!is_string($mode)) {
-            throw new RuntimeException('Could not get stream mode from metadata!');
-        }
-        return preg_match('/[r+]/', $mode) === 1;
+        return preg_match('/[r+]/', $this->getMetadata('mode')) === 1;
     }
 
     /**
      * Returns the remaining contents in a string
      *
      * @return string
-     * @throws RuntimeException if unable to read or an error occurs while
+     * @throws \RuntimeException if unable to read or an error occurs while
      *     reading.
      */
     public function getContents(): string
     {
         if (!$this->isReadable()) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
         $result = stream_get_contents($this->stream);
         if ($result === false) {
-            throw new RuntimeException();
+            throw new RuntimeException;
         }
         return $result;
     }

+ 73 - 82
include/vendor/maennchen/zipstream-php/src/ZipStream.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStream;
@@ -81,24 +80,19 @@ class ZipStream
      * to prevent file permissions issues upon extract (see #84)
      * 0x603 is 00000110 00000011 in binary, so 6 and 3
      */
-    public const ZIP_VERSION_MADE_BY = 0x603;
+    const ZIP_VERSION_MADE_BY = 0x603;
 
     /**
-     * The following signatures end with 0x4b50, which in ASCII is PK,
+     * The following signatures end with 0x4b50, which in ASCII is PK,
      * the initials of the inventor Phil Katz.
      * See https://en.wikipedia.org/wiki/Zip_(file_format)#File_headers
      */
-    public const FILE_HEADER_SIGNATURE = 0x04034b50;
-
-    public const CDR_FILE_SIGNATURE = 0x02014b50;
-
-    public const CDR_EOF_SIGNATURE = 0x06054b50;
-
-    public const DATA_DESCRIPTOR_SIGNATURE = 0x08074b50;
-
-    public const ZIP64_CDR_EOF_SIGNATURE = 0x06064b50;
-
-    public const ZIP64_CDR_LOCATOR_SIGNATURE = 0x07064b50;
+    const FILE_HEADER_SIGNATURE = 0x04034b50;
+    const CDR_FILE_SIGNATURE = 0x02014b50;
+    const CDR_EOF_SIGNATURE = 0x06054b50;
+    const DATA_DESCRIPTOR_SIGNATURE = 0x08074b50;
+    const ZIP64_CDR_EOF_SIGNATURE = 0x06064b50;
+    const ZIP64_CDR_LOCATOR_SIGNATURE = 0x07064b50;
 
     /**
      * Global Options
@@ -318,9 +312,12 @@ class ZipStream
      *
      * Examples:
      *
-     *   $stream = $response->getBody();
+     *   // create a temporary file stream and write text to it
+     *   $fp = tmpfile();
+     *   fwrite($fp, 'The quick brown fox jumped over the lazy dog.');
+     *
      *   // add a file named 'streamfile.txt' from the content of the stream
-     *   $x->addFileFromPsr7Stream('streamfile.txt', $stream);
+     *   $x->addFileFromPsr7Stream('streamfile.txt', $fp);
      *
      * @return void
      */
@@ -382,6 +379,34 @@ class ZipStream
     }
 
     /**
+     * Send ZIP64 CDR EOF (Central Directory Record End-of-File) record.
+     *
+     * @return void
+     */
+    protected function addCdr64Eof(): void
+    {
+        $num_files = count($this->files);
+        $cdr_length = $this->cdr_ofs;
+        $cdr_offset = $this->ofs;
+
+        $fields = [
+            ['V', static::ZIP64_CDR_EOF_SIGNATURE],     // ZIP64 end of central file header signature
+            ['P', 44],                                  // Length of data below this header (length of block - 12) = 44
+            ['v', static::ZIP_VERSION_MADE_BY],         // Made by version
+            ['v', Version::ZIP64],                      // Extract by version
+            ['V', 0x00],                                // disk number
+            ['V', 0x00],                                // no of disks
+            ['P', $num_files],                          // no of entries on disk
+            ['P', $num_files],                          // no of entries in cdr
+            ['P', $cdr_length],                         // CDR size
+            ['P', $cdr_offset],                         // CDR offset
+        ];
+
+        $ret = static::packFields($fields);
+        $this->send($ret);
+    }
+
+    /**
      * Create a format string and argument list for pack(), then call
      * pack() and return the result.
      *
@@ -434,13 +459,7 @@ class ZipStream
         }
         $this->need_headers = false;
 
-        $outputStream = $this->opt->getOutputStream();
-
-        if ($outputStream instanceof StreamInterface) {
-            $outputStream->write($str);
-        } else {
-            fwrite($outputStream, $str);
-        }
+        fwrite($this->opt->getOutputStream(), $str);
 
         if ($this->opt->isFlushOutput()) {
             // flush output buffer if it is on and flushable
@@ -455,62 +474,6 @@ class ZipStream
     }
 
     /**
-     * Is this file larger than large_file_size?
-     *
-     * @param string $path
-     * @return bool
-     */
-    public function isLargeFile(string $path): bool
-    {
-        if (!$this->opt->isStatFiles()) {
-            return false;
-        }
-        $stat = stat($path);
-        return $stat['size'] > $this->opt->getLargeFileSize();
-    }
-
-    /**
-     * Save file attributes for trailing CDR record.
-     *
-     * @param File $file
-     * @return void
-     */
-    public function addToCdr(File $file): void
-    {
-        $file->ofs = $this->ofs;
-        $this->ofs = $this->ofs->add($file->getTotalLength());
-        $this->files[] = $file->getCdrFile();
-    }
-
-    /**
-     * Send ZIP64 CDR EOF (Central Directory Record End-of-File) record.
-     *
-     * @return void
-     */
-    protected function addCdr64Eof(): void
-    {
-        $num_files = count($this->files);
-        $cdr_length = $this->cdr_ofs;
-        $cdr_offset = $this->ofs;
-
-        $fields = [
-            ['V', static::ZIP64_CDR_EOF_SIGNATURE],     // ZIP64 end of central file header signature
-            ['P', 44],                                  // Length of data below this header (length of block - 12) = 44
-            ['v', static::ZIP_VERSION_MADE_BY],         // Made by version
-            ['v', Version::ZIP64],                      // Extract by version
-            ['V', 0x00],                                // disk number
-            ['V', 0x00],                                // no of disks
-            ['P', $num_files],                          // no of entries on disk
-            ['P', $num_files],                          // no of entries in cdr
-            ['P', $cdr_length],                         // CDR size
-            ['P', $cdr_offset],                         // CDR offset
-        ];
-
-        $ret = static::packFields($fields);
-        $this->send($ret);
-    }
-
-    /**
      * Send HTTP headers for this stream.
      *
      * @return void
@@ -529,13 +492,13 @@ class ZipStream
             $disposition .= "; filename*=UTF-8''{$urlencoded}";
         }
 
-        $headers = [
+        $headers = array(
             'Content-Type' => $this->opt->getContentType(),
             'Content-Disposition' => $disposition,
             'Pragma' => 'public',
             'Cache-Control' => 'public, must-revalidate',
-            'Content-Transfer-Encoding' => 'binary',
-        ];
+            'Content-Transfer-Encoding' => 'binary'
+        );
 
         $call = $this->opt->getHttpHeaderCallback();
         foreach ($headers as $key => $val) {
@@ -605,4 +568,32 @@ class ZipStream
         $this->cdr_ofs = new Bigint();
         $this->opt = new ArchiveOptions();
     }
+
+    /**
+     * Is this file larger than large_file_size?
+     *
+     * @param string $path
+     * @return bool
+     */
+    public function isLargeFile(string $path): bool
+    {
+        if (!$this->opt->isStatFiles()) {
+            return false;
+        }
+        $stat = stat($path);
+        return $stat['size'] > $this->opt->getLargeFileSize();
+    }
+
+    /**
+     * Save file attributes for trailing CDR record.
+     *
+     * @param File $file
+     * @return void
+     */
+    public function addToCdr(File $file): void
+    {
+        $file->ofs = $this->ofs;
+        $this->ofs = $this->ofs->add($file->getTotalLength());
+        $this->files[] = $file->getCdrFile();
+    }
 }

+ 0 - 1
include/vendor/maennchen/zipstream-php/test/BigintTest.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 namespace BigintTest;

+ 139 - 203
include/vendor/maennchen/zipstream-php/test/ZipStreamTest.php

@@ -1,21 +1,15 @@
 <?php
-
 declare(strict_types=1);
 
 namespace ZipStreamTest;
 
-use GuzzleHttp\Psr7\Response;
 use org\bovigo\vfs\vfsStream;
+use GuzzleHttp\Psr7\Response;
 use PHPUnit\Framework\TestCase;
-use RecursiveDirectoryIterator;
-use RecursiveIteratorIterator;
-use ReflectionClass;
-use ZipArchive;
 use ZipStream\File;
 use ZipStream\Option\Archive as ArchiveOptions;
 use ZipStream\Option\File as FileOptions;
 use ZipStream\Option\Method;
-use ZipStream\Stream;
 use ZipStream\ZipStream;
 
 /**
@@ -23,7 +17,7 @@ use ZipStream\ZipStream;
  */
 class ZipStreamTest extends TestCase
 {
-    public const OSX_ARCHIVE_UTILITY =
+    const OSX_ARCHIVE_UTILITY =
         '/System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive Utility';
 
     public function testFileNotFoundException(): void
@@ -41,7 +35,7 @@ class ZipStreamTest extends TestCase
         // create new virtual filesystem
         $root = vfsStream::setup('vfs');
         // create a virtual file with no permissions
-        $file = vfsStream::newFile('foo.txt', 0)->at($root)->setContent('bar');
+        $file = vfsStream::newFile('foo.txt', 0000)->at($root)->setContent('bar');
         $zip = new ZipStream();
         $this->expectException(\ZipStream\Exception\FileNotReadableException::class);
         $zip->addFileFromPath('foo.txt', $file->url());
@@ -50,7 +44,7 @@ class ZipStreamTest extends TestCase
     public function testDostime(): void
     {
         // Allows testing of protected method
-        $class = new ReflectionClass(File::class);
+        $class = new \ReflectionClass(File::class);
         $method = $class->getMethod('dostime');
         $method->setAccessible(true);
 
@@ -81,12 +75,81 @@ class ZipStreamTest extends TestCase
         $tmpDir = $this->validateAndExtractZip($tmp);
 
         $files = $this->getRecursiveFileList($tmpDir);
-        $this->assertSame(['sample.txt', 'test' . DIRECTORY_SEPARATOR . 'sample.txt'], $files);
+        $this->assertEquals(['sample.txt', 'test/sample.txt'], $files);
 
         $this->assertStringEqualsFile($tmpDir . '/sample.txt', 'Sample String Data');
         $this->assertStringEqualsFile($tmpDir . '/test/sample.txt', 'More Simple Sample Data');
     }
 
+    /**
+     * @return array
+     */
+    protected function getTmpFileStream(): array
+    {
+        $tmp = tempnam(sys_get_temp_dir(), 'zipstreamtest');
+        $stream = fopen($tmp, 'wb+');
+
+        return array($tmp, $stream);
+    }
+
+    /**
+     * @param string $tmp
+     * @return string
+     */
+    protected function validateAndExtractZip($tmp): string
+    {
+        $tmpDir = $this->getTmpDir();
+
+        $zipArch = new \ZipArchive;
+        $res = $zipArch->open($tmp);
+
+        if ($res !== true) {
+            $this->fail("Failed to open {$tmp}. Code: $res");
+
+            return $tmpDir;
+        }
+
+        $this->assertEquals(0, $zipArch->status);
+        $this->assertEquals(0, $zipArch->statusSys);
+
+        $zipArch->extractTo($tmpDir);
+        $zipArch->close();
+
+        return $tmpDir;
+    }
+
+    protected function getTmpDir(): string
+    {
+        $tmp = tempnam(sys_get_temp_dir(), 'zipstreamtest');
+        unlink($tmp);
+        mkdir($tmp) or $this->fail('Failed to make directory');
+
+        return $tmp;
+    }
+
+    /**
+     * @param string $path
+     * @return string[]
+     */
+    protected function getRecursiveFileList(string $path): array
+    {
+        $data = array();
+        $path = (string)realpath($path);
+        $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
+
+        $pathLen = strlen($path);
+        foreach ($files as $file) {
+            $filePath = $file->getRealPath();
+            if (!is_dir($filePath)) {
+                $data[] = substr($filePath, $pathLen + 1);
+            }
+        }
+
+        sort($data);
+
+        return $data;
+    }
+
     public function testAddFileUtf8NameComment(): void
     {
         [$tmp, $stream] = $this->getTmpFileStream();
@@ -113,17 +176,19 @@ class ZipStreamTest extends TestCase
         $tmpDir = $this->validateAndExtractZip($tmp);
 
         $files = $this->getRecursiveFileList($tmpDir);
-        $this->assertSame([$name], $files);
+        $this->assertEquals(array($name), $files);
         $this->assertStringEqualsFile($tmpDir . '/' . $name, $content);
 
-        $zipArch = new ZipArchive();
+        $zipArch = new \ZipArchive();
         $zipArch->open($tmp);
-        $this->assertSame($comment, $zipArch->getCommentName($name));
+        $this->assertEquals($comment, $zipArch->getCommentName($name));
     }
 
     public function testAddFileUtf8NameNonUtfComment(): void
     {
-        [$tmp, $stream] = $this->getTmpFileStream();
+        $this->expectException(\ZipStream\Exception\EncodingException::class);
+
+        $stream = $this->getTmpFileStream()[1];
 
         $options = new ArchiveOptions();
         $options->setOutputStream($stream);
@@ -132,66 +197,33 @@ class ZipStreamTest extends TestCase
 
         $name = 'á.txt';
         $content = 'any';
-        $comment = mb_convert_encoding('á', 'ISO-8859-2', 'UTF-8');
-
-        // @see https://libzip.org/documentation/zip_file_get_comment.html
-        //
-        // mb_convert_encoding hasn't CP437.
-        // nearly CP850 (DOS-Latin-1)
-        $guessComment = mb_convert_encoding($comment, 'UTF-8', 'CP850');
+        $comment = 'á';
 
         $fileOptions = new FileOptions();
-        $fileOptions->setComment($comment);
+        $fileOptions->setComment(mb_convert_encoding($comment, 'ISO-8859-2', 'UTF-8'));
 
         $zip->addFile($name, $content, $fileOptions);
-        $zip->finish();
-        fclose($stream);
-
-        $zipArch = new ZipArchive();
-        $zipArch->open($tmp);
-        $this->assertSame($guessComment, $zipArch->getCommentName($name));
-        $this->assertSame($comment, $zipArch->getCommentName($name, ZipArchive::FL_ENC_RAW));
     }
 
     public function testAddFileNonUtf8NameUtfComment(): void
     {
-        [$tmp, $stream] = $this->getTmpFileStream();
+        $this->expectException(\ZipStream\Exception\EncodingException::class);
+
+        $stream = $this->getTmpFileStream()[1];
 
         $options = new ArchiveOptions();
         $options->setOutputStream($stream);
 
         $zip = new ZipStream(null, $options);
 
-        $name = mb_convert_encoding('á.txt', 'ISO-8859-2', 'UTF-8');
+        $name = 'á.txt';
         $content = 'any';
         $comment = 'á';
 
-        // @see https://libzip.org/documentation/zip_get_name.html
-        //
-        // mb_convert_encoding hasn't CP437.
-        // nearly CP850 (DOS-Latin-1)
-        $guessName = mb_convert_encoding($name, 'UTF-8', 'CP850');
-
         $fileOptions = new FileOptions();
         $fileOptions->setComment($comment);
 
-        $zip->addFile($name, $content, $fileOptions);
-        $zip->finish();
-        fclose($stream);
-
-        $tmpDir = $this->validateAndExtractZip($tmp);
-
-        $files = $this->getRecursiveFileList($tmpDir);
-
-        $this->assertNotSame([$name], $files);
-        $this->assertSame([$guessName], $files);
-        $this->assertStringEqualsFile($tmpDir . '/' . $guessName, $content);
-
-        $zipArch = new ZipArchive();
-        $zipArch->open($tmp);
-        $this->assertSame($guessName, $zipArch->getNameIndex(0));
-        $this->assertSame($name, $zipArch->getNameIndex(0, ZipArchive::FL_ENC_RAW));
-        $this->assertSame($comment, $zipArch->getCommentName($guessName));
+        $zip->addFile(mb_convert_encoding($name, 'ISO-8859-2', 'UTF-8'), $content, $fileOptions);
     }
 
     public function testAddFileWithStorageMethod(): void
@@ -211,13 +243,13 @@ class ZipStreamTest extends TestCase
         $zip->finish();
         fclose($stream);
 
-        $zipArch = new ZipArchive();
+        $zipArch = new \ZipArchive();
         $zipArch->open($tmp);
 
         $sample1 = $zipArch->statName('sample.txt');
         $sample12 = $zipArch->statName('test/sample.txt');
-        $this->assertSame($sample1['comp_method'], Method::STORE);
-        $this->assertSame($sample12['comp_method'], Method::DEFLATE);
+        $this->assertEquals($sample1['comp_method'], Method::STORE);
+        $this->assertEquals($sample12['comp_method'], Method::DEFLATE);
 
         $zipArch->close();
     }
@@ -243,7 +275,7 @@ class ZipStreamTest extends TestCase
 
         exec(escapeshellarg(self::OSX_ARCHIVE_UTILITY) . ' ' . escapeshellarg($tmp), $output, $returnStatus);
 
-        $this->assertSame(0, $returnStatus);
+        $this->assertEquals(0, $returnStatus);
         $this->assertCount(0, $output);
 
         $this->assertFileExists(dirname($tmp) . '/' . $folder . '/sample.txt');
@@ -275,7 +307,7 @@ class ZipStreamTest extends TestCase
         $tmpDir = $this->validateAndExtractZip($tmp);
 
         $files = $this->getRecursiveFileList($tmpDir);
-        $this->assertSame(['sample.txt', 'test' . DIRECTORY_SEPARATOR . 'sample.txt'], $files);
+        $this->assertEquals(array('sample.txt', 'test/sample.txt'), $files);
 
         $this->assertStringEqualsFile($tmpDir . '/sample.txt', 'Sample String Data');
         $this->assertStringEqualsFile($tmpDir . '/test/sample.txt', 'More Simple Sample Data');
@@ -306,14 +338,14 @@ class ZipStreamTest extends TestCase
         $zip->finish();
         fclose($stream);
 
-        $zipArch = new ZipArchive();
+        $zipArch = new \ZipArchive();
         $zipArch->open($tmp);
 
         $sample1 = $zipArch->statName('sample.txt');
-        $this->assertSame(Method::STORE, $sample1['comp_method']);
+        $this->assertEquals(Method::STORE, $sample1['comp_method']);
 
         $sample2 = $zipArch->statName('test/sample.txt');
-        $this->assertSame(Method::DEFLATE, $sample2['comp_method']);
+        $this->assertEquals(Method::DEFLATE, $sample2['comp_method']);
 
         $zipArch->close();
     }
@@ -334,6 +366,42 @@ class ZipStreamTest extends TestCase
         }
     }
 
+    protected function addLargeFileFileFromPath($method, $zeroHeader, $zip64): void
+    {
+        [$tmp, $stream] = $this->getTmpFileStream();
+
+        $options = new ArchiveOptions();
+        $options->setOutputStream($stream);
+        $options->setLargeFileMethod($method);
+        $options->setLargeFileSize(5);
+        $options->setZeroHeader($zeroHeader);
+        $options->setEnableZip64($zip64);
+
+        $zip = new ZipStream(null, $options);
+
+        [$tmpExample, $streamExample] = $this->getTmpFileStream();
+        for ($i = 0; $i <= 10000; $i++) {
+            fwrite($streamExample, sha1((string)$i));
+            if ($i % 100 === 0) {
+                fwrite($streamExample, "\n");
+            }
+        }
+        fclose($streamExample);
+        $shaExample = sha1_file($tmpExample);
+        $zip->addFileFromPath('sample.txt', $tmpExample);
+        unlink($tmpExample);
+
+        $zip->finish();
+        fclose($stream);
+
+        $tmpDir = $this->validateAndExtractZip($tmp);
+
+        $files = $this->getRecursiveFileList($tmpDir);
+        $this->assertEquals(array('sample.txt'), $files);
+
+        $this->assertEquals(sha1_file($tmpDir . '/sample.txt'), $shaExample, "SHA-1 Mismatch Method: {$method}");
+    }
+
     public function testAddFileFromStream(): void
     {
         [$tmp, $stream] = $this->getTmpFileStream();
@@ -365,7 +433,7 @@ class ZipStreamTest extends TestCase
         $tmpDir = $this->validateAndExtractZip($tmp);
 
         $files = $this->getRecursiveFileList($tmpDir);
-        $this->assertSame(['sample.txt', 'test' . DIRECTORY_SEPARATOR . 'sample.txt'], $files);
+        $this->assertEquals(array('sample.txt', 'test/sample.txt'), $files);
 
         $this->assertStringEqualsFile(__FILE__, file_get_contents($tmpDir . '/sample.txt'));
         $this->assertStringEqualsFile($tmpDir . '/test/sample.txt', 'More Simple Sample Data');
@@ -398,14 +466,14 @@ class ZipStreamTest extends TestCase
         $zip->finish();
         fclose($stream);
 
-        $zipArch = new ZipArchive();
+        $zipArch = new \ZipArchive();
         $zipArch->open($tmp);
 
         $sample1 = $zipArch->statName('sample.txt');
-        $this->assertSame(Method::STORE, $sample1['comp_method']);
+        $this->assertEquals(Method::STORE, $sample1['comp_method']);
 
         $sample2 = $zipArch->statName('test/sample.txt');
-        $this->assertSame(Method::DEFLATE, $sample2['comp_method']);
+        $this->assertEquals(Method::DEFLATE, $sample2['comp_method']);
 
         $zipArch->close();
     }
@@ -432,34 +500,7 @@ class ZipStreamTest extends TestCase
         $tmpDir = $this->validateAndExtractZip($tmp);
 
         $files = $this->getRecursiveFileList($tmpDir);
-        $this->assertSame(['sample.json'], $files);
-        $this->assertStringEqualsFile($tmpDir . '/sample.json', $body);
-    }
-
-    public function testAddFileFromPsr7StreamWithOutputToPsr7Stream(): void
-    {
-        [$tmp, $resource] = $this->getTmpFileStream();
-        $psr7OutputStream = new Stream($resource);
-
-        $options = new ArchiveOptions();
-        $options->setOutputStream($psr7OutputStream);
-
-        $zip = new ZipStream(null, $options);
-
-        $body = 'Sample String Data';
-        $response = new Response(200, [], $body);
-
-        $fileOptions = new FileOptions();
-        $fileOptions->setMethod(Method::STORE());
-
-        $zip->addFileFromPsr7Stream('sample.json', $response->getBody(), $fileOptions);
-        $zip->finish();
-        $psr7OutputStream->close();
-
-        $tmpDir = $this->validateAndExtractZip($tmp);
-        $files = $this->getRecursiveFileList($tmpDir);
-
-        $this->assertSame(['sample.json'], $files);
+        $this->assertEquals(array('sample.json'), $files);
         $this->assertStringEqualsFile($tmpDir . '/sample.json', $body);
     }
 
@@ -488,7 +529,7 @@ class ZipStreamTest extends TestCase
         $tmpDir = $this->validateAndExtractZip($tmp);
 
         $files = $this->getRecursiveFileList($tmpDir);
-        $this->assertSame(['sample.json'], $files);
+        $this->assertEquals(array('sample.json'), $files);
         $this->assertStringEqualsFile($tmpDir . '/sample.json', $body);
     }
 
@@ -511,7 +552,7 @@ class ZipStreamTest extends TestCase
         $tmpDir = $this->validateAndExtractZip($tmp);
 
         $files = $this->getRecursiveFileList($tmpDir);
-        $this->assertSame(['sample.txt', 'test' . DIRECTORY_SEPARATOR . 'sample.txt'], $files);
+        $this->assertEquals(['sample.txt', 'test/sample.txt'], $files);
 
         $this->assertStringEqualsFile($tmpDir . '/sample.txt', 'Sample String Data');
         $this->assertStringEqualsFile($tmpDir . '/test/sample.txt', 'More Simple Sample Data');
@@ -521,7 +562,7 @@ class ZipStreamTest extends TestCase
     {
         // WORKAROUND (1/2): remove phpunit's output buffer in order to run test without any buffering
         ob_end_flush();
-        $this->assertSame(0, ob_get_level());
+        $this->assertEquals(0, ob_get_level());
 
         [$tmp, $stream] = $this->getTmpFileStream();
 
@@ -542,109 +583,4 @@ class ZipStreamTest extends TestCase
         // WORKAROUND (2/2): add back output buffering so that PHPUnit doesn't complain that it is missing
         ob_start();
     }
-
-    /**
-     * @return array
-     */
-    protected function getTmpFileStream(): array
-    {
-        $tmp = tempnam(sys_get_temp_dir(), 'zipstreamtest');
-        $stream = fopen($tmp, 'wb+');
-
-        return [$tmp, $stream];
-    }
-
-    /**
-     * @param string $tmp
-     * @return string
-     */
-    protected function validateAndExtractZip($tmp): string
-    {
-        $tmpDir = $this->getTmpDir();
-
-        $zipArch = new ZipArchive();
-        $res = $zipArch->open($tmp);
-
-        if ($res !== true) {
-            $this->fail("Failed to open {$tmp}. Code: $res");
-
-            return $tmpDir;
-        }
-
-        $this->assertSame(0, $zipArch->status);
-        $this->assertSame(0, $zipArch->statusSys);
-
-        $zipArch->extractTo($tmpDir);
-        $zipArch->close();
-
-        return $tmpDir;
-    }
-
-    protected function getTmpDir(): string
-    {
-        $tmp = tempnam(sys_get_temp_dir(), 'zipstreamtest');
-        unlink($tmp);
-        mkdir($tmp) or $this->fail('Failed to make directory');
-
-        return $tmp;
-    }
-
-    /**
-     * @param string $path
-     * @return string[]
-     */
-    protected function getRecursiveFileList(string $path): array
-    {
-        $data = [];
-        $path = (string)realpath($path);
-        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
-
-        $pathLen = strlen($path);
-        foreach ($files as $file) {
-            $filePath = $file->getRealPath();
-            if (!is_dir($filePath)) {
-                $data[] = substr($filePath, $pathLen + 1);
-            }
-        }
-
-        sort($data);
-
-        return $data;
-    }
-
-    protected function addLargeFileFileFromPath($method, $zeroHeader, $zip64): void
-    {
-        [$tmp, $stream] = $this->getTmpFileStream();
-
-        $options = new ArchiveOptions();
-        $options->setOutputStream($stream);
-        $options->setLargeFileMethod($method);
-        $options->setLargeFileSize(5);
-        $options->setZeroHeader($zeroHeader);
-        $options->setEnableZip64($zip64);
-
-        $zip = new ZipStream(null, $options);
-
-        [$tmpExample, $streamExample] = $this->getTmpFileStream();
-        for ($i = 0; $i <= 10000; $i++) {
-            fwrite($streamExample, sha1((string)$i));
-            if ($i % 100 === 0) {
-                fwrite($streamExample, "\n");
-            }
-        }
-        fclose($streamExample);
-        $shaExample = sha1_file($tmpExample);
-        $zip->addFileFromPath('sample.txt', $tmpExample);
-        unlink($tmpExample);
-
-        $zip->finish();
-        fclose($stream);
-
-        $tmpDir = $this->validateAndExtractZip($tmp);
-
-        $files = $this->getRecursiveFileList($tmpDir);
-        $this->assertSame(['sample.txt'], $files);
-
-        $this->assertSame(sha1_file($tmpDir . '/sample.txt'), $shaExample, "SHA-1 Mismatch Method: {$method}");
-    }
 }

+ 0 - 1
include/vendor/maennchen/zipstream-php/test/bootstrap.php

@@ -1,5 +1,4 @@
 <?php
-
 declare(strict_types=1);
 
 date_default_timezone_set('UTC');

+ 6 - 7
include/vendor/maennchen/zipstream-php/test/bug/BugHonorFileTimeTest.php

@@ -1,19 +1,18 @@
 <?php
-
 declare(strict_types=1);
 
 namespace BugHonorFileTimeTest;
 
 use DateTime;
-
-use function fopen;
-
 use PHPUnit\Framework\TestCase;
-use ZipStream\Option\Archive;
-use ZipStream\Option\File;
-
+use ZipStream\Option\{
+    Archive,
+    File
+};
 use ZipStream\ZipStream;
 
+use function fopen;
+
 /**
  * Asserts that specified last-modified timestamps are not overwritten when a
  * file is added

+ 8 - 279
include/vendor/phpoffice/phpspreadsheet/CHANGELOG.md

@@ -5,277 +5,6 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com)
 and this project adheres to [Semantic Versioning](https://semver.org).
 
-# 2024-12-26 - 1.29.7
-
-### Deprecated
-
-- Drawing::setIsUrl is unneeded. The property is set when setPath determines whether path is a url.
-
-### Fixed
-
-- More context options may be needed for http(s) image. Backport of [PR #4276](https://github.com/PHPOffice/PhpSpreadsheet/pull/4276)
-- Backported security patches for Samples.
-- Backported security patches for Html Writer.
-
-## 1.29.6 - 2024-12-08
-
-### Fixed
-
-- Fix Minor Break Handling Drawings. Backport of [PR #4244](https://github.com/PHPOffice/PhpSpreadsheet/pull/4244)
-- Upgrade locked version of Tcpdf (security advisory).
-- Upgrade locked version of Dompdf (Php8.4 compatibility).
-- Remove unnecessary files from Composer package.
-
-## 1.29.5 - 2024-11-22
-
-### Changed
-
-- Settings::libXmlLoaderOptions is ignored. Backport of [PR #4233](https://github.com/PHPOffice/PhpSpreadsheet/pull/4233)
-
-### Deprecated
-
-- Settings::setLibXmlLoaderOptions() and Settings::getLibXmlLoaderOptions() are no longer needed - no replacement.
-
-## 1.29.4 - 2024-11-10
-
-### Fixed
-
-- 1.29.3 omitted
-- Backported security patches.
-- Write ignoredErrors Tag Before Drawings. Backport of [PR #4212](https://github.com/PHPOffice/PhpSpreadsheet/pull/4212) intended for 3.4.0.
-- Changes to ROUNDDOWN/ROUNDUP/TRUNC. Backport of [PR #4214](https://github.com/PHPOffice/PhpSpreadsheet/pull/4214) intended for 3.4.0.
-- Replace str_starts_with in Drawing. [Issue #4215](https://github.com/PHPOffice/PhpSpreadsheet/issues/4215)
-
-### Added
-
-- Method to Test Whether Csv Will Be Affected by Php9. Backport of [PR #4189](https://github.com/PHPOffice/PhpSpreadsheet/pull/4189)  intended for 3.4.0.
-
-## 1.29.2 - 2024-09-29
-
-### Fixed
-
-- Backported security patches.
-- Support for Php8.4.
-- Change to Csv Reader (see below under Deprecated). Backport of PR #4162 intended for 3.0.0. [Issue #4161](https://github.com/PHPOffice/PhpSpreadsheet/issues/4161)
-- Tweaks to ROUNDUP, ROUNDDOWN, TRUNC, AMORDEGRC (results had been different under 8.4).
-
-### Changed
-
-- Images will not be added to spreadsheet if they cannot be validated as images.
-
-### Deprecated
-
-- Php8.4 will deprecate the escape parameter of fgetcsv. Csv Reader is affected by this; code is changed to be unaffected, but this will mean a breaking change is coming with Php9. Any code which uses the default escape value of backslash will fail in Php9. It is recommended to explicitly set the escape value to null string before then.
-
-## 1.29.1 - 2024-09-03
-
-### Fixed
-
-- Backported security patches.
-
-## 1.29.0 - 2023-06-15
-
-### Added
-
-- Wizards for defining Number Format masks for Dates and Times, including Durations/Intervals. [PR #3458](https://github.com/PHPOffice/PhpSpreadsheet/pull/3458)
-- Specify data type in html tags. [Issue #3444](https://github.com/PHPOffice/PhpSpreadsheet/issues/3444) [PR #3445](https://github.com/PHPOffice/PhpSpreadsheet/pull/3445)
-- Provide option to ignore hidden rows/columns in `toArray()` methods. [PR #3494](https://github.com/PHPOffice/PhpSpreadsheet/pull/3494)
-- Font/Effects/Theme support for Chart Data Labels and Axis. [PR #3476](https://github.com/PHPOffice/PhpSpreadsheet/pull/3476)
-- Font Themes support. [PR #3486](https://github.com/PHPOffice/PhpSpreadsheet/pull/3486)
-- Ability to Ignore Cell Errors in Excel. [Issue #1141](https://github.com/PHPOffice/PhpSpreadsheet/issues/1141) [PR #3508](https://github.com/PHPOffice/PhpSpreadsheet/pull/3508)
-- Unzipped Gnumeric file [PR #3591](https://github.com/PHPOffice/PhpSpreadsheet/pull/3591)
-
-### Changed
-
-- Xlsx Color schemes read in will be written out (previously Excel 2007-2010 Color scheme was always written); manipulation of those schemes before write, including restoring prior behavior, is provided [PR #3476](https://github.com/PHPOffice/PhpSpreadsheet/pull/3476)
-- Memory and speed optimisations for Read Filters with Xlsx Files and Shared Formulae. [PR #3474](https://github.com/PHPOffice/PhpSpreadsheet/pull/3474)
-- Allow `CellRange` and `CellAddress` objects for the `range` argument in the `rangeToArray()` method. [PR #3494](https://github.com/PHPOffice/PhpSpreadsheet/pull/3494)
-- Stock charts will now read and reproduce `upDownBars` and subsidiary tags; these were previously ignored on read and hard-coded on write. [PR #3515](https://github.com/PHPOffice/PhpSpreadsheet/pull/3515)
-
-### Deprecated
-
-- Nothing
-
-### Removed
-
-- Nothing
-
-### Fixed
-
-- Updates Cell formula absolute ranges/references, and Defined Name absolute ranges/references when inserting/deleting rows/columns. [Issue #3368](https://github.com/PHPOffice/PhpSpreadsheet/issues/3368) [PR #3402](https://github.com/PHPOffice/PhpSpreadsheet/pull/3402)
-- EOMONTH() and EDATE() Functions should round date value before evaluation. [Issue #3436](https://github.com/PHPOffice/PhpSpreadsheet/issues/3436) [PR #3437](https://github.com/PHPOffice/PhpSpreadsheet/pull/3437)
-- NETWORKDAYS function erroneously being converted to NETWORK_xlfn.DAYS in Xlsx Writer. [Issue #3461](https://github.com/PHPOffice/PhpSpreadsheet/issues/3461) [PR #3463](https://github.com/PHPOffice/PhpSpreadsheet/pull/3463)
-- Getting a style for a CellAddress instance fails if the worksheet is set in the CellAddress instance. [Issue #3439](https://github.com/PHPOffice/PhpSpreadsheet/issues/3439) [PR #3469](https://github.com/PHPOffice/PhpSpreadsheet/pull/3469)
-- Shared Formulae outside the filter range when reading with a filter are not always being identified. [Issue #3473](https://github.com/PHPOffice/PhpSpreadsheet/issues/3473) [PR #3474](https://github.com/PHPOffice/PhpSpreadsheet/pull/3474)
-- Xls Reader Conditional Styles. [PR #3400](https://github.com/PHPOffice/PhpSpreadsheet/pull/3400)
-- Allow use of # and 0 digit placeholders in fraction masks. [PR #3401](https://github.com/PHPOffice/PhpSpreadsheet/pull/3401)
-- Modify Date/Time check in the NumberFormatter for decimal/fractional times. [PR #3413](https://github.com/PHPOffice/PhpSpreadsheet/pull/3413)
-- Misplaced Xml Writing Chart Label FillColor. [Issue #3397](https://github.com/PHPOffice/PhpSpreadsheet/issues/3397) [PR #3404](https://github.com/PHPOffice/PhpSpreadsheet/pull/3404)
-- TEXT function ignores Time in DateTimeStamp. [Issue #3409](https://github.com/PHPOffice/PhpSpreadsheet/issues/3409) [PR #3411](https://github.com/PHPOffice/PhpSpreadsheet/pull/3411)
-- Xlsx Column Autosize Approximate for CJK. [Issue #3405](https://github.com/PHPOffice/PhpSpreadsheet/issues/3405) [PR #3416](https://github.com/PHPOffice/PhpSpreadsheet/pull/3416)
-- Correct Xlsx Parsing of quotePrefix="0". [Issue #3435](https://github.com/PHPOffice/PhpSpreadsheet/issues/3435) [PR #3438](https://github.com/PHPOffice/PhpSpreadsheet/pull/3438)
-- More Display Options for Chart Axis and Legend. [Issue #3414](https://github.com/PHPOffice/PhpSpreadsheet/issues/3414) [PR #3434](https://github.com/PHPOffice/PhpSpreadsheet/pull/3434)
-- Apply strict type checking to Complex suffix. [PR #3452](https://github.com/PHPOffice/PhpSpreadsheet/pull/3452)
-- Incorrect Font Color Read Xlsx Rich Text Indexed Color Custom Palette. [Issue #3464](https://github.com/PHPOffice/PhpSpreadsheet/issues/3464) [PR #3465](https://github.com/PHPOffice/PhpSpreadsheet/pull/3465)
-- Xlsx Writer Honor Alignment in Default Font. [Issue #3443](https://github.com/PHPOffice/PhpSpreadsheet/issues/3443) [PR #3459](https://github.com/PHPOffice/PhpSpreadsheet/pull/3459)
-- Support Border for Charts. [PR #3462](https://github.com/PHPOffice/PhpSpreadsheet/pull/3462)
-- Error in "this row" structured reference calculation (cached result from first row when using a range) [Issue #3504](https://github.com/PHPOffice/PhpSpreadsheet/issues/3504) [PR #3505](https://github.com/PHPOffice/PhpSpreadsheet/pull/3505)
-- Allow colour palette index references in Number Format masks [Issue #3511](https://github.com/PHPOffice/PhpSpreadsheet/issues/3511) [PR #3512](https://github.com/PHPOffice/PhpSpreadsheet/pull/3512)
-- Xlsx Reader formula with quotePrefix [Issue #3495](https://github.com/PHPOffice/PhpSpreadsheet/issues/3495) [PR #3497](https://github.com/PHPOffice/PhpSpreadsheet/pull/3497)
-- Handle REF error as part of range [Issue #3453](https://github.com/PHPOffice/PhpSpreadsheet/issues/3453) [PR #3467](https://github.com/PHPOffice/PhpSpreadsheet/pull/3467)
-- Handle Absolute Pathnames in Rels File [Issue #3553](https://github.com/PHPOffice/PhpSpreadsheet/issues/3553) [PR #3554](https://github.com/PHPOffice/PhpSpreadsheet/pull/3554)
-- Return Page Breaks in Order [Issue #3552](https://github.com/PHPOffice/PhpSpreadsheet/issues/3552) [PR #3555](https://github.com/PHPOffice/PhpSpreadsheet/pull/3555)
-- Add position attribute for MemoryDrawing in Html [Issue #3529](https://github.com/PHPOffice/PhpSpreadsheet/issues/3529 [PR #3535](https://github.com/PHPOffice/PhpSpreadsheet/pull/3535)
-- Allow Index_number as Array for VLOOKUP/HLOOKUP [Issue #3561](https://github.com/PHPOffice/PhpSpreadsheet/issues/3561 [PR #3570](https://github.com/PHPOffice/PhpSpreadsheet/pull/3570)
-- Add Unsupported Options in Xml Spreadsheet [Issue #3566](https://github.com/PHPOffice/PhpSpreadsheet/issues/3566 [Issue #3568](https://github.com/PHPOffice/PhpSpreadsheet/issues/3568 [Issue #3569](https://github.com/PHPOffice/PhpSpreadsheet/issues/3569 [PR #3567](https://github.com/PHPOffice/PhpSpreadsheet/pull/3567)
-- Changes to NUMBERVALUE, VALUE, DATEVALUE, TIMEVALUE [Issue #3574](https://github.com/PHPOffice/PhpSpreadsheet/issues/3574 [PR #3575](https://github.com/PHPOffice/PhpSpreadsheet/pull/3575)
-- Redo calculation of color tinting [Issue #3550](https://github.com/PHPOffice/PhpSpreadsheet/issues/3550) [PR #3580](https://github.com/PHPOffice/PhpSpreadsheet/pull/3580)
-- Accommodate Slash with preg_quote [PR #3582](https://github.com/PHPOffice/PhpSpreadsheet/pull/3582) [PR #3583](https://github.com/PHPOffice/PhpSpreadsheet/pull/3583) [PR #3584](https://github.com/PHPOffice/PhpSpreadsheet/pull/3584)
-- HyperlinkBase Property and Html Handling of Properties [Issue #3573](https://github.com/PHPOffice/PhpSpreadsheet/issues/3573) [PR #3589](https://github.com/PHPOffice/PhpSpreadsheet/pull/3589)
-- Improvements for Data Validation [Issue #3592](https://github.com/PHPOffice/PhpSpreadsheet/issues/3592) [Issue #3594](https://github.com/PHPOffice/PhpSpreadsheet/issues/3594) [PR #3605](https://github.com/PHPOffice/PhpSpreadsheet/pull/3605)
-
-## 1.28.0 - 2023-02-25
-
-### Added
-
-- Support for configuring a Chart Title's overlay [PR #3325](https://github.com/PHPOffice/PhpSpreadsheet/pull/3325)
-- Wizards for defining Number Format masks for Numbers, Percentages, Scientific, Currency and Accounting [PR #3334](https://github.com/PHPOffice/PhpSpreadsheet/pull/3334)
-- Support for fixed value divisor in fractional Number Format Masks [PR #3339](https://github.com/PHPOffice/PhpSpreadsheet/pull/3339)
-- Allow More Fonts/Fontnames for Exact Width Calculation [PR #3326](https://github.com/PHPOffice/PhpSpreadsheet/pull/3326) [Issue #3190](https://github.com/PHPOffice/PhpSpreadsheet/issues/3190)
-- Allow override of the Value Binder when setting a Cell value [PR #3361](https://github.com/PHPOffice/PhpSpreadsheet/pull/3361)
-
-### Changed
-
-- Improved handling for @ placeholder in Number Format Masks [PR #3344](https://github.com/PHPOffice/PhpSpreadsheet/pull/3344)
-- Improved handling for ? placeholder in Number Format Masks [PR #3394](https://github.com/PHPOffice/PhpSpreadsheet/pull/3394)
-- Improved support for locale settings and currency codes when matching formatted strings to numerics in the Calculation Engine [PR #3373](https://github.com/PHPOffice/PhpSpreadsheet/pull/3373) and [PR #3374](https://github.com/PHPOffice/PhpSpreadsheet/pull/3374) 
-- Improved support for locale settings and matching in the Advanced Value Binder [PR #3376](https://github.com/PHPOffice/PhpSpreadsheet/pull/3376)
-
-### Deprecated
-
-- Rationalisation of Pre-defined Currency Format Masks
-
-### Removed
-
-- Nothing
-
-### Fixed
-
-- Calculation Engine doesn't evaluate Defined Name when default cell A1 is quote-prefixed [Issue #3335](https://github.com/PHPOffice/PhpSpreadsheet/issues/3335) [PR #3336](https://github.com/PHPOffice/PhpSpreadsheet/pull/3336)
-- XLSX Writer - Array Formulas do not include function prefix [Issue #3337](https://github.com/PHPOffice/PhpSpreadsheet/issues/3337) [PR #3338](https://github.com/PHPOffice/PhpSpreadsheet/pull/3338)
-- Permit Max Column for Row Breaks [Issue #3143](https://github.com/PHPOffice/PhpSpreadsheet/issues/3143) [PR #3345](https://github.com/PHPOffice/PhpSpreadsheet/pull/3345)
-- AutoSize Columns should allow for dropdown icon when AutoFilter is for a Table [Issue #3356](https://github.com/PHPOffice/PhpSpreadsheet/issues/3356) [PR #3358](https://github.com/PHPOffice/PhpSpreadsheet/pull/3358) and for Center Alignment of Headers [Issue #3395](https://github.com/PHPOffice/PhpSpreadsheet/issues/3395) [PR #3399](https://github.com/PHPOffice/PhpSpreadsheet/pull/3399)
-- Decimal Precision for Scientific Number Format Mask [Issue #3381](https://github.com/PHPOffice/PhpSpreadsheet/issues/3381) [PR #3382](https://github.com/PHPOffice/PhpSpreadsheet/pull/3382)
-- Xls Writer Parser Handle Boolean Literals as Function Arguments [Issue #3369](https://github.com/PHPOffice/PhpSpreadsheet/issues/3369) [PR #3391](https://github.com/PHPOffice/PhpSpreadsheet/pull/3391)
-- Conditional Formatting Improvements for Xlsx [Issue #3370](https://github.com/PHPOffice/PhpSpreadsheet/issues/3370) [Issue #3202](https://github.com/PHPOffice/PhpSpreadsheet/issues/3302) [PR #3372](https://github.com/PHPOffice/PhpSpreadsheet/pull/3372)
-- Coerce Bool to Int for Mathematical Operations on Arrays [Issue #3389](https://github.com/PHPOffice/PhpSpreadsheet/issues/3389) [Issue #3396](https://github.com/PHPOffice/PhpSpreadsheet/issues/3396) [PR #3392](https://github.com/PHPOffice/PhpSpreadsheet/pull/3392)
-
-## 1.27.1 - 2023-02-08
-
-### Added
-
-- Nothing
-
-### Changed
-
-- Nothing
-
-### Deprecated
-
-- Nothing
-
-### Removed
-
-- Nothing
-
-### Fixed
-
-- Fix Composer --dev dependency issue with dealerdirect/phpcodesniffer-composer-installer renaming their `master` branch to `main`
-
-
-## 1.27.0 - 2023-01-24
-
-### Added
-
-- Option to specify a range of columns/rows for the Row/Column `isEmpty()` methods [PR #3315](https://github.com/PHPOffice/PhpSpreadsheet/pull/3315)
-- Option for Cell Iterator to return a null value or create and return a new cell when accessing a cell that doesn't exist [PR #3314](https://github.com/PHPOffice/PhpSpreadsheet/pull/3314)
-- Support for Structured References in the Calculation Engine [PR #3261](https://github.com/PHPOffice/PhpSpreadsheet/pull/3261)
-- Limited Support for Form Controls [PR #3130](https://github.com/PHPOffice/PhpSpreadsheet/pull/3130) [Issue #2396](https://github.com/PHPOffice/PhpSpreadsheet/issues/2396) [Issue #1770](https://github.com/PHPOffice/PhpSpreadsheet/issues/1770) [Issue #2388](https://github.com/PHPOffice/PhpSpreadsheet/issues/2388) [Issue #2904](https://github.com/PHPOffice/PhpSpreadsheet/issues/2904) [Issue #2661](https://github.com/PHPOffice/PhpSpreadsheet/issues/2661)
-
-### Changed
-
-- `toFormattedString` will now always return a string. This can affect the results of `toArray`, `namedRangeToArray`, and `rangeToArray`. [PR #3304](https://github.com/PHPOffice/PhpSpreadsheet/pull/3304)
-
-### Deprecated
-
-- Nothing
-
-### Removed
-
-- Shared/JAMA is removed. [PR #3260](https://github.com/PHPOffice/PhpSpreadsheet/pull/3260)
-
-### Fixed
-
-- Namespace-Aware Code for SheetViewOptions, SheetProtection [PR #3230](https://github.com/PHPOffice/PhpSpreadsheet/pull/3230)
-- Additional Method for XIRR if Newton-Raphson Doesn't Converge [Issue #689](https://github.com/PHPOffice/PhpSpreadsheet/issues/689) [PR #3262](https://github.com/PHPOffice/PhpSpreadsheet/pull/3262)
-- Better Handling of Composite Charts [Issue #2333](https://github.com/PHPOffice/PhpSpreadsheet/issues/2333) [PR #3265](https://github.com/PHPOffice/PhpSpreadsheet/pull/3265)
-- Update Column Reference for Columns Beginning with Y and Z [Issue #3263](https://github.com/PHPOffice/PhpSpreadsheet/issues/3263) [PR #3264](https://github.com/PHPOffice/PhpSpreadsheet/pull/3264)
-- Honor Fit to 1-Page Height Html/Pdf [Issue #3266](https://github.com/PHPOffice/PhpSpreadsheet/issues/3266) [PR #3279](https://github.com/PHPOffice/PhpSpreadsheet/pull/3279)
-- AND/OR/XOR Handling of Literal Strings [PR #3287](https://github.com/PHPOffice/PhpSpreadsheet/pull/3287)
-- Xls Reader Vertical Break and Writer Page Order [Issue #3305](https://github.com/PHPOffice/PhpSpreadsheet/issues/3305) [PR #3306](https://github.com/PHPOffice/PhpSpreadsheet/pull/3306)
-
-
-## 1.26.0 - 2022-12-21
-
-### Added
-
-- Extended flag options for the Reader `load()` and Writer `save()` methods
-- Apply Row/Column limits (1048576 and XFD) in ReferenceHelper [PR #3213](https://github.com/PHPOffice/PhpSpreadsheet/pull/3213)
-- Allow the creation of In-Memory Drawings from a string of binary image data, or from a stream. [PR #3157](https://github.com/PHPOffice/PhpSpreadsheet/pull/3157)
-- Xlsx Reader support for Pivot Tables [PR #2829](https://github.com/PHPOffice/PhpSpreadsheet/pull/2829)
-- Permit Date/Time Entered on Spreadsheet to be calculated as Float [Issue #1416](https://github.com/PHPOffice/PhpSpreadsheet/issues/1416) [PR #3121](https://github.com/PHPOffice/PhpSpreadsheet/pull/3121)
-
-### Changed
-
-- Nothing
-
-### Deprecated
-
-- Direct update of Calculation::suppressFormulaErrors is replaced with setter.
-- Font public static variable defaultColumnWidths replaced with constant DEFAULT_COLUMN_WIDTHS.
-- ExcelError public static variable errorCodes replaced with constant ERROR_CODES.
-- NumberFormat constant FORMAT_DATE_YYYYMMDD2 replaced with existing identical FORMAT_DATE_YYYYMMDD.
-
-### Removed
-
-- Nothing
-
-### Fixed
-
-- Fixed handling for `_xlws` prefixed functions from Office365 [Issue #3245](https://github.com/PHPOffice/PhpSpreadsheet/issues/3245) [PR #3247](https://github.com/PHPOffice/PhpSpreadsheet/pull/3247)
-- Conditionals formatting rules applied to rows/columns are removed [Issue #3184](https://github.com/PHPOffice/PhpSpreadsheet/issues/3184) [PR #3213](https://github.com/PHPOffice/PhpSpreadsheet/pull/3213)
-- Treat strings containing currency or accounting values as floats in Calculation Engine operations [Issue #3165](https://github.com/PHPOffice/PhpSpreadsheet/issues/3165) [PR #3189](https://github.com/PHPOffice/PhpSpreadsheet/pull/3189)
-- Treat strings containing percentage values as floats in Calculation Engine operations [Issue #3155](https://github.com/PHPOffice/PhpSpreadsheet/issues/3155) [PR #3156](https://github.com/PHPOffice/PhpSpreadsheet/pull/3156) and [PR #3164](https://github.com/PHPOffice/PhpSpreadsheet/pull/3164)
-- Xlsx Reader Accept Palette of Fewer than 64 Colors [Issue #3093](https://github.com/PHPOffice/PhpSpreadsheet/issues/3093) [PR #3096](https://github.com/PHPOffice/PhpSpreadsheet/pull/3096)
-- Use Locale-Independent Float Conversion for Xlsx Writer Custom Property [Issue #3095](https://github.com/PHPOffice/PhpSpreadsheet/issues/3095) [PR #3099](https://github.com/PHPOffice/PhpSpreadsheet/pull/3099)
-- Allow setting AutoFilter range on a single cell or row [Issue #3102](https://github.com/PHPOffice/PhpSpreadsheet/issues/3102) [PR #3111](https://github.com/PHPOffice/PhpSpreadsheet/pull/3111)
-- Xlsx Reader External Data Validations Flag Missing [Issue #2677](https://github.com/PHPOffice/PhpSpreadsheet/issues/2677) [PR #3078](https://github.com/PHPOffice/PhpSpreadsheet/pull/3078)
-- Reduces extra memory usage on `__destruct()` calls [PR #3092](https://github.com/PHPOffice/PhpSpreadsheet/pull/3092)
-- Additional properties for Trendlines [Issue #3011](https://github.com/PHPOffice/PhpSpreadsheet/issues/3011) [PR #3028](https://github.com/PHPOffice/PhpSpreadsheet/pull/3028)
-- Calculation suppressFormulaErrors fix [Issue #1531](https://github.com/PHPOffice/PhpSpreadsheet/issues/1531) [PR #3092](https://github.com/PHPOffice/PhpSpreadsheet/pull/3092)
-- Permit Date/Time Entered on Spreadsheet to be Calculated as Float [Issue #1416](https://github.com/PHPOffice/PhpSpreadsheet/issues/1416) [PR #3121](https://github.com/PHPOffice/PhpSpreadsheet/pull/3121)
-- Incorrect Handling of Data Validation Formula Containing Ampersand [Issue #3145](https://github.com/PHPOffice/PhpSpreadsheet/issues/3145) [PR #3146](https://github.com/PHPOffice/PhpSpreadsheet/pull/3146)
-- Xlsx Namespace Handling of Drawings, RowAndColumnAttributes, MergeCells [Issue #3138](https://github.com/PHPOffice/PhpSpreadsheet/issues/3138) [PR #3136](https://github.com/PHPOffice/PhpSpreadsheet/pull/3137)
-- Generation3 Copy With Image in Footer [Issue #3126](https://github.com/PHPOffice/PhpSpreadsheet/issues/3126) [PR #3140](https://github.com/PHPOffice/PhpSpreadsheet/pull/3140)
-- MATCH Function Problems with Int/Float Compare and Wildcards [Issue #3141](https://github.com/PHPOffice/PhpSpreadsheet/issues/3141) [PR #3142](https://github.com/PHPOffice/PhpSpreadsheet/pull/3142)
-- Fix ODS Read Filter on number-columns-repeated cell [Issue #3148](https://github.com/PHPOffice/PhpSpreadsheet/issues/3148) [PR #3149](https://github.com/PHPOffice/PhpSpreadsheet/pull/3149)
-- Problems Formatting Very Small and Very Large Numbers [Issue #3128](https://github.com/PHPOffice/PhpSpreadsheet/issues/3128) [PR #3152](https://github.com/PHPOffice/PhpSpreadsheet/pull/3152)
-- XlsxWrite preserve line styles for y-axis, not just x-axis [PR #3163](https://github.com/PHPOffice/PhpSpreadsheet/pull/3163)
-- Xlsx Namespace Handling of Drawings, RowAndColumnAttributes, MergeCells [Issue #3138](https://github.com/PHPOffice/PhpSpreadsheet/issues/3138) [PR #3137](https://github.com/PHPOffice/PhpSpreadsheet/pull/3137)
-- More Detail for Cyclic Error Messages [Issue #3169](https://github.com/PHPOffice/PhpSpreadsheet/issues/3169) [PR #3170](https://github.com/PHPOffice/PhpSpreadsheet/pull/3170)
-- Improved Documentation for Deprecations - many PRs [Issue #3162](https://github.com/PHPOffice/PhpSpreadsheet/issues/3162)
-
-
 ## 1.25.2 - 2022-09-25
 
 ### Added
@@ -332,7 +61,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
 
 ### Fixed
 
-- Fix update to defined names when inserting/deleting rows/columns [Issue #3076](https://github.com/PHPOffice/PhpSpreadsheet/issues/3076) [PR #3077](https://github.com/PHPOffice/PhpSpreadsheet/pull/3077)
+- Fix update to defined names when inserting/deleting rows/columns [Issue #3076](https://github.com/PHPOffice/PhpSpreadsheet/issues/3076) [PR #3077](https://github.com/PHPOffice/PhpSpreadsheet/pull/3077) 
 - Fix DataValidation sqRef when inserting/deleting rows/columns [Issue #3056](https://github.com/PHPOffice/PhpSpreadsheet/issues/3056) [PR #3074](https://github.com/PHPOffice/PhpSpreadsheet/pull/3074)
 - Named ranges not usable as anchors in OFFSET function [Issue #3013](https://github.com/PHPOffice/PhpSpreadsheet/issues/3013)
 - Fully flatten an array [Issue #2955](https://github.com/PHPOffice/PhpSpreadsheet/issues/2955) [PR #2956](https://github.com/PHPOffice/PhpSpreadsheet/pull/2956)
@@ -522,7 +251,7 @@ Note that this will be the last 1.x branch release before the 2.x release. We wi
 - Use color palette if supplied [Issue #2499](https://github.com/PHPOffice/PhpSpreadsheet/issues/2499) [PR #2595](https://github.com/PHPOffice/PhpSpreadsheet/pull/2595)
 - Xls reader treat drawing offsets as int rather than float [PR #2648](https://github.com/PHPOffice/PhpSpreadsheet/pull/2648)
 - Handle booleans in conditional styles properly [PR #2654](https://github.com/PHPOffice/PhpSpreadsheet/pull/2654)
-- Fix for reading files in the root directory of a ZipFile, which should not be prefixed by relative paths ("./") as dirname($filename) does by default.
+- Fix for reading files in the root directory of a ZipFile, which should not be prefixed by relative paths ("./") as dirname($filename) does by default. 
 - Fix invalid style of cells in empty columns with columnDimensions and rows with rowDimensions in added external sheet. [PR #2739](https://github.com/PHPOffice/PhpSpreadsheet/pull/2739)
 - Time Interval Formatting [Issue #2768](https://github.com/PHPOffice/PhpSpreadsheet/issues/2768) [PR #2772](https://github.com/PHPOffice/PhpSpreadsheet/pull/2772)
 
@@ -535,9 +264,9 @@ Note that this will be the last 1.x branch release before the 2.x release. We wi
 
 - Improved support for passing of array arguments to Excel function implementations to return array results (where appropriate). [Issue #2551](https://github.com/PHPOffice/PhpSpreadsheet/issues/2551)
 
-  This is the first stage in an ongoing process of adding array support to all appropriate function implementations,
+  This is the first stage in an ongoing process of adding array support to all appropriate function implementations, 
 - Support for the Excel365 Math/Trig SEQUENCE() function [PR #2536](https://github.com/PHPOffice/PhpSpreadsheet/pull/2536)
-- Support for the Excel365 Math/Trig RANDARRAY() function [PR #2540](https://github.com/PHPOffice/PhpSpreadsheet/pull/2540)
+- Support for the Excel365 Math/Trig RANDARRAY() function [PR #2540](https://github.com/PHPOffice/PhpSpreadsheet/pull/2540) 
 
   Note that the Spill Operator is not yet supported in the Calculation Engine; but this can still be useful for defining array constants.
 - Improved support for Conditional Formatting Rules [PR #2491](https://github.com/PHPOffice/PhpSpreadsheet/pull/2491)
@@ -551,7 +280,7 @@ Note that this will be the last 1.x branch release before the 2.x release. We wi
     - Expression
   - Provision of CF Wizards (for all the above listed rule types) to help create/modify CF Rules without having to manage all the combinations of types/operators, and the complexities of formula expressions, or the text/timePeriod attributes.
 
-    See [documentation](https://phpspreadsheet.readthedocs.io/en/latest/topics/conditional-formatting/) for details
+    See [documentation](https://phpspreadsheet.readthedocs.io/en/latest/topics/conditional-formatting/) for details 
 
   - Full support of the above CF Rules for the Xlsx Reader and Writer; even when the file being loaded has CF rules listed in the `<extLst><ext><ConditionalFormattings>` element for the worksheet rather than the `<ConditionalFormatting>` element.
   - Provision of a CellMatcher to identify if rules are matched for a cell, and which matching style will be applied.
@@ -741,7 +470,7 @@ Note that this will be the last 1.x branch release before the 2.x release. We wi
 - Xls Reader changing grey background to black in Excel template [Issue #2147](https://github.com/PHPOffice/PhpSpreadsheet/issues/2147) [PR #2156](https://github.com/PHPOffice/PhpSpreadsheet/pull/2156)
 - Column width and Row height styles in the Html Reader when the value includes a unit of measure [Issue #2145](https://github.com/PHPOffice/PhpSpreadsheet/issues/2145).
 - Data Validation flags not set correctly when reading XLSX files [Issue #2224](https://github.com/PHPOffice/PhpSpreadsheet/issues/2224) [PR #2225](https://github.com/PHPOffice/PhpSpreadsheet/pull/2225)
-- Reading XLSX files without styles.xml throws an exception [Issue #2246](https://github.com/PHPOffice/PhpSpreadsheet/issues/2246)
+- Reading XLSX files without styles.xml throws an exception [Issue #2246](https://github.com/PHPOffice/PhpSpreadsheet/issues/2246) 
 - Improved performance of `Style::applyFromArray()` when applied to several cells [PR #1785](https://github.com/PHPOffice/PhpSpreadsheet/issues/1785).
 - Improve XLSX parsing speed if no readFilter is applied (again) - [#772](https://github.com/PHPOffice/PhpSpreadsheet/issues/772)
 
@@ -806,7 +535,7 @@ Note that this will be the last 1.x branch release before the 2.x release. We wi
   `ABS()`, `ACOS()`, `ACOSH()`, `ASIN()`, `ASINH()`, `ATAN()`, `ATANH()`,
   `COS()`, `COSH()`, `DEGREES()` (rad2deg), `EXP()`, `LN()` (log), `LOG10()`,
   `RADIANS()` (deg2rad), `SIN()`, `SINH()`, `SQRT()`, `TAN()`, `TANH()`.
-
+  
   One TextData function is also affected: `REPT()` (str_repeat).
 - `formatAsDate` correctly matches language metadata, reverting c55272e
 - Formulae that previously crashed on sub function call returning excel error value now return said value.
@@ -1436,7 +1165,7 @@ Note that this will be the last 1.x branch release before the 2.x release. We wi
 - Ignore inlineStr type if formula element exists - @ncrypthic [#570](https://github.com/PHPOffice/PHPExcel/issues/570)
 - Excel 2007 Reader freezes because of conditional formatting - @rentalhost [#575](https://github.com/PHPOffice/PHPExcel/issues/575)
 - Readers will now parse files containing worksheet titles over 31 characters [#176](https://github.com/PHPOffice/PhpSpreadsheet/pull/176)
-- Fixed PHP8 deprecation warning for libxml_disable_entity_loader() [#1625](https://github.com/phpoffice/phpspreadsheet/pull/1625)
+- Fixed PHP8 deprecation warning for libxml_disable_entity_loader() [#1625](https://github.com/phpoffice/phpspreadsheet/pull/1625) 
 
 ### General
 

+ 7 - 32
include/vendor/phpoffice/phpspreadsheet/CONTRIBUTING.md

@@ -2,44 +2,19 @@
 
 If you would like to contribute, here are some notes and guidelines:
 
- - All new development should be on feature/fix branches, which are then merged to the `master` branch once stable and approved; so the `master` branch is always the most up-to-date, working code
- - If you are going to submit a pull request, please fork from `master`, and submit your pull request back as a fix/feature branch referencing the GitHub issue number
- - The code must work with all PHP versions that we support (currently PHP 7.4 to PHP 8.2).
-   - You can call `composer versions` to test version compatibility. 
- - Code style should be maintained.
-   - `composer style` will identify any issues with Coding Style`.
-   - `composer fix` will fix most issues with Coding Style.
- - All code changes must be validated by `composer check`.
- - Please include Unit Tests to verify that a bug exists, and that this PR fixes it.
- - Please include Unit Tests to show that a new Feature works as expected.
- - Please don't "bundle" several changes into a single PR; submit a PR for each discrete change/fix.
- - Remember to update documentation if necessary.
-
+ - All new development happens on feature/fix branches, and are then merged to the `master` branch once stable; so the `master` branch is always the most up-to-date, working code
+ - Tagged releases are made from the `master` branch
+ - If you are going to be submitting a pull request, please fork from `master`, and submit your pull request back as a fix/feature branch referencing the GitHub issue number
+ - Code style might be automatically fixed by `composer fix`
+ - All code changes must be validated by `composer check`
  - [Helpful article about forking](https://help.github.com/articles/fork-a-repo/ "Forking a GitHub repository")
  - [Helpful article about pull requests](https://help.github.com/articles/using-pull-requests/ "Pull Requests")
 
-## Unit Tests
-
-When writing Unit Tests, please
- - Always try to write Unit Tests for both the happy and unhappy paths.
- - Put all assertions in the Test itself, not in an abstract class that the Test extends (even if this means code duplication between tests).
- - Include any necessary `setup()` and `tearDown()` in the Test itself.
- - If you change any global settings (such as system locale, or Compatibility Mode for Excel Function tests), make sure that you reset to the default in the `tearDown()`.
- - Use the `ExcelError` functions in assertions for Excel Error values in Excel Function implementations.
-   <br />Not only does it reduce the risk of typos; but at some point in the future, ExcelError values will be an object rather than a string, and we won't then need to update all the tests.
- - Don't over-complicate test code by testing happy and unhappy paths in the same test.
-
-This makes it easier to see exactly what is being tested when reviewing the PR. I want to be able to see it in the PR, not have to hunt in other unchanged classes to see what the test is doing.
-
 ## How to release
 
 1. Complete CHANGELOG.md and commit
 2. Create an annotated tag
     1. `git tag -a 1.2.3`
     2. Tag subject must be the version number, eg: `1.2.3`
-    3. Tag body must be a copy-paste of the changelog entries.
-3. Push the tag with `git push --tags`, GitHub Actions will create a GitHub release automatically, and the release details will automatically be sent to packagist.
-4. Github seems to remove markdown headings in the Release Notes, so you should edit to restore these.
-
-> **Note:** Tagged releases are made from the `master` branch. Only in an emergency should a tagged release be made from the `release` branch. (i.e. cherry-picked hot-fixes.)
-
+    3. Tag body must be a copy-paste of the changelog entries
+3. Push tag with `git push --tags`, GitHub Actions will create a GitHub release automatically

+ 9 - 49
include/vendor/phpoffice/phpspreadsheet/README.md

@@ -11,12 +11,12 @@
 PhpSpreadsheet is a library written in pure PHP and offers a set of classes that
 allow you to read and write various spreadsheet file formats such as Excel and LibreOffice Calc.
 
-## PHP Version Support
+## PHP version support
 
 LTS: Support for PHP versions will only be maintained for a period of six months beyond the
-[end of life](https://www.php.net/supported-versions) of that PHP version.
+[end of life of that PHP version](https://www.php.net/eol.php).
 
-Currently the required PHP minimum version is PHP __7.4__, and we [will support that version](https://www.php.net/eol.php) until 28th June 2023.
+Currently the required PHP minimum version is PHP __7.3__.
 
 See the `composer.json` for other requirements.
 
@@ -32,11 +32,11 @@ If you are building your installation on a development machine that is on a diff
 ```json
 {
     "require": {
-        "phpoffice/phpspreadsheet": "^1.28"
+        "phpoffice/phpspreadsheet": "^1.23"
     },
     "config": {
         "platform": {
-            "php": "7.4"
+            "php": "7.3"
         }
     }
 }
@@ -74,20 +74,16 @@ or the appropriate PDF Writer wrapper for the library that you have chosen to in
 For Chart export, we support following packages, which you will also need to install yourself using `composer require`
  - [jpgraph/jpgraph](https://packagist.org/packages/jpgraph/jpgraph) (this package was abandoned at version 4.0. 
    You can manually download the latest version that supports PHP 8 and above from [jpgraph.net](https://jpgraph.net/))
- - [mitoteam/jpgraph](https://packagist.org/packages/mitoteam/jpgraph) - up to date fork with modern PHP versions support and some bugs fixed.
+ - [mitoteam/jpgraph](https://packagist.org/packages/mitoteam/jpgraph) (fork with php 8.1 support)
 
 and then configure PhpSpreadsheet using:
 ```php
-// to use jpgraph/jpgraph
-Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\JpGraph::class);
+Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\JpGraph::class); // to use jpgraph/jpgraph
 //or
-// to use mitoteam/jpgraph
-Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\MtJpGraphRenderer::class);
+Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\MtJpGraphRenderer::class); // to use mitoteam/jpgraph
 ```
 
-One or the other of these libraries is necessary if you want to generate HTML or PDF files that include charts; or to render a Chart to an Image format from within your code.
-They are not necessary to define charts for writing to `Xlsx` files.
-Other file formats don't support writing Charts.
+One or the other of these libraries is necessary if you want to generate HTML or PDF files that include charts.
 
 ## Documentation
 
@@ -95,42 +91,6 @@ Read more about it, including install instructions, in the [official documentati
 
 Please ask your support questions on [StackOverflow](https://stackoverflow.com/questions/tagged/phpspreadsheet), or have a quick chat on [Gitter](https://gitter.im/PHPOffice/PhpSpreadsheet).
 
-## Patreon
-
-I am now running a [Patreon](https://www.patreon.com/MarkBaker) to support the work that I do on PhpSpreadsheet.
-
-Supporters will receive access to articles about working with PhpSpreadsheet, and how to use some of its more advanced features.
-
-Posts already available to Patreon supporters:
- - The Dating Game
-   - A  look at how MS Excel (and PhpSpreadsheet) handle date and time values.
-- Looping the Loop
-    - Advice on Iterating through the rows and cells in a worksheet.
-
-And for Patrons at levels actively using PhpSpreadsheet:
- - Behind the Mask
-   - A look at Number Format Masks.
-
-The Next Article (currently Work in Progress):
- - Formula for Success
-   - How to debug formulae that don't produce the expected result.
-
-
-My aim is to post at least one article each month, taking a detailed look at some feature of MS Excel and how to use that feature in PhpSpreadsheet, or on how to perform different activities in PhpSpreadsheet.
-
-Planned posts for the future include topics like:
- - Tables
- - Structured References
- - AutoFiltering
- - Array Formulae
- - Conditional Formatting
- - Data Validation
- - Value Binders
- - Images
- - Charts
-
-After a period of six months exclusive to Patreon supporters, articles will be incorporated into the public documentation for the library.
-
 ## PHPExcel vs PhpSpreadsheet ?
 
 PhpSpreadsheet is the next version of PHPExcel. It breaks compatibility to dramatically improve the code base quality (namespaces, PSR compliance, use of latest PHP language features, etc.).

+ 11 - 17
include/vendor/phpoffice/phpspreadsheet/composer.json

@@ -42,26 +42,20 @@
     ],
     "scripts": {
         "check": [
-            "phpcs src/ tests/ --report=checkstyle",
-            "phpcs --report-width=200 samples/ src/ tests/ --ignore=samples/Header.php --standard=PHPCompatibility --runtime-set testVersion 7.4- -n",
             "php-cs-fixer fix --ansi --dry-run --diff",
+            "phpcs",
             "phpunit --color=always",
-            "phpstan analyse --ansi --memory-limit=2048M"
-        ],
-        "style": [
-            "phpcs src/ tests/ --report=checkstyle",
-            "php-cs-fixer fix --ansi --dry-run --diff"
+            "phpstan analyse --ansi"
         ],
         "fix": [
-            "phpcbf src/ tests/ --report=checkstyle",
-            "php-cs-fixer fix"
+            "php-cs-fixer fix --ansi"
         ],
         "versions": [
-            "phpcs --report-width=200 samples/ src/ tests/ --ignore=samples/Header.php --standard=PHPCompatibility --runtime-set testVersion 7.4- -n"
+            "phpcs --report-width=200 samples/ src/ tests/ --ignore=samples/Header.php --standard=PHPCompatibility --runtime-set testVersion 7.3- -n"
         ]
     },
     "require": {
-        "php": "^7.4 || ^8.0",
+        "php": "^7.3 || ^8.0",
         "ext-ctype": "*",
         "ext-dom": "*",
         "ext-fileinfo": "*",
@@ -76,7 +70,7 @@
         "ext-zip": "*",
         "ext-zlib": "*",
         "ezyang/htmlpurifier": "^4.15",
-        "maennchen/zipstream-php": "^2.1 || ^3.0",
+        "maennchen/zipstream-php": "^2.1",
         "markbaker/complex": "^3.0",
         "markbaker/matrix": "^3.0",
         "psr/http-client": "^1.0",
@@ -84,17 +78,17 @@
         "psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
     },
     "require-dev": {
-        "dealerdirect/phpcodesniffer-composer-installer": "dev-main",
-        "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0",
+        "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+        "dompdf/dompdf": "^1.0 || ^2.0",
         "friendsofphp/php-cs-fixer": "^3.2",
-        "mitoteam/jpgraph": "^10.3",
-        "mpdf/mpdf": "^8.1.1",
+        "mitoteam/jpgraph": "10.2.4",
+        "mpdf/mpdf": "8.1.1",
         "phpcompatibility/php-compatibility": "^9.3",
         "phpstan/phpstan": "^1.1",
         "phpstan/phpstan-phpunit": "^1.0",
         "phpunit/phpunit": "^8.5 || ^9.0",
         "squizlabs/php_codesniffer": "^3.7",
-        "tecnickcom/tcpdf": "^6.5"
+        "tecnickcom/tcpdf": "6.5"
     },
     "suggest": {
         "ext-intl": "PHP Internationalization Functions",

ファイルの差分が大きいため隠しています
+ 267 - 536
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Calculation.php


+ 0 - 1
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Category.php

@@ -17,5 +17,4 @@ abstract class Category
     const CATEGORY_STATISTICAL = 'Statistical';
     const CATEGORY_TEXT_AND_DATA = 'Text and Data';
     const CATEGORY_WEB = 'Web';
-    const CATEGORY_UNCATEGORISED = 'Uncategorised';
 }

+ 43 - 33
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database.php

@@ -4,8 +4,6 @@ namespace PhpOffice\PhpSpreadsheet\Calculation;
 
 /**
  * @deprecated 1.17.0
- *
- * @codeCoverageIgnore
  */
 class Database
 {
@@ -17,9 +15,10 @@ class Database
      * Excel Function:
      *        DAVERAGE(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DAverage class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DAverage::evaluate()
+     *      Use the evaluate() method in the Database\DAverage class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -36,7 +35,7 @@ class Database
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return float|string
+     * @return null|float|string
      */
     public static function DAVERAGE($database, $field, $criteria)
     {
@@ -52,9 +51,10 @@ class Database
      * Excel Function:
      *        DCOUNT(database,[field],criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DCount class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DCount::evaluate()
+     *      Use the evaluate() method in the Database\DCount class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -71,7 +71,7 @@ class Database
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return int|string
+     * @return int
      *
      * @TODO    The field argument is optional. If field is omitted, DCOUNT counts all records in the
      *            database that match the criteria.
@@ -89,15 +89,16 @@ class Database
      * Excel Function:
      *        DCOUNTA(database,[field],criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DCountA class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DCountA::evaluate()
+     *      Use the evaluate() method in the Database\DCountA class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
      *                                        information are records, and columns of data are fields. The
      *                                        first row of the list contains labels for each column.
-     * @param int|string $field Indicates which column is used in the function. Enter the
+     * @param null|int|string $field Indicates which column is used in the function. Enter the
      *                                        column label enclosed between double quotation marks, such as
      *                                        "Age" or "Yield," or a number (without quotation marks) that
      *                                        represents the position of the column within the list: 1 for
@@ -108,7 +109,7 @@ class Database
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return int|string
+     * @return int
      */
     public static function DCOUNTA($database, $field, $criteria)
     {
@@ -124,9 +125,10 @@ class Database
      * Excel Function:
      *        DGET(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DGet class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DGet::evaluate()
+     *      Use the evaluate() method in the Database\DGet class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -159,9 +161,10 @@ class Database
      * Excel Function:
      *        DMAX(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DMax class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DMax::evaluate()
+     *      Use the evaluate() method in the Database\DMax class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -178,7 +181,7 @@ class Database
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return null|float|string
+     * @return float
      */
     public static function DMAX($database, $field, $criteria)
     {
@@ -194,9 +197,10 @@ class Database
      * Excel Function:
      *        DMIN(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DMin class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DMin::evaluate()
+     *      Use the evaluate() method in the Database\DMin class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -213,7 +217,7 @@ class Database
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return null|float|string
+     * @return float
      */
     public static function DMIN($database, $field, $criteria)
     {
@@ -228,9 +232,10 @@ class Database
      * Excel Function:
      *        DPRODUCT(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DProduct class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DProduct::evaluate()
+     *      Use the evaluate() method in the Database\DProduct class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -263,9 +268,10 @@ class Database
      * Excel Function:
      *        DSTDEV(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DStDev class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DStDev::evaluate()
+     *      Use the evaluate() method in the Database\DStDev class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -298,9 +304,10 @@ class Database
      * Excel Function:
      *        DSTDEVP(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DStDevP class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DStDevP::evaluate()
+     *      Use the evaluate() method in the Database\DStDevP class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -332,9 +339,10 @@ class Database
      * Excel Function:
      *        DSUM(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DSum class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DSum::evaluate()
+     *      Use the evaluate() method in the Database\DSum class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -351,7 +359,7 @@ class Database
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return null|float|string
+     * @return float|string
      */
     public static function DSUM($database, $field, $criteria)
     {
@@ -367,9 +375,10 @@ class Database
      * Excel Function:
      *        DVAR(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DVar class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DVar::evaluate()
+     *      Use the evaluate() method in the Database\DVar class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related
@@ -402,9 +411,10 @@ class Database
      * Excel Function:
      *        DVARP(database,field,criteria)
      *
-     * @deprecated 1.17.0
-     *      Use the evaluate() method in the Database\DVarP class instead
+     * @Deprecated 1.17.0
+     *
      * @see Database\DVarP::evaluate()
+     *      Use the evaluate() method in the Database\DVarP class instead
      *
      * @param mixed[] $database The range of cells that makes up the list or database.
      *                                        A database is a list of related data in which rows of related

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DAverage.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Averages;
 
 class DAverage extends DatabaseAbstract
@@ -30,13 +29,13 @@ class DAverage extends DatabaseAbstract
      *                              the column label in which you specify a condition for the
      *                              column.
      *
-     * @return float|string
+     * @return null|float|string
      */
     public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return ExcelError::VALUE();
+            return null;
         }
 
         return Averages::average(

+ 2 - 6
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DCount.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Counts;
 
 class DCount extends DatabaseAbstract
@@ -31,14 +30,11 @@ class DCount extends DatabaseAbstract
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return int|string
+     * @return int
      */
-    public static function evaluate($database, $field, $criteria, bool $returnError = true)
+    public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
-        if ($returnError && $field === null) {
-            return ExcelError::VALUE();
-        }
 
         return Counts::COUNT(
             self::getFilteredColumn($database, $field, $criteria)

+ 2 - 6
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DCountA.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Counts;
 
 class DCountA extends DatabaseAbstract
@@ -30,17 +29,14 @@ class DCountA extends DatabaseAbstract
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return int|string
+     * @return int
      */
     public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
-        if ($field === null) {
-            return ExcelError::VALUE();
-        }
 
         return Counts::COUNTA(
-            self::getFilteredColumn($database, $field, $criteria)
+            self::getFilteredColumn($database, $field ?? 0, $criteria)
         );
     }
 }

+ 1 - 1
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DGet.php

@@ -36,7 +36,7 @@ class DGet extends DatabaseAbstract
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return ExcelError::VALUE();
+            return null;
         }
 
         $columnData = self::getFilteredColumn($database, $field, $criteria);

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DMax.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Maximum;
 
 class DMax extends DatabaseAbstract
@@ -33,11 +32,11 @@ class DMax extends DatabaseAbstract
      *
      * @return null|float|string
      */
-    public static function evaluate($database, $field, $criteria, bool $returnError = true)
+    public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return $returnError ? ExcelError::VALUE() : null;
+            return null;
         }
 
         return Maximum::max(

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DMin.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Minimum;
 
 class DMin extends DatabaseAbstract
@@ -33,11 +32,11 @@ class DMin extends DatabaseAbstract
      *
      * @return null|float|string
      */
-    public static function evaluate($database, $field, $criteria, bool $returnError = true)
+    public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return $returnError ? ExcelError::VALUE() : null;
+            return null;
         }
 
         return Minimum::min(

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DProduct.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\MathTrig;
 
 class DProduct extends DatabaseAbstract
@@ -30,13 +29,13 @@ class DProduct extends DatabaseAbstract
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return float|string
+     * @return null|float|string
      */
     public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return ExcelError::VALUE();
+            return null;
         }
 
         return MathTrig\Operations::product(

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DStDev.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\StandardDeviations;
 
 class DStDev extends DatabaseAbstract
@@ -31,13 +30,13 @@ class DStDev extends DatabaseAbstract
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return float|string
+     * @return null|float|string
      */
     public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return ExcelError::VALUE();
+            return null;
         }
 
         return StandardDeviations::STDEV(

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DStDevP.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\StandardDeviations;
 
 class DStDevP extends DatabaseAbstract
@@ -31,13 +30,13 @@ class DStDevP extends DatabaseAbstract
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return float|string
+     * @return null|float|string
      */
     public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return ExcelError::VALUE();
+            return null;
         }
 
         return StandardDeviations::STDEVP(

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DSum.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\MathTrig;
 
 class DSum extends DatabaseAbstract
@@ -32,11 +31,11 @@ class DSum extends DatabaseAbstract
      *
      * @return null|float|string
      */
-    public static function evaluate($database, $field, $criteria, bool $returnNull = false)
+    public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return $returnNull ? null : ExcelError::VALUE();
+            return null;
         }
 
         return MathTrig\Sum::sumIgnoringStrings(

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DVar.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Variances;
 
 class DVar extends DatabaseAbstract
@@ -31,13 +30,13 @@ class DVar extends DatabaseAbstract
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return float|string (string if result is an error)
+     * @return null|float|string (string if result is an error)
      */
     public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return ExcelError::VALUE();
+            return null;
         }
 
         return Variances::VAR(

+ 2 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DVarP.php

@@ -2,7 +2,6 @@
 
 namespace PhpOffice\PhpSpreadsheet\Calculation\Database;
 
-use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Variances;
 
 class DVarP extends DatabaseAbstract
@@ -31,13 +30,13 @@ class DVarP extends DatabaseAbstract
      *                                        the column label in which you specify a condition for the
      *                                        column.
      *
-     * @return float|string (string if result is an error)
+     * @return null|float|string (string if result is an error)
      */
     public static function evaluate($database, $field, $criteria)
     {
         $field = self::fieldExtract($database, $field);
         if ($field === null) {
-            return ExcelError::VALUE();
+            return null;
         }
 
         return Variances::VARP(

+ 2 - 20
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Database/DatabaseAbstract.php

@@ -8,13 +8,6 @@ use PhpOffice\PhpSpreadsheet\Calculation\Internal\WildcardMatch;
 
 abstract class DatabaseAbstract
 {
-    /**
-     * @param array $database
-     * @param int|string $field
-     * @param array $criteria
-     *
-     * @return null|float|int|string
-     */
     abstract public static function evaluate($database, $field, $criteria);
 
     /**
@@ -34,19 +27,14 @@ abstract class DatabaseAbstract
      */
     protected static function fieldExtract(array $database, $field): ?int
     {
-        $field = strtoupper(Functions::flattenSingleValue($field) ?? '');
+        $field = strtoupper(Functions::flattenSingleValue($field ?? ''));
         if ($field === '') {
             return null;
         }
 
         $fieldNames = array_map('strtoupper', array_shift($database));
         if (is_numeric($field)) {
-            $field = (int) $field - 1;
-            if ($field < 0 || $field >= count($fieldNames)) {
-                return null;
-            }
-
-            return $field;
+            return ((int) $field) - 1;
         }
         $key = array_search($field, array_values($fieldNames), true);
 
@@ -124,9 +112,6 @@ abstract class DatabaseAbstract
         return (count($rowQuery) > 1) ? 'OR(' . implode(',', $rowQuery) . ')' : ($rowQuery[0] ?? '');
     }
 
-    /**
-     * @param mixed $criterion
-     */
     private static function buildCondition($criterion, string $criterionName): string
     {
         $ifCondition = Functions::ifCondition($criterion);
@@ -168,9 +153,6 @@ abstract class DatabaseAbstract
         return $database;
     }
 
-    /**
-     * @return mixed
-     */
     private static function processCondition(string $criterion, array $fields, array $dataValues, string $conditions)
     {
         $key = array_search($criterion, $fields, true);

+ 130 - 105
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTime.php

@@ -12,9 +12,10 @@ class DateTime
     /**
      * Identify if a year is a leap year or not.
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Helpers::isLeapYear()
      *      Use the isLeapYear method in the DateTimeExcel\Helpers class instead
-     * @see DateTimeExcel\Helpers::isLeapYear()
      *
      * @param int|string $year The year to test
      *
@@ -28,9 +29,10 @@ class DateTime
     /**
      * getDateValue.
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Helpers::getDateValue()
      *      Use the getDateValue method in the DateTimeExcel\Helpers class instead
-     * @see DateTimeExcel\Helpers::getDateValue()
      *
      * @param mixed $dateValue
      *
@@ -59,9 +61,10 @@ class DateTime
      * Excel Function:
      *        NOW()
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Current::now()
      *      Use the now method in the DateTimeExcel\Current class instead
-     * @see DateTimeExcel\Current::now()
      *
      * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
      *                        depending on the value of the ReturnDateType flag
@@ -85,9 +88,10 @@ class DateTime
      * Excel Function:
      *        TODAY()
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Current::today()
      *      Use the today method in the DateTimeExcel\Current class instead
-     * @see DateTimeExcel\Current::today()
      *
      * @return mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object,
      *                        depending on the value of the ReturnDateType flag
@@ -109,9 +113,10 @@ class DateTime
      * Excel Function:
      *        DATE(year,month,day)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Date::fromYMD()
      *      Use the fromYMD method in the DateTimeExcel\Date class instead
-     * @see DateTimeExcel\Date::fromYMD()
      *
      * PhpSpreadsheet is a lot more forgiving than MS Excel when passing non numeric values to this function.
      * A Month name or abbreviation (English only at this point) such as 'January' or 'Jan' will still be accepted,
@@ -167,9 +172,10 @@ class DateTime
      * Excel Function:
      *        TIME(hour,minute,second)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Time::fromHMS()
      *      Use the fromHMS method in the DateTimeExcel\Time class instead
-     * @see DateTimeExcel\Time::fromHMS()
      *
      * @param int $hour A number from 0 (zero) to 32767 representing the hour.
      *                                    Any value greater than 23 will be divided by 24 and the remainder
@@ -204,9 +210,10 @@ class DateTime
      * Excel Function:
      *        DATEVALUE(dateValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\DateValue::fromString()
      *      Use the fromString method in the DateTimeExcel\DateValue class instead
-     * @see DateTimeExcel\DateValue::fromString()
      *
      * @param string $dateValue Text that represents a date in a Microsoft Excel date format.
      *                                    For example, "1/30/2008" or "30-Jan-2008" are text strings within
@@ -238,9 +245,10 @@ class DateTime
      * Excel Function:
      *        TIMEVALUE(timeValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\TimeValue::fromString()
      *      Use the fromString method in the DateTimeExcel\TimeValue class instead
-     * @see DateTimeExcel\TimeValue::fromString()
      *
      * @param string $timeValue A text string that represents a time in any one of the Microsoft
      *                                    Excel time formats; for example, "6:45 PM" and "18:45" text strings
@@ -261,9 +269,10 @@ class DateTime
      * Excel Function:
      *        DATEDIF(startdate, enddate, unit)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Difference::interval()
      *      Use the interval method in the DateTimeExcel\Difference class instead
-     * @see DateTimeExcel\Difference::interval()
      *
      * @param mixed $startDate Excel date serial value, PHP date/time stamp, PHP DateTime object
      *                                    or a standard date string
@@ -286,9 +295,10 @@ class DateTime
      * Excel Function:
      *        DAYS(endDate, startDate)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Days::between()
      *      Use the between method in the DateTimeExcel\Days class instead
-     * @see DateTimeExcel\Days::between()
      *
      * @param array|DateTimeInterface|float|int|string $endDate Excel date serial value (float),
      * PHP date timestamp (integer), PHP DateTime object, or a standard date string
@@ -312,9 +322,10 @@ class DateTime
      * Excel Function:
      *        DAYS360(startDate,endDate[,method])
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Days360::between()
      *      Use the between method in the DateTimeExcel\Days360 class instead
-     * @see DateTimeExcel\Days360::between()
      *
      * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer),
      *                                        PHP DateTime object, or a standard date string
@@ -350,9 +361,10 @@ class DateTime
      * Excel Function:
      *        YEARFRAC(startDate,endDate[,method])
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\YearFrac::fraction()
      *      Use the fraction method in the DateTimeExcel\YearFrac class instead
-     * @see DateTimeExcel\YearFrac::fraction()
      *
      * See https://lists.oasis-open.org/archives/office-formula/200806/msg00039.html
      *     for description of algorithm used in Excel
@@ -386,9 +398,10 @@ class DateTime
      * Excel Function:
      *        NETWORKDAYS(startDate,endDate[,holidays[,holiday[,...]]])
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\NetworkDays::count()
      *      Use the count method in the DateTimeExcel\NetworkDays class instead
-     * @see DateTimeExcel\NetworkDays::count()
      *
      * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer),
      *                                            PHP DateTime object, or a standard date string
@@ -414,9 +427,10 @@ class DateTime
      * Excel Function:
      *        WORKDAY(startDate,endDays[,holidays[,holiday[,...]]])
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\WorkDay::date()
      *      Use the date method in the DateTimeExcel\WorkDay class instead
-     * @see DateTimeExcel\WorkDay::date()
      *
      * @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer),
      *                                        PHP DateTime object, or a standard date string
@@ -442,9 +456,10 @@ class DateTime
      * Excel Function:
      *        DAY(dateValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\DateParts::day()
      *      Use the day method in the DateTimeExcel\DateParts class instead
-     * @see DateTimeExcel\DateParts::day()
      *
      * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard date string
@@ -465,9 +480,10 @@ class DateTime
      * Excel Function:
      *        WEEKDAY(dateValue[,style])
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Week::day()
      *      Use the day method in the DateTimeExcel\Week class instead
-     * @see DateTimeExcel\Week::day()
      *
      * @param float|int|string $dateValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard date string
@@ -486,162 +502,162 @@ class DateTime
     /**
      * STARTWEEK_SUNDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_SUNDAY
-     * @see DateTimeExcel\Constants::STARTWEEK_SUNDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_SUNDAY instead
      */
     const STARTWEEK_SUNDAY = 1;
 
     /**
      * STARTWEEK_MONDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_MONDAY
-     * @see DateTimeExcel\Constants::STARTWEEK_MONDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_MONDAY instead
      */
     const STARTWEEK_MONDAY = 2;
 
     /**
      * STARTWEEK_MONDAY_ALT.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_MONDAY_ALT
-     * @see DateTimeExcel\Constants::STARTWEEK_MONDAY_ALT
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_MONDAY_ALT instead
      */
     const STARTWEEK_MONDAY_ALT = 11;
 
     /**
      * STARTWEEK_TUESDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_TUESDAY
-     * @see DateTimeExcel\Constants::STARTWEEK_TUESDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_TUESDAY instead
      */
     const STARTWEEK_TUESDAY = 12;
 
     /**
      * STARTWEEK_WEDNESDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_WEDNESDAY
-     * @see DateTimeExcel\Constants::STARTWEEK_WEDNESDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_WEDNESDAY instead
      */
     const STARTWEEK_WEDNESDAY = 13;
 
     /**
      * STARTWEEK_THURSDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_THURSDAY
-     * @see DateTimeExcel\Constants::STARTWEEK_THURSDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_THURSDAY instead
      */
     const STARTWEEK_THURSDAY = 14;
 
     /**
      * STARTWEEK_FRIDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_FRIDAY
-     * @see DateTimeExcel\Constants::STARTWEEK_FRIDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_FRIDAY instead
      */
     const STARTWEEK_FRIDAY = 15;
 
     /**
      * STARTWEEK_SATURDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_SATURDAY
-     * @see DateTimeExcel\Constants::STARTWEEK_SATURDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_SATURDAY instead
      */
     const STARTWEEK_SATURDAY = 16;
 
     /**
      * STARTWEEK_SUNDAY_ALT.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_SUNDAY_ALT
-     * @see DateTimeExcel\Constants::STARTWEEK_SUNDAY_ALT
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_SUNDAY_ALT instead
      */
     const STARTWEEK_SUNDAY_ALT = 17;
 
     /**
      * DOW_SUNDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::DOW_SUNDAY
-     * @see DateTimeExcel\Constants::DOW_SUNDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\DOW_SUNDAY instead
      */
     const DOW_SUNDAY = 1;
 
     /**
      * DOW_MONDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::DOW_MONDAY
-     * @see DateTimeExcel\Constants::DOW_MONDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\DOW_MONDAY instead
      */
     const DOW_MONDAY = 2;
 
     /**
      * DOW_TUESDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::DOW_TUESDAY
-     * @see DateTimeExcel\Constants::DOW_TUESDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\DOW_TUESDAY instead
      */
     const DOW_TUESDAY = 3;
 
     /**
      * DOW_WEDNESDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::DOW_WEDNESDAY
-     * @see DateTimeExcel\Constants::DOW_WEDNESDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\DOW_WEDNESDAY instead
      */
     const DOW_WEDNESDAY = 4;
 
     /**
      * DOW_THURSDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::DOW_THURSDAY
-     * @see DateTimeExcel\Constants::DOW_THURSDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\DOW_THURSDAY instead
      */
     const DOW_THURSDAY = 5;
 
     /**
      * DOW_FRIDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::DOW_FRIDAY
-     * @see DateTimeExcel\Constants::DOW_FRIDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\DOW_FRIDAY instead
      */
     const DOW_FRIDAY = 6;
 
     /**
      * DOW_SATURDAY.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::DOW_SATURDAY
-     * @see DateTimeExcel\Constants::DOW_SATURDAY
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\DOW_SATURDAY instead
      */
     const DOW_SATURDAY = 7;
 
     /**
      * STARTWEEK_MONDAY_ISO.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::STARTWEEK_MONDAY_ISO
-     * @see DateTimeExcel\Constants::STARTWEEK_MONDAY_ISO
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\STARTWEEK_MONDAY_ISO instead
      */
     const STARTWEEK_MONDAY_ISO = 21;
 
     /**
      * METHODARR.
      *
-     * @deprecated 1.18.0
-     *  Use DateTimeExcel\Constants::METHODARR
-     * @see DateTimeExcel\Constants::METHODARR
+     * @Deprecated 1.18.0
+     *
+     * @see Use DateTimeExcel\Constants\METHODARR instead
      */
     const METHODARR = [
         self::STARTWEEK_SUNDAY => self::DOW_SUNDAY,
@@ -669,9 +685,10 @@ class DateTime
      * Excel Function:
      *        WEEKNUM(dateValue[,style])
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Week::number(()
      *      Use the number method in the DateTimeExcel\Week class instead
-     * @see DateTimeExcel\Week::number()
      *
      * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard date string
@@ -689,7 +706,7 @@ class DateTime
      *
      * @return array|int|string Week Number
      */
-    public static function WEEKNUM($dateValue = 1, $method = /** @scrutinizer ignore-deprecated */ self::STARTWEEK_SUNDAY)
+    public static function WEEKNUM($dateValue = 1, $method = self::STARTWEEK_SUNDAY)
     {
         return DateTimeExcel\Week::number($dateValue, $method);
     }
@@ -702,9 +719,10 @@ class DateTime
      * Excel Function:
      *        ISOWEEKNUM(dateValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Week::isoWeekNumber()
      *      Use the isoWeekNumber method in the DateTimeExcel\Week class instead
-     * @see DateTimeExcel\Week::isoWeekNumber()
      *
      * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard date string
@@ -725,9 +743,10 @@ class DateTime
      * Excel Function:
      *        MONTH(dateValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\DateParts::month()
      *      Use the month method in the DateTimeExcel\DateParts class instead
-     * @see DateTimeExcel\DateParts::month()
      *
      * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard date string
@@ -748,9 +767,10 @@ class DateTime
      * Excel Function:
      *        YEAR(dateValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\DateParts::year()
      *      Use the ear method in the DateTimeExcel\DateParts class instead
-     * @see DateTimeExcel\DateParts::year()
      *
      * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard date string
@@ -771,9 +791,10 @@ class DateTime
      * Excel Function:
      *        HOUR(timeValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\TimeParts::hour()
      *      Use the hour method in the DateTimeExcel\TimeParts class instead
-     * @see DateTimeExcel\TimeParts::hour()
      *
      * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard time string
@@ -794,9 +815,10 @@ class DateTime
      * Excel Function:
      *        MINUTE(timeValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\TimeParts::minute()
      *      Use the minute method in the DateTimeExcel\TimeParts class instead
-     * @see DateTimeExcel\TimeParts::minute()
      *
      * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard time string
@@ -817,9 +839,10 @@ class DateTime
      * Excel Function:
      *        SECOND(timeValue)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\TimeParts::second()
      *      Use the second method in the DateTimeExcel\TimeParts class instead
-     * @see DateTimeExcel\TimeParts::second()
      *
      * @param mixed $timeValue Excel date serial value (float), PHP date timestamp (integer),
      *                                    PHP DateTime object, or a standard time string
@@ -842,9 +865,10 @@ class DateTime
      * Excel Function:
      *        EDATE(dateValue,adjustmentMonths)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Month::adjust()
      *      Use the adjust method in the DateTimeExcel\Edate class instead
-     * @see DateTimeExcel\Month::adjust()
      *
      * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
      *                                        PHP DateTime object, or a standard date string
@@ -870,9 +894,10 @@ class DateTime
      * Excel Function:
      *        EOMONTH(dateValue,adjustmentMonths)
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @See DateTimeExcel\Month::lastDay()
      *      Use the lastDay method in the DateTimeExcel\EoMonth class instead
-     * @see DateTimeExcel\Month::lastDay()
      *
      * @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer),
      *                                        PHP DateTime object, or a standard date string

+ 3 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Date.php

@@ -72,16 +72,16 @@ class Date
         $baseYear = SharedDateHelper::getExcelCalendar();
 
         try {
-            $year = self::getYear($year, $baseYear); // must be int - Scrutinizer is wrong
+            $year = self::getYear($year, $baseYear);
             $month = self::getMonth($month);
             $day = self::getDay($day);
-            self::adjustYearMonth(/** @scrutinizer ignore-type */ $year, $month, $baseYear);
+            self::adjustYearMonth($year, $month, $baseYear);
         } catch (Exception $e) {
             return $e->getMessage();
         }
 
         // Execute function
-        $excelDateValue = SharedDateHelper::formattedPHPToExcel(/** @scrutinizer ignore-type */ $year, $month, $day);
+        $excelDateValue = SharedDateHelper::formattedPHPToExcel($year, $month, $day);
 
         return Helpers::returnIn3FormatsFloat($excelDateValue);
     }

+ 1 - 6
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/DateValue.php

@@ -24,7 +24,7 @@ class DateValue
      * Excel Function:
      *        DATEVALUE(dateValue)
      *
-     * @param null|array|string $dateValue Text that represents a date in a Microsoft Excel date format.
+     * @param array|string $dateValue Text that represents a date in a Microsoft Excel date format.
      *                                    For example, "1/30/2008" or "30-Jan-2008" are text strings within
      *                                    quotation marks that represent dates. Using the default date
      *                                    system in Excel for Windows, date_text must represent a date from
@@ -45,11 +45,6 @@ class DateValue
             return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $dateValue);
         }
 
-        // try to parse as date iff there is at least one digit
-        if (is_string($dateValue) && preg_match('/\\d/', $dateValue) !== 1) {
-            return ExcelError::VALUE();
-        }
-
         $dti = new DateTimeImmutable();
         $baseYear = SharedDateHelper::getExcelCalendar();
         $dateValue = trim($dateValue ?? '', '"');

+ 4 - 4
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Difference.php

@@ -47,12 +47,12 @@ class Difference
         // Execute function
         $PHPStartDateObject = SharedDateHelper::excelToDateTimeObject($startDate);
         $startDays = (int) $PHPStartDateObject->format('j');
-        //$startMonths = (int) $PHPStartDateObject->format('n');
+        $startMonths = (int) $PHPStartDateObject->format('n');
         $startYears = (int) $PHPStartDateObject->format('Y');
 
         $PHPEndDateObject = SharedDateHelper::excelToDateTimeObject($endDate);
         $endDays = (int) $PHPEndDateObject->format('j');
-        //$endMonths = (int) $PHPEndDateObject->format('n');
+        $endMonths = (int) $PHPEndDateObject->format('n');
         $endYears = (int) $PHPEndDateObject->format('Y');
 
         $PHPDiffDateObject = $PHPEndDateObject->diff($PHPStartDateObject);
@@ -133,12 +133,12 @@ class Difference
             // Adjust end year to be as close as possible as start year
             while ($PHPEndDateObject >= $PHPStartDateObject) {
                 $PHPEndDateObject->modify('-1 year');
-                //$endYears = $PHPEndDateObject->format('Y');
+                $endYears = $PHPEndDateObject->format('Y');
             }
             $PHPEndDateObject->modify('+1 year');
 
             // Get the result
-            $retVal = (int) $PHPEndDateObject->diff($PHPStartDateObject)->days;
+            $retVal = $PHPEndDateObject->diff($PHPStartDateObject)->days;
 
             // Adjust for leap years cases
             $isLeapEndYear = $PHPEndDateObject->format('L');

+ 0 - 2
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/Month.php

@@ -45,7 +45,6 @@ class Month
         } catch (Exception $e) {
             return $e->getMessage();
         }
-        $dateValue = floor($dateValue);
         $adjustmentMonths = floor($adjustmentMonths);
 
         // Execute function
@@ -89,7 +88,6 @@ class Month
         } catch (Exception $e) {
             return $e->getMessage();
         }
-        $dateValue = floor($dateValue);
         $adjustmentMonths = floor($adjustmentMonths);
 
         // Execute function

+ 2 - 7
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/DateTimeExcel/TimeValue.php

@@ -25,7 +25,7 @@ class TimeValue
      * Excel Function:
      *        TIMEVALUE(timeValue)
      *
-     * @param null|array|string $timeValue A text string that represents a time in any one of the Microsoft
+     * @param array|string $timeValue A text string that represents a time in any one of the Microsoft
      *                                    Excel time formats; for example, "6:45 PM" and "18:45" text strings
      *                                    within quotation marks that represent time.
      *                                    Date information in time_text is ignored.
@@ -42,11 +42,6 @@ class TimeValue
             return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $timeValue);
         }
 
-        // try to parse as time iff there is at least one digit
-        if (is_string($timeValue) && preg_match('/\\d/', $timeValue) !== 1) {
-            return ExcelError::VALUE();
-        }
-
         $timeValue = trim($timeValue ?? '', '"');
         $timeValue = str_replace(['/', '.'], '-', $timeValue);
 
@@ -72,7 +67,7 @@ class TimeValue
             if ($retType === Functions::RETURNDATE_EXCEL) {
                 $retValue = (float) $excelDateValue;
             } elseif ($retType === Functions::RETURNDATE_UNIX_TIMESTAMP) {
-                $retValue = (int) SharedDateHelper::excelToTimestamp($excelDateValue + 25569) - 3600;
+                $retValue = (int) $phpDateValue = SharedDateHelper::excelToTimestamp($excelDateValue + 25569) - 3600;
             } else {
                 $retValue = new DateTime('1900-01-01 ' . $PHPDateArray['hour'] . ':' . $PHPDateArray['minute'] . ':' . $PHPDateArray['second']);
             }

+ 0 - 147
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/FormattedNumber.php

@@ -1,147 +0,0 @@
-<?php
-
-namespace PhpOffice\PhpSpreadsheet\Calculation\Engine;
-
-use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
-use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
-
-class FormattedNumber
-{
-    /**    Constants                */
-    /**    Regular Expressions        */
-    private const STRING_REGEXP_FRACTION = '~^\s*(-?)((\d*)\s+)?(\d+\/\d+)\s*$~';
-
-    private const STRING_REGEXP_PERCENT = '~^(?:(?: *(?<PrefixedSign>[-+])? *\% *(?<PrefixedSign2>[-+])? *(?<PrefixedValue>[0-9]+\.?[0-9*]*(?:E[-+]?[0-9]*)?) *)|(?: *(?<PostfixedSign>[-+])? *(?<PostfixedValue>[0-9]+\.?[0-9]*(?:E[-+]?[0-9]*)?) *\% *))$~i';
-
-    // preg_quoted string for major currency symbols, with a %s for locale currency
-    private const CURRENCY_CONVERSION_LIST = '\$€£¥%s';
-
-    private const STRING_CONVERSION_LIST = [
-        [self::class, 'convertToNumberIfNumeric'],
-        [self::class, 'convertToNumberIfFraction'],
-        [self::class, 'convertToNumberIfPercent'],
-        [self::class, 'convertToNumberIfCurrency'],
-    ];
-
-    /**
-     * Identify whether a string contains a formatted numeric value,
-     * and convert it to a numeric if it is.
-     *
-     * @param string $operand string value to test
-     */
-    public static function convertToNumberIfFormatted(string &$operand): bool
-    {
-        foreach (self::STRING_CONVERSION_LIST as $conversionMethod) {
-            if ($conversionMethod($operand) === true) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Identify whether a string contains a numeric value,
-     * and convert it to a numeric if it is.
-     *
-     * @param string $operand string value to test
-     */
-    public static function convertToNumberIfNumeric(string &$operand): bool
-    {
-        $thousandsSeparator = preg_quote(StringHelper::getThousandsSeparator(), '/');
-        $value = preg_replace(['/(\d)' . $thousandsSeparator . '(\d)/u', '/([+-])\s+(\d)/u'], ['$1$2', '$1$2'], trim($operand));
-        $decimalSeparator = preg_quote(StringHelper::getDecimalSeparator(), '/');
-        $value = preg_replace(['/(\d)' . $decimalSeparator . '(\d)/u', '/([+-])\s+(\d)/u'], ['$1.$2', '$1$2'], $value ?? '');
-
-        if (is_numeric($value)) {
-            $operand = (float) $value;
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Identify whether a string contains a fractional numeric value,
-     * and convert it to a numeric if it is.
-     *
-     * @param string $operand string value to test
-     */
-    public static function convertToNumberIfFraction(string &$operand): bool
-    {
-        if (preg_match(self::STRING_REGEXP_FRACTION, $operand, $match)) {
-            $sign = ($match[1] === '-') ? '-' : '+';
-            $wholePart = ($match[3] === '') ? '' : ($sign . $match[3]);
-            $fractionFormula = '=' . $wholePart . $sign . $match[4];
-            $operand = Calculation::getInstance()->_calculateFormulaValue($fractionFormula);
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Identify whether a string contains a percentage, and if so,
-     * convert it to a numeric.
-     *
-     * @param string $operand string value to test
-     */
-    public static function convertToNumberIfPercent(string &$operand): bool
-    {
-        $thousandsSeparator = preg_quote(StringHelper::getThousandsSeparator(), '/');
-        $value = preg_replace('/(\d)' . $thousandsSeparator . '(\d)/u', '$1$2', trim($operand));
-        $decimalSeparator = preg_quote(StringHelper::getDecimalSeparator(), '/');
-        $value = preg_replace(['/(\d)' . $decimalSeparator . '(\d)/u', '/([+-])\s+(\d)/u'], ['$1.$2', '$1$2'], $value ?? '');
-
-        $match = [];
-        if ($value !== null && preg_match(self::STRING_REGEXP_PERCENT, $value, $match, PREG_UNMATCHED_AS_NULL)) {
-            //Calculate the percentage
-            $sign = ($match['PrefixedSign'] ?? $match['PrefixedSign2'] ?? $match['PostfixedSign']) ?? '';
-            $operand = (float) ($sign . ($match['PostfixedValue'] ?? $match['PrefixedValue'])) / 100;
-
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Identify whether a string contains a currency value, and if so,
-     * convert it to a numeric.
-     *
-     * @param string $operand string value to test
-     */
-    public static function convertToNumberIfCurrency(string &$operand): bool
-    {
-        $currencyRegexp = self::currencyMatcherRegexp();
-        $thousandsSeparator = preg_quote(StringHelper::getThousandsSeparator(), '/');
-        $value = preg_replace('/(\d)' . $thousandsSeparator . '(\d)/u', '$1$2', $operand);
-
-        $match = [];
-        if ($value !== null && preg_match($currencyRegexp, $value, $match, PREG_UNMATCHED_AS_NULL)) {
-            //Determine the sign
-            $sign = ($match['PrefixedSign'] ?? $match['PrefixedSign2'] ?? $match['PostfixedSign']) ?? '';
-            $decimalSeparator = StringHelper::getDecimalSeparator();
-            //Cast to a float
-            $intermediate = (string) ($match['PostfixedValue'] ?? $match['PrefixedValue']);
-            $intermediate = str_replace($decimalSeparator, '.', $intermediate);
-            if (is_numeric($intermediate)) {
-                $operand = (float) ($sign . str_replace($decimalSeparator, '.', $intermediate));
-
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    public static function currencyMatcherRegexp(): string
-    {
-        $currencyCodes = sprintf(self::CURRENCY_CONVERSION_LIST, preg_quote(StringHelper::getCurrencyCode(), '/'));
-        $decimalSeparator = preg_quote(StringHelper::getDecimalSeparator(), '/');
-
-        return '~^(?:(?: *(?<PrefixedSign>[-+])? *(?<PrefixedCurrency>[' . $currencyCodes . ']) *(?<PrefixedSign2>[-+])? *(?<PrefixedValue>[0-9]+[' . $decimalSeparator . ']?[0-9*]*(?:E[-+]?[0-9]*)?) *)|(?: *(?<PostfixedSign>[-+])? *(?<PostfixedValue>[0-9]+' . $decimalSeparator . '?[0-9]*(?:E[-+]?[0-9]*)?) *(?<PostfixedCurrency>[' . $currencyCodes . ']) *))$~ui';
-    }
-}

+ 0 - 10
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/Operand.php

@@ -1,10 +0,0 @@
-<?php
-
-namespace PhpOffice\PhpSpreadsheet\Calculation\Engine\Operands;
-
-interface Operand
-{
-    public static function fromParser(string $formula, int $index, array $matches): self;
-
-    public function value(): string;
-}

+ 0 - 344
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engine/Operands/StructuredReference.php

@@ -1,344 +0,0 @@
-<?php
-
-namespace PhpOffice\PhpSpreadsheet\Calculation\Engine\Operands;
-
-use PhpOffice\PhpSpreadsheet\Calculation\Calculation;
-use PhpOffice\PhpSpreadsheet\Calculation\Exception;
-use PhpOffice\PhpSpreadsheet\Cell\Cell;
-use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
-use PhpOffice\PhpSpreadsheet\Worksheet\Table;
-
-final class StructuredReference implements Operand
-{
-    public const NAME = 'Structured Reference';
-
-    private const OPEN_BRACE = '[';
-    private const CLOSE_BRACE = ']';
-
-    private const ITEM_SPECIFIER_ALL = '#All';
-    private const ITEM_SPECIFIER_HEADERS = '#Headers';
-    private const ITEM_SPECIFIER_DATA = '#Data';
-    private const ITEM_SPECIFIER_TOTALS = '#Totals';
-    private const ITEM_SPECIFIER_THIS_ROW = '#This Row';
-
-    private const ITEM_SPECIFIER_ROWS_SET = [
-        self::ITEM_SPECIFIER_ALL,
-        self::ITEM_SPECIFIER_HEADERS,
-        self::ITEM_SPECIFIER_DATA,
-        self::ITEM_SPECIFIER_TOTALS,
-    ];
-
-    private const TABLE_REFERENCE = '/([\p{L}_\\\\][\p{L}\p{N}\._]+)?(\[(?:[^\]\[]+|(?R))*+\])/miu';
-
-    private string $value;
-
-    private string $tableName;
-
-    private Table $table;
-
-    private string $reference;
-
-    private ?int $headersRow;
-
-    private int $firstDataRow;
-
-    private int $lastDataRow;
-
-    private ?int $totalsRow;
-
-    private array $columns;
-
-    public function __construct(string $structuredReference)
-    {
-        $this->value = $structuredReference;
-    }
-
-    public static function fromParser(string $formula, int $index, array $matches): self
-    {
-        $val = $matches[0];
-
-        $srCount = substr_count($val, self::OPEN_BRACE)
-            - substr_count($val, self::CLOSE_BRACE);
-        while ($srCount > 0) {
-            $srIndex = strlen($val);
-            $srStringRemainder = substr($formula, $index + $srIndex);
-            $closingPos = strpos($srStringRemainder, self::CLOSE_BRACE);
-            if ($closingPos === false) {
-                throw new Exception("Formula Error: No closing ']' to match opening '['");
-            }
-            $srStringRemainder = substr($srStringRemainder, 0, $closingPos + 1);
-            --$srCount;
-            if (strpos($srStringRemainder, self::OPEN_BRACE) !== false) {
-                ++$srCount;
-            }
-            $val .= $srStringRemainder;
-        }
-
-        return new self($val);
-    }
-
-    /**
-     * @throws Exception
-     * @throws \PhpOffice\PhpSpreadsheet\Exception
-     */
-    public function parse(Cell $cell): string
-    {
-        $this->getTableStructure($cell);
-        $cellRange = ($this->isRowReference()) ? $this->getRowReference($cell) : $this->getColumnReference();
-
-        return $cellRange;
-    }
-
-    private function isRowReference(): bool
-    {
-        return strpos($this->value, '[@') !== false
-            || strpos($this->value, '[' . self::ITEM_SPECIFIER_THIS_ROW . ']') !== false;
-    }
-
-    /**
-     * @throws Exception
-     * @throws \PhpOffice\PhpSpreadsheet\Exception
-     */
-    private function getTableStructure(Cell $cell): void
-    {
-        preg_match(self::TABLE_REFERENCE, $this->value, $matches);
-
-        $this->tableName = $matches[1];
-        $this->table = ($this->tableName === '')
-            ? $this->getTableForCell($cell)
-            : $this->getTableByName($cell);
-        $this->reference = $matches[2];
-        $tableRange = Coordinate::getRangeBoundaries($this->table->getRange());
-
-        $this->headersRow = ($this->table->getShowHeaderRow()) ? (int) $tableRange[0][1] : null;
-        $this->firstDataRow = ($this->table->getShowHeaderRow()) ? (int) $tableRange[0][1] + 1 : $tableRange[0][1];
-        $this->totalsRow = ($this->table->getShowTotalsRow()) ? (int) $tableRange[1][1] : null;
-        $this->lastDataRow = ($this->table->getShowTotalsRow()) ? (int) $tableRange[1][1] - 1 : $tableRange[1][1];
-
-        $this->columns = $this->getColumns($cell, $tableRange);
-    }
-
-    /**
-     * @throws Exception
-     * @throws \PhpOffice\PhpSpreadsheet\Exception
-     */
-    private function getTableForCell(Cell $cell): Table
-    {
-        $tables = $cell->getWorksheet()->getTableCollection();
-        foreach ($tables as $table) {
-            /** @var Table $table */
-            $range = $table->getRange();
-            if ($cell->isInRange($range) === true) {
-                $this->tableName = $table->getName();
-
-                return $table;
-            }
-        }
-
-        throw new Exception('Table for Structured Reference cannot be identified');
-    }
-
-    /**
-     * @throws Exception
-     * @throws \PhpOffice\PhpSpreadsheet\Exception
-     */
-    private function getTableByName(Cell $cell): Table
-    {
-        $table = $cell->getWorksheet()->getTableByName($this->tableName);
-
-        if ($table === null) {
-            throw new Exception("Table {$this->tableName} for Structured Reference cannot be located");
-        }
-
-        return $table;
-    }
-
-    private function getColumns(Cell $cell, array $tableRange): array
-    {
-        $worksheet = $cell->getWorksheet();
-        $cellReference = $cell->getCoordinate();
-
-        $columns = [];
-        $lastColumn = ++$tableRange[1][0];
-        for ($column = $tableRange[0][0]; $column !== $lastColumn; ++$column) {
-            $columns[$column] = $worksheet
-                ->getCell($column . ($this->headersRow ?? ($this->firstDataRow - 1)))
-                ->getCalculatedValue();
-        }
-
-        $worksheet->getCell($cellReference);
-
-        return $columns;
-    }
-
-    private function getRowReference(Cell $cell): string
-    {
-        $reference = str_replace("\u{a0}", ' ', $this->reference);
-        /** @var string $reference */
-        $reference = str_replace('[' . self::ITEM_SPECIFIER_THIS_ROW . '],', '', $reference);
-
-        foreach ($this->columns as $columnId => $columnName) {
-            $columnName = str_replace("\u{a0}", ' ', $columnName);
-            $reference = $this->adjustRowReference($columnName, $reference, $cell, $columnId);
-        }
-
-        /** @var string $reference */
-        return $this->validateParsedReference(trim($reference, '[]@, '));
-    }
-
-    private function adjustRowReference(string $columnName, string $reference, Cell $cell, string $columnId): string
-    {
-        if ($columnName !== '') {
-            $cellReference = $columnId . $cell->getRow();
-            $pattern1 = '/\[' . preg_quote($columnName, '/') . '\]/miu';
-            $pattern2 = '/@' . preg_quote($columnName, '/') . '/miu';
-            if (preg_match($pattern1, $reference) === 1) {
-                $reference = preg_replace($pattern1, $cellReference, $reference);
-            } elseif (preg_match($pattern2, $reference) === 1) {
-                $reference = preg_replace($pattern2, $cellReference, $reference);
-            }
-            /** @var string $reference */
-        }
-
-        return $reference;
-    }
-
-    /**
-     * @throws Exception
-     * @throws \PhpOffice\PhpSpreadsheet\Exception
-     */
-    private function getColumnReference(): string
-    {
-        $reference = str_replace("\u{a0}", ' ', $this->reference);
-        $startRow = ($this->totalsRow === null) ? $this->lastDataRow : $this->totalsRow;
-        $endRow = ($this->headersRow === null) ? $this->firstDataRow : $this->headersRow;
-
-        [$startRow, $endRow] = $this->getRowsForColumnReference($reference, $startRow, $endRow);
-        $reference = $this->getColumnsForColumnReference($reference, $startRow, $endRow);
-
-        $reference = trim($reference, '[]@, ');
-        if (substr_count($reference, ':') > 1) {
-            $cells = explode(':', $reference);
-            $firstCell = array_shift($cells);
-            $lastCell = array_pop($cells);
-            $reference = "{$firstCell}:{$lastCell}";
-        }
-
-        return $this->validateParsedReference($reference);
-    }
-
-    /**
-     * @throws Exception
-     * @throws \PhpOffice\PhpSpreadsheet\Exception
-     */
-    private function validateParsedReference(string $reference): string
-    {
-        if (preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . ':' . Calculation::CALCULATION_REGEXP_CELLREF . '$/miu', $reference) !== 1) {
-            if (preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/miu', $reference) !== 1) {
-                throw new Exception(
-                    "Invalid Structured Reference {$this->reference} {$reference}",
-                    Exception::CALCULATION_ENGINE_PUSH_TO_STACK
-                );
-            }
-        }
-
-        return $reference;
-    }
-
-    private function fullData(int $startRow, int $endRow): string
-    {
-        $columns = array_keys($this->columns);
-        $firstColumn = array_shift($columns);
-        $lastColumn = (empty($columns)) ? $firstColumn : array_pop($columns);
-
-        return "{$firstColumn}{$startRow}:{$lastColumn}{$endRow}";
-    }
-
-    private function getMinimumRow(string $reference): int
-    {
-        switch ($reference) {
-            case self::ITEM_SPECIFIER_ALL:
-            case self::ITEM_SPECIFIER_HEADERS:
-                return $this->headersRow ?? $this->firstDataRow;
-            case self::ITEM_SPECIFIER_DATA:
-                return $this->firstDataRow;
-            case self::ITEM_SPECIFIER_TOTALS:
-                return $this->totalsRow ?? $this->lastDataRow;
-        }
-
-        return $this->headersRow ?? $this->firstDataRow;
-    }
-
-    private function getMaximumRow(string $reference): int
-    {
-        switch ($reference) {
-            case self::ITEM_SPECIFIER_HEADERS:
-                return $this->headersRow ?? $this->firstDataRow;
-            case self::ITEM_SPECIFIER_DATA:
-                return $this->lastDataRow;
-            case self::ITEM_SPECIFIER_ALL:
-            case self::ITEM_SPECIFIER_TOTALS:
-                return $this->totalsRow ?? $this->lastDataRow;
-        }
-
-        return $this->totalsRow ?? $this->lastDataRow;
-    }
-
-    public function value(): string
-    {
-        return $this->value;
-    }
-
-    /**
-     * @return array<int, int>
-     */
-    private function getRowsForColumnReference(string &$reference, int $startRow, int $endRow): array
-    {
-        $rowsSelected = false;
-        foreach (self::ITEM_SPECIFIER_ROWS_SET as $rowReference) {
-            $pattern = '/\[' . $rowReference . '\]/mui';
-            /** @var string $reference */
-            if (preg_match($pattern, $reference) === 1) {
-                if (($rowReference === self::ITEM_SPECIFIER_HEADERS) && ($this->table->getShowHeaderRow() === false)) {
-                    throw new Exception(
-                        'Table Headers are Hidden, and should not be Referenced',
-                        Exception::CALCULATION_ENGINE_PUSH_TO_STACK
-                    );
-                }
-                $rowsSelected = true;
-                $startRow = min($startRow, $this->getMinimumRow($rowReference));
-                $endRow = max($endRow, $this->getMaximumRow($rowReference));
-                $reference = preg_replace($pattern, '', $reference);
-            }
-        }
-        if ($rowsSelected === false) {
-            // If there isn't any Special Item Identifier specified, then the selection defaults to data rows only.
-            $startRow = $this->firstDataRow;
-            $endRow = $this->lastDataRow;
-        }
-
-        return [$startRow, $endRow];
-    }
-
-    private function getColumnsForColumnReference(string $reference, int $startRow, int $endRow): string
-    {
-        $columnsSelected = false;
-        foreach ($this->columns as $columnId => $columnName) {
-            $columnName = str_replace("\u{a0}", ' ', $columnName);
-            $cellFrom = "{$columnId}{$startRow}";
-            $cellTo = "{$columnId}{$endRow}";
-            $cellReference = ($cellFrom === $cellTo) ? $cellFrom : "{$cellFrom}:{$cellTo}";
-            $pattern = '/\[' . preg_quote($columnName, '/') . '\]/mui';
-            if (preg_match($pattern, $reference) === 1) {
-                $columnsSelected = true;
-                $reference = preg_replace($pattern, $cellReference, $reference);
-            }
-            /** @var string $reference */
-        }
-        if ($columnsSelected === false) {
-            return $this->fullData($startRow, $endRow);
-        }
-
-        return $reference;
-    }
-}

+ 197 - 176
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering.php

@@ -15,12 +15,33 @@ class Engineering
      * EULER.
      *
      * @deprecated 1.18.0
-     *      Use Engineering\Constants::EULER instead
-     * @see Engineering\Constants::EULER
+     * @see Use Engineering\Constants\EULER instead
      */
     public const EULER = 2.71828182845904523536;
 
     /**
+     * parseComplex.
+     *
+     * Parses a complex number into its real and imaginary parts, and an I or J suffix
+     *
+     * @deprecated 1.12.0 No longer used by internal code. Please use the \Complex\Complex class instead
+     *
+     * @param string $complexNumber The complex number
+     *
+     * @return mixed[] Indexed on "real", "imaginary" and "suffix"
+     */
+    public static function parseComplex($complexNumber)
+    {
+        $complex = new Complex($complexNumber);
+
+        return [
+            'real' => $complex->getReal(),
+            'imaginary' => $complex->getImaginary(),
+            'suffix' => $complex->getSuffix(),
+        ];
+    }
+
+    /**
      * BESSELI.
      *
      *    Returns the modified Bessel function In(x), which is equivalent to the Bessel function evaluated
@@ -29,9 +50,9 @@ class Engineering
      *    Excel Function:
      *        BESSELI(x,ord)
      *
-     * @deprecated 1.17.0
-     *      Use the BESSELI() method in the Engineering\BesselI class instead
-     * @see Engineering\BesselI::BESSELI()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BESSELI() method in the Engineering\BesselI class instead
      *
      * @param float $x The value at which to evaluate the function.
      *                                If x is nonnumeric, BESSELI returns the #VALUE! error value.
@@ -55,9 +76,9 @@ class Engineering
      *    Excel Function:
      *        BESSELJ(x,ord)
      *
-     * @deprecated 1.17.0
-     *      Use the BESSELJ() method in the Engineering\BesselJ class instead
-     * @see Engineering\BesselJ::BESSELJ()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BESSELJ() method in the Engineering\BesselJ class instead
      *
      * @param float $x The value at which to evaluate the function.
      *                                If x is nonnumeric, BESSELJ returns the #VALUE! error value.
@@ -81,9 +102,9 @@ class Engineering
      *    Excel Function:
      *        BESSELK(x,ord)
      *
-     * @deprecated 1.17.0
-     *      Use the BESSELK() method in the Engineering\BesselK class instead
-     * @see Engineering\BesselK::BESSELK()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BESSELK() method in the Engineering\BesselK class instead
      *
      * @param float $x The value at which to evaluate the function.
      *                                If x is nonnumeric, BESSELK returns the #VALUE! error value.
@@ -106,9 +127,9 @@ class Engineering
      *    Excel Function:
      *        BESSELY(x,ord)
      *
-     * @deprecated 1.17.0
-     *      Use the BESSELY() method in the Engineering\BesselY class instead
-     * @see Engineering\BesselY::BESSELY()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BESSELY() method in the Engineering\BesselY class instead
      *
      * @param float $x The value at which to evaluate the function.
      *                                If x is nonnumeric, BESSELY returns the #VALUE! error value.
@@ -131,9 +152,9 @@ class Engineering
      * Excel Function:
      *        BIN2DEC(x)
      *
-     * @deprecated 1.17.0
-     *      Use the toDecimal() method in the Engineering\ConvertBinary class instead
-     * @see Engineering\ConvertBinary::toDecimal()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toDecimal() method in the Engineering\ConvertBinary class instead
      *
      * @param mixed $x The binary number (as a string) that you want to convert. The number
      *                                cannot contain more than 10 characters (10 bits). The most significant
@@ -157,9 +178,9 @@ class Engineering
      * Excel Function:
      *        BIN2HEX(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toHex() method in the Engineering\ConvertBinary class instead
-     * @see Engineering\ConvertBinary::toHex()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toHex() method in the Engineering\ConvertBinary class instead
      *
      * @param mixed $x The binary number (as a string) that you want to convert. The number
      *                                cannot contain more than 10 characters (10 bits). The most significant
@@ -189,9 +210,9 @@ class Engineering
      * Excel Function:
      *        BIN2OCT(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toOctal() method in the Engineering\ConvertBinary class instead
-     * @see Engineering\ConvertBinary::toOctal()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toOctal() method in the Engineering\ConvertBinary class instead
      *
      * @param mixed $x The binary number (as a string) that you want to convert. The number
      *                                cannot contain more than 10 characters (10 bits). The most significant
@@ -221,9 +242,9 @@ class Engineering
      * Excel Function:
      *        DEC2BIN(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toBinary() method in the Engineering\ConvertDecimal class instead
-     * @see Engineering\ConvertDecimal::toBinary()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toBinary() method in the Engineering\ConvertDecimal class instead
      *
      * @param mixed $x The decimal integer you want to convert. If number is negative,
      *                                valid place values are ignored and DEC2BIN returns a 10-character
@@ -257,9 +278,9 @@ class Engineering
      * Excel Function:
      *        DEC2HEX(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toHex() method in the Engineering\ConvertDecimal class instead
-     * @see Engineering\ConvertDecimal::toHex()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toHex() method in the Engineering\ConvertDecimal class instead
      *
      * @param mixed $x The decimal integer you want to convert. If number is negative,
      *                                places is ignored and DEC2HEX returns a 10-character (40-bit)
@@ -293,9 +314,9 @@ class Engineering
      * Excel Function:
      *        DEC2OCT(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toOctal() method in the Engineering\ConvertDecimal class instead
-     * @see Engineering\ConvertDecimal::toOctal()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toOctal() method in the Engineering\ConvertDecimal class instead
      *
      * @param mixed $x The decimal integer you want to convert. If number is negative,
      *                                places is ignored and DEC2OCT returns a 10-character (30-bit)
@@ -329,9 +350,9 @@ class Engineering
      * Excel Function:
      *        HEX2BIN(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toBinary() method in the Engineering\ConvertHex class instead
-     * @see Engineering\ConvertHex::toBinary()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toBinary() method in the Engineering\ConvertHex class instead
      *
      * @param mixed $x the hexadecimal number (as a string) that you want to convert.
      *                  Number cannot contain more than 10 characters.
@@ -365,9 +386,9 @@ class Engineering
      * Excel Function:
      *        HEX2DEC(x)
      *
-     * @deprecated 1.17.0
-     *      Use the toDecimal() method in the Engineering\ConvertHex class instead
-     * @see Engineering\ConvertHex::toDecimal()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toDecimal() method in the Engineering\ConvertHex class instead
      *
      * @param mixed $x The hexadecimal number (as a string) that you want to convert. This number cannot
      *                                contain more than 10 characters (40 bits). The most significant
@@ -392,9 +413,9 @@ class Engineering
      * Excel Function:
      *        HEX2OCT(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toOctal() method in the Engineering\ConvertHex class instead
-     * @see Engineering\ConvertHex::toOctal()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toOctal() method in the Engineering\ConvertHex class instead
      *
      * @param mixed $x The hexadecimal number (as a string) that you want to convert. Number cannot
      *                                    contain more than 10 characters. The most significant bit of
@@ -432,9 +453,9 @@ class Engineering
      * Excel Function:
      *        OCT2BIN(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toBinary() method in the Engineering\ConvertOctal class instead
-     * @see Engineering\ConvertOctal::toBinary()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toBinary() method in the Engineering\ConvertOctal class instead
      *
      * @param mixed $x The octal number you want to convert. Number may not
      *                                    contain more than 10 characters. The most significant
@@ -474,9 +495,9 @@ class Engineering
      * Excel Function:
      *        OCT2DEC(x)
      *
-     * @deprecated 1.17.0
-     *      Use the toDecimal() method in the Engineering\ConvertOctal class instead
-     * @see Engineering\ConvertOctal::toDecimal()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toDecimal() method in the Engineering\ConvertOctal class instead
      *
      * @param mixed $x The octal number you want to convert. Number may not contain
      *                                more than 10 octal characters (30 bits). The most significant
@@ -501,9 +522,9 @@ class Engineering
      * Excel Function:
      *        OCT2HEX(x[,places])
      *
-     * @deprecated 1.17.0
-     *      Use the toHex() method in the Engineering\ConvertOctal class instead
-     * @see Engineering\ConvertOctal::toHex()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the toHex() method in the Engineering\ConvertOctal class instead
      *
      * @param mixed $x The octal number you want to convert. Number may not contain
      *                                    more than 10 octal characters (30 bits). The most significant
@@ -538,9 +559,9 @@ class Engineering
      * Excel Function:
      *        COMPLEX(realNumber,imaginary[,suffix])
      *
-     * @deprecated 1.18.0
-     *      Use the COMPLEX() method in the Engineering\Complex class instead
-     * @see Engineering\Complex::COMPLEX()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the COMPLEX() method in the Engineering\Complex class instead
      *
      * @param array|float $realNumber the real coefficient of the complex number
      * @param array|float $imaginary the imaginary coefficient of the complex number
@@ -562,9 +583,9 @@ class Engineering
      * Excel Function:
      *        IMAGINARY(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMAGINARY() method in the Engineering\Complex class instead
-     * @see Engineering\Complex::IMAGINARY()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMAGINARY() method in the Engineering\Complex class instead
      *
      * @param string $complexNumber the complex number for which you want the imaginary
      *                                         coefficient
@@ -584,9 +605,9 @@ class Engineering
      * Excel Function:
      *        IMREAL(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMREAL() method in the Engineering\Complex class instead
-     * @see Engineering\Complex::IMREAL()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMREAL() method in the Engineering\Complex class instead
      *
      * @param string $complexNumber the complex number for which you want the real coefficient
      *
@@ -605,9 +626,9 @@ class Engineering
      * Excel Function:
      *        IMABS(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMABS() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMABS()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMABS() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the absolute value
      *
@@ -627,9 +648,9 @@ class Engineering
      * Excel Function:
      *        IMARGUMENT(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMARGUMENT() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMARGUMENT()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMARGUMENT() method in the Engineering\ComplexFunctions class instead
      *
      * @param array|string $complexNumber the complex number for which you want the argument theta
      *
@@ -648,9 +669,9 @@ class Engineering
      * Excel Function:
      *        IMCONJUGATE(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMCONJUGATE() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMCONJUGATE()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMARGUMENT() method in the Engineering\ComplexFunctions class instead
      *
      * @param array|string $complexNumber the complex number for which you want the conjugate
      *
@@ -669,9 +690,9 @@ class Engineering
      * Excel Function:
      *        IMCOS(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMCOS() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMCOS()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMCOS() method in the Engineering\ComplexFunctions class instead
      *
      * @param array|string $complexNumber the complex number for which you want the cosine
      *
@@ -690,9 +711,9 @@ class Engineering
      * Excel Function:
      *        IMCOSH(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMCOSH() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMCOSH()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMCOSH() method in the Engineering\ComplexFunctions class instead
      *
      * @param array|string $complexNumber the complex number for which you want the hyperbolic cosine
      *
@@ -711,9 +732,9 @@ class Engineering
      * Excel Function:
      *        IMCOT(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMCOT() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMCOT()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMCOT() method in the Engineering\ComplexFunctions class instead
      *
      * @param array|string $complexNumber the complex number for which you want the cotangent
      *
@@ -732,9 +753,9 @@ class Engineering
      * Excel Function:
      *        IMCSC(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMCSC() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMCSC()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMCSC() method in the Engineering\ComplexFunctions class instead
      *
      * @param array|string $complexNumber the complex number for which you want the cosecant
      *
@@ -753,9 +774,9 @@ class Engineering
      * Excel Function:
      *        IMCSCH(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMCSCH() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMCSCH()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMCSCH() method in the Engineering\ComplexFunctions class instead
      *
      * @param array|string $complexNumber the complex number for which you want the hyperbolic cosecant
      *
@@ -774,9 +795,9 @@ class Engineering
      * Excel Function:
      *        IMSIN(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMSIN() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMSIN()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMSIN() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the sine
      *
@@ -795,9 +816,9 @@ class Engineering
      * Excel Function:
      *        IMSINH(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMSINH() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMSINH()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMSINH() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the hyperbolic sine
      *
@@ -816,9 +837,9 @@ class Engineering
      * Excel Function:
      *        IMSEC(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMSEC() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMSEC()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMSEC() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the secant
      *
@@ -837,9 +858,9 @@ class Engineering
      * Excel Function:
      *        IMSECH(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMSECH() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMSECH()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMSECH() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the hyperbolic secant
      *
@@ -858,9 +879,9 @@ class Engineering
      * Excel Function:
      *        IMTAN(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMTAN() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMTAN()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMTAN() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the tangent
      *
@@ -879,9 +900,9 @@ class Engineering
      * Excel Function:
      *        IMSQRT(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMSQRT() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMSQRT()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMSQRT() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the square root
      *
@@ -900,9 +921,9 @@ class Engineering
      * Excel Function:
      *        IMLN(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMLN() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMLN()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMLN() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the natural logarithm
      *
@@ -921,9 +942,9 @@ class Engineering
      * Excel Function:
      *        IMLOG10(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMLOG10() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMLOG10()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMLOG10() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the common logarithm
      *
@@ -942,9 +963,9 @@ class Engineering
      * Excel Function:
      *        IMLOG2(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMLOG2() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMLOG2()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMLOG2() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the base-2 logarithm
      *
@@ -963,9 +984,9 @@ class Engineering
      * Excel Function:
      *        IMEXP(complexNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMEXP() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMEXP()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMEXP() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number for which you want the exponential
      *
@@ -984,9 +1005,9 @@ class Engineering
      * Excel Function:
      *        IMPOWER(complexNumber,realNumber)
      *
-     * @deprecated 1.18.0
-     *      Use the IMPOWER() method in the Engineering\ComplexFunctions class instead
-     * @see ComplexFunctions::IMPOWER()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMPOWER() method in the Engineering\ComplexFunctions class instead
      *
      * @param string $complexNumber the complex number you want to raise to a power
      * @param float $realNumber the power to which you want to raise the complex number
@@ -1006,9 +1027,9 @@ class Engineering
      * Excel Function:
      *        IMDIV(complexDividend,complexDivisor)
      *
-     * @deprecated 1.18.0
-     *      Use the IMDIV() method in the Engineering\ComplexOperations class instead
-     * @see ComplexOperations::IMDIV()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMDIV() method in the Engineering\ComplexOperations class instead
      *
      * @param string $complexDividend the complex numerator or dividend
      * @param string $complexDivisor the complex denominator or divisor
@@ -1028,9 +1049,9 @@ class Engineering
      * Excel Function:
      *        IMSUB(complexNumber1,complexNumber2)
      *
-     * @deprecated 1.18.0
-     *      Use the IMSUB() method in the Engineering\ComplexOperations class instead
-     * @see ComplexOperations::IMSUB()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMSUB() method in the Engineering\ComplexOperations class instead
      *
      * @param string $complexNumber1 the complex number from which to subtract complexNumber2
      * @param string $complexNumber2 the complex number to subtract from complexNumber1
@@ -1050,9 +1071,9 @@ class Engineering
      * Excel Function:
      *        IMSUM(complexNumber[,complexNumber[,...]])
      *
-     * @deprecated 1.18.0
-     *      Use the IMSUM() method in the Engineering\ComplexOperations class instead
-     * @see ComplexOperations::IMSUM()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMSUM() method in the Engineering\ComplexOperations class instead
      *
      * @param string ...$complexNumbers Series of complex numbers to add
      *
@@ -1071,9 +1092,9 @@ class Engineering
      * Excel Function:
      *        IMPRODUCT(complexNumber[,complexNumber[,...]])
      *
-     * @deprecated 1.18.0
-     *      Use the IMPRODUCT() method in the Engineering\ComplexOperations class instead
-     * @see ComplexOperations::IMPRODUCT()
+     * @Deprecated 1.18.0
+     *
+     * @see Use the IMPRODUCT() method in the Engineering\ComplexOperations class instead
      *
      * @param string ...$complexNumbers Series of complex numbers to multiply
      *
@@ -1095,9 +1116,9 @@ class Engineering
      *    Excel Function:
      *        DELTA(a[,b])
      *
-     * @deprecated 1.17.0
-     *      Use the DELTA() method in the Engineering\Compare class instead
-     * @see Engineering\Compare::DELTA()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the DELTA() method in the Engineering\Compare class instead
      *
      * @param float $a the first number
      * @param float $b The second number. If omitted, b is assumed to be zero.
@@ -1119,9 +1140,9 @@ class Engineering
      *    Use this function to filter a set of values. For example, by summing several GESTEP
      *        functions you calculate the count of values that exceed a threshold.
      *
-     * @deprecated 1.17.0
-     *      Use the GESTEP() method in the Engineering\Compare class instead
-     * @see Engineering\Compare::GESTEP()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the GESTEP() method in the Engineering\Compare class instead
      *
      * @param float $number the value to test against step
      * @param float $step The threshold value. If you omit a value for step, GESTEP uses zero.
@@ -1141,9 +1162,9 @@ class Engineering
      * Excel Function:
      *        BITAND(number1, number2)
      *
-     * @deprecated 1.17.0
-     *      Use the BITAND() method in the Engineering\BitWise class instead
-     * @see Engineering\BitWise::BITAND()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BITAND() method in the Engineering\BitWise class instead
      *
      * @param int $number1
      * @param int $number2
@@ -1163,9 +1184,9 @@ class Engineering
      * Excel Function:
      *        BITOR(number1, number2)
      *
-     * @deprecated 1.17.0
-     *      Use the BITOR() method in the Engineering\BitWise class instead
-     * @see Engineering\BitWise::BITOR()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BITOR() method in the Engineering\BitWise class instead
      *
      * @param int $number1
      * @param int $number2
@@ -1185,9 +1206,9 @@ class Engineering
      * Excel Function:
      *        BITXOR(number1, number2)
      *
-     * @deprecated 1.17.0
-     *      Use the BITXOR() method in the Engineering\BitWise class instead
-     * @see Engineering\BitWise::BITXOR()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BITXOR() method in the Engineering\BitWise class instead
      *
      * @param int $number1
      * @param int $number2
@@ -1207,9 +1228,9 @@ class Engineering
      * Excel Function:
      *        BITLSHIFT(number, shift_amount)
      *
-     * @deprecated 1.17.0
-     *      Use the BITLSHIFT() method in the Engineering\BitWise class instead
-     * @see Engineering\BitWise::BITLSHIFT()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BITLSHIFT() method in the Engineering\BitWise class instead
      *
      * @param int $number
      * @param int $shiftAmount
@@ -1229,9 +1250,9 @@ class Engineering
      * Excel Function:
      *        BITRSHIFT(number, shift_amount)
      *
-     * @deprecated 1.17.0
-     *      Use the BITRSHIFT() method in the Engineering\BitWise class instead
-     * @see Engineering\BitWise::BITRSHIFT()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the BITRSHIFT() method in the Engineering\BitWise class instead
      *
      * @param int $number
      * @param int $shiftAmount
@@ -1256,9 +1277,9 @@ class Engineering
      *    Excel Function:
      *        ERF(lower[,upper])
      *
-     * @deprecated 1.17.0
-     *      Use the ERF() method in the Engineering\Erf class instead
-     * @see Engineering\Erf::ERF()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the ERF() method in the Engineering\Erf class instead
      *
      * @param float $lower lower bound for integrating ERF
      * @param float $upper upper bound for integrating ERF.
@@ -1279,9 +1300,9 @@ class Engineering
      *    Excel Function:
      *        ERF.PRECISE(limit)
      *
-     * @deprecated 1.17.0
-     *      Use the ERFPRECISE() method in the Engineering\Erf class instead
-     * @see Engineering\Erf::ERFPRECISE()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the ERFPRECISE() method in the Engineering\Erf class instead
      *
      * @param float $limit bound for integrating ERF
      *
@@ -1305,9 +1326,9 @@ class Engineering
      *    Excel Function:
      *        ERFC(x)
      *
-     * @deprecated 1.17.0
-     *      Use the ERFC() method in the Engineering\ErfC class instead
-     * @see Engineering\ErfC::ERFC()
+     * @Deprecated 1.17.0
+     *
+     * @see Use the ERFC() method in the Engineering\ErfC class instead
      *
      * @param float $x The lower bound for integrating ERFC
      *
@@ -1322,9 +1343,9 @@ class Engineering
      *    getConversionGroups
      * Returns a list of the different conversion groups for UOM conversions.
      *
-     * @deprecated 1.16.0
-     *      Use the getConversionCategories() method in the Engineering\ConvertUOM class instead
-     * @see Engineering\ConvertUOM::getConversionCategories()
+     * @Deprecated 1.16.0
+     *
+     * @see Use the getConversionCategories() method in the Engineering\ConvertUOM class instead
      *
      * @return array
      */
@@ -1337,9 +1358,9 @@ class Engineering
      *    getConversionGroupUnits
      * Returns an array of units of measure, for a specified conversion group, or for all groups.
      *
-     * @deprecated 1.16.0
-     *      Use the getConversionCategoryUnits() method in the ConvertUOM class instead
-     * @see Engineering\ConvertUOM::getConversionCategoryUnits()
+     * @Deprecated 1.16.0
+     *
+     * @see Use the getConversionCategoryUnits() method in the ConvertUOM class instead
      *
      * @param null|mixed $category
      *
@@ -1353,9 +1374,9 @@ class Engineering
     /**
      * getConversionGroupUnitDetails.
      *
-     * @deprecated 1.16.0
-     *      Use the getConversionCategoryUnitDetails() method in the ConvertUOM class instead
-     * @see Engineering\ConvertUOM::getConversionCategoryUnitDetails()
+     * @Deprecated 1.16.0
+     *
+     * @see Use the getConversionCategoryUnitDetails() method in the ConvertUOM class instead
      *
      * @param null|mixed $category
      *
@@ -1370,9 +1391,9 @@ class Engineering
      *    getConversionMultipliers
      * Returns an array of the Multiplier prefixes that can be used with Units of Measure in CONVERTUOM().
      *
-     * @deprecated 1.16.0
-     *      Use the getConversionMultipliers() method in the ConvertUOM class instead
-     * @see Engineering\ConvertUOM::getConversionMultipliers()
+     * @Deprecated 1.16.0
+     *
+     * @see Use the getConversionMultipliers() method in the ConvertUOM class instead
      *
      * @return mixed[]
      */
@@ -1387,9 +1408,9 @@ class Engineering
      * Returns an array of the additional Multiplier prefixes that can be used with Information Units of Measure
      *     in CONVERTUOM().
      *
-     * @deprecated 1.16.0
-     *      Use the getBinaryConversionMultipliers() method in the ConvertUOM class instead
-     * @see Engineering\ConvertUOM::getBinaryConversionMultipliers()
+     * @Deprecated 1.16.0
+     *
+     * @see Use the getBinaryConversionMultipliers() method in the ConvertUOM class instead
      *
      * @return mixed[]
      */
@@ -1408,9 +1429,9 @@ class Engineering
      *    Excel Function:
      *        CONVERT(value,fromUOM,toUOM)
      *
-     * @deprecated 1.16.0
-     *      Use the CONVERT() method in the ConvertUOM class instead
-     * @see Engineering\ConvertUOM::CONVERT()
+     * @Deprecated 1.16.0
+     *
+     * @see Use the CONVERT() method in the ConvertUOM class instead
      *
      * @param float|int $value the value in fromUOM to convert
      * @param string $fromUOM the units for value

+ 1 - 8
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselI.php

@@ -111,16 +111,9 @@ class BesselI
         return ($x < 0.0) ? -$ans : $ans;
     }
 
-    /**
-     * Sop to Scrutinizer.
-     *
-     * @var float
-     */
-    private static $zeroPointZero = 0.0;
-
     private static function besselI2(float $x, int $ord): float
     {
-        if ($x === self::$zeroPointZero) {
+        if ($x === 0.0) {
             return 0.0;
         }
 

+ 3 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BesselJ.php

@@ -133,7 +133,7 @@ class BesselJ
         return self::besselj2b($ax, $ord, $x);
     }
 
-    private static function besselj2a(float $ax, int $ord, float $x): float
+    private static function besselj2a(float $ax, int $ord, float $x)
     {
         $tox = 2.0 / $ax;
         $bjm = self::besselJ0($ax);
@@ -148,7 +148,7 @@ class BesselJ
         return ($x < 0.0 && ($ord % 2) == 1) ? -$ans : $ans;
     }
 
-    private static function besselj2b(float $ax, int $ord, float $x): float
+    private static function besselj2b(float $ax, int $ord, float $x)
     {
         $tox = 2.0 / $ax;
         $jsum = false;
@@ -167,7 +167,7 @@ class BesselJ
             if ($jsum === true) {
                 $sum += $bj;
             }
-            $jsum = $jsum === false;
+            $jsum = !$jsum;
             if ($j === $ord) {
                 $ans = $bjp;
             }

+ 1 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/BitWise.php

@@ -17,12 +17,10 @@ class BitWise
      * Split a number into upper and lower portions for full 32-bit support.
      *
      * @param float|int $number
-     *
-     * @return int[]
      */
     private static function splitNumber($number): array
     {
-        return [(int) floor($number / self::SPLIT_DIVISOR), (int) fmod($number, self::SPLIT_DIVISOR)];
+        return [floor($number / self::SPLIT_DIVISOR), fmod($number, self::SPLIT_DIVISOR)];
     }
 
     /**

+ 1 - 1
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Complex.php

@@ -49,7 +49,7 @@ class Complex
             return $e->getMessage();
         }
 
-        if (($suffix === 'i') || ($suffix === 'j') || ($suffix === '')) {
+        if (($suffix == 'i') || ($suffix == 'j') || ($suffix == '')) {
             $complex = new ComplexObject($realNumber, $imaginary, $suffix);
 
             return (string) $complex;

+ 0 - 2
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertBase.php

@@ -11,7 +11,6 @@ abstract class ConvertBase
 {
     use ArrayEnabled;
 
-    /** @param mixed $value */
     protected static function validateValue($value): string
     {
         if (is_bool($value)) {
@@ -30,7 +29,6 @@ abstract class ConvertBase
         return strtoupper((string) $value);
     }
 
-    /** @param mixed $places */
     protected static function validatePlaces($places = null): ?int
     {
         if ($places === null) {

+ 3 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertBinary.php

@@ -40,7 +40,7 @@ class ConvertBinary extends ConvertBase
             return $e->getMessage();
         }
 
-        if (strlen($value) == 10 && $value[0] === '1') {
+        if (strlen($value) == 10) {
             //    Two's Complement
             $value = substr($value, -9);
 
@@ -91,7 +91,7 @@ class ConvertBinary extends ConvertBase
             return $e->getMessage();
         }
 
-        if (strlen($value) == 10 && $value[0] === '1') {
+        if (strlen($value) == 10) {
             $high2 = substr($value, 0, 2);
             $low8 = substr($value, 2);
             $xarr = ['00' => '00000000', '01' => '00000001', '10' => 'FFFFFFFE', '11' => 'FFFFFFFF'];
@@ -144,7 +144,7 @@ class ConvertBinary extends ConvertBase
             return $e->getMessage();
         }
 
-        if (strlen($value) == 10 && $value[0] === '1') { //    Two's Complement
+        if (strlen($value) == 10 && substr($value, 0, 1) === '1') { //    Two's Complement
             return str_repeat('7', 6) . strtoupper(decoct((int) bindec("11$value")));
         }
         $octVal = (string) decoct((int) bindec($value));

+ 3 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ConvertUOM.php

@@ -564,7 +564,7 @@ class ConvertUOM
         } elseif ($fromUOM === $toUOM) {
             return $value / $toMultiplier;
         } elseif ($fromCategory === self::CATEGORY_TEMPERATURE) {
-            return self::convertTemperature($fromUOM, $toUOM, /** @scrutinizer ignore-type */ $value);
+            return self::convertTemperature($fromUOM, $toUOM, $value);
         }
 
         $baseValue = $value * (1.0 / self::$unitConversions[$fromCategory][$fromUOM]);
@@ -572,7 +572,7 @@ class ConvertUOM
         return ($baseValue * self::$unitConversions[$fromCategory][$toUOM]) / $toMultiplier;
     }
 
-    private static function getUOMDetails(string $uom): array
+    private static function getUOMDetails(string $uom)
     {
         if (isset(self::$conversionUnits[$uom])) {
             $unitCategory = self::$conversionUnits[$uom]['Group'];
@@ -678,7 +678,7 @@ class ConvertUOM
         return $value;
     }
 
-    private static function resolveTemperatureSynonyms(string $uom): string
+    private static function resolveTemperatureSynonyms(string $uom)
     {
         switch ($uom) {
             case 'fah':

+ 5 - 10
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/Erf.php

@@ -10,7 +10,7 @@ class Erf
 {
     use ArrayEnabled;
 
-    private const TWO_SQRT_PI = 1.128379167095512574;
+    private static $twoSqrtPi = 1.128379167095512574;
 
     /**
      * ERF.
@@ -77,16 +77,11 @@ class Erf
         return self::ERF($limit);
     }
 
-    /**
-     * Method to calculate the erf value.
-     *
-     * @param float|int|string $value
-     *
-     * @return float
-     */
+    //
+    //    Private method to calculate the erf value
+    //
     public static function erfValue($value)
     {
-        $value = (float) $value;
         if (abs($value) > 2.2) {
             return 1 - ErfC::ERFC($value);
         }
@@ -105,6 +100,6 @@ class Erf
             }
         } while (abs($term / $sum) > Functions::PRECISION);
 
-        return self::TWO_SQRT_PI * $sum;
+        return self::$twoSqrtPi * $sum;
     }
 }

+ 6 - 11
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Engineering/ErfC.php

@@ -43,18 +43,13 @@ class ErfC
         return ExcelError::VALUE();
     }
 
-    private const ONE_SQRT_PI = 0.564189583547756287;
+    //
+    //    Private method to calculate the erfc value
+    //
+    private static $oneSqrtPi = 0.564189583547756287;
 
-    /**
-     * Method to calculate the erfc value.
-     *
-     * @param float|int|string $value
-     *
-     * @return float
-     */
     private static function erfcValue($value)
     {
-        $value = (float) $value;
         if (abs($value) < 2.2) {
             return 1 - Erf::erfValue($value);
         }
@@ -64,7 +59,7 @@ class ErfC
         $a = $n = 1;
         $b = $c = $value;
         $d = ($value * $value) + 0.5;
-        $q2 = $b / $d;
+        $q1 = $q2 = $b / $d;
         do {
             $t = $a * $n + $b * $value;
             $a = $b;
@@ -77,6 +72,6 @@ class ErfC
             $q2 = $b / $d;
         } while ((abs($q1 - $q2) / $q2) > Functions::PRECISION);
 
-        return self::ONE_SQRT_PI * exp(-$value * $value) * $q2;
+        return self::$oneSqrtPi * exp(-$value * $value) * $q2;
     }
 }

+ 1 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Exception.php

@@ -6,8 +6,6 @@ use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
 
 class Exception extends PhpSpreadsheetException
 {
-    public const CALCULATION_ENGINE_PUSH_TO_STACK = 1;
-
     /**
      * Error handler callback.
      *
@@ -17,7 +15,7 @@ class Exception extends PhpSpreadsheetException
      * @param mixed $line
      * @param mixed $context
      */
-    public static function errorHandlerCallback($code, $string, $file, $line, /** @scrutinizer ignore-unused */ $context): void
+    public static function errorHandlerCallback($code, $string, $file, $line, $context): void
     {
         $e = new self($string, $code);
         $e->line = $line;

+ 152 - 111
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial.php

@@ -27,9 +27,10 @@ class Financial
      * Excel Function:
      *        ACCRINT(issue,firstinterest,settlement,rate,par,frequency[,basis][,calc_method])
      *
-     * @deprecated 1.18.0
+     * @Deprecated 1.18.0
+     *
+     * @see Financial\Securities\AccruedInterest::periodic()
      *      Use the periodic() method in the Financial\Securities\AccruedInterest class instead
-     * @see Securities\AccruedInterest::periodic()
      *
      * @param mixed $issue the security's issue date
      * @param mixed $firstInterest the security's first interest date
@@ -86,9 +87,10 @@ class Financial
      * Excel Function:
      *        ACCRINTM(issue,settlement,rate[,par[,basis]])
      *
-     * @deprecated 1.18.0
-     *      Use the atMaturity() method in the Financial\Securities\AccruedInterest class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\AccruedInterest::atMaturity()
+     *      Use the atMaturity() method in the Financial\Securities\AccruedInterest class instead
      *
      * @param mixed $issue The security's issue date
      * @param mixed $settlement The security's settlement (or maturity) date
@@ -124,9 +126,10 @@ class Financial
      * Excel Function:
      *        AMORDEGRC(cost,purchased,firstPeriod,salvage,period,rate[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the AMORDEGRC() method in the Financial\Amortization class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Amortization::AMORDEGRC()
+     *      Use the AMORDEGRC() method in the Financial\Amortization class instead
      *
      * @param float $cost The cost of the asset
      * @param mixed $purchased Date of the purchase of the asset
@@ -158,9 +161,10 @@ class Financial
      * Excel Function:
      *        AMORLINC(cost,purchased,firstPeriod,salvage,period,rate[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the AMORLINC() method in the Financial\Amortization class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Amortization::AMORLINC()
+     *      Use the AMORLINC() method in the Financial\Amortization class instead
      *
      * @param float $cost The cost of the asset
      * @param mixed $purchased Date of the purchase of the asset
@@ -190,9 +194,10 @@ class Financial
      * Excel Function:
      *        COUPDAYBS(settlement,maturity,frequency[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the COUPDAYBS() method in the Financial\Coupons class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Coupons::COUPDAYBS()
+     *      Use the COUPDAYBS() method in the Financial\Coupons class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                                The security settlement date is the date after the issue
@@ -226,9 +231,10 @@ class Financial
      * Excel Function:
      *        COUPDAYS(settlement,maturity,frequency[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the COUPDAYS() method in the Financial\Coupons class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Coupons::COUPDAYS()
+     *      Use the COUPDAYS() method in the Financial\Coupons class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                                The security settlement date is the date after the issue
@@ -262,9 +268,10 @@ class Financial
      * Excel Function:
      *        COUPDAYSNC(settlement,maturity,frequency[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the COUPDAYSNC() method in the Financial\Coupons class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Coupons::COUPDAYSNC()
+     *      Use the COUPDAYSNC() method in the Financial\Coupons class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                                The security settlement date is the date after the issue
@@ -298,9 +305,10 @@ class Financial
      * Excel Function:
      *        COUPNCD(settlement,maturity,frequency[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the COUPNCD() method in the Financial\Coupons class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Coupons::COUPNCD()
+     *      Use the COUPNCD() method in the Financial\Coupons class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                                The security settlement date is the date after the issue
@@ -336,9 +344,10 @@ class Financial
      * Excel Function:
      *        COUPNUM(settlement,maturity,frequency[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the COUPNUM() method in the Financial\Coupons class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Coupons::COUPNUM()
+     *      Use the COUPNUM() method in the Financial\Coupons class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                                The security settlement date is the date after the issue
@@ -372,9 +381,10 @@ class Financial
      * Excel Function:
      *        COUPPCD(settlement,maturity,frequency[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the COUPPCD() method in the Financial\Coupons class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Coupons::COUPPCD()
+     *      Use the COUPPCD() method in the Financial\Coupons class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                                The security settlement date is the date after the issue
@@ -409,9 +419,10 @@ class Financial
      * Excel Function:
      *        CUMIPMT(rate,nper,pv,start,end[,type])
      *
-     * @deprecated 1.18.0
-     *      Use the interest() method in the Financial\CashFlow\Constant\Periodic\Cumulative class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic\Cumulative::interest()
+     *      Use the interest() method in the Financial\CashFlow\Constant\Periodic\Cumulative class instead
      *
      * @param float $rate The Interest rate
      * @param int $nper The total number of payment periods
@@ -438,9 +449,10 @@ class Financial
      * Excel Function:
      *        CUMPRINC(rate,nper,pv,start,end[,type])
      *
-     * @deprecated 1.18.0
-     *      Use the principal() method in the Financial\CashFlow\Constant\Periodic\Cumulative class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic\Cumulative::principal()
+     *      Use the principal() method in the Financial\CashFlow\Constant\Periodic\Cumulative class instead
      *
      * @param float $rate The Interest rate
      * @param int $nper The total number of payment periods
@@ -472,9 +484,10 @@ class Financial
      * Excel Function:
      *        DB(cost,salvage,life,period[,month])
      *
-     * @deprecated 1.18.0
-     *      Use the DB() method in the Financial\Depreciation class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Depreciation::DB()
+     *      Use the DB() method in the Financial\Depreciation class instead
      *
      * @param float $cost Initial cost of the asset
      * @param float $salvage Value at the end of the depreciation.
@@ -502,9 +515,10 @@ class Financial
      * Excel Function:
      *        DDB(cost,salvage,life,period[,factor])
      *
-     * @deprecated 1.18.0
-     *      Use the DDB() method in the Financial\Depreciation class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Depreciation::DDB()
+     *      Use the DDB() method in the Financial\Depreciation class instead
      *
      * @param float $cost Initial cost of the asset
      * @param float $salvage Value at the end of the depreciation.
@@ -532,16 +546,17 @@ class Financial
      * Excel Function:
      *        DISC(settlement,maturity,price,redemption[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the discount() method in the Financial\Securities\Rates class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\Rates::discount()
+     *      Use the discount() method in the Financial\Securities\Rates class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                                The security settlement date is the date after the issue
      *                                date when the security is traded to the buyer.
      * @param mixed $maturity The security's maturity date.
      *                                The maturity date is the date when the security expires.
-     * @param mixed $price The security's price per $100 face value
+     * @param int $price The security's price per $100 face value
      * @param int $redemption The security's redemption value per $100 face value
      * @param int $basis The type of day count to use.
      *                                        0 or omitted    US (NASD) 30/360
@@ -567,9 +582,10 @@ class Financial
      * Excel Function:
      *        DOLLARDE(fractional_dollar,fraction)
      *
-     * @deprecated 1.18.0
-     *      Use the decimal() method in the Financial\Dollar class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Dollar::decimal()
+     *      Use the decimal() method in the Financial\Dollar class instead
      *
      * @param array|float $fractional_dollar Fractional Dollar
      * @param array|int $fraction Fraction
@@ -591,9 +607,10 @@ class Financial
      * Excel Function:
      *        DOLLARFR(decimal_dollar,fraction)
      *
-     * @deprecated 1.18.0
-     *      Use the fractional() method in the Financial\Dollar class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Dollar::fractional()
+     *      Use the fractional() method in the Financial\Dollar class instead
      *
      * @param array|float $decimal_dollar Decimal Dollar
      * @param array|int $fraction Fraction
@@ -614,9 +631,10 @@ class Financial
      * Excel Function:
      *        EFFECT(nominal_rate,npery)
      *
-     * @deprecated 1.18.0
-     *      Use the effective() method in the Financial\InterestRate class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\InterestRate::effective()
+     *      Use the effective() method in the Financial\InterestRate class instead
      *
      * @param float $nominalRate Nominal interest rate
      * @param int $periodsPerYear Number of compounding payments per year
@@ -636,9 +654,10 @@ class Financial
      * Excel Function:
      *        FV(rate,nper,pmt[,pv[,type]])
      *
-     * @deprecated 1.18.0
-     *      Use the futureValue() method in the Financial\CashFlow\Constant\Periodic class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic::futureValue()
+     *      Use the futureValue() method in the Financial\CashFlow\Constant\Periodic class instead
      *
      * @param float $rate The interest rate per period
      * @param int $nper Total number of payment periods in an annuity
@@ -667,9 +686,10 @@ class Financial
      * Excel Function:
      *        FVSCHEDULE(principal,schedule)
      *
-     * @deprecated 1.18.0
-     *      Use the futureValue() method in the Financial\CashFlow\Single class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Single::futureValue()
+     *      Use the futureValue() method in the Financial\CashFlow\Single class instead
      *
      * @param float $principal the present value
      * @param float[] $schedule an array of interest rates to apply
@@ -689,9 +709,10 @@ class Financial
      * Excel Function:
      *        INTRATE(settlement,maturity,investment,redemption[,basis])
      *
-     * @deprecated 1.18.0
-     *      Use the interest() method in the Financial\Securities\Rates class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\Rates::interest()
+     *      Use the interest() method in the Financial\Securities\Rates class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                              The security settlement date is the date after the issue date when the security
@@ -723,9 +744,10 @@ class Financial
      * Excel Function:
      *        IPMT(rate,per,nper,pv[,fv][,type])
      *
-     * @deprecated 1.18.0
-     *      Use the payment() method in the Financial\CashFlow\Constant\Periodic\Interest class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic\Interest::payment()
+     *      Use the payment() method in the Financial\CashFlow\Constant\Periodic class instead
      *
      * @param float $rate Interest rate per period
      * @param int $per Period for which we want to find the interest
@@ -753,9 +775,10 @@ class Financial
      * Excel Function:
      *        IRR(values[,guess])
      *
-     * @deprecated 1.18.0
-     *      Use the rate() method in the Financial\CashFlow\Variable\Periodic class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Variable\Periodic::rate()
+     *      Use the rate() method in the Financial\CashFlow\Variable\Periodic class instead
      *
      * @param mixed $values An array or a reference to cells that contain numbers for which you want
      *                                    to calculate the internal rate of return.
@@ -778,9 +801,10 @@ class Financial
      * Excel Function:
      *     =ISPMT(interest_rate, period, number_payments, pv)
      *
-     * @deprecated 1.18.0
-     *      Use the schedulePayment() method in the Financial\CashFlow\Constant\Periodic\Interest class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic\Interest::schedulePayment()
+     *      Use the schedulePayment() method in the Financial\CashFlow\Constant\Periodic class instead
      *
      * interest_rate is the interest rate for the investment
      *
@@ -789,10 +813,6 @@ class Financial
      * number_payments is the number of payments for the annuity
      *
      * pv is the loan amount or present value of the payments
-     *
-     * @param array $args
-     *
-     * @return float|string
      */
     public static function ISPMT(...$args)
     {
@@ -808,9 +828,10 @@ class Financial
      * Excel Function:
      *        MIRR(values,finance_rate, reinvestment_rate)
      *
-     * @deprecated 1.18.0
-     *      Use the modifiedRate() method in the Financial\CashFlow\Variable\Periodic class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Variable\Periodic::modifiedRate()
+     *      Use the modifiedRate() method in the Financial\CashFlow\Variable\Periodic class instead
      *
      * @param mixed $values An array or a reference to cells that contain a series of payments and
      *                         income occurring at regular intervals.
@@ -833,9 +854,10 @@ class Financial
      * Excel Function:
      *        NOMINAL(effect_rate, npery)
      *
-     * @deprecated 1.18.0
-     *      Use the nominal() method in the Financial\InterestRate class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\InterestRate::nominal()
+     *      Use the nominal() method in the Financial\InterestRate class instead
      *
      * @param float $effectiveRate Effective interest rate
      * @param int $periodsPerYear Number of compounding payments per year
@@ -852,9 +874,7 @@ class Financial
      *
      * Returns the number of periods for a cash flow with constant periodic payments (annuities), and interest rate.
      *
-     * @deprecated 1.18.0
-     *      Use the periods() method in the Financial\CashFlow\Constant\Periodic class instead
-     * @see Financial\CashFlow\Constant\Periodic::periods()
+     * @Deprecated 1.18.0
      *
      * @param float $rate Interest rate per period
      * @param int $pmt Periodic payment (annuity)
@@ -863,6 +883,9 @@ class Financial
      * @param int $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period
      *
      * @return float|string Result, or a string containing an error
+     *
+     *@see Financial\CashFlow\Constant\Periodic::periods()
+     *      Use the periods() method in the Financial\CashFlow\Constant\Periodic class instead
      */
     public static function NPER($rate = 0, $pmt = 0, $pv = 0, $fv = 0, $type = 0)
     {
@@ -874,11 +897,10 @@ class Financial
      *
      * Returns the Net Present Value of a cash flow series given a discount rate.
      *
-     * @deprecated 1.18.0
-     *      Use the presentValue() method in the Financial\CashFlow\Variable\Periodic class instead
-     * @see Financial\CashFlow\Variable\Periodic::presentValue()
+     * @Deprecated 1.18.0
      *
-     * @param array $args
+     * @see Financial\CashFlow\Variable\Periodic::presentValue()
+     *      Use the presentValue() method in the Financial\CashFlow\Variable\Periodic class instead
      *
      * @return float
      */
@@ -892,9 +914,10 @@ class Financial
      *
      * Calculates the number of periods required for an investment to reach a specified value.
      *
-     * @deprecated 1.18.0
-     *      Use the periods() method in the Financial\CashFlow\Single class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Single::periods()
+     *      Use the periods() method in the Financial\CashFlow\Single class instead
      *
      * @param float $rate Interest rate per period
      * @param float $pv Present Value
@@ -912,9 +935,10 @@ class Financial
      *
      * Returns the constant payment (annuity) for a cash flow with a constant interest rate.
      *
-     * @deprecated 1.18.0
-     *      Use the annuity() method in the Financial\CashFlow\Constant\Periodic\Payments class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic\Payments::annuity()
+     *      Use the annuity() method in the Financial\CashFlow\Constant\Periodic\Payments class instead
      *
      * @param float $rate Interest rate per period
      * @param int $nper Number of periods
@@ -935,9 +959,10 @@ class Financial
      * Returns the interest payment for a given period for an investment based on periodic, constant payments
      *         and a constant interest rate.
      *
-     * @deprecated 1.18.0
-     *      Use the interestPayment() method in the Financial\CashFlow\Constant\Periodic\Payments class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic\Payments::interestPayment()
+     *      Use the interestPayment() method in the Financial\CashFlow\Constant\Periodic\Payments class instead
      *
      * @param float $rate Interest rate per period
      * @param int $per Period for which we want to find the interest
@@ -958,9 +983,10 @@ class Financial
      *
      * Returns the price per $100 face value of a security that pays periodic interest.
      *
-     * @deprecated 1.18.0
-     *      Use the price() method in the Financial\Securities\Price class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\Price::price()
+     *      Use the price() method in the Financial\Securities\Price class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                              The security settlement date is the date after the issue date when the security
@@ -993,16 +1019,17 @@ class Financial
      *
      * Returns the price per $100 face value of a discounted security.
      *
-     * @deprecated 1.18.0
-     *      Use the priceDiscounted() method in the Financial\Securities\Price class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\Price::priceDiscounted()
+     *      Use the priceDiscounted() method in the Financial\Securities\Price class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                              The security settlement date is the date after the issue date when the security
      *                              is traded to the buyer.
      * @param mixed $maturity The security's maturity date.
      *                            The maturity date is the date when the security expires.
-     * @param mixed $discount The security's discount rate
+     * @param int $discount The security's discount rate
      * @param int $redemption The security's redemption value per $100 face value
      * @param int $basis The type of day count to use.
      *                                        0 or omitted    US (NASD) 30/360
@@ -1023,9 +1050,10 @@ class Financial
      *
      * Returns the price per $100 face value of a security that pays interest at maturity.
      *
-     * @deprecated 1.18.0
-     *      Use the priceAtMaturity() method in the Financial\Securities\Price class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\Price::priceAtMaturity()
+     *      Use the priceAtMaturity() method in the Financial\Securities\Price class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                              The security's settlement date is the date after the issue date when the security
@@ -1033,8 +1061,8 @@ class Financial
      * @param mixed $maturity The security's maturity date.
      *                            The maturity date is the date when the security expires.
      * @param mixed $issue The security's issue date
-     * @param mixed $rate The security's interest rate at date of issue
-     * @param mixed $yield The security's annual yield
+     * @param int $rate The security's interest rate at date of issue
+     * @param int $yield The security's annual yield
      * @param int $basis The type of day count to use.
      *                                        0 or omitted    US (NASD) 30/360
      *                                        1                Actual/actual
@@ -1054,9 +1082,10 @@ class Financial
      *
      * Returns the Present Value of a cash flow with constant payments and interest rate (annuities).
      *
-     * @deprecated 1.18.0
-     *      Use the presentValue() method in the Financial\CashFlow\Constant\Periodic class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic::presentValue()
+     *      Use the presentValue() method in the Financial\CashFlow\Constant\Periodic class instead
      *
      * @param float $rate Interest rate per period
      * @param int $nper Number of periods
@@ -1082,9 +1111,10 @@ class Financial
      * Excel Function:
      *        RATE(nper,pmt,pv[,fv[,type[,guess]]])
      *
-     * @deprecated 1.18.0
-     *      Use the rate() method in the Financial\CashFlow\Constant\Periodic\Interest class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Constant\Periodic\Interest::rate()
+     *      Use the rate() method in the Financial\CashFlow\Constant\Periodic class instead
      *
      * @param mixed $nper The total number of payment periods in an annuity
      * @param mixed $pmt The payment made each period and cannot change over the life
@@ -1114,9 +1144,10 @@ class Financial
      *
      * Returns the amount received at maturity for a fully invested Security.
      *
-     * @deprecated 1.18.0
-     *      Use the received() method in the Financial\Securities\Price class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\Price::received()
+     *      Use the received() method in the Financial\Securities\Price class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                              The security settlement date is the date after the issue date when the security
@@ -1144,9 +1175,10 @@ class Financial
      *
      * Calculates the interest rate required for an investment to grow to a specified future value .
      *
-     * @deprecated 1.18.0
-     *      Use the interestRate() method in the Financial\CashFlow\Single class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Single::interestRate()
+     *      Use the interestRate() method in the Financial\CashFlow\Single class instead
      *
      * @param float $nper The number of periods over which the investment is made
      * @param float $pv Present Value
@@ -1164,9 +1196,10 @@ class Financial
      *
      * Returns the straight-line depreciation of an asset for one period
      *
-     * @deprecated 1.18.0
-     *      Use the SLN() method in the Financial\Depreciation class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Depreciation::SLN()
+     *      Use the SLN() method in the Financial\Depreciation class instead
      *
      * @param mixed $cost Initial cost of the asset
      * @param mixed $salvage Value at the end of the depreciation
@@ -1184,9 +1217,10 @@ class Financial
      *
      * Returns the sum-of-years' digits depreciation of an asset for a specified period.
      *
-     * @deprecated 1.18.0
-     *      Use the SYD() method in the Financial\Depreciation class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Depreciation::SYD()
+     *      Use the SYD() method in the Financial\Depreciation class instead
      *
      * @param mixed $cost Initial cost of the asset
      * @param mixed $salvage Value at the end of the depreciation
@@ -1205,16 +1239,17 @@ class Financial
      *
      * Returns the bond-equivalent yield for a Treasury bill.
      *
-     * @deprecated 1.18.0
-     *      Use the bondEquivalentYield() method in the Financial\TreasuryBill class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\TreasuryBill::bondEquivalentYield()
+     *      Use the bondEquivalentYield() method in the Financial\TreasuryBill class instead
      *
      * @param mixed $settlement The Treasury bill's settlement date.
      *                          The Treasury bill's settlement date is the date after the issue date when the
      *                              Treasury bill is traded to the buyer.
      * @param mixed $maturity The Treasury bill's maturity date.
      *                                The maturity date is the date when the Treasury bill expires.
-     * @param mixed $discount The Treasury bill's discount rate
+     * @param int $discount The Treasury bill's discount rate
      *
      * @return float|string Result, or a string containing an error
      */
@@ -1228,16 +1263,17 @@ class Financial
      *
      * Returns the price per $100 face value for a Treasury bill.
      *
-     * @deprecated 1.18.0
-     *      Use the price() method in the Financial\TreasuryBill class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\TreasuryBill::price()
+     *      Use the price() method in the Financial\TreasuryBill class instead
      *
      * @param mixed $settlement The Treasury bill's settlement date.
      *                                The Treasury bill's settlement date is the date after the issue date
      *                                    when the Treasury bill is traded to the buyer.
      * @param mixed $maturity The Treasury bill's maturity date.
      *                                The maturity date is the date when the Treasury bill expires.
-     * @param mixed $discount The Treasury bill's discount rate
+     * @param int $discount The Treasury bill's discount rate
      *
      * @return float|string Result, or a string containing an error
      */
@@ -1251,16 +1287,17 @@ class Financial
      *
      * Returns the yield for a Treasury bill.
      *
-     * @deprecated 1.18.0
-     *      Use the yield() method in the Financial\TreasuryBill class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\TreasuryBill::yield()
+     *      Use the yield() method in the Financial\TreasuryBill class instead
      *
      * @param mixed $settlement The Treasury bill's settlement date.
      *                                The Treasury bill's settlement date is the date after the issue date
      *                                    when the Treasury bill is traded to the buyer.
      * @param mixed $maturity The Treasury bill's maturity date.
      *                                The maturity date is the date when the Treasury bill expires.
-     * @param mixed $price The Treasury bill's price per $100 face value
+     * @param int $price The Treasury bill's price per $100 face value
      *
      * @return float|mixed|string
      */
@@ -1277,9 +1314,10 @@ class Financial
      * Excel Function:
      *        =XIRR(values,dates,guess)
      *
-     * @deprecated 1.18.0
-     *      Use the rate() method in the Financial\CashFlow\Variable\NonPeriodic class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Variable\NonPeriodic::rate()
+     *      Use the rate() method in the Financial\CashFlow\Variable\NonPeriodic class instead
      *
      * @param float[] $values     A series of cash flow payments
      *                                The series of values must contain at least one positive value & one negative value
@@ -1304,9 +1342,10 @@ class Financial
      * Excel Function:
      *        =XNPV(rate,values,dates)
      *
-     * @deprecated 1.18.0
-     *      Use the presentValue() method in the Financial\CashFlow\Variable\NonPeriodic class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\CashFlow\Variable\NonPeriodic::presentValue()
+     *      Use the presentValue() method in the Financial\CashFlow\Variable\NonPeriodic class instead
      *
      * @param float $rate the discount rate to apply to the cash flows
      * @param float[] $values A series of cash flows that corresponds to a schedule of payments in dates.
@@ -1331,16 +1370,17 @@ class Financial
      *
      * Returns the annual yield of a security that pays interest at maturity.
      *
-     * @deprecated 1.18.0
-     *      Use the yieldDiscounted() method in the Financial\Securities\Yields class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\Yields::yieldDiscounted()
+     *      Use the yieldDiscounted() method in the Financial\Securities\Yields class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                              The security's settlement date is the date after the issue date when the security
      *                              is traded to the buyer.
      * @param mixed $maturity The security's maturity date.
      *                            The maturity date is the date when the security expires.
-     * @param mixed $price The security's price per $100 face value
+     * @param int $price The security's price per $100 face value
      * @param int $redemption The security's redemption value per $100 face value
      * @param int $basis The type of day count to use.
      *                                        0 or omitted    US (NASD) 30/360
@@ -1361,9 +1401,10 @@ class Financial
      *
      * Returns the annual yield of a security that pays interest at maturity.
      *
-     * @deprecated 1.18.0
-     *      Use the yieldAtMaturity() method in the Financial\Securities\Yields class instead
+     * @Deprecated 1.18.0
+     *
      * @see Financial\Securities\Yields::yieldAtMaturity()
+     *      Use the yieldAtMaturity() method in the Financial\Securities\Yields class instead
      *
      * @param mixed $settlement The security's settlement date.
      *                              The security's settlement date is the date after the issue date when the security
@@ -1371,8 +1412,8 @@ class Financial
      * @param mixed $maturity The security's maturity date.
      *                            The maturity date is the date when the security expires.
      * @param mixed $issue The security's issue date
-     * @param mixed $rate The security's interest rate at date of issue
-     * @param mixed $price The security's price per $100 face value
+     * @param int $rate The security's interest rate at date of issue
+     * @param int $price The security's price per $100 face value
      * @param int $basis The type of day count to use.
      *                       0 or omitted    US (NASD) 30/360
      *                       1               Actual/actual

+ 2 - 4
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Amortization.php

@@ -80,7 +80,6 @@ class Amortization
         $amortiseCoeff = self::getAmortizationCoefficient($rate);
 
         $rate *= $amortiseCoeff;
-        $rate = (float) (string) $rate; // ugly way to avoid rounding problem
         $fNRate = round($yearFrac * $rate * $cost, 0);
         $cost -= $fNRate;
         $fRest = $cost - $salvage;
@@ -172,9 +171,8 @@ class Amortization
         $yearFrac = $yearFracx;
 
         if (
-            $basis == FinancialConstants::BASIS_DAYS_PER_YEAR_ACTUAL
-            && $yearFrac < 1
-            && DateTimeExcel\Helpers::isLeapYear(Functions::scalar($purchasedYear))
+            ($basis == FinancialConstants::BASIS_DAYS_PER_YEAR_ACTUAL) &&
+            ($yearFrac < 1) && (Functions::scalar(DateTimeExcel\Helpers::isLeapYear($purchasedYear)))
         ) {
             $yearFrac *= 365 / 366;
         }

+ 1 - 4
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/Interest.php

@@ -88,8 +88,6 @@ class Interest
      * @param mixed $period is the period to calculate the interest rate.  It must be betweeen 1 and number_payments.
      * @param mixed $numberOfPeriods is the number of payments for the annuity
      * @param mixed $principleRemaining is the loan amount or present value of the payments
-     *
-     * @return float|string
      */
     public static function schedulePayment($interestRate, $period, $numberOfPeriods, $principleRemaining)
     {
@@ -199,8 +197,7 @@ class Interest
         return $close ? $rate : ExcelError::NAN();
     }
 
-    /** @return float|string */
-    private static function rateNextGuess(float $rate, int $numberOfPeriods, float $payment, float $presentValue, float $futureValue, int $type)
+    private static function rateNextGuess($rate, $numberOfPeriods, $payment, $presentValue, $futureValue, $type)
     {
         if ($rate == 0.0) {
             return ExcelError::NAN();

+ 1 - 3
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Constant/Periodic/InterestAndPrincipal.php

@@ -6,10 +6,8 @@ use PhpOffice\PhpSpreadsheet\Calculation\Financial\Constants as FinancialConstan
 
 class InterestAndPrincipal
 {
-    /** @var float */
     protected $interest;
 
-    /** @var float */
     protected $principal;
 
     public function __construct(
@@ -26,7 +24,7 @@ class InterestAndPrincipal
         $principal = 0.0;
         for ($i = 1; $i <= $period; ++$i) {
             $interest = ($type === FinancialConstants::PAYMENT_BEGINNING_OF_PERIOD && $i == 1) ? 0 : -$capital * $rate;
-            $principal = (float) $payment - $interest;
+            $principal = $payment - $interest;
             $capital += $principal;
         }
 

+ 7 - 73
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Variable/NonPeriodic.php

@@ -51,11 +51,8 @@ class NonPeriodic
         $f2 = self::xnpvOrdered($x2, $values, $dates, false);
         $found = false;
         for ($i = 0; $i < self::FINANCIAL_MAX_ITERATIONS; ++$i) {
-            if (!is_numeric($f1)) {
-                return $f1;
-            }
-            if (!is_numeric($f2)) {
-                return $f2;
+            if (!is_numeric($f1) || !is_numeric($f2)) {
+                break;
             }
             $f1 = (float) $f1;
             $f2 = (float) $f2;
@@ -71,32 +68,11 @@ class NonPeriodic
                 $f2 = self::xnpvOrdered($x2, $values, $dates, false);
             }
         }
-        if ($found) {
-            return self::xirrPart3($values, $dates, $x1, $x2);
-        }
-
-        // Newton-Raphson didn't work - try bisection
-        $x1 = $guess - 0.5;
-        $x2 = $guess + 0.5;
-        for ($i = 0; $i < self::FINANCIAL_MAX_ITERATIONS; ++$i) {
-            $f1 = self::xnpvOrdered($x1, $values, $dates, false, true);
-            $f2 = self::xnpvOrdered($x2, $values, $dates, false, true);
-            if (!is_numeric($f1) || !is_numeric($f2)) {
-                break;
-            }
-            if ($f1 * $f2 <= 0) {
-                $found = true;
-
-                break;
-            }
-            $x1 -= 0.5;
-            $x2 += 0.5;
-        }
-        if ($found) {
-            return self::xirrBisection($values, $dates, $x1, $x2);
+        if (!$found) {
+            return ExcelError::NAN();
         }
 
-        return ExcelError::NAN();
+        return self::xirrPart3($values, $dates, $x1, $x2);
     }
 
     /**
@@ -215,52 +191,13 @@ class NonPeriodic
     }
 
     /**
-     * @return float|string
-     */
-    private static function xirrBisection(array $values, array $dates, float $x1, float $x2)
-    {
-        $rslt = ExcelError::NAN();
-        for ($i = 0; $i < self::FINANCIAL_MAX_ITERATIONS; ++$i) {
-            $rslt = ExcelError::NAN();
-            $f1 = self::xnpvOrdered($x1, $values, $dates, false, true);
-            $f2 = self::xnpvOrdered($x2, $values, $dates, false, true);
-            if (!is_numeric($f1) || !is_numeric($f2)) {
-                break;
-            }
-            $f1 = (float) $f1;
-            $f2 = (float) $f2;
-            if (abs($f1) < self::FINANCIAL_PRECISION && abs($f2) < self::FINANCIAL_PRECISION) {
-                break;
-            }
-            if ($f1 * $f2 > 0) {
-                break;
-            }
-            $rslt = ($x1 + $x2) / 2;
-            $f3 = self::xnpvOrdered($rslt, $values, $dates, false, true);
-            if (!is_float($f3)) {
-                break;
-            }
-            if ($f3 * $f1 < 0) {
-                $x2 = $rslt;
-            } else {
-                $x1 = $rslt;
-            }
-            if (abs($f3) < self::FINANCIAL_PRECISION) {
-                break;
-            }
-        }
-
-        return $rslt;
-    }
-
-    /**
      * @param mixed $rate
      * @param mixed $values
      * @param mixed $dates
      *
      * @return float|string
      */
-    private static function xnpvOrdered($rate, $values, $dates, bool $ordered = true, bool $capAtNegative1 = false)
+    private static function xnpvOrdered($rate, $values, $dates, bool $ordered = true)
     {
         $rate = Functions::flattenSingleValue($rate);
         $values = Functions::flattenArray($values);
@@ -269,9 +206,6 @@ class NonPeriodic
 
         try {
             self::validateXnpv($rate, $values, $dates);
-            if ($capAtNegative1 && $rate <= -1) {
-                $rate = -1.0 + 1.0E-10;
-            }
             $date0 = DateTimeExcel\Helpers::getDateValue($dates[0]);
         } catch (Exception $e) {
             return $e->getMessage();
@@ -291,7 +225,7 @@ class NonPeriodic
             if ($date0 > $datei) {
                 $dif = $ordered ? ExcelError::NAN() : -((int) DateTimeExcel\Difference::interval($datei, $date0, 'd'));
             } else {
-                $dif = Functions::scalar(DateTimeExcel\Difference::interval($date0, $datei, 'd'));
+                $dif = DateTimeExcel\Difference::interval($date0, $datei, 'd');
             }
             if (!is_numeric($dif)) {
                 return $dif;

+ 5 - 13
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/CashFlow/Variable/Periodic.php

@@ -102,7 +102,7 @@ class Periodic
     public static function modifiedRate($values, $financeRate, $reinvestmentRate)
     {
         if (!is_array($values)) {
-            return ExcelError::DIV0();
+            return ExcelError::VALUE();
         }
         $values = Functions::flattenArray($values);
         $financeRate = Functions::flattenSingleValue($financeRate);
@@ -112,7 +112,7 @@ class Periodic
         $rr = 1.0 + $reinvestmentRate;
         $fr = 1.0 + $financeRate;
 
-        $npvPos = $npvNeg = self::$zeroPointZero;
+        $npvPos = $npvNeg = 0.0;
         foreach ($values as $i => $v) {
             if ($v >= 0) {
                 $npvPos += $v / $rr ** $i;
@@ -121,30 +121,22 @@ class Periodic
             }
         }
 
-        if ($npvNeg === self::$zeroPointZero || $npvPos === self::$zeroPointZero) {
-            return ExcelError::DIV0();
+        if (($npvNeg === 0.0) || ($npvPos === 0.0) || ($reinvestmentRate <= -1.0)) {
+            return ExcelError::VALUE();
         }
 
         $mirr = ((-$npvPos * $rr ** $n)
                 / ($npvNeg * ($rr))) ** (1.0 / ($n - 1)) - 1.0;
 
-        return is_finite($mirr) ? $mirr : ExcelError::NAN();
+        return is_finite($mirr) ? $mirr : ExcelError::VALUE();
     }
 
     /**
-     * Sop to Scrutinizer.
-     *
-     * @var float
-     */
-    private static $zeroPointZero = 0.0;
-
-    /**
      * NPV.
      *
      * Returns the Net Present Value of a cash flow series given a discount rate.
      *
      * @param mixed $rate
-     * @param array $args
      *
      * @return float
      */

+ 1 - 10
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Coupons.php

@@ -200,7 +200,7 @@ class Coupons
         }
 
         /** @var int */
-        $daysPerYear = Helpers::daysPerYear(Functions::Scalar(DateTimeExcel\DateParts::year($settlement)), $basis);
+        $daysPerYear = Helpers::daysPerYear(DateTimeExcel\DateParts::year($settlement), $basis);
         $next = self::couponFirstPeriodDate($settlement, $maturity, $frequency, self::PERIOD_DATE_NEXT);
 
         if ($basis === FinancialConstants::BASIS_DAYS_PER_YEAR_NASD) {
@@ -261,7 +261,6 @@ class Coupons
             self::validateCouponPeriod($settlement, $maturity);
             $frequency = FinancialValidations::validateFrequency($frequency);
             $basis = FinancialValidations::validateBasis($basis);
-            self::doNothing($basis);
         } catch (Exception $e) {
             return $e->getMessage();
         }
@@ -316,7 +315,6 @@ class Coupons
             self::validateCouponPeriod($settlement, $maturity);
             $frequency = FinancialValidations::validateFrequency($frequency);
             $basis = FinancialValidations::validateBasis($basis);
-            self::doNothing($basis);
         } catch (Exception $e) {
             return $e->getMessage();
         }
@@ -377,7 +375,6 @@ class Coupons
             self::validateCouponPeriod($settlement, $maturity);
             $frequency = FinancialValidations::validateFrequency($frequency);
             $basis = FinancialValidations::validateBasis($basis);
-            self::doNothing($basis);
         } catch (Exception $e) {
             return $e->getMessage();
         }
@@ -417,10 +414,4 @@ class Coupons
             throw new Exception(ExcelError::NAN());
         }
     }
-
-    /** @param mixed $basis */
-    private static function doNothing($basis): bool
-    {
-        return $basis;
-    }
 }

+ 2 - 11
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Depreciation.php

@@ -8,9 +8,6 @@ use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
 
 class Depreciation
 {
-    /** @var float */
-    private static $zeroPointZero = 0.0;
-
     /**
      * DB.
      *
@@ -54,7 +51,7 @@ class Depreciation
             return $e->getMessage();
         }
 
-        if ($cost === self::$zeroPointZero) {
+        if ($cost === 0.0) {
             return 0.0;
         }
 
@@ -164,7 +161,7 @@ class Depreciation
             return $e->getMessage();
         }
 
-        if ($life === self::$zeroPointZero) {
+        if ($life === 0.0) {
             return ExcelError::DIV0();
         }
 
@@ -208,7 +205,6 @@ class Depreciation
         return $syd;
     }
 
-    /** @param mixed $cost */
     private static function validateCost($cost, bool $negativeValueAllowed = false): float
     {
         $cost = FinancialValidations::validateFloat($cost);
@@ -219,7 +215,6 @@ class Depreciation
         return $cost;
     }
 
-    /** @param mixed $salvage */
     private static function validateSalvage($salvage, bool $negativeValueAllowed = false): float
     {
         $salvage = FinancialValidations::validateFloat($salvage);
@@ -230,7 +225,6 @@ class Depreciation
         return $salvage;
     }
 
-    /** @param mixed $life */
     private static function validateLife($life, bool $negativeValueAllowed = false): float
     {
         $life = FinancialValidations::validateFloat($life);
@@ -241,7 +235,6 @@ class Depreciation
         return $life;
     }
 
-    /** @param mixed $period */
     private static function validatePeriod($period, bool $negativeValueAllowed = false): float
     {
         $period = FinancialValidations::validateFloat($period);
@@ -252,7 +245,6 @@ class Depreciation
         return $period;
     }
 
-    /** @param mixed $month */
     private static function validateMonth($month): int
     {
         $month = FinancialValidations::validateInt($month);
@@ -263,7 +255,6 @@ class Depreciation
         return $month;
     }
 
-    /** @param mixed $factor */
     private static function validateFactor($factor): float
     {
         $factor = FinancialValidations::validateFloat($factor);

+ 0 - 8
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/AccruedInterest.php

@@ -54,7 +54,6 @@ class AccruedInterest
         $basis = FinancialConstants::BASIS_DAYS_PER_YEAR_NASD,
         $calcMethod = self::ACCRINT_CALCMODE_ISSUE_TO_SETTLEMENT
     ) {
-        self::doNothing($calcMethod);
         $issue = Functions::flattenSingleValue($issue);
         $firstInterest = Functions::flattenSingleValue($firstInterest);
         $settlement = Functions::flattenSingleValue($settlement);
@@ -74,7 +73,6 @@ class AccruedInterest
             $rate = SecurityValidations::validateRate($rate);
             $parValue = SecurityValidations::validateParValue($parValue);
             $frequency = SecurityValidations::validateFrequency($frequency);
-            self::doNothing($frequency);
             $basis = SecurityValidations::validateBasis($basis);
         } catch (Exception $e) {
             return $e->getMessage();
@@ -150,10 +148,4 @@ class AccruedInterest
 
         return $parValue * $rate * $daysBetweenIssueAndSettlement;
     }
-
-    /** @param mixed $arg */
-    private static function doNothing($arg): bool
-    {
-        return (bool) $arg;
-    }
 }

+ 6 - 6
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Price.php

@@ -70,10 +70,10 @@ class Price
             return $e->getMessage();
         }
 
-        $dsc = (float) Coupons::COUPDAYSNC($settlement, $maturity, $frequency, $basis);
-        $e = (float) Coupons::COUPDAYS($settlement, $maturity, $frequency, $basis);
-        $n = (int) Coupons::COUPNUM($settlement, $maturity, $frequency, $basis);
-        $a = (float) Coupons::COUPDAYBS($settlement, $maturity, $frequency, $basis);
+        $dsc = Coupons::COUPDAYSNC($settlement, $maturity, $frequency, $basis);
+        $e = Coupons::COUPDAYS($settlement, $maturity, $frequency, $basis);
+        $n = Coupons::COUPNUM($settlement, $maturity, $frequency, $basis);
+        $a = Coupons::COUPDAYBS($settlement, $maturity, $frequency, $basis);
 
         $baseYF = 1.0 + ($yield / $frequency);
         $rfp = 100 * ($rate / $frequency);
@@ -195,7 +195,7 @@ class Price
             return $e->getMessage();
         }
 
-        $daysPerYear = Helpers::daysPerYear(Functions::scalar(DateTimeExcel\DateParts::year($settlement)), $basis);
+        $daysPerYear = Functions::scalar(Helpers::daysPerYear(DateTimeExcel\DateParts::year($settlement), $basis));
         if (!is_numeric($daysPerYear)) {
             return $daysPerYear;
         }
@@ -276,7 +276,7 @@ class Price
         $daysBetweenSettlementAndMaturity = DateTimeExcel\YearFrac::fraction($settlement, $maturity, $basis);
         if (!is_numeric($daysBetweenSettlementAndMaturity)) {
             //    return date error
-            return Functions::scalar($daysBetweenSettlementAndMaturity);
+            return $daysBetweenSettlementAndMaturity;
         }
 
         return $investment / (1 - ($discount * $daysBetweenSettlementAndMaturity));

+ 2 - 2
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial/Securities/Yields.php

@@ -57,7 +57,7 @@ class Yields
             return $e->getMessage();
         }
 
-        $daysPerYear = Helpers::daysPerYear(Functions::scalar(DateTimeExcel\DateParts::year($settlement)), $basis);
+        $daysPerYear = Helpers::daysPerYear(DateTimeExcel\DateParts::year($settlement), $basis);
         if (!is_numeric($daysPerYear)) {
             return $daysPerYear;
         }
@@ -122,7 +122,7 @@ class Yields
             return $e->getMessage();
         }
 
-        $daysPerYear = Helpers::daysPerYear(Functions::scalar(DateTimeExcel\DateParts::year($settlement)), $basis);
+        $daysPerYear = Helpers::daysPerYear(DateTimeExcel\DateParts::year($settlement), $basis);
         if (!is_numeric($daysPerYear)) {
             return $daysPerYear;
         }

+ 6 - 7
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/FormulaParser.php

@@ -137,8 +137,7 @@ class FormulaParser
         // Helper variables
         $tokens1 = $tokens2 = $stack = [];
         $inString = $inPath = $inRange = $inError = false;
-        $nextToken = null;
-        //$token = $previousToken = null;
+        $token = $previousToken = $nextToken = null;
 
         $index = 1;
         $value = '';
@@ -528,11 +527,11 @@ class FormulaParser
             } else {
                 $previousToken = null;
             }
-            //if (isset($tokens2[$i + 1])) {
-            //    $nextToken = $tokens2[$i + 1];
-            //} else {
-            //    $nextToken = null;
-            //}
+            if (isset($tokens2[$i + 1])) {
+                $nextToken = $tokens2[$i + 1];
+            } else {
+                $nextToken = null;
+            }
 
             if ($token === null) {
                 continue;

+ 80 - 47
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Functions.php

@@ -130,26 +130,22 @@ class Functions
         return '#Not Yet Implemented';
     }
 
-    /** @param mixed $idx */
-    public static function isMatrixValue($idx): bool
+    public static function isMatrixValue($idx)
     {
         return (substr_count($idx, '.') <= 1) || (preg_match('/\.[A-Z]/', $idx) > 0);
     }
 
-    /** @param mixed $idx */
-    public static function isValue($idx): bool
+    public static function isValue($idx)
     {
         return substr_count($idx, '.') === 0;
     }
 
-    /** @param mixed $idx */
-    public static function isCellValue($idx): bool
+    public static function isCellValue($idx)
     {
         return substr_count($idx, '.') > 1;
     }
 
-    /** @param mixed $condition */
-    public static function ifCondition($condition): string
+    public static function ifCondition($condition)
     {
         $condition = self::flattenSingleValue($condition);
 
@@ -184,11 +180,6 @@ class Functions
         return str_replace('""""', '""', $operator . $operand);
     }
 
-    /**
-     * @param mixed $operand
-     *
-     * @return mixed
-     */
     private static function operandSpecialHandling($operand)
     {
         if (is_numeric($operand) || is_bool($operand)) {
@@ -215,10 +206,12 @@ class Functions
      *
      * Returns the error value #NULL!
      *
-     * @deprecated 1.23.0 Use the null() method in the Information\ExcelError class instead
-     * @see Information\ExcelError::null()
+     * @Deprecated 1.23.0
      *
      * @return string #NULL!
+     *
+     *@see Information\ExcelError::null()
+     * Use the null() method in the Information\Error class instead
      */
     public static function null()
     {
@@ -230,10 +223,12 @@ class Functions
      *
      * Returns the error value #NUM!
      *
-     * @deprecated 1.23.0 Use the NAN() method in the Information\Error class instead
-     * @see Information\ExcelError::NAN()
+     * @Deprecated 1.23.0
      *
      * @return string #NUM!
+     *
+     * @see Information\ExcelError::NAN()
+     * Use the NAN() method in the Information\Error class instead
      */
     public static function NAN()
     {
@@ -245,10 +240,12 @@ class Functions
      *
      * Returns the error value #REF!
      *
-     * @deprecated 1.23.0 Use the REF() method in the Information\ExcelError class instead
-     * @see Information\ExcelError::REF()
+     * @Deprecated 1.23.0
      *
      * @return string #REF!
+     *
+     * @see Information\ExcelError::REF()
+     * Use the REF() method in the Information\Error class instead
      */
     public static function REF()
     {
@@ -264,10 +261,12 @@ class Functions
      * Returns the error value #N/A
      *        #N/A is the error value that means "no value is available."
      *
-     * @deprecated 1.23.0 Use the NA() method in the Information\ExcelError class instead
-     * @see Information\ExcelError::NA()
+     * @Deprecated 1.23.0
      *
      * @return string #N/A!
+     *
+     * @see Information\ExcelError::NA()
+     * Use the NA() method in the Information\Error class instead
      */
     public static function NA()
     {
@@ -279,10 +278,12 @@ class Functions
      *
      * Returns the error value #VALUE!
      *
-     * @deprecated 1.23.0 Use the VALUE() method in the Information\ExcelError class instead
-     * @see Information\ExcelError::VALUE()
+     * @Deprecated 1.23.0
      *
      * @return string #VALUE!
+     *
+     * @see Information\ExcelError::VALUE()
+     * Use the VALUE() method in the Information\Error class instead
      */
     public static function VALUE()
     {
@@ -294,10 +295,12 @@ class Functions
      *
      * Returns the error value #NAME?
      *
-     * @deprecated 1.23.0 Use the NAME() method in the Information\ExcelError class instead
-     * @see Information\ExcelError::NAME()
+     * @Deprecated 1.23.0
      *
      * @return string #NAME?
+     *
+     * @see Information\ExcelError::NAME()
+     * Use the NAME() method in the Information\Error class instead
      */
     public static function NAME()
     {
@@ -307,10 +310,12 @@ class Functions
     /**
      * DIV0.
      *
-     * @deprecated 1.23.0 Use the DIV0() method in the Information\ExcelError class instead
-     * @see Information\ExcelError::DIV0()
+     * @Deprecated 1.23.0
      *
      * @return string #Not Yet Implemented
+     *
+     *@see Information\ExcelError::DIV0()
+     * Use the DIV0() method in the Information\Error class instead
      */
     public static function DIV0()
     {
@@ -322,10 +327,12 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the type() method in the Information\ExcelError class instead
-     * @see Information\ExcelError::type()
+     * @Deprecated 1.23.0
      *
      * @return array|int|string
+     *
+     * @see Information\ExcelError::type()
+     * Use the type() method in the Information\Error class instead
      */
     public static function errorType($value = '')
     {
@@ -337,8 +344,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isBlank() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::isBlank()
+     * Use the isBlank() method in the Information\Value class instead
      *
      * @return array|bool
      */
@@ -352,8 +361,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isErr() method in the Information\ErrorValue class instead
-     * @see Information\ErrorValue::isErr()
+     * @Deprecated 1.23.0
+     *
+     * @see Information\Value::isErr()
+     * Use the isErr() method in the Information\Value class instead
      *
      * @return array|bool
      */
@@ -367,8 +378,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isError() method in the Information\ErrorValue class instead
-     * @see Information\ErrorValue::isError()
+     * @Deprecated 1.23.0
+     *
+     * @see Information\Value::isError()
+     * Use the isError() method in the Information\Value class instead
      *
      * @return array|bool
      */
@@ -382,8 +395,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isNa() method in the Information\ErrorValue class instead
-     * @see Information\ErrorValue::isNa()
+     * @Deprecated 1.23.0
+     *
+     * @see Information\Value::isNa()
+     * Use the isNa() method in the Information\Value class instead
      *
      * @return array|bool
      */
@@ -397,8 +412,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isEven() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::isEven()
+     * Use the isEven() method in the Information\Value class instead
      *
      * @return array|bool|string
      */
@@ -412,8 +429,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isOdd() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::isOdd()
+     * Use the isOdd() method in the Information\Value class instead
      *
      * @return array|bool|string
      */
@@ -427,8 +446,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isNumber() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::isNumber()
+     * Use the isNumber() method in the Information\Value class instead
      *
      * @return array|bool
      */
@@ -442,8 +463,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isLogical() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::isLogical()
+     * Use the isLogical() method in the Information\Value class instead
      *
      * @return array|bool
      */
@@ -457,8 +480,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isText() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::isText()
+     * Use the isText() method in the Information\Value class instead
      *
      * @return array|bool
      */
@@ -472,8 +497,10 @@ class Functions
      *
      * @param mixed $value Value to check
      *
-     * @deprecated 1.23.0 Use the isNonText() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::isNonText()
+     * Use the isNonText() method in the Information\Value class instead
      *
      * @return array|bool
      */
@@ -487,8 +514,10 @@ class Functions
      *
      * Returns a value converted to a number
      *
-     * @deprecated 1.23.0 Use the asNumber() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::asNumber()
+     * Use the asNumber() method in the Information\Value class instead
      *
      * @param null|mixed $value The value you want converted
      *
@@ -511,8 +540,10 @@ class Functions
      *
      * Returns a number that identifies the type of a value
      *
-     * @deprecated 1.23.0 Use the type() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::type()
+     * Use the type() method in the Information\Value class instead
      *
      * @param null|mixed $value The value you want tested
      *
@@ -545,7 +576,7 @@ class Functions
         $flattened = [];
         $stack = array_values($array);
 
-        while (!empty($stack)) {
+        while ($stack) {
             $value = array_shift($stack);
 
             if (is_array($value)) {
@@ -628,8 +659,10 @@ class Functions
     /**
      * ISFORMULA.
      *
-     * @deprecated 1.23.0 Use the isFormula() method in the Information\Value class instead
+     * @Deprecated 1.23.0
+     *
      * @see Information\Value::isFormula()
+     * Use the isFormula() method in the Information\Value class instead
      *
      * @param mixed $cellReference The cell to check
      * @param ?Cell $cell The current cell (containing this formula)
@@ -644,7 +677,7 @@ class Functions
     public static function expandDefinedName(string $coordinate, Cell $cell): string
     {
         $worksheet = $cell->getWorksheet();
-        $spreadsheet = $worksheet->getParentOrThrow();
+        $spreadsheet = $worksheet->getParent();
         // Uppercase coordinate
         $pCoordinatex = strtoupper($coordinate);
         // Eliminate leading equal sign

+ 0 - 0
include/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Information/Value.php


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません