summaryrefslogtreecommitdiff
path: root/systems/texlive/tlnet/tlpkg/tlperl/site/lib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-04-02 03:20:54 +0000
committerNorbert Preining <norbert@preining.info>2021-04-02 03:20:54 +0000
commit3f173002d4a4a84e7d1fa5a74755fdd00d08a9c2 (patch)
tree5ed380344702de1f9ab53b68b6c3bcd6b8458087 /systems/texlive/tlnet/tlpkg/tlperl/site/lib
parentf78ba658b3ecd56053fe0837a4404d0c6c16a707 (diff)
CTAN sync 202104020320
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/tlperl/site/lib')
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm40
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Format.pm403
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language.pm145
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Afar.pm49
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Amharic.pm87
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Austrian.pm36
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Brazilian.pm35
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Bulgarian.pm92
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Chinese.pm36
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Chinese_GB.pm36
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Czech.pm58
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Danish.pm36
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Dutch.pm40
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/English.pm37
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Finnish.pm45
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/French.pm37
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Gedeo.pm51
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/German.pm37
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Greek.pm91
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Hungarian.pm88
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Icelandic.pm36
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Italian.pm36
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Norwegian.pm36
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Occitan.pm36
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Oromo.pm37
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Romanian.pm37
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian.pm49
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian_cp1251.pm39
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian_koi8r.pm39
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Sidama.pm37
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Somali.pm62
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Spanish.pm35
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Swedish.pm41
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Tigrinya.pm58
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/TigrinyaEritrean.pm93
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/TigrinyaEthiopian.pm93
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Turkish.pm59
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Parse.pm388
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Digest/SHA.pm820
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Digest/SHA1.pm246
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/File/Listing.pm463
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Entities.pm13
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Filter.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/HeadParser.pm7
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Parser.pm166
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/PullParser.pm7
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/TokeParser.pm9
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Config.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies.pm9
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm7
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Daemon.pm140
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers.pm13
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Auth.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/ETag.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Util.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Message.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request/Common.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Response.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Status.pm46
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/IO/HTML.pm98
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/JSON/MaybeXS.pm13
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm14
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm14
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/ConnCache.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/DebugFile.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/RobotUA.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Simple.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/UserAgent.pm64
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem745
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl76
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP.pm10
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTPS.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Socket.pm28
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Test/Fatal.pm109
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/Time/Zone.pm291
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/TimeDate.pm16
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI.pm10
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Escape.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Heuristic.pm4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/IRI.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/QueryParam.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Split.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/URL.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/WithBase.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_foreign.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_generic.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_idna.pm4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_ldap.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_login.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_punycode.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_query.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_segment.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_server.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_userpass.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/data.pm6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Base.pm4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/FAT.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Mac.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/OS2.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/QNX.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Unix.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Win32.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ftp.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/gopher.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/http.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/https.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldap.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldapi.pm4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldaps.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mailto.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mms.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/news.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/nntp.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/pop.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rlogin.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rsync.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtsp.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtspu.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sftp.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sip.pm4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sips.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/snews.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ssh.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/telnet.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/tn3270.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/isbn.pm2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/oid.pm2
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist12
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dllbin84992 -> 84992 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist39
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist4
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dllbin0 -> 47616 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA1/.packlist2
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA1/SHA1.dllbin24064 -> 0 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist8
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Which/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist16
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dllbin52224 -> 50688 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist20
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/String/.packlist2
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist10
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dllbin70656 -> 70144 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist6
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist8
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/.packlist4
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/Socket.dllbin40448 -> 40448 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist2
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist2
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/URI/.packlist106
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist14
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/API.dllbin31744 -> 31744 bytes
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dllbin25600 -> 25600 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist4
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dllbin50176 -> 49664 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist4
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dllbin52224 -> 52224 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist4
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist6
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dllbin157184 -> 156160 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist66
197 files changed, 5380 insertions, 1361 deletions
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm
index 47df6b4ea7..395fec3fef 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm
@@ -1,5 +1,5 @@
package Cpanel::JSON::XS;
-our $VERSION = '4.19';
+our $VERSION = '4.25';
our $XS_VERSION = $VERSION;
# $VERSION = eval $VERSION;
@@ -174,10 +174,12 @@ B<Changes to JSON::XS>
- #72 parsing of illegal unicode or non-unicode characters.
- - #96 locale-insensitive numeric conversion
+ - #96 locale-insensitive numeric conversion.
- #154 numeric conversion fixed since 5.22, using the same strtold as perl5.
+ - #167 sort tied hashes with canonical.
+
- public maintenance and bugtracker
- use ppport.h, sanify XS.xs comment styles, harness C coding style
@@ -265,19 +267,21 @@ Note that older decode_json versions in Cpanel::JSON::XS older than
3.0116 and JSON::XS did not set allow_nonref but allowed them due to a
bug in the decoder.
-If the new optional $allow_nonref argument is set and not false, the
-allow_nonref option will be set and the function will act is described
+If the new 2nd optional $allow_nonref argument is set and not false, the
+C<allow_nonref> option will be set and the function will act is described
as in the relaxed RFC 7159 allowing all values such as objects,
arrays, strings, numbers, "null", "true", and "false".
+See L</"OLD" VS. "NEW" JSON (RFC 4627 VS. RFC 7159)> below, why you don't
+want to do that.
-For the type argument see L<Cpanel::JSON::XS::Type>.
+For the 3rd optional type argument see L<Cpanel::JSON::XS::Type>.
=item $is_boolean = Cpanel::JSON::XS::is_bool $scalar
-Returns true if the passed scalar represents either C<JSON::XS::true>
-or C<JSON::XS::false>, two constants that act like C<1> and C<0>,
+Returns true if the passed scalar represents either C<JSON::PP::true>
+or C<JSON::PP::false>, two constants that act like C<1> and C<0>,
respectively and are used to represent JSON C<true> and C<false>
-values in Perl.
+values in Perl. (Also recognizes the booleans produced by L<JSON::XS>.)
See MAPPING, below, for more information on how JSON values are mapped
to Perl.
@@ -682,8 +686,10 @@ as key-value pairs have no inherent ordering in Perl.
This setting has no effect when decoding JSON texts.
-This setting has currently no effect on tied hashes.
-
+This is now also done with tied hashes, contrary to L<JSON::XS>.
+But note that with most large tied hashes stored as tree it is advised to
+sort the iterator already and don't sort the hash output here. Most such
+iterators are already sorted, as such e.g. L<DB_File> with C<DB_BTREE>.
=item $json = $json->sort_by (undef, 0, 1 or a block)
@@ -718,7 +724,7 @@ This setting has no effect when decoding JSON texts.
If C<$enable> is true (or missing), then C<decode> will return
Perl non-object boolean variables (1 and 0) for JSON booleans
(C<true> and C<false>). If C<$enable> is false, then C<decode>
-will return C<Cpanel::JSON::XS::Boolean> objects for JSON booleans.
+will return C<JSON::PP::Boolean> objects for JSON booleans.
=item $json = $json->allow_singlequote ([$enable])
@@ -889,7 +895,8 @@ object (C<convert_blessed> enabled and C<TO_JSON> method found) is being
encoded. Has no effect on C<decode>.
If C<$enable> is false (the default), then C<encode> will throw an
-exception when it encounters a blessed object.
+exception when it encounters a blessed object without C<convert_blessed>
+and a C<TO_JSON> method.
This setting has no effect on C<decode>.
@@ -1066,7 +1073,7 @@ Note that nesting is implemented by recursion in C. The default value has
been chosen to be as large as typical operating systems allow without
crashing.
-See SECURITY CONSIDERATIONS, below, for more info on why this is useful.
+See L</SECURITY CONSIDERATIONS>, below, for more info on why this is useful.
=item $json = $json->max_size ([$maximum_string_size])
@@ -1485,8 +1492,8 @@ up to but not including the least significant bit.
When C<unblessed_bool> is set to true, then JSON C<true> becomes C<1> and
JSON C<false> becomes C<0>.
-Otherwise these JSON atoms become C<Cpanel::JSON::XS::true> and
-C<Cpanel::JSON::XS::false>, respectively. They are C<JSON::PP::Boolean>
+Otherwise these JSON atoms become C<JSON::PP::true> and
+C<JSON::PP::false>, respectively. They are C<JSON::PP::Boolean>
objects and are overloaded to act almost exactly like the numbers C<1>
and C<0>. You can check whether a scalar is a JSON boolean by using
the C<Cpanel::JSON::XS::is_bool> function.
@@ -2270,6 +2277,9 @@ future versions are safe.
Cpanel::JSON::XS has proper ithreads support, unlike JSON::XS. If you
encounter any bugs with thread support please report them.
+From Version 4.00 - 4.19 you couldn't encode true with threads::shared
+magic.
+
=head1 BUGS
While the goal of the Cpanel::JSON::XS module is to be correct, that
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Format.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Format.pm
new file mode 100644
index 0000000000..3a1ea90ef1
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Format.pm
@@ -0,0 +1,403 @@
+# Copyright (c) 1995-2009 Graham Barr. This program is free
+# software; you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+
+package Date::Format;
+
+use strict;
+use vars qw(@EXPORT @ISA $VERSION);
+require Exporter;
+
+$VERSION = "2.24";
+@ISA = qw(Exporter);
+@EXPORT = qw(time2str strftime ctime asctime);
+
+sub time2str ($;$$)
+{
+ Date::Format::Generic->time2str(@_);
+}
+
+sub strftime ($\@;$)
+{
+ Date::Format::Generic->strftime(@_);
+}
+
+sub ctime ($;$)
+{
+ my($t,$tz) = @_;
+ Date::Format::Generic->time2str("%a %b %e %T %Y\n", $t, $tz);
+}
+
+sub asctime (\@;$)
+{
+ my($t,$tz) = @_;
+ Date::Format::Generic->strftime("%a %b %e %T %Y\n", $t, $tz);
+}
+
+##
+##
+##
+
+package Date::Format::Generic;
+
+use vars qw($epoch $tzname);
+use Time::Zone;
+use Time::Local;
+
+sub ctime
+{
+ my($me,$t,$tz) = @_;
+ $me->time2str("%a %b %e %T %Y\n", $t, $tz);
+}
+
+sub asctime
+{
+ my($me,$t,$tz) = @_;
+ $me->strftime("%a %b %e %T %Y\n", $t, $tz);
+}
+
+sub _subs
+{
+ my $fn;
+ $_[1] =~ s/
+ %(O?[%a-zA-Z])
+ /
+ ($_[0]->can("format_$1") || sub { $1 })->($_[0]);
+ /sgeox;
+
+ $_[1];
+}
+
+sub strftime
+{
+ my($pkg,$fmt,$time);
+
+ ($pkg,$fmt,$time,$tzname) = @_;
+
+ my $me = ref($pkg) ? $pkg : bless [];
+
+ if(defined $tzname)
+ {
+ $tzname = uc $tzname;
+
+ $tzname = sprintf("%+05d",$tzname)
+ unless($tzname =~ /\D/);
+
+ $epoch = timegm(@{$time}[0..5]);
+
+ @$me = gmtime($epoch + tz_offset($tzname) - tz_offset());
+ }
+ else
+ {
+ @$me = @$time;
+ undef $epoch;
+ }
+
+ _subs($me,$fmt);
+}
+
+sub time2str
+{
+ my($pkg,$fmt,$time);
+
+ ($pkg,$fmt,$time,$tzname) = @_;
+
+ my $me = ref($pkg) ? $pkg : bless [], $pkg;
+
+ $epoch = $time;
+
+ if(defined $tzname)
+ {
+ $tzname = uc $tzname;
+
+ $tzname = sprintf("%+05d",$tzname)
+ unless($tzname =~ /\D/);
+
+ $time += tz_offset($tzname);
+ @$me = gmtime($time);
+ }
+ else
+ {
+ @$me = localtime($time);
+ }
+ $me->[9] = $time;
+ _subs($me,$fmt);
+}
+
+my(@DoW,@MoY,@DoWs,@MoYs,@AMPM,%format,@Dsuf);
+
+@DoW = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday);
+
+@MoY = qw(January February March April May June
+ July August September October November December);
+
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+
+@AMPM = qw(AM PM);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+%format = ('x' => "%m/%d/%y",
+ 'C' => "%a %b %e %T %Z %Y",
+ 'X' => "%H:%M:%S",
+ );
+
+my @locale;
+my $locale = "/usr/share/lib/locale/LC_TIME/default";
+local *LOCALE;
+
+if(open(LOCALE,"$locale"))
+ {
+ chop(@locale = <LOCALE>);
+ close(LOCALE);
+
+ @MoYs = @locale[0 .. 11];
+ @MoY = @locale[12 .. 23];
+ @DoWs = @locale[24 .. 30];
+ @DoW = @locale[31 .. 37];
+ @format{"X","x","C"} = @locale[38 .. 40];
+ @AMPM = @locale[41 .. 42];
+ }
+
+sub wkyr {
+ my($wstart, $wday, $yday) = @_;
+ $wday = ($wday + 7 - $wstart) % 7;
+ return int(($yday - $wday + 13) / 7 - 1);
+}
+
+##
+## these 6 formatting routins need to be *copied* into the language
+## specific packages
+##
+
+my @roman = ('',qw(I II III IV V VI VII VIII IX));
+sub roman {
+ my $n = shift;
+
+ $n =~ s/(\d)$//;
+ my $r = $roman[ $1 ];
+
+ if($n =~ s/(\d)$//) {
+ (my $t = $roman[$1]) =~ tr/IVX/XLC/;
+ $r = $t . $r;
+ }
+ if($n =~ s/(\d)$//) {
+ (my $t = $roman[$1]) =~ tr/IVX/CDM/;
+ $r = $t . $r;
+ }
+ if($n =~ s/(\d)$//) {
+ (my $t = $roman[$1]) =~ tr/IVX/M../;
+ $r = $t . $r;
+ }
+ $r;
+}
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_P { lc($_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0]) }
+
+sub format_d { sprintf("%02d",$_[0]->[3]) }
+sub format_e { sprintf("%2d",$_[0]->[3]) }
+sub format_H { sprintf("%02d",$_[0]->[2]) }
+sub format_I { sprintf("%02d",$_[0]->[2] % 12 || 12)}
+sub format_j { sprintf("%03d",$_[0]->[7] + 1) }
+sub format_k { sprintf("%2d",$_[0]->[2]) }
+sub format_l { sprintf("%2d",$_[0]->[2] % 12 || 12)}
+sub format_L { $_[0]->[4] + 1 }
+sub format_m { sprintf("%02d",$_[0]->[4] + 1) }
+sub format_M { sprintf("%02d",$_[0]->[1]) }
+sub format_q { sprintf("%01d",int($_[0]->[4] / 3) + 1) }
+sub format_s {
+ $epoch = timelocal(@{$_[0]}[0..5])
+ unless defined $epoch;
+ sprintf("%d",$epoch)
+}
+sub format_S { sprintf("%02d",$_[0]->[0]) }
+sub format_U { wkyr(0, $_[0]->[6], $_[0]->[7]) }
+sub format_w { $_[0]->[6] }
+sub format_W { wkyr(1, $_[0]->[6], $_[0]->[7]) }
+sub format_y { sprintf("%02d",$_[0]->[5] % 100) }
+sub format_Y { sprintf("%04d",$_[0]->[5] + 1900) }
+
+sub format_Z {
+ my $o = tz_local_offset(timelocal(@{$_[0]}[0..5]));
+ defined $tzname ? $tzname : uc tz_name($o, $_[0]->[8]);
+}
+
+sub format_z {
+ my $t = timelocal(@{$_[0]}[0..5]);
+ my $o = defined $tzname ? tz_offset($tzname, $t) : tz_offset(undef,$t);
+ sprintf("%+03d%02d", int($o / 3600), int(abs($o) % 3600) / 60);
+}
+
+sub format_c { &format_x . " " . &format_X }
+sub format_D { &format_m . "/" . &format_d . "/" . &format_y }
+sub format_r { &format_I . ":" . &format_M . ":" . &format_S . " " . &format_p }
+sub format_R { &format_H . ":" . &format_M }
+sub format_T { &format_H . ":" . &format_M . ":" . &format_S }
+sub format_t { "\t" }
+sub format_n { "\n" }
+sub format_o { sprintf("%2d%s",$_[0]->[3],$Dsuf[$_[0]->[3]]) }
+sub format_x { my $f = $format{'x'}; _subs($_[0],$f); }
+sub format_X { my $f = $format{'X'}; _subs($_[0],$f); }
+sub format_C { my $f = $format{'C'}; _subs($_[0],$f); }
+
+sub format_Od { roman(format_d(@_)) }
+sub format_Oe { roman(format_e(@_)) }
+sub format_OH { roman(format_H(@_)) }
+sub format_OI { roman(format_I(@_)) }
+sub format_Oj { roman(format_j(@_)) }
+sub format_Ok { roman(format_k(@_)) }
+sub format_Ol { roman(format_l(@_)) }
+sub format_Om { roman(format_m(@_)) }
+sub format_OM { roman(format_M(@_)) }
+sub format_Oq { roman(format_q(@_)) }
+sub format_Oy { roman(format_y(@_)) }
+sub format_OY { roman(format_Y(@_)) }
+
+sub format_G { int(($_[0]->[9] - 315993600) / 604800) }
+
+1;
+__END__
+
+=head1 NAME
+
+Date::Format - Date formating subroutines
+
+=head1 SYNOPSIS
+
+ use Date::Format;
+
+ @lt = localtime(time);
+
+ print time2str($template, time);
+ print strftime($template, @lt);
+
+ print time2str($template, time, $zone);
+ print strftime($template, @lt, $zone);
+
+ print ctime(time);
+ print asctime(@lt);
+
+ print ctime(time, $zone);
+ print asctime(@lt, $zone);
+
+=head1 DESCRIPTION
+
+This module provides routines to format dates into ASCII strings. They
+correspond to the C library routines C<strftime> and C<ctime>.
+
+=over 4
+
+=item time2str(TEMPLATE, TIME [, ZONE])
+
+C<time2str> converts C<TIME> into an ASCII string using the conversion
+specification given in C<TEMPLATE>. C<ZONE> if given specifies the zone
+which the output is required to be in, C<ZONE> defaults to your current zone.
+
+
+=item strftime(TEMPLATE, TIME [, ZONE])
+
+C<strftime> is similar to C<time2str> with the exception that the time is
+passed as an array, such as the array returned by C<localtime>.
+
+=item ctime(TIME [, ZONE])
+
+C<ctime> calls C<time2str> with the given arguments using the
+conversion specification C<"%a %b %e %T %Y\n">
+
+=item asctime(TIME [, ZONE])
+
+C<asctime> calls C<time2str> with the given arguments using the
+conversion specification C<"%a %b %e %T %Y\n">
+
+=back
+
+=head1 MULTI-LANGUAGE SUPPORT
+
+Date::Format is capable of formating into several languages by creating
+a language specific object and calling methods, see L<Date::Language>
+
+ my $lang = Date::Language->new('German');
+ $lang->time2str("%a %b %e %T %Y\n", time);
+
+I am open to suggestions on this.
+
+=head1 CONVERSION SPECIFICATION
+
+Each conversion specification is replaced by appropriate
+characters as described in the following list. The
+appropriate characters are determined by the LC_TIME
+category of the program's locale.
+
+ %% PERCENT
+ %a day of the week abbr
+ %A day of the week
+ %b month abbr
+ %B month
+ %c MM/DD/YY HH:MM:SS
+ %C ctime format: Sat Nov 19 21:05:57 1994
+ %d numeric day of the month, with leading zeros (eg 01..31)
+ %e like %d, but a leading zero is replaced by a space (eg 1..32)
+ %D MM/DD/YY
+ %G GPS week number (weeks since January 6, 1980)
+ %h month abbr
+ %H hour, 24 hour clock, leading 0's)
+ %I hour, 12 hour clock, leading 0's)
+ %j day of the year
+ %k hour
+ %l hour, 12 hour clock
+ %L month number, starting with 1
+ %m month number, starting with 01
+ %M minute, leading 0's
+ %n NEWLINE
+ %o ornate day of month -- "1st", "2nd", "25th", etc.
+ %p AM or PM
+ %P am or pm (Yes %p and %P are backwards :)
+ %q Quarter number, starting with 1
+ %r time format: 09:05:57 PM
+ %R time format: 21:05
+ %s seconds since the Epoch, UCT
+ %S seconds, leading 0's
+ %t TAB
+ %T time format: 21:05:57
+ %U week number, Sunday as first day of week
+ %w day of the week, numerically, Sunday == 0
+ %W week number, Monday as first day of week
+ %x date format: 11/19/94
+ %X time format: 21:05:57
+ %y year (2 digits)
+ %Y year (4 digits)
+ %Z timezone in ascii. eg: PST
+ %z timezone in format -/+0000
+
+C<%d>, C<%e>, C<%H>, C<%I>, C<%j>, C<%k>, C<%l>, C<%m>, C<%M>, C<%q>,
+C<%y> and C<%Y> can be output in Roman numerals by prefixing the letter
+with C<O>, e.g. C<%OY> will output the year as roman numerals.
+
+=head1 LIMITATION
+
+The functions in this module are limited to the time range that can be
+represented by the time_t data type, i.e. 1901-12-13 20:45:53 GMT to
+2038-01-19 03:14:07 GMT.
+
+=head1 AUTHOR
+
+Graham Barr <gbarr@pobox.com>
+
+=head1 COPYRIGHT
+
+Copyright (c) 1995-2009 Graham Barr. This program is free
+software; you can redistribute it and/or modify it under the same terms
+as Perl itself.
+
+=cut
+
+
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language.pm
new file mode 100644
index 0000000000..17568657e7
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language.pm
@@ -0,0 +1,145 @@
+
+package Date::Language;
+
+use strict;
+use Time::Local;
+use Carp;
+use vars qw($VERSION @ISA);
+require Date::Format;
+
+$VERSION = "1.10";
+@ISA = qw(Date::Format::Generic);
+
+sub new
+{
+ my $self = shift;
+ my $type = shift || $self;
+
+ $type =~ s/^(\w+)$/Date::Language::$1/;
+
+ croak "Bad language"
+ unless $type =~ /^[\w:]+$/;
+
+ eval "require $type"
+ or croak $@;
+
+ bless [], $type;
+}
+
+# Stop AUTOLOAD being called ;-)
+sub DESTROY {}
+
+sub AUTOLOAD
+{
+ use vars qw($AUTOLOAD);
+
+ if($AUTOLOAD =~ /::strptime\Z/o)
+ {
+ my $self = $_[0];
+ my $type = ref($self) || $self;
+ require Date::Parse;
+
+ no strict 'refs';
+ *{"${type}::strptime"} = Date::Parse::gen_parser(
+ \%{"${type}::DoW"},
+ \%{"${type}::MoY"},
+ \@{"${type}::Dsuf"},
+ 1);
+
+ goto &{"${type}::strptime"};
+ }
+
+ croak "Undefined method &$AUTOLOAD called";
+}
+
+sub str2time
+{
+ my $me = shift;
+ my @t = $me->strptime(@_);
+
+ return undef
+ unless @t;
+
+ my($ss,$mm,$hh,$day,$month,$year,$zone) = @t;
+ my @lt = localtime(time);
+
+ $hh ||= 0;
+ $mm ||= 0;
+ $ss ||= 0;
+
+ $month = $lt[4]
+ unless(defined $month);
+
+ $day = $lt[3]
+ unless(defined $day);
+
+ $year = ($month > $lt[4]) ? ($lt[5] - 1) : $lt[5]
+ unless(defined $year);
+
+ return defined $zone ? timegm($ss,$mm,$hh,$day,$month,$year) - $zone
+ : timelocal($ss,$mm,$hh,$day,$month,$year);
+}
+
+1;
+
+__END__
+
+
+=head1 NAME
+
+Date::Language - Language specific date formating and parsing
+
+=head1 SYNOPSIS
+
+ use Date::Language;
+
+ my $lang = Date::Language->new('German');
+ $lang->time2str("%a %b %e %T %Y\n", time);
+
+=head1 DESCRIPTION
+
+L<Date::Language> provides objects to parse and format dates for specific languages. Available languages are
+
+ Afar French Russian_cp1251
+ Amharic Gedeo Russian_koi8r
+ Austrian German Sidama
+ Brazilian Greek Somali
+ Chinese Hungarian Spanish
+ Chinese_GB Icelandic Swedish
+ Czech Italian Tigrinya
+ Danish Norwegian TigrinyaEritrean
+ Dutch Oromo TigrinyaEthiopian
+ English Romanian Turkish
+ Finnish Russian Bulgarian
+ Occitan
+
+=head1 METHODS
+
+=over
+
+=item time2str
+
+See L<Date::Format/time2str>
+
+=item strftime
+
+See L<Date::Format/strftime>
+
+=item ctime
+
+See L<Date::Format/ctime>
+
+=item asctime
+
+See L<Date::Format/asctime>
+
+=item str2time
+
+See L<Date::Parse/str2time>
+
+=item strptime
+
+See L<Date::Parse/strptime>
+
+=back
+
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Afar.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Afar.pm
new file mode 100644
index 0000000000..f67cf37685
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Afar.pm
@@ -0,0 +1,49 @@
+##
+## Afar tables
+##
+
+package Date::Language::Afar;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw(Acaada Etleeni Talaata Arbaqa Kamiisi Gumqata Sabti);
+@MoY = (
+"Qunxa Garablu",
+"Kudo",
+"Ciggilta Kudo",
+"Agda Baxis",
+"Caxah Alsa",
+"Qasa Dirri",
+"Qado Dirri",
+"Liiqen",
+"Waysu",
+"Diteli",
+"Ximoli",
+"Kaxxa Garablu"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(saaku carra);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Amharic.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Amharic.pm
new file mode 100644
index 0000000000..a79984ecff
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Amharic.pm
@@ -0,0 +1,87 @@
+##
+## Amharic tables
+##
+
+package Date::Language::Amharic;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+if ( $] >= 5.006 ) {
+@DoW = (
+"\x{12a5}\x{1211}\x{12f5}",
+"\x{1230}\x{129e}",
+"\x{121b}\x{12ad}\x{1230}\x{129e}",
+"\x{1228}\x{1261}\x{12d5}",
+"\x{1210}\x{1219}\x{1235}",
+"\x{12d3}\x{122d}\x{1265}",
+"\x{1245}\x{12f3}\x{121c}"
+);
+@MoY = (
+"\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
+"\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
+"\x{121b}\x{122d}\x{127d}",
+"\x{12a4}\x{1355}\x{1228}\x{120d}",
+"\x{121c}\x{12ed}",
+"\x{1301}\x{1295}",
+"\x{1301}\x{120b}\x{12ed}",
+"\x{12a6}\x{1308}\x{1235}\x{1275}",
+"\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
+"\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
+"\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
+"\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = ( "\x{1320}\x{12cb}\x{1275}", "\x{12a8}\x{1230}\x{12d3}\x{1275}" );
+
+@Dsuf = ("\x{129b}" x 31);
+}
+else {
+@DoW = (
+"እሑድ",
+"ሰኞ",
+"ማክሰኞ",
+"ረቡዕ",
+"áˆáˆ™áˆµ",
+"ዓርብ",
+"ቅዳሜ"
+);
+@MoY = (
+"ጃንዩወሪ",
+"áŒá‰¥áˆ©á‹ˆáˆª",
+"ማርች",
+"ኤá•áˆ¨áˆ",
+"ሜይ",
+"áŒáŠ•",
+"áŒáˆ‹á‹­",
+"ኦገስት",
+"ሴá•á‰´áˆá‰ áˆ­",
+"ኦክተá‹á‰ áˆ­",
+"ኖቬáˆá‰ áˆ­",
+"ዲሴáˆá‰ áˆ­"
+);
+@DoWs = map { substr($_,0,9) } @DoW;
+@MoYs = map { substr($_,0,9) } @MoY;
+@AMPM = ( "ጠዋት", "ከሰዓት" );
+
+@Dsuf = ("ኛ" x 31);
+}
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Austrian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Austrian.pm
new file mode 100644
index 0000000000..8ff398bd10
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Austrian.pm
@@ -0,0 +1,36 @@
+##
+## Austrian tables
+##
+
+package Date::Language::Austrian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Jänner Feber März April Mai Juni
+ Juli August September Oktober November Dezember);
+@MoYs = qw(Jän Feb Mär Apr Mai Jun Jul Aug Sep Oct Nov Dez);
+@DoW = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
+@DoWs = qw(Son Mon Die Mit Don Fre Sam);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Brazilian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Brazilian.pm
new file mode 100644
index 0000000000..fa4d15fff9
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Brazilian.pm
@@ -0,0 +1,35 @@
+##
+## Brazilian tables, contributed by Christian Tosta (tosta@cce.ufmg.br)
+##
+
+package Date::Language::Brazilian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw(Domingo Segunda Terça Quarta Quinta Sexta Sábado);
+@MoY = qw(Janeiro Fevereiro Março Abril Maio Junho
+ Julho Agosto Setembro Outubro Novembro Dezembro);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = (qw(mo ro do ro to to to mo vo no)) x 3;
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Bulgarian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Bulgarian.pm
new file mode 100644
index 0000000000..cf3d127486
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Bulgarian.pm
@@ -0,0 +1,92 @@
+##
+## Bulgarian tables contributed by Krasimir Berov
+##
+
+package Date::Language::Bulgarian;
+use strict;
+use warnings;
+use utf8;
+use base qw(Date::Language);
+our (@DoW, @DoWs, @MoY, @MoYs, @AMPM, @Dsuf, %MoY, %DoW, $VERSION);
+$VERSION = "1.01";
+
+@DoW = qw(Ð½ÐµÐ´ÐµÐ»Ñ Ð¿Ð¾Ð½ÐµÐ´ÐµÐ»Ð½Ð¸Ðº вторник ÑÑ€Ñда четвъртък петък Ñъбота);
+@MoY = qw(Ñнуари февруари март април май юни
+ юли авгуÑÑ‚ Ñептември октомври ноември декември);
+@DoWs = qw(нд пн вт ÑÑ€ чт пт Ñб);
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = (qw(ти ви ри ти ти ти ти ми ми ти)) x 3;
+@Dsuf[11,12,13] = qw(ти ти ти);
+@Dsuf[30,31] = qw(ти ви);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { ($_[0]->[3]<10?' ':'').$_[0]->[3].$Dsuf[$_[0]->[3]] }
+
+1;
+
+__END__
+
+=encoding utf8
+
+=head1 NAME
+
+Date::Language::Bulgarian - localization for Date::Format
+
+=head1 DESCRIPTION
+
+This is Bulgarian localization for Date::Format.
+It is important to note that this module source code is in utf8.
+All strings which it outputs are in utf8, so it is safe to use it
+currently only with English. You are left alone to try and convert
+the output when using different Date::Language::* in the same application.
+This should be addresed in the future.
+
+=head1 SYNOPSIS
+
+ use strict;
+ use warnings;
+ use Date::Language;
+ local $\=$/;
+ my $template ='%a %b %e %T %Y (%Y-%m-%d %H:%M:%S)';
+ my $time=1290883821; #or just use time();
+ my @lt = localtime($time);
+ my %languages = qw(English GMT German EEST Bulgarian EET);
+ binmode(select,':utf8');
+
+ foreach my $l(keys %languages){
+ my $lang = Date::Language->new($l);
+ my $zone = $languages{$l};
+ print $/. "$l $zone";
+ print $lang->time2str($template, $time);
+ print $lang->time2str($template, $time, $zone);
+
+ print $lang->strftime($template, \@lt);
+ }
+
+=head1 AUTHOR
+
+Krasimir Berov (berov@cpan.org)
+
+=head1 COPYRIGHT
+
+Copyright (c) 2010 Krasimir Berov. This program is free
+software; you can redistribute it and/or modify it under the same terms
+as Perl itself.
+
+=cut
+
+
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Chinese.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Chinese.pm
new file mode 100644
index 0000000000..abfb3c0572
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Chinese.pm
@@ -0,0 +1,36 @@
+##
+## English tables
+##
+
+package Date::Language::Chinese;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+@DoW = qw(星期日 星期一 星期二 星期三 星期四 星期五 星期六);
+@MoY = qw(一月 二月 三月 四月 五月 六月
+ 七月 八月 ä¹æœˆ å月 å一月 å二月);
+@DoWs = map { $_ } @DoW;
+@MoYs = map { $_ } @MoY;
+@AMPM = qw(ä¸Šåˆ ä¸‹åˆ);
+
+@Dsuf = (qw(æ—¥ æ—¥ æ—¥ æ—¥ æ—¥ æ—¥ æ—¥ æ—¥ æ—¥ æ—¥)) x 3;
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+sub format_o { sprintf("%2d%s",$_[0]->[3],"æ—¥") }
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Chinese_GB.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Chinese_GB.pm
new file mode 100644
index 0000000000..7be0555226
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Chinese_GB.pm
@@ -0,0 +1,36 @@
+##
+## English tables
+##
+
+package Date::Language::Chinese_GB;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw(ÐÇÆÚÈÕ ÐÇÆÚÒ» ÐÇÆÚ¶þ ÐÇÆÚÈý ÐÇÆÚËÄ ÐÇÆÚÎå ÐÇÆÚÁù);
+@MoY = qw(Ò»ÔÂ ¶þÔÂ ÈýÔÂ ËÄÔÂ ÎåÔÂ ÁùÔÂ
+ ÆßÔ °ËÔ ¾ÅÔ ʮÔ ʮһÔ ʮ¶þÔÂ);
+@DoWs = map { $_ } @DoW;
+@MoYs = map { $_ } @MoY;
+@AMPM = qw(ÉÏÎç ÏÂÎç);
+
+@Dsuf = (qw(ÈÕ ÈÕ ÈÕ ÈÕ ÈÕ ÈÕ ÈÕ ÈÕ ÈÕ ÈÕ)) x 3;
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+sub format_o { sprintf("%2d%s",$_[0]->[3],"ÈÕ") }
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Czech.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Czech.pm
new file mode 100644
index 0000000000..756f5c552f
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Czech.pm
@@ -0,0 +1,58 @@
+##
+## Czech tables
+##
+## Contributed by Honza Pazdziora
+
+package Date::Language::Czech;
+
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @MoY2 @AMPM %MoY %DoW $VERSION);
+@ISA = qw(Date::Language Date::Format::Generic);
+$VERSION = "1.01";
+
+@MoY = qw(leden únor bøezen duben kvìten èerven èervenec srpen záøí
+ øíjen listopad prosinec);
+@MoYs = qw(led únor bøe dub kvì èvn èec srp záøí øíj lis pro);
+@MoY2 = @MoY;
+for (@MoY2)
+ { s!en$!na! or s!ec$!ce! or s!ad$!adu! or s!or$!ora!; }
+
+@DoW = qw(nedìle pondìlí úterý støeda ètvrtek pátek sobota);
+@DoWs = qw(Ne Po Út St Èt Pá So);
+
+@AMPM = qw(dop. odp.);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+sub format_d { $_[0]->[3] }
+sub format_m { $_[0]->[4] + 1 }
+sub format_o { $_[0]->[3] . '.' }
+
+sub format_Q { $MoY2[$_[0]->[4]] }
+
+sub time2str {
+ my $ref = shift;
+ my @a = @_;
+ $a[0] =~ s/(%[do]\.?\s?)%B/$1%Q/;
+ $ref->SUPER::time2str(@a);
+ }
+
+sub strftime {
+ my $ref = shift;
+ my @a = @_;
+ $a[0] =~ s/(%[do]\.?\s?)%B/$1%Q/;
+ $ref->SUPER::time2str(@a);
+ }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Danish.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Danish.pm
new file mode 100644
index 0000000000..e143c54513
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Danish.pm
@@ -0,0 +1,36 @@
+##
+## Danish tables
+##
+
+package Date::Language::Danish;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Januar Februar Marts April Maj Juni
+ Juli August September Oktober November December);
+@MoYs = qw(Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec);
+@DoW = qw(Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag Søndag);
+@DoWs = qw(Søn Man Tir Ons Tor Fre Lør Søn);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Dutch.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Dutch.pm
new file mode 100644
index 0000000000..219758b4b2
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Dutch.pm
@@ -0,0 +1,40 @@
+##
+## Dutch tables
+## Contributed by Johannes la Poutre <jlpoutre@corp.nl.home.com>
+##
+
+package Date::Language::Dutch;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.02";
+
+@MoY = qw(januari februari maart april mei juni juli
+ augustus september oktober november december);
+@MoYs = map(substr($_, 0, 3), @MoY);
+$MoYs[2] = 'mrt'; # mrt is more common (Frank Maas)
+@DoW = map($_ . "dag", qw(zon maan dins woens donder vrij zater));
+@DoWs = map(substr($_, 0, 2), @DoW);
+
+# these aren't normally used...
+@AMPM = qw(VM NM);
+@Dsuf = ('e') x 31;
+
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/English.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/English.pm
new file mode 100644
index 0000000000..638cb3c2a2
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/English.pm
@@ -0,0 +1,37 @@
+##
+## English tables
+##
+
+package Date::Language::English;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday);
+@MoY = qw(January February March April May June
+ July August September October November December);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Finnish.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Finnish.pm
new file mode 100644
index 0000000000..415b50c73d
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Finnish.pm
@@ -0,0 +1,45 @@
+##
+## Finnish tables
+## Contributed by Matthew Musgrove <muskrat@mindless.com>
+## Corrected by roke
+##
+
+package Date::Language::Finnish;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+# In Finnish, the names of the months and days are only capitalized at the beginning of sentences.
+@MoY = map($_ . "kuu", qw(tammi helmi maalis huhti touko kesä heinä elo syys loka marras joulu));
+@DoW = qw(sunnuntai maanantai tiistai keskiviikko torstai perjantai lauantai);
+
+# it is not customary to use abbreviated names of months or days
+# per Graham's suggestion:
+@MoYs = @MoY;
+@DoWs = @DoW;
+
+# the short form of ordinals
+@Dsuf = ('.') x 31;
+
+# doesn't look like this is normally used...
+@AMPM = qw(ap ip);
+
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1; \ No newline at end of file
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/French.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/French.pm
new file mode 100644
index 0000000000..f9aa95d077
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/French.pm
@@ -0,0 +1,37 @@
+##
+## French tables, contributed by Emmanuel Bataille (bem@residents.frmug.org)
+##
+
+package Date::Language::French;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.04";
+
+@DoW = qw(dimanche lundi mardi mercredi jeudi vendredi samedi);
+@MoY = qw(janvier février mars avril mai juin
+ juillet août septembre octobre novembre décembre);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+$MoYs[6] = 'jul';
+@AMPM = qw(AM PM);
+
+@Dsuf = ((qw(er e e e e e e e e e)) x 3, 'er');
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { $_[0]->[3] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Gedeo.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Gedeo.pm
new file mode 100644
index 0000000000..c18ad8cadd
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Gedeo.pm
@@ -0,0 +1,51 @@
+##
+## Gedeo tables
+##
+
+package Date::Language::Gedeo;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw( Sanbbattaa Sanno Masano Roobe Hamusse Arbe Qiddamme);
+@MoY = (
+"Oritto",
+"Birre'a",
+"Onkkollessa",
+"Saddasa",
+"Arrasa",
+"Qammo",
+"Ella",
+"Waacibajje",
+"Canissa",
+"Addolessa",
+"Bittitotessa",
+"Hegeya"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+$DoWs[0] = "Snb";
+$DoWs[1] = "Sno";
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(gorsa warreti-udumma);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/German.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/German.pm
new file mode 100644
index 0000000000..11242c4c46
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/German.pm
@@ -0,0 +1,37 @@
+##
+## German tables
+##
+
+package Date::Language::German;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.02";
+
+@MoY = qw(Januar Februar März April Mai Juni
+ Juli August September Oktober November Dezember);
+@MoYs = qw(Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez);
+@DoW = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
+@DoWs = qw(Son Mon Die Mit Don Fre Sam);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2d.",$_[0]->[3]) }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Greek.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Greek.pm
new file mode 100644
index 0000000000..00f917ce47
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Greek.pm
@@ -0,0 +1,91 @@
+##
+## Greek tables
+##
+## Traditional date format is: DoW DD{eta} MoY Year (%A %o %B %Y)
+##
+## Matthew Musgrove <muskrat@mindless.com>
+## Translations gratiously provided by Menelaos Stamatelos <men@kwsn.net>
+## This module returns unicode (utf8) encoded characters. You will need to
+## take the necessary steps for this to display correctly.
+##
+
+package Date::Language::Greek;
+
+use utf8;
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+@DoW = (
+"\x{039a}\x{03c5}\x{03c1}\x{03b9}\x{03b1}\x{03ba}\x{03ae}",
+"\x{0394}\x{03b5}\x{03c5}\x{03c4}\x{03ad}\x{03c1}\x{03b1}",
+"\x{03a4}\x{03c1}\x{03af}\x{03c4}\x{03b7}",
+"\x{03a4}\x{03b5}\x{03c4}\x{03ac}\x{03c1}\x{03c4}\x{03b7}",
+"\x{03a0}\x{03ad}\x{03bc}\x{03c0}\x{03c4}\x{03b7}",
+"\x{03a0}\x{03b1}\x{03c1}\x{03b1}\x{03c3}\x{03ba}\x{03b5}\x{03c5}\x{03ae}",
+"\x{03a3}\x{03ac}\x{03b2}\x{03b2}\x{03b1}\x{03c4}\x{03bf}",
+);
+
+@MoY = (
+"\x{0399}\x{03b1}\x{03bd}\x{03bf}\x{03c5}\x{03b1}\x{03c1}\x{03af}\x{03bf}\x{03c5}",
+"\x{03a6}\x{03b5}\x{03b2}\x{03c1}\x{03bf}\x{03c5}\x{03b1}\x{03c1}\x{03af}\x{03bf}\x{03c5}",
+"\x{039c}\x{03b1}\x{03c1}\x{03c4}\x{03af}\x{03bf}\x{03c5}",
+"\x{0391}\x{03c0}\x{03c1}\x{03b9}\x{03bb}\x{03af}\x{03c5}",
+"\x{039c}\x{03b1}\x{0390}\x{03bf}\x{03c5}",
+"\x{0399}\x{03bf}\x{03c5}\x{03bd}\x{03af}\x{03bf}\x{03c5}",
+"\x{0399}\x{03bf}\x{03c5}\x{03bb}\x{03af}\x{03bf}\x{03c5}",
+"\x{0391}\x{03c5}\x{03b3}\x{03bf}\x{03cd}\x{03c3}\x{03c4}\x{03bf}\x{03c5}",
+"\x{03a3}\x{03b5}\x{03c0}\x{03c4}\x{03b5}\x{03bc}\x{03c4}\x{03bf}\x{03c5}",
+"\x{039f}\x{03ba}\x{03c4}\x{03c9}\x{03b2}\x{03c1}\x{03af}\x{03bf}\x{03c5}",
+"\x{039d}\x{03bf}\x{03b5}\x{03bc}\x{03b2}\x{03c1}\x{03af}\x{03bf}\x{03c5}",
+"\x{0394}\x{03b5}\x{03ba}\x{03b5}\x{03bc}\x{03b2}\x{03c1}\x{03bf}\x{03c5}",
+);
+
+@DoWs = (
+"\x{039a}\x{03c5}",
+"\x{0394}\x{03b5}",
+"\x{03a4}\x{03c1}",
+"\x{03a4}\x{03b5}",
+"\x{03a0}\x{03b5}",
+"\x{03a0}\x{03b1}",
+"\x{03a3}\x{03b1}",
+);
+@MoYs = (
+"\x{0399}\x{03b1}\x{03bd}",
+"\x{03a6}\x{03b5}",
+"\x{039c}\x{03b1}\x{03c1}",
+"\x{0391}\x{03c0}\x{03c1}",
+"\x{039c}\x{03b1}",
+"\x{0399}\x{03bf}\x{03c5}\x{03bd}",
+"\x{0399}\x{03bf}\x{03c5}\x{03bb}",
+"\x{0391}\x{03c5}\x{03b3}",
+"\x{03a3}\x{03b5}\x{03c0}",
+"\x{039f}\x{03ba}",
+"\x{039d}\x{03bf}",
+"\x{0394}\x{03b5}",
+);
+
+@AMPM = ("\x{03c0}\x{03bc}", "\x{03bc}\x{03bc}");
+
+@Dsuf = ("\x{03b7}" x 31);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_o { sprintf("%2d%s",$_[0]->[3],"\x{03b7}") }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
+
+
+
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Hungarian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Hungarian.pm
new file mode 100644
index 0000000000..d9c838d15b
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Hungarian.pm
@@ -0,0 +1,88 @@
+##
+## Hungarian tables based on English
+##
+#
+# This is a just-because-I-stumbled-across-it
+# -and-my-wife-is-Hungarian release: if Graham or
+# someone adds to docs to Date::Format, I'd be
+# glad to correct bugs and extend as neeed.
+#
+
+package Date::Language::Hungarian;
+
+=head1 NAME
+
+Date::Language::Hungarian - Magyar format for Date::Format
+
+=head1 SYNOPSIS
+
+ my $lang = Date::Language->new('Hungarian');
+ print $lang->time2str("%a %b %e %T %Y", time);
+
+ @lt = localtime(time);
+ print $lang->time2str($template, time);
+ print $lang->strftime($template, @lt);
+
+ print $lang->time2str($template, time, $zone);
+ print $lang->strftime($template, @lt, $zone);
+
+ print $lang->ctime(time);
+ print $lang->asctime(@lt);
+
+ print $lang->ctime(time, $zone);
+ print $lang->asctime(@lt, $zone);
+
+See L<Date::Format>.
+
+=head1 AUTHOR
+
+Paula Goddard (paula -at- paulacska -dot- com)
+
+=head1 LICENCE
+
+Made available under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+use base "Date::Language";
+use vars qw( @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+$VERSION = "1.01";
+
+@DoW = qw(Vasárnap Hétfõ Kedd Szerda Csütörtök Péntek Szombat);
+@MoY = qw(Január Február Március Április Május Június
+ Július Augusztus Szeptember Október November December);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(DE. DU.);
+
+# There is no 'th or 'nd in Hungarian, just a dot
+@Dsuf = (".") x 31;
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_P { lc($_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0]) }
+sub format_o { $_[0]->[3].'.' }
+
+
+
+sub format_D { &format_y . "." . &format_m . "." . &format_d }
+
+sub format_y { sprintf("%02d",$_[0]->[5] % 100) }
+sub format_d { sprintf("%02d",$_[0]->[3]) }
+sub format_m { sprintf("%02d",$_[0]->[4] + 1) }
+
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Icelandic.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Icelandic.pm
new file mode 100644
index 0000000000..5ca3ee3209
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Icelandic.pm
@@ -0,0 +1,36 @@
+##
+## Icelandic tables
+##
+
+package Date::Language::Icelandic;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Janúar Febrúar Mars Apríl Maí Júni
+ Júli Ágúst September Október Nóvember Desember);
+@MoYs = qw(Jan Feb Mar Apr Maí Jún Júl Ágú Sep Okt Nóv Des);
+@DoW = qw(Sunnudagur Mánudagur Þriðjudagur Miðvikudagur Fimmtudagur Föstudagur Laugardagur Sunnudagur);
+@DoWs = qw(Sun Mán Þri Mið Fim Fös Lau Sun);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Italian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Italian.pm
new file mode 100644
index 0000000000..6db0a8e67c
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Italian.pm
@@ -0,0 +1,36 @@
+##
+## Italian tables
+##
+
+package Date::Language::Italian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Gennaio Febbraio Marzo Aprile Maggio Giugno
+ Luglio Agosto Settembre Ottobre Novembre Dicembre);
+@MoYs = qw(Gen Feb Mar Apr Mag Giu Lug Ago Set Ott Nov Dic);
+@DoW = qw(Domenica Lunedi Martedi Mercoledi Giovedi Venerdi Sabato);
+@DoWs = qw(Dom Lun Mar Mer Gio Ven Sab);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Norwegian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Norwegian.pm
new file mode 100644
index 0000000000..bbd997f0b4
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Norwegian.pm
@@ -0,0 +1,36 @@
+##
+## Norwegian tables
+##
+
+package Date::Language::Norwegian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(Januar Februar Mars April Mai Juni
+ Juli August September Oktober November Desember);
+@MoYs = qw(Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Nov Des);
+@DoW = qw(Søndag Mandag Tirsdag Onsdag Torsdag Fredag Lørdag Søndag);
+@DoWs = qw(Søn Man Tir Ons Tor Fre Lør Søn);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+@Dsuf = @{Date::Language::English::Dsuf};
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Occitan.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Occitan.pm
new file mode 100644
index 0000000000..cf58abdfba
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Occitan.pm
@@ -0,0 +1,36 @@
+##
+## Occitan tables, contributed by Quentn PAGÈS
+##
+
+package Date::Language::Occitan;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.04";
+
+@DoW = qw(dimenge diluns dimars dimècres dijòus divendres dissabte);
+@MoY = qw(genièr febrièr mars abrial mai junh
+ julhet agost octòbre novembre decembre);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+$MoYs[6] = 'jul';
+@AMPM = qw(AM PM);
+
+@Dsuf = ((qw(er e e e e e e e e e)) x 3, 'er');
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Oromo.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Oromo.pm
new file mode 100644
index 0000000000..b6a6230c87
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Oromo.pm
@@ -0,0 +1,37 @@
+##
+## Oromo tables
+##
+
+package Date::Language::Oromo;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw(Dilbata Wiixata Qibxata Roobii Kamiisa Jimaata Sanbata);
+@MoY = qw(Amajjii Guraandhala Bitooteessa Elba Caamsa Waxabajjii
+ Adooleessa Hagayya Fuulbana Onkololeessa Sadaasa Muddee);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(WD WB);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Romanian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Romanian.pm
new file mode 100644
index 0000000000..cbd2c8cbc4
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Romanian.pm
@@ -0,0 +1,37 @@
+##
+## Italian tables
+##
+
+package Date::Language::Romanian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(ianuarie februarie martie aprilie mai iunie
+ iulie august septembrie octombrie noembrie decembrie);
+@DoW = qw(duminica luni marti miercuri joi vineri sambata);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+
+@AMPM = qw(AM PM);
+
+@Dsuf = ('') x 31;
+
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian.pm
new file mode 100644
index 0000000000..ca9f414232
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian.pm
@@ -0,0 +1,49 @@
+##
+## Russian tables
+##
+## Contributed by Danil Pismenny <dapi@mail.ru>
+
+package Date::Language::Russian;
+
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @MoY2 @AMPM %MoY %DoW $VERSION);
+@ISA = qw(Date::Language Date::Format::Generic);
+$VERSION = "1.01";
+
+@MoY = qw(ñÎ×ÁÒÑ æÅ×ÒÁÌÑ íÁÒÔÁ áÐÒÅÌÑ íÁÑ éÀÎÑ éÀÌÑ á×ÇÕÓÔÁ óÅÎÔÑÂÒÑ ïËÔÑÂÒÑ îÏÑÂÒÑ äÅËÁÂÒÑ);
+@MoY2 = qw(ñÎ×ÁÒØ æÅ×ÒÁÌØ íÁÒÔ áÐÒÅÌØ íÁÊ éÀÎØ éÀÌØ á×ÇÕÓÔ óÅÎÔÑÂÒØ ïËÔÑÂÒØ îÏÑÂÒØ äÅËÁÂÒØ);
+@MoYs = qw(ñÎ× æÅ× íÒÔ áÐÒ íÁÊ éÀÎ éÀÌ á×Ç óÅÎ ïËÔ îÏÑ äÅË);
+
+@DoW = qw(ðÏÎÅÄÅÌØÎÉË ÷ÔÏÒÎÉË óÒÅÄÁ þÅÔ×ÅÒÇ ðÑÔÎÉÃÁ óÕÂÂÏÔÁ ÷ÏÓËÒÅÓÅÎØÅ);
+@DoWs = qw(ðÎ ÷Ô óÒ þÔ ðÔ ó ÷Ó);
+@DoWs2 = qw(ðÎÄ ÷ÔÒ óÒÄ þÔ× ðÔÎ óÂÔ ÷ÓË);
+
+@AMPM = qw(ÄÐ ÐÐ);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+sub format_d { $_[0]->[3] }
+sub format_m { $_[0]->[4] + 1 }
+sub format_o { $_[0]->[3] . '.' }
+
+sub format_Q { $MoY2[$_[0]->[4]] }
+
+sub str2time {
+ my ($self,$value) = @_;
+ map {$value=~s/(\s|^)$DoWs2[$_](\s)/$DoWs[$_]$2/ig} (0..6);
+ $value=~s/(\s+|^)íÁÒ(\s+)/$1íÒÔ$2/;
+ return $self->SUPER::str2time($value);
+}
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian_cp1251.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian_cp1251.pm
new file mode 100644
index 0000000000..cc28e6ed43
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian_cp1251.pm
@@ -0,0 +1,39 @@
+##
+## Russian cp1251
+##
+
+package Date::Language::Russian_cp1251;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw(Âîñêðåñåíüå Ïîíåäåëüíèê Âòîðíèê Ñðåäà ×åòâåðã Ïÿòíèöà Ñóááîòà);
+@MoY = qw(ßíâàðü Ôåâðàëü Ìàðò Àïðåëü Ìàé Èþíü
+ Èþëü Àâãóñò Ñåíòÿáðü Îêòÿáðü Íîÿáðü Äåêàáðü);
+@DoWs = qw(Âñê Ïíä Âòð Ñðä ×òâ Ïòí Ñáò);
+#@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = ('e') x 31;
+#@Dsuf[11,12,13] = qw(å å å);
+#@Dsuf[30,31] = qw(å å);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian_koi8r.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian_koi8r.pm
new file mode 100644
index 0000000000..53de8d0567
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Russian_koi8r.pm
@@ -0,0 +1,39 @@
+##
+## Russian koi8r
+##
+
+package Date::Language::Russian_koi8r;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@DoW = qw(÷ÏÓËÒÅÓÅÎØÅ ðÏÎÅÄÅÌØÎÉË ÷ÔÏÒÎÉË óÒÅÄÁ þÅÔ×ÅÒÇ ðÑÔÎÉÃÁ óÕÂÂÏÔÁ);
+@MoY = qw(ñÎ×ÁÒØ æÅ×ÒÁÌØ íÁÒÔ áÐÒÅÌØ íÁÊ éÀÎØ
+ éÀÌØ á×ÇÕÓÔ óÅÎÔÑÂÒØ ïËÔÑÂÒØ îÏÑÂÒØ äÅËÁÂÒØ);
+@DoWs = qw(÷ÓË ðÎÄ ÷ÔÒ óÒÄ þÔ× ðÔÎ óÂÔ);
+#@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = ('e') x 31;
+#@Dsuf[11,12,13] = qw(Å Å Å);
+#@Dsuf[30,31] = qw(Å Å);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Sidama.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Sidama.pm
new file mode 100644
index 0000000000..bc26d7c3f0
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Sidama.pm
@@ -0,0 +1,37 @@
+##
+## Sidama tables
+##
+
+package Date::Language::Sidama;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw(Sambata Sanyo Maakisanyo Roowe Hamuse Arbe Qidaame);
+@MoY = qw(January February March April May June
+ July August September October November December);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(soodo hawwaro);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Somali.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Somali.pm
new file mode 100644
index 0000000000..5b2496170e
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Somali.pm
@@ -0,0 +1,62 @@
+##
+## Somali tables
+##
+
+package Date::Language::Somali;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "0.99";
+
+@DoW = qw(Axad Isniin Salaaso Arbaco Khamiis Jimco Sabti);
+@MoY = (
+"Bisha Koobaad",
+"Bisha Labaad",
+"Bisha Saddexaad",
+"Bisha Afraad",
+"Bisha Shanaad",
+"Bisha Lixaad",
+"Bisha Todobaad",
+"Bisha Sideedaad",
+"Bisha Sagaalaad",
+"Bisha Tobnaad",
+"Bisha Kow iyo Tobnaad",
+"Bisha Laba iyo Tobnaad"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = (
+"Kob",
+"Lab",
+"Sad",
+"Afr",
+"Sha",
+"Lix",
+"Tod",
+"Sid",
+"Sag",
+"Tob",
+"KIT",
+"LIT"
+);
+@AMPM = qw(SN GN);
+
+@Dsuf = (qw(th st nd rd th th th th th th)) x 3;
+@Dsuf[11,12,13] = qw(th th th);
+@Dsuf[30,31] = qw(th st);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Spanish.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Spanish.pm
new file mode 100644
index 0000000000..d464ae78ad
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Spanish.pm
@@ -0,0 +1,35 @@
+##
+## Spanish tables
+##
+
+package Date::Language::Spanish;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+@DoW = qw(domingo lunes martes miércoles jueves viernes sábado);
+@MoY = qw(enero febrero marzo abril mayo junio
+ julio agosto septiembre octubre noviembre diciembre);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = qw(AM PM);
+
+@Dsuf = ((qw(ro do ro to to to mo vo no mo)) x 3, 'ro');
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Swedish.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Swedish.pm
new file mode 100644
index 0000000000..8f16594ba7
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Swedish.pm
@@ -0,0 +1,41 @@
+##
+## Swedish tables
+## Contributed by Matthew Musgrove <muskrat@mindless.com>
+## Corrected by dempa
+##
+
+package Date::Language::Swedish;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.01";
+
+@MoY = qw(januari februari mars april maj juni juli augusti september oktober november december);
+@MoYs = map { substr($_,0,3) } @MoY;
+@DoW = map($_ . "dagen", qw(sön mån tis ons tors fre lör));
+@DoWs = map { substr($_,0,2) } @DoW;
+
+# the ordinals are not typically used in modern times
+@Dsuf = ('a' x 2, 'e' x 29);
+
+use Date::Language::English ();
+@AMPM = @{Date::Language::English::AMPM};
+
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+sub format_o { sprintf("%2de",$_[0]->[3]) }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Tigrinya.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Tigrinya.pm
new file mode 100644
index 0000000000..ce4fcb3a1c
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Tigrinya.pm
@@ -0,0 +1,58 @@
+##
+## Tigrinya tables
+##
+
+package Date::Language::Tigrinya;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+@DoW = (
+"\x{1230}\x{1295}\x{1260}\x{1275}",
+"\x{1230}\x{1291}\x{12ed}",
+"\x{1230}\x{1209}\x{1235}",
+"\x{1228}\x{1261}\x{12d5}",
+"\x{1213}\x{1219}\x{1235}",
+"\x{12d3}\x{122d}\x{1262}",
+"\x{1240}\x{12f3}\x{121d}"
+);
+@MoY = (
+"\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
+"\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
+"\x{121b}\x{122d}\x{127d}",
+"\x{12a4}\x{1355}\x{1228}\x{120d}",
+"\x{121c}\x{12ed}",
+"\x{1301}\x{1295}",
+"\x{1301}\x{120b}\x{12ed}",
+"\x{12a6}\x{1308}\x{1235}\x{1275}",
+"\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
+"\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
+"\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
+"\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = (
+"\x{1295}/\x{1230}",
+"\x{12F5}/\x{1230}"
+);
+
+@Dsuf = ("\x{12ed}" x 31);
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/TigrinyaEritrean.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/TigrinyaEritrean.pm
new file mode 100644
index 0000000000..7ab8d0fdd1
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/TigrinyaEritrean.pm
@@ -0,0 +1,93 @@
+##
+## Tigrinya-Eritrean tables
+##
+
+package Date::Language::TigrinyaEritrean;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+if ( $] >= 5.006 ) {
+@DoW = (
+"\x{1230}\x{1295}\x{1260}\x{1275}",
+"\x{1230}\x{1291}\x{12ed}",
+"\x{1230}\x{1209}\x{1235}",
+"\x{1228}\x{1261}\x{12d5}",
+"\x{1213}\x{1219}\x{1235}",
+"\x{12d3}\x{122d}\x{1262}",
+"\x{1240}\x{12f3}\x{121d}"
+);
+@MoY = (
+"\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
+"\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
+"\x{121b}\x{122d}\x{127d}",
+"\x{12a4}\x{1355}\x{1228}\x{120d}",
+"\x{121c}\x{12ed}",
+"\x{1301}\x{1295}",
+"\x{1301}\x{120b}\x{12ed}",
+"\x{12a6}\x{1308}\x{1235}\x{1275}",
+"\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
+"\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
+"\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
+"\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = (
+"\x{1295}/\x{1230}",
+"\x{12F5}/\x{1230}"
+);
+
+@Dsuf = ("\x{12ed}" x 31);
+}
+else {
+@DoW = (
+"ሰንበት",
+"ሰኑይ",
+"ሰሉስ",
+"ረቡዕ",
+"ሓሙስ",
+"ዓርቢ",
+"ቀዳáˆ"
+);
+@MoY = (
+"ጥሪ",
+"ለካቲት",
+"መጋቢት",
+"ሚያá‹á‹«",
+"áŒáŠ•á‰¦á‰µ",
+"ሰáŠ",
+"ሓáˆáˆˆ",
+"áŠáˆ“ሰ",
+"መስከረáˆ",
+"ጥቅáˆá‰²",
+"ሕዳር",
+"ታሕሳስ"
+);
+@DoWs = map { substr($_,0,9) } @DoW;
+@MoYs = map { substr($_,0,9) } @MoY;
+@AMPM = (
+"ን/ሰ",
+"ድ/ሰ"
+);
+
+@Dsuf = ("á‹­" x 31);
+}
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/TigrinyaEthiopian.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/TigrinyaEthiopian.pm
new file mode 100644
index 0000000000..84fb7237c3
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/TigrinyaEthiopian.pm
@@ -0,0 +1,93 @@
+##
+## Tigrinya-Ethiopian tables
+##
+
+package Date::Language::TigrinyaEthiopian;
+
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION);
+@ISA = qw(Date::Language);
+$VERSION = "1.00";
+
+if ( $] >= 5.006 ) {
+@DoW = (
+"\x{1230}\x{1295}\x{1260}\x{1275}",
+"\x{1230}\x{1291}\x{12ed}",
+"\x{1230}\x{1209}\x{1235}",
+"\x{1228}\x{1261}\x{12d5}",
+"\x{1213}\x{1219}\x{1235}",
+"\x{12d3}\x{122d}\x{1262}",
+"\x{1240}\x{12f3}\x{121d}"
+);
+@MoY = (
+"\x{1303}\x{1295}\x{12e9}\x{12c8}\x{122a}",
+"\x{134c}\x{1265}\x{1229}\x{12c8}\x{122a}",
+"\x{121b}\x{122d}\x{127d}",
+"\x{12a4}\x{1355}\x{1228}\x{120d}",
+"\x{121c}\x{12ed}",
+"\x{1301}\x{1295}",
+"\x{1301}\x{120b}\x{12ed}",
+"\x{12a6}\x{1308}\x{1235}\x{1275}",
+"\x{1234}\x{1355}\x{1274}\x{121d}\x{1260}\x{122d}",
+"\x{12a6}\x{12ad}\x{1270}\x{12cd}\x{1260}\x{122d}",
+"\x{1296}\x{126c}\x{121d}\x{1260}\x{122d}",
+"\x{12f2}\x{1234}\x{121d}\x{1260}\x{122d}"
+);
+@DoWs = map { substr($_,0,3) } @DoW;
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = (
+"\x{1295}/\x{1230}",
+"\x{12F5}/\x{1230}"
+);
+
+@Dsuf = ("\x{12ed}" x 31);
+}
+else {
+@DoW = (
+"ሰንበት",
+"ሰኑይ",
+"ሰሉስ",
+"ረቡዕ",
+"ሓሙስ",
+"ዓርቢ",
+"ቀዳáˆ"
+);
+@MoY = (
+"ጃንዩወሪ",
+"áŒá‰¥áˆ©á‹ˆáˆª",
+"ማርች",
+"ኤá•áˆ¨áˆ",
+"ሜይ",
+"áŒáŠ•",
+"áŒáˆ‹á‹­",
+"ኦገስት",
+"ሴá•á‰´áˆá‰ áˆ­",
+"ኦክተá‹á‰ áˆ­",
+"ኖቬáˆá‰ áˆ­",
+"ዲሴáˆá‰ áˆ­"
+);
+@DoWs = map { substr($_,0,9) } @DoW;
+@MoYs = map { substr($_,0,9) } @MoY;
+@AMPM = (
+"ን/ሰ",
+"ድ/ሰ"
+);
+
+@Dsuf = ("á‹­" x 31);
+}
+
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[$_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[$_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { $_[0]->[2] >= 12 ? $AMPM[1] : $AMPM[0] }
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Turkish.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Turkish.pm
new file mode 100644
index 0000000000..593e20925c
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Language/Turkish.pm
@@ -0,0 +1,59 @@
+#----------------------------------------------------#
+#
+# Turkish tables
+# Burak Gürsoy <burak@cpan.org>
+# Last modified: Sat Nov 15 20:28:32 2003
+#
+# use Date::Language;
+# my $turkish = Date::Language->new('Turkish');
+# print $turkish->time2str("%e %b %Y, %a %T\n", time);
+# print $turkish->str2time("25 Haz 1996 21:09:55 +0100");
+#----------------------------------------------------#
+
+package Date::Language::Turkish;
+use Date::Language ();
+use vars qw(@ISA @DoW @DoWs @MoY @MoYs @AMPM @Dsuf %MoY %DoW $VERSION %DsufMAP);
+@ISA = qw(Date::Language);
+$VERSION = "1.0";
+
+@DoW = qw(Pazar Pazartesi Salý Çarþamba Perþembe Cuma Cumartesi);
+@MoY = qw(Ocak Þubat Mart Nisan Mayýs Haziran Temmuz Aðustos Eylül Ekim Kasým Aralýk);
+@DoWs = map { substr($_,0,3) } @DoW;
+$DoWs[1] = 'Pzt'; # Since we'll get two 'Paz' s
+$DoWs[-1] = 'Cmt'; # Since we'll get two 'Cum' s
+@MoYs = map { substr($_,0,3) } @MoY;
+@AMPM = ('',''); # no am-pm thingy
+
+# not easy as in english... maybe we can just use a dot "." ? :)
+%DsufMAP = (
+(map {$_ => 'inci', $_+10 => 'inci', $_+20 => 'inci' } 1,2,5,8 ),
+(map {$_ => 'nci', $_+10 => 'nci', $_+20 => 'nci' } 7 ),
+(map {$_ => 'nci', $_+10 => 'nci', $_+20 => 'nci' } 2 ),
+(map {$_ => 'üncü', $_+10 => 'üncü', $_+20 => 'üncü' } 3,4 ),
+(map {$_ => 'uncu', $_+10 => 'uncu', $_+20 => 'uncu' } 9 ),
+(map {$_ => 'ncý', $_+10 => 'ncý', $_+20 => 'ncý' } 6 ),
+(map {$_ => 'uncu', } 10,30 ),
+ 20 => 'nci',
+ 31 => 'inci',
+);
+
+@Dsuf = map{ $DsufMAP{$_} } sort {$a <=> $b} keys %DsufMAP;
+@MoY{@MoY} = (0 .. scalar(@MoY));
+@MoY{@MoYs} = (0 .. scalar(@MoYs));
+@DoW{@DoW} = (0 .. scalar(@DoW));
+@DoW{@DoWs} = (0 .. scalar(@DoWs));
+
+# Formatting routines
+
+sub format_a { $DoWs[$_[0]->[6]] }
+sub format_A { $DoW[ $_[0]->[6]] }
+sub format_b { $MoYs[$_[0]->[4]] }
+sub format_B { $MoY[ $_[0]->[4]] }
+sub format_h { $MoYs[$_[0]->[4]] }
+sub format_p { '' } # disable
+sub format_P { '' } # disable
+sub format_o { sprintf("%2d%s",$_[0]->[3],$Dsuf[$_[0]->[3]-1]) }
+
+1;
+
+__END__
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Parse.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Parse.pm
new file mode 100644
index 0000000000..afdcc1c1ff
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Date/Parse.pm
@@ -0,0 +1,388 @@
+# Copyright (c) 1995-2009 Graham Barr. This program is free
+# software; you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+
+package Date::Parse;
+
+require 5.000;
+use strict;
+use vars qw($VERSION @ISA @EXPORT);
+use Time::Local;
+use Carp;
+use Time::Zone;
+use Exporter;
+
+@ISA = qw(Exporter);
+@EXPORT = qw(&strtotime &str2time &strptime);
+
+$VERSION = "2.33";
+
+my %month = (
+ january => 0,
+ february => 1,
+ march => 2,
+ april => 3,
+ may => 4,
+ june => 5,
+ july => 6,
+ august => 7,
+ september => 8,
+ sept => 8,
+ october => 9,
+ november => 10,
+ december => 11,
+ );
+
+my %day = (
+ sunday => 0,
+ monday => 1,
+ tuesday => 2,
+ tues => 2,
+ wednesday => 3,
+ wednes => 3,
+ thursday => 4,
+ thur => 4,
+ thurs => 4,
+ friday => 5,
+ saturday => 6,
+ );
+
+my @suf = (qw(th st nd rd th th th th th th)) x 3;
+@suf[11,12,13] = qw(th th th);
+
+#Abbreviations
+
+map { $month{substr($_,0,3)} = $month{$_} } keys %month;
+map { $day{substr($_,0,3)} = $day{$_} } keys %day;
+
+my $strptime = <<'ESQ';
+ my %month = map { lc $_ } %$mon_ref;
+ my $daypat = join("|", map { lc $_ } reverse sort keys %$day_ref);
+ my $monpat = join("|", reverse sort keys %month);
+ my $sufpat = join("|", reverse sort map { lc $_ } @$suf_ref);
+
+ my %ampm = (
+ 'a' => 0, # AM
+ 'p' => 12, # PM
+ );
+
+ my($AM, $PM) = (0,12);
+
+sub {
+
+ my $dtstr = lc shift;
+ my $merid = 24;
+
+ my($century,$year,$month,$day,$hh,$mm,$ss,$zone,$dst,$frac);
+
+ $zone = tz_offset(shift) if @_;
+
+ 1 while $dtstr =~ s#\([^\(\)]*\)# #o;
+
+ $dtstr =~ s#(\A|\n|\Z)# #sog;
+
+ # ignore day names
+ $dtstr =~ s#([\d\w\s])[\.\,]\s#$1 #sog;
+ $dtstr =~ s/,/ /g;
+ $dtstr =~ s#($daypat)\s*(den\s)?\b# #o;
+ # Time: 12:00 or 12:00:00 with optional am/pm
+
+ return unless $dtstr =~ /\S/;
+
+ if ($dtstr =~ s/\s(\d{4})([-:]?)(\d\d?)\2(\d\d?)(?:[-Tt ](\d\d?)(?:([-:]?)(\d\d?)(?:\6(\d\d?)(?:[.,](\d+))?)?)?)?(?=\D)/ /) {
+ ($year,$month,$day,$hh,$mm,$ss,$frac) = ($1,$3-1,$4,$5,$7,$8,$9);
+ }
+
+ unless (defined $hh) {
+ if ($dtstr =~ s#[:\s](\d\d?):(\d\d?)(:(\d\d?)(?:\.\d+)?)?(z)?\s*(?:([ap])\.?m?\.?)?\s# #o) {
+ ($hh,$mm,$ss) = ($1,$2,$4);
+ $zone = 0 if $5;
+ $merid = $ampm{$6} if $6;
+ }
+
+ # Time: 12 am
+
+ elsif ($dtstr =~ s#\s(\d\d?)\s*([ap])\.?m?\.?\s# #o) {
+ ($hh,$mm,$ss) = ($1,0,0);
+ $merid = $ampm{$2};
+ }
+ }
+
+ if (defined $hh and $hh <= 12 and $dtstr =~ s# ([ap])\.?m?\.?\s# #o) {
+ $merid = $ampm{$1};
+ }
+
+
+ unless (defined $year) {
+ # Date: 12-June-96 (using - . or /)
+
+ if ($dtstr =~ s#\s(\d\d?)([\-\./])($monpat)(\2(\d\d+))?\s# #o) {
+ ($month,$day) = ($month{$3},$1);
+ $year = $5 if $5;
+ }
+
+ # Date: 12-12-96 (using '-', '.' or '/' )
+
+ elsif ($dtstr =~ s#\s(\d+)([\-\./])(\d\d?)(\2(\d+))?\s# #o) {
+ ($month,$day) = ($1 - 1,$3);
+
+ if ($5) {
+ $year = $5;
+ # Possible match for 1995-01-24 (short mainframe date format);
+ ($year,$month,$day) = ($1, $3 - 1, $5) if $month > 12;
+ return if length($year) > 2 and $year < 1901;
+ }
+ }
+ elsif ($dtstr =~ s#\s(\d+)\s*($sufpat)?\s*($monpat)# #o) {
+ ($month,$day) = ($month{$3},$1);
+ }
+ elsif ($dtstr =~ s#($monpat)\s*(\d+)\s*($sufpat)?\s# #o) {
+ ($month,$day) = ($month{$1},$2);
+ }
+ elsif ($dtstr =~ s#($monpat)([\/-])(\d+)[\/-]# #o) {
+ ($month,$day) = ($month{$1},$3);
+ }
+
+ # Date: 961212
+
+ elsif ($dtstr =~ s#\s(\d\d)(\d\d)(\d\d)\s# #o) {
+ ($year,$month,$day) = ($1,$2-1,$3);
+ }
+
+ $year = $1 if !defined($year) and $dtstr =~ s#\s(\d{2}(\d{2})?)[\s\.,]# #o;
+
+ }
+
+ # Zone
+
+ $dst = 1 if $dtstr =~ s#\bdst\b##o;
+
+ if ($dtstr =~ s#\s"?([a-z]{3,4})(dst|\d+[a-z]*|_[a-z]+)?"?\s# #o) {
+ $dst = 1 if $2 and $2 eq 'dst';
+ $zone = tz_offset($1);
+ return unless defined $zone;
+ }
+ elsif ($dtstr =~ s#\s([a-z]{3,4})?([\-\+]?)-?(\d\d?):?(\d\d)?(00)?\s# #o) {
+ my $m = defined($4) ? "$2$4" : 0;
+ my $h = "$2$3";
+ $zone = defined($1) ? tz_offset($1) : 0;
+ return unless defined $zone;
+ $zone += 60 * ($m + (60 * $h));
+ }
+
+ if ($dtstr =~ /\S/) {
+ # now for some dumb dates
+ if ($dtstr =~ s/^\s*(ut?|z)\s*$//) {
+ $zone = 0;
+ }
+ elsif ($dtstr =~ s#\s([a-z]{3,4})?([\-\+]?)-?(\d\d?)(\d\d)?(00)?\s# #o) {
+ my $m = defined($4) ? "$2$4" : 0;
+ my $h = "$2$3";
+ $zone = defined($1) ? tz_offset($1) : 0;
+ return unless defined $zone;
+ $zone += 60 * ($m + (60 * $h));
+ }
+
+ return if $dtstr =~ /\S/o;
+ }
+
+ if (defined $hh) {
+ if ($hh == 12) {
+ $hh = 0 if $merid == $AM;
+ }
+ elsif ($merid == $PM) {
+ $hh += 12;
+ }
+ }
+
+ if (defined $year && $year > 1900) {
+ $century = int($year / 100);
+ $year -= 1900;
+ }
+
+ $zone += 3600 if defined $zone && $dst;
+ $ss += "0.$frac" if $frac;
+
+ return ($ss,$mm,$hh,$day,$month,$year,$zone,$century);
+}
+ESQ
+
+use vars qw($day_ref $mon_ref $suf_ref $obj);
+
+sub gen_parser
+{
+ local($day_ref,$mon_ref,$suf_ref,$obj) = @_;
+
+ if($obj)
+ {
+ my $obj_strptime = $strptime;
+ substr($obj_strptime,index($strptime,"sub")+6,0) = <<'ESQ';
+ shift; # package
+ESQ
+ my $sub = eval "$obj_strptime" or die $@;
+ return $sub;
+ }
+
+ eval "$strptime" or die $@;
+
+}
+
+*strptime = gen_parser(\%day,\%month,\@suf);
+
+sub str2time
+{
+ my @t = strptime(@_);
+
+ return undef
+ unless @t;
+
+ my($ss,$mm,$hh,$day,$month,$year,$zone, $century) = @t;
+ my @lt = localtime(time);
+
+ $hh ||= 0;
+ $mm ||= 0;
+ $ss ||= 0;
+
+ my $frac = $ss - int($ss);
+ $ss = int $ss;
+
+ $month = $lt[4]
+ unless(defined $month);
+
+ $day = $lt[3]
+ unless(defined $day);
+
+ $year = ($month > $lt[4]) ? ($lt[5] - 1) : $lt[5]
+ unless(defined $year);
+
+ # we were given a 4 digit year, so let's keep using those
+ $year += 1900 if defined $century;
+
+ return undef
+ unless($month <= 11 && $day >= 1 && $day <= 31
+ && $hh <= 23 && $mm <= 59 && $ss <= 59);
+
+ my $result;
+
+ if (defined $zone) {
+ $result = eval {
+ local $SIG{__DIE__} = sub {}; # Ick!
+ timegm($ss,$mm,$hh,$day,$month,$year);
+ };
+ return undef
+ if !defined $result
+ or $result == -1
+ && join("",$ss,$mm,$hh,$day,$month,$year)
+ ne "595923311169";
+ $result -= $zone;
+ }
+ else {
+ $result = eval {
+ local $SIG{__DIE__} = sub {}; # Ick!
+ timelocal($ss,$mm,$hh,$day,$month,$year);
+ };
+ return undef
+ if !defined $result
+ or $result == -1
+ && join("",$ss,$mm,$hh,$day,$month,$year)
+ ne join("",(localtime(-1))[0..5]);
+ }
+
+ return $result + $frac;
+}
+
+1;
+
+__END__
+
+
+=head1 NAME
+
+Date::Parse - Parse date strings into time values
+
+=head1 SYNOPSIS
+
+ use Date::Parse;
+
+ $time = str2time($date);
+
+ ($ss,$mm,$hh,$day,$month,$year,$zone) = strptime($date);
+
+=head1 DESCRIPTION
+
+C<Date::Parse> provides two routines for parsing date strings into time values.
+
+=over 4
+
+=item str2time(DATE [, ZONE])
+
+C<str2time> parses C<DATE> and returns a unix time value, or undef upon failure.
+C<ZONE>, if given, specifies the timezone to assume when parsing if the
+date string does not specify a timezone.
+
+=item strptime(DATE [, ZONE])
+
+C<strptime> takes the same arguments as str2time but returns an array of
+values C<($ss,$mm,$hh,$day,$month,$year,$zone,$century)>. Elements are only
+defined if they could be extracted from the date string. The C<$zone> element
+is the timezone offset in seconds from GMT. An empty array is returned upon
+failure.
+
+=back
+
+=head1 MULTI-LANGUAGE SUPPORT
+
+Date::Parse is capable of parsing dates in several languages, these include
+English, French, German and Italian.
+
+ $lang = Date::Language->new('German');
+ $lang->str2time("25 Jun 1996 21:09:55 +0100");
+
+=head1 EXAMPLE DATES
+
+Below is a sample list of dates that are known to be parsable with Date::Parse
+
+ 1995:01:24T09:08:17.1823213 ISO-8601
+ 1995-01-24T09:08:17.1823213
+ Wed, 16 Jun 94 07:29:35 CST Comma and day name are optional
+ Thu, 13 Oct 94 10:13:13 -0700
+ Wed, 9 Nov 1994 09:50:32 -0500 (EST) Text in ()'s will be ignored.
+ 21 dec 17:05 Will be parsed in the current time zone
+ 21-dec 17:05
+ 21/dec 17:05
+ 21/dec/93 17:05
+ 1999 10:02:18 "GMT"
+ 16 Nov 94 22:28:20 PST
+
+=head1 LIMITATION
+
+Date::Parse uses L<Time::Local> internally, so is limited to only parsing dates
+which result in valid values for Time::Local::timelocal. This generally means dates
+between 1901-12-17 00:00:00 GMT and 2038-01-16 23:59:59 GMT
+
+=head1 BUGS
+
+When both the month and the date are specified in the date as numbers
+they are always parsed assuming that the month number comes before the
+date. This is the usual format used in American dates.
+
+The reason why it is like this and not dynamic is that it must be
+deterministic. Several people have suggested using the current locale,
+but this will not work as the date being parsed may not be in the format
+of the current locale.
+
+My plans to address this, which will be in a future release, is to allow
+the programmer to state what order they want these values parsed in.
+
+=head1 AUTHOR
+
+Graham Barr <gbarr@pobox.com>
+
+=head1 COPYRIGHT
+
+Copyright (c) 1995-2009 Graham Barr. This program is free
+software; you can redistribute it and/or modify it under the same terms
+as Perl itself.
+
+=cut
+
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Digest/SHA.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Digest/SHA.pm
new file mode 100644
index 0000000000..dccc0e7aeb
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Digest/SHA.pm
@@ -0,0 +1,820 @@
+package Digest::SHA;
+
+require 5.003000;
+
+use strict;
+use warnings;
+use vars qw($VERSION @ISA @EXPORT_OK $errmsg);
+use Fcntl qw(O_RDONLY O_RDWR);
+use integer;
+
+$VERSION = '6.02';
+
+require Exporter;
+@ISA = qw(Exporter);
+@EXPORT_OK = qw(
+ $errmsg
+ hmac_sha1 hmac_sha1_base64 hmac_sha1_hex
+ hmac_sha224 hmac_sha224_base64 hmac_sha224_hex
+ hmac_sha256 hmac_sha256_base64 hmac_sha256_hex
+ hmac_sha384 hmac_sha384_base64 hmac_sha384_hex
+ hmac_sha512 hmac_sha512_base64 hmac_sha512_hex
+ hmac_sha512224 hmac_sha512224_base64 hmac_sha512224_hex
+ hmac_sha512256 hmac_sha512256_base64 hmac_sha512256_hex
+ sha1 sha1_base64 sha1_hex
+ sha224 sha224_base64 sha224_hex
+ sha256 sha256_base64 sha256_hex
+ sha384 sha384_base64 sha384_hex
+ sha512 sha512_base64 sha512_hex
+ sha512224 sha512224_base64 sha512224_hex
+ sha512256 sha512256_base64 sha512256_hex);
+
+# Inherit from Digest::base if possible
+
+eval {
+ require Digest::base;
+ push(@ISA, 'Digest::base');
+};
+
+# The following routines aren't time-critical, so they can be left in Perl
+
+sub new {
+ my($class, $alg) = @_;
+ $alg =~ s/\D+//g if defined $alg;
+ if (ref($class)) { # instance method
+ if (!defined($alg) || ($alg == $class->algorithm)) {
+ sharewind($class);
+ return($class);
+ }
+ return shainit($class, $alg) ? $class : undef;
+ }
+ $alg = 1 unless defined $alg;
+ return $class->newSHA($alg);
+}
+
+BEGIN { *reset = \&new }
+
+sub add_bits {
+ my($self, $data, $nbits) = @_;
+ unless (defined $nbits) {
+ $nbits = length($data);
+ $data = pack("B*", $data);
+ }
+ $nbits = length($data) * 8 if $nbits > length($data) * 8;
+ shawrite($data, $nbits, $self);
+ return($self);
+}
+
+sub _bail {
+ my $msg = shift;
+
+ $errmsg = $!;
+ $msg .= ": $!";
+ require Carp;
+ Carp::croak($msg);
+}
+
+{
+ my $_can_T_filehandle;
+
+ sub _istext {
+ local *FH = shift;
+ my $file = shift;
+
+ if (! defined $_can_T_filehandle) {
+ local $^W = 0;
+ my $istext = eval { -T FH };
+ $_can_T_filehandle = $@ ? 0 : 1;
+ return $_can_T_filehandle ? $istext : -T $file;
+ }
+ return $_can_T_filehandle ? -T FH : -T $file;
+ }
+}
+
+sub _addfile {
+ my ($self, $handle) = @_;
+
+ my $n;
+ my $buf = "";
+
+ while (($n = read($handle, $buf, 4096))) {
+ $self->add($buf);
+ }
+ _bail("Read failed") unless defined $n;
+
+ $self;
+}
+
+sub addfile {
+ my ($self, $file, $mode) = @_;
+
+ return(_addfile($self, $file)) unless ref(\$file) eq 'SCALAR';
+
+ $mode = defined($mode) ? $mode : "";
+ my ($binary, $UNIVERSAL, $BITS) =
+ map { $_ eq $mode } ("b", "U", "0");
+
+ ## Always interpret "-" to mean STDIN; otherwise use
+ ## sysopen to handle full range of POSIX file names.
+ ## If $file is a directory, force an EISDIR error
+ ## by attempting to open with mode O_RDWR
+
+ local *FH;
+ $file eq '-' and open(FH, '< -')
+ or sysopen(FH, $file, -d $file ? O_RDWR : O_RDONLY)
+ or _bail('Open failed');
+
+ if ($BITS) {
+ my ($n, $buf) = (0, "");
+ while (($n = read(FH, $buf, 4096))) {
+ $buf =~ tr/01//cd;
+ $self->add_bits($buf);
+ }
+ _bail("Read failed") unless defined $n;
+ close(FH);
+ return($self);
+ }
+
+ binmode(FH) if $binary || $UNIVERSAL;
+ if ($UNIVERSAL && _istext(*FH, $file)) {
+ $self->_addfileuniv(*FH);
+ }
+ else { $self->_addfilebin(*FH) }
+ close(FH);
+
+ $self;
+}
+
+sub getstate {
+ my $self = shift;
+
+ my $alg = $self->algorithm or return;
+ my $state = $self->_getstate or return;
+ my $nD = $alg <= 256 ? 8 : 16;
+ my $nH = $alg <= 256 ? 32 : 64;
+ my $nB = $alg <= 256 ? 64 : 128;
+ my($H, $block, $blockcnt, $lenhh, $lenhl, $lenlh, $lenll) =
+ $state =~ /^(.{$nH})(.{$nB})(.{4})(.{4})(.{4})(.{4})(.{4})$/s;
+ for ($alg, $H, $block, $blockcnt, $lenhh, $lenhl, $lenlh, $lenll) {
+ return unless defined $_;
+ }
+
+ my @s = ();
+ push(@s, "alg:" . $alg);
+ push(@s, "H:" . join(":", unpack("H*", $H) =~ /.{$nD}/g));
+ push(@s, "block:" . join(":", unpack("H*", $block) =~ /.{2}/g));
+ push(@s, "blockcnt:" . unpack("N", $blockcnt));
+ push(@s, "lenhh:" . unpack("N", $lenhh));
+ push(@s, "lenhl:" . unpack("N", $lenhl));
+ push(@s, "lenlh:" . unpack("N", $lenlh));
+ push(@s, "lenll:" . unpack("N", $lenll));
+ join("\n", @s) . "\n";
+}
+
+sub putstate {
+ my($class, $state) = @_;
+
+ my %s = ();
+ for (split(/\n/, $state)) {
+ s/^\s+//;
+ s/\s+$//;
+ next if (/^(#|$)/);
+ my @f = split(/[:\s]+/);
+ my $tag = shift(@f);
+ $s{$tag} = join('', @f);
+ }
+
+ # H and block may contain arbitrary values, but check everything else
+ grep { $_ == $s{'alg'} } (1,224,256,384,512,512224,512256) or return;
+ length($s{'H'}) == ($s{'alg'} <= 256 ? 64 : 128) or return;
+ length($s{'block'}) == ($s{'alg'} <= 256 ? 128 : 256) or return;
+ {
+ no integer;
+ for (qw(blockcnt lenhh lenhl lenlh lenll)) {
+ 0 <= $s{$_} or return;
+ $s{$_} <= 4294967295 or return;
+ }
+ $s{'blockcnt'} < ($s{'alg'} <= 256 ? 512 : 1024) or return;
+ }
+
+ my $packed_state = (
+ pack("H*", $s{'H'}) .
+ pack("H*", $s{'block'}) .
+ pack("N", $s{'blockcnt'}) .
+ pack("N", $s{'lenhh'}) .
+ pack("N", $s{'lenhl'}) .
+ pack("N", $s{'lenlh'}) .
+ pack("N", $s{'lenll'})
+ );
+
+ return $class->new($s{'alg'})->_putstate($packed_state);
+}
+
+sub dump {
+ my $self = shift;
+ my $file = shift;
+
+ my $state = $self->getstate or return;
+ $file = "-" if (!defined($file) || $file eq "");
+
+ local *FH;
+ open(FH, "> $file") or return;
+ print FH $state;
+ close(FH);
+
+ return($self);
+}
+
+sub load {
+ my $class = shift;
+ my $file = shift;
+
+ $file = "-" if (!defined($file) || $file eq "");
+
+ local *FH;
+ open(FH, "< $file") or return;
+ my $str = join('', <FH>);
+ close(FH);
+
+ $class->putstate($str);
+}
+
+eval {
+ require XSLoader;
+ XSLoader::load('Digest::SHA', $VERSION);
+ 1;
+} or do {
+ require DynaLoader;
+ push @ISA, 'DynaLoader';
+ Digest::SHA->bootstrap($VERSION);
+};
+
+1;
+__END__
+
+=head1 NAME
+
+Digest::SHA - Perl extension for SHA-1/224/256/384/512
+
+=head1 SYNOPSIS
+
+In programs:
+
+ # Functional interface
+
+ use Digest::SHA qw(sha1 sha1_hex sha1_base64 ...);
+
+ $digest = sha1($data);
+ $digest = sha1_hex($data);
+ $digest = sha1_base64($data);
+
+ $digest = sha256($data);
+ $digest = sha384_hex($data);
+ $digest = sha512_base64($data);
+
+ # Object-oriented
+
+ use Digest::SHA;
+
+ $sha = Digest::SHA->new($alg);
+
+ $sha->add($data); # feed data into stream
+
+ $sha->addfile(*F);
+ $sha->addfile($filename);
+
+ $sha->add_bits($bits);
+ $sha->add_bits($data, $nbits);
+
+ $sha_copy = $sha->clone; # make copy of digest object
+ $state = $sha->getstate; # save current state to string
+ $sha->putstate($state); # restore previous $state
+
+ $digest = $sha->digest; # compute digest
+ $digest = $sha->hexdigest;
+ $digest = $sha->b64digest;
+
+From the command line:
+
+ $ shasum files
+
+ $ shasum --help
+
+=head1 SYNOPSIS (HMAC-SHA)
+
+ # Functional interface only
+
+ use Digest::SHA qw(hmac_sha1 hmac_sha1_hex ...);
+
+ $digest = hmac_sha1($data, $key);
+ $digest = hmac_sha224_hex($data, $key);
+ $digest = hmac_sha256_base64($data, $key);
+
+=head1 ABSTRACT
+
+Digest::SHA is a complete implementation of the NIST Secure Hash Standard.
+It gives Perl programmers a convenient way to calculate SHA-1, SHA-224,
+SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256 message digests.
+The module can handle all types of input, including partial-byte data.
+
+=head1 DESCRIPTION
+
+Digest::SHA is written in C for speed. If your platform lacks a
+C compiler, you can install the functionally equivalent (but much
+slower) L<Digest::SHA::PurePerl> module.
+
+The programming interface is easy to use: it's the same one found
+in CPAN's L<Digest> module. So, if your applications currently
+use L<Digest::MD5> and you'd prefer the stronger security of SHA,
+it's a simple matter to convert them.
+
+The interface provides two ways to calculate digests: all-at-once,
+or in stages. To illustrate, the following short program computes
+the SHA-256 digest of "hello world" using each approach:
+
+ use Digest::SHA qw(sha256_hex);
+
+ $data = "hello world";
+ @frags = split(//, $data);
+
+ # all-at-once (Functional style)
+ $digest1 = sha256_hex($data);
+
+ # in-stages (OOP style)
+ $state = Digest::SHA->new(256);
+ for (@frags) { $state->add($_) }
+ $digest2 = $state->hexdigest;
+
+ print $digest1 eq $digest2 ?
+ "whew!\n" : "oops!\n";
+
+To calculate the digest of an n-bit message where I<n> is not a
+multiple of 8, use the I<add_bits()> method. For example, consider
+the 446-bit message consisting of the bit-string "110" repeated
+148 times, followed by "11". Here's how to display its SHA-1
+digest:
+
+ use Digest::SHA;
+ $bits = "110" x 148 . "11";
+ $sha = Digest::SHA->new(1)->add_bits($bits);
+ print $sha->hexdigest, "\n";
+
+Note that for larger bit-strings, it's more efficient to use the
+two-argument version I<add_bits($data, $nbits)>, where I<$data> is
+in the customary packed binary format used for Perl strings.
+
+The module also lets you save intermediate SHA states to a string. The
+I<getstate()> method generates portable, human-readable text describing
+the current state of computation. You can subsequently restore that
+state with I<putstate()> to resume where the calculation left off.
+
+To see what a state description looks like, just run the following:
+
+ use Digest::SHA;
+ print Digest::SHA->new->add("Shaw" x 1962)->getstate;
+
+As an added convenience, the Digest::SHA module offers routines to
+calculate keyed hashes using the HMAC-SHA-1/224/256/384/512
+algorithms. These services exist in functional form only, and
+mimic the style and behavior of the I<sha()>, I<sha_hex()>, and
+I<sha_base64()> functions.
+
+ # Test vector from draft-ietf-ipsec-ciph-sha-256-01.txt
+
+ use Digest::SHA qw(hmac_sha256_hex);
+ print hmac_sha256_hex("Hi There", chr(0x0b) x 32), "\n";
+
+=head1 UNICODE AND SIDE EFFECTS
+
+Perl supports Unicode strings as of version 5.6. Such strings may
+contain wide characters, namely, characters whose ordinal values are
+greater than 255. This can cause problems for digest algorithms such
+as SHA that are specified to operate on sequences of bytes.
+
+The rule by which Digest::SHA handles a Unicode string is easy
+to state, but potentially confusing to grasp: the string is interpreted
+as a sequence of byte values, where each byte value is equal to the
+ordinal value (viz. code point) of its corresponding Unicode character.
+That way, the Unicode string 'abc' has exactly the same digest value as
+the ordinary string 'abc'.
+
+Since a wide character does not fit into a byte, the Digest::SHA
+routines croak if they encounter one. Whereas if a Unicode string
+contains no wide characters, the module accepts it quite happily.
+The following code illustrates the two cases:
+
+ $str1 = pack('U*', (0..255));
+ print sha1_hex($str1); # ok
+
+ $str2 = pack('U*', (0..256));
+ print sha1_hex($str2); # croaks
+
+Be aware that the digest routines silently convert UTF-8 input into its
+equivalent byte sequence in the native encoding (cf. utf8::downgrade).
+This side effect influences only the way Perl stores the data internally,
+but otherwise leaves the actual value of the data intact.
+
+=head1 NIST STATEMENT ON SHA-1
+
+NIST acknowledges that the work of Prof. Xiaoyun Wang constitutes a
+practical collision attack on SHA-1. Therefore, NIST encourages the
+rapid adoption of the SHA-2 hash functions (e.g. SHA-256) for applications
+requiring strong collision resistance, such as digital signatures.
+
+ref. L<http://csrc.nist.gov/groups/ST/hash/statement.html>
+
+=head1 PADDING OF BASE64 DIGESTS
+
+By convention, CPAN Digest modules do B<not> pad their Base64 output.
+Problems can occur when feeding such digests to other software that
+expects properly padded Base64 encodings.
+
+For the time being, any necessary padding must be done by the user.
+Fortunately, this is a simple operation: if the length of a Base64-encoded
+digest isn't a multiple of 4, simply append "=" characters to the end
+of the digest until it is:
+
+ while (length($b64_digest) % 4) {
+ $b64_digest .= '=';
+ }
+
+To illustrate, I<sha256_base64("abc")> is computed to be
+
+ ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0
+
+which has a length of 43. So, the properly padded version is
+
+ ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=
+
+=head1 EXPORT
+
+None by default.
+
+=head1 EXPORTABLE FUNCTIONS
+
+Provided your C compiler supports a 64-bit type (e.g. the I<long
+long> of C99, or I<__int64> used by Microsoft C/C++), all of these
+functions will be available for use. Otherwise, you won't be able
+to perform the SHA-384 and SHA-512 transforms, both of which require
+64-bit operations.
+
+I<Functional style>
+
+=over 4
+
+=item B<sha1($data, ...)>
+
+=item B<sha224($data, ...)>
+
+=item B<sha256($data, ...)>
+
+=item B<sha384($data, ...)>
+
+=item B<sha512($data, ...)>
+
+=item B<sha512224($data, ...)>
+
+=item B<sha512256($data, ...)>
+
+Logically joins the arguments into a single string, and returns
+its SHA-1/224/256/384/512 digest encoded as a binary string.
+
+=item B<sha1_hex($data, ...)>
+
+=item B<sha224_hex($data, ...)>
+
+=item B<sha256_hex($data, ...)>
+
+=item B<sha384_hex($data, ...)>
+
+=item B<sha512_hex($data, ...)>
+
+=item B<sha512224_hex($data, ...)>
+
+=item B<sha512256_hex($data, ...)>
+
+Logically joins the arguments into a single string, and returns
+its SHA-1/224/256/384/512 digest encoded as a hexadecimal string.
+
+=item B<sha1_base64($data, ...)>
+
+=item B<sha224_base64($data, ...)>
+
+=item B<sha256_base64($data, ...)>
+
+=item B<sha384_base64($data, ...)>
+
+=item B<sha512_base64($data, ...)>
+
+=item B<sha512224_base64($data, ...)>
+
+=item B<sha512256_base64($data, ...)>
+
+Logically joins the arguments into a single string, and returns
+its SHA-1/224/256/384/512 digest encoded as a Base64 string.
+
+It's important to note that the resulting string does B<not> contain
+the padding characters typical of Base64 encodings. This omission is
+deliberate, and is done to maintain compatibility with the family of
+CPAN Digest modules. See L</"PADDING OF BASE64 DIGESTS"> for details.
+
+=back
+
+I<OOP style>
+
+=over 4
+
+=item B<new($alg)>
+
+Returns a new Digest::SHA object. Allowed values for I<$alg> are 1,
+224, 256, 384, 512, 512224, or 512256. It's also possible to use
+common string representations of the algorithm (e.g. "sha256",
+"SHA-384"). If the argument is missing, SHA-1 will be used by
+default.
+
+Invoking I<new> as an instance method will reset the object to the
+initial state associated with I<$alg>. If the argument is missing,
+the object will continue using the same algorithm that was selected
+at creation.
+
+=item B<reset($alg)>
+
+This method has exactly the same effect as I<new($alg)>. In fact,
+I<reset> is just an alias for I<new>.
+
+=item B<hashsize>
+
+Returns the number of digest bits for this object. The values are
+160, 224, 256, 384, 512, 224, and 256 for SHA-1, SHA-224, SHA-256,
+SHA-384, SHA-512, SHA-512/224 and SHA-512/256, respectively.
+
+=item B<algorithm>
+
+Returns the digest algorithm for this object. The values are 1,
+224, 256, 384, 512, 512224, and 512256 for SHA-1, SHA-224, SHA-256,
+SHA-384, SHA-512, SHA-512/224, and SHA-512/256, respectively.
+
+=item B<clone>
+
+Returns a duplicate copy of the object.
+
+=item B<add($data, ...)>
+
+Logically joins the arguments into a single string, and uses it to
+update the current digest state. In other words, the following
+statements have the same effect:
+
+ $sha->add("a"); $sha->add("b"); $sha->add("c");
+ $sha->add("a")->add("b")->add("c");
+ $sha->add("a", "b", "c");
+ $sha->add("abc");
+
+The return value is the updated object itself.
+
+=item B<add_bits($data, $nbits)>
+
+=item B<add_bits($bits)>
+
+Updates the current digest state by appending bits to it. The
+return value is the updated object itself.
+
+The first form causes the most-significant I<$nbits> of I<$data>
+to be appended to the stream. The I<$data> argument is in the
+customary binary format used for Perl strings.
+
+The second form takes an ASCII string of "0" and "1" characters as
+its argument. It's equivalent to
+
+ $sha->add_bits(pack("B*", $bits), length($bits));
+
+So, the following two statements do the same thing:
+
+ $sha->add_bits("111100001010");
+ $sha->add_bits("\xF0\xA0", 12);
+
+Note that SHA-1 and SHA-2 use I<most-significant-bit ordering>
+for their internal state. This means that
+
+ $sha3->add_bits("110");
+
+is equivalent to
+
+ $sha3->add_bits("1")->add_bits("1")->add_bits("0");
+
+=item B<addfile(*FILE)>
+
+Reads from I<FILE> until EOF, and appends that data to the current
+state. The return value is the updated object itself.
+
+=item B<addfile($filename [, $mode])>
+
+Reads the contents of I<$filename>, and appends that data to the current
+state. The return value is the updated object itself.
+
+By default, I<$filename> is simply opened and read; no special modes
+or I/O disciplines are used. To change this, set the optional I<$mode>
+argument to one of the following values:
+
+ "b" read file in binary mode
+
+ "U" use universal newlines
+
+ "0" use BITS mode
+
+The "U" mode is modeled on Python's "Universal Newlines" concept, whereby
+DOS and Mac OS line terminators are converted internally to UNIX newlines
+before processing. This ensures consistent digest values when working
+simultaneously across multiple file systems. B<The "U" mode influences
+only text files>, namely those passing Perl's I<-T> test; binary files
+are processed with no translation whatsoever.
+
+The BITS mode ("0") interprets the contents of I<$filename> as a logical
+stream of bits, where each ASCII '0' or '1' character represents a 0 or
+1 bit, respectively. All other characters are ignored. This provides
+a convenient way to calculate the digest values of partial-byte data
+by using files, rather than having to write separate programs employing
+the I<add_bits> method.
+
+=item B<getstate>
+
+Returns a string containing a portable, human-readable representation
+of the current SHA state.
+
+=item B<putstate($str)>
+
+Returns a Digest::SHA object representing the SHA state contained
+in I<$str>. The format of I<$str> matches the format of the output
+produced by method I<getstate>. If called as a class method, a new
+object is created; if called as an instance method, the object is reset
+to the state contained in I<$str>.
+
+=item B<dump($filename)>
+
+Writes the output of I<getstate> to I<$filename>. If the argument is
+missing, or equal to the empty string, the state information will be
+written to STDOUT.
+
+=item B<load($filename)>
+
+Returns a Digest::SHA object that results from calling I<putstate> on
+the contents of I<$filename>. If the argument is missing, or equal to
+the empty string, the state information will be read from STDIN.
+
+=item B<digest>
+
+Returns the digest encoded as a binary string.
+
+Note that the I<digest> method is a read-once operation. Once it
+has been performed, the Digest::SHA object is automatically reset
+in preparation for calculating another digest value. Call
+I<$sha-E<gt>clone-E<gt>digest> if it's necessary to preserve the
+original digest state.
+
+=item B<hexdigest>
+
+Returns the digest encoded as a hexadecimal string.
+
+Like I<digest>, this method is a read-once operation. Call
+I<$sha-E<gt>clone-E<gt>hexdigest> if it's necessary to preserve
+the original digest state.
+
+=item B<b64digest>
+
+Returns the digest encoded as a Base64 string.
+
+Like I<digest>, this method is a read-once operation. Call
+I<$sha-E<gt>clone-E<gt>b64digest> if it's necessary to preserve
+the original digest state.
+
+It's important to note that the resulting string does B<not> contain
+the padding characters typical of Base64 encodings. This omission is
+deliberate, and is done to maintain compatibility with the family of
+CPAN Digest modules. See L</"PADDING OF BASE64 DIGESTS"> for details.
+
+=back
+
+I<HMAC-SHA-1/224/256/384/512>
+
+=over 4
+
+=item B<hmac_sha1($data, $key)>
+
+=item B<hmac_sha224($data, $key)>
+
+=item B<hmac_sha256($data, $key)>
+
+=item B<hmac_sha384($data, $key)>
+
+=item B<hmac_sha512($data, $key)>
+
+=item B<hmac_sha512224($data, $key)>
+
+=item B<hmac_sha512256($data, $key)>
+
+Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>,
+with the result encoded as a binary string. Multiple I<$data>
+arguments are allowed, provided that I<$key> is the last argument
+in the list.
+
+=item B<hmac_sha1_hex($data, $key)>
+
+=item B<hmac_sha224_hex($data, $key)>
+
+=item B<hmac_sha256_hex($data, $key)>
+
+=item B<hmac_sha384_hex($data, $key)>
+
+=item B<hmac_sha512_hex($data, $key)>
+
+=item B<hmac_sha512224_hex($data, $key)>
+
+=item B<hmac_sha512256_hex($data, $key)>
+
+Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>,
+with the result encoded as a hexadecimal string. Multiple I<$data>
+arguments are allowed, provided that I<$key> is the last argument
+in the list.
+
+=item B<hmac_sha1_base64($data, $key)>
+
+=item B<hmac_sha224_base64($data, $key)>
+
+=item B<hmac_sha256_base64($data, $key)>
+
+=item B<hmac_sha384_base64($data, $key)>
+
+=item B<hmac_sha512_base64($data, $key)>
+
+=item B<hmac_sha512224_base64($data, $key)>
+
+=item B<hmac_sha512256_base64($data, $key)>
+
+Returns the HMAC-SHA-1/224/256/384/512 digest of I<$data>/I<$key>,
+with the result encoded as a Base64 string. Multiple I<$data>
+arguments are allowed, provided that I<$key> is the last argument
+in the list.
+
+It's important to note that the resulting string does B<not> contain
+the padding characters typical of Base64 encodings. This omission is
+deliberate, and is done to maintain compatibility with the family of
+CPAN Digest modules. See L</"PADDING OF BASE64 DIGESTS"> for details.
+
+=back
+
+=head1 SEE ALSO
+
+L<Digest>, L<Digest::SHA::PurePerl>
+
+The Secure Hash Standard (Draft FIPS PUB 180-4) can be found at:
+
+L<http://csrc.nist.gov/publications/drafts/fips180-4/Draft-FIPS180-4_Feb2011.pdf>
+
+The Keyed-Hash Message Authentication Code (HMAC):
+
+L<http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf>
+
+=head1 AUTHOR
+
+ Mark Shelor <mshelor@cpan.org>
+
+=head1 ACKNOWLEDGMENTS
+
+The author is particularly grateful to
+
+ Gisle Aas
+ H. Merijn Brand
+ Sean Burke
+ Chris Carey
+ Alexandr Ciornii
+ Chris David
+ Jim Doble
+ Thomas Drugeon
+ Julius Duque
+ Jeffrey Friedl
+ Robert Gilmour
+ Brian Gladman
+ Jarkko Hietaniemi
+ Adam Kennedy
+ Mark Lawrence
+ Andy Lester
+ Alex Muntada
+ Steve Peters
+ Chris Skiscim
+ Martin Thurn
+ Gunnar Wolf
+ Adam Woodbury
+
+"who by trained skill rescued life from such great billows and such thick
+darkness and moored it in so perfect a calm and in so brilliant a light"
+- Lucretius
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2003-2018 Mark Shelor
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+L<perlartistic>
+
+=cut
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Digest/SHA1.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Digest/SHA1.pm
deleted file mode 100644
index bd2647a1de..0000000000
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Digest/SHA1.pm
+++ /dev/null
@@ -1,246 +0,0 @@
-package Digest::SHA1;
-
-use strict;
-use vars qw($VERSION @ISA @EXPORT_OK);
-
-$VERSION = '2.13';
-
-require Exporter;
-*import = \&Exporter::import;
-@EXPORT_OK = qw(sha1 sha1_hex sha1_base64 sha1_transform);
-
-require DynaLoader;
-@ISA=qw(DynaLoader);
-
-eval {
- require Digest::base;
- push(@ISA, 'Digest::base');
-};
-if ($@) {
- my $err = $@;
- *add_bits = sub { die $err };
-}
-
-Digest::SHA1->bootstrap($VERSION);
-
-1;
-__END__
-
-=head1 NAME
-
-Digest::SHA1 - Perl interface to the SHA-1 algorithm
-
-=head1 SYNOPSIS
-
- # Functional style
- use Digest::SHA1 qw(sha1 sha1_hex sha1_base64);
-
- $digest = sha1($data);
- $digest = sha1_hex($data);
- $digest = sha1_base64($data);
- $digest = sha1_transform($data);
-
-
- # OO style
- use Digest::SHA1;
-
- $sha1 = Digest::SHA1->new;
-
- $sha1->add($data);
- $sha1->addfile(*FILE);
-
- $sha1_copy = $sha1->clone;
-
- $digest = $sha1->digest;
- $digest = $sha1->hexdigest;
- $digest = $sha1->b64digest;
- $digest = $sha1->transform;
-
-=head1 DESCRIPTION
-
-The C<Digest::SHA1> module allows you to use the NIST SHA-1 message
-digest algorithm from within Perl programs. The algorithm takes as
-input a message of arbitrary length and produces as output a 160-bit
-"fingerprint" or "message digest" of the input.
-
-In 2005, security flaws were identified in SHA-1, namely that a possible
-mathematical weakness might exist, indicating that a stronger hash function
-would be desirable. The L<Digest::SHA> module implements the stronger
-algorithms in the SHA family.
-
-The C<Digest::SHA1> module provide a procedural interface for simple
-use, as well as an object oriented interface that can handle messages
-of arbitrary length and which can read files directly.
-
-=head1 FUNCTIONS
-
-The following functions can be exported from the C<Digest::SHA1>
-module. No functions are exported by default.
-
-=over 4
-
-=item sha1($data,...)
-
-This function will concatenate all arguments, calculate the SHA-1
-digest of this "message", and return it in binary form. The returned
-string will be 20 bytes long.
-
-The result of sha1("a", "b", "c") will be exactly the same as the
-result of sha1("abc").
-
-=item sha1_hex($data,...)
-
-Same as sha1(), but will return the digest in hexadecimal form. The
-length of the returned string will be 40 and it will only contain
-characters from this set: '0'..'9' and 'a'..'f'.
-
-=item sha1_base64($data,...)
-
-Same as sha1(), but will return the digest as a base64 encoded string.
-The length of the returned string will be 27 and it will only contain
-characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+' and
-'/'.
-
-Note that the base64 encoded string returned is not padded to be a
-multiple of 4 bytes long. If you want interoperability with other
-base64 encoded sha1 digests you might want to append the redundant
-string "=" to the result.
-
-=item sha1_transform($data)
-
-Implements the basic SHA1 transform on a 64 byte block. The $data
-argument and the returned $digest are in binary form. This algorithm
-is used in NIST FIPS 186-2
-
-=back
-
-=head1 METHODS
-
-The object oriented interface to C<Digest::SHA1> is described in this
-section. After a C<Digest::SHA1> object has been created, you will add
-data to it and finally ask for the digest in a suitable format. A
-single object can be used to calculate multiple digests.
-
-The following methods are provided:
-
-=over 4
-
-=item $sha1 = Digest::SHA1->new
-
-The constructor returns a new C<Digest::SHA1> object which encapsulate
-the state of the SHA-1 message-digest algorithm.
-
-If called as an instance method (i.e. $sha1->new) it will just reset the
-state the object to the state of a newly created object. No new
-object is created in this case.
-
-=item $sha1->reset
-
-This is just an alias for $sha1->new.
-
-=item $sha1->clone
-
-This a copy of the $sha1 object. It is useful when you do not want to
-destroy the digests state, but need an intermediate value of the
-digest, e.g. when calculating digests iteratively on a continuous data
-stream. Example:
-
- my $sha1 = Digest::SHA1->new;
- while (<>) {
- $sha1->add($_);
- print "Line $.: ", $sha1->clone->hexdigest, "\n";
- }
-
-=item $sha1->add($data,...)
-
-The $data provided as argument are appended to the message we
-calculate the digest for. The return value is the $sha1 object itself.
-
-All these lines will have the same effect on the state of the $sha1
-object:
-
- $sha1->add("a"); $sha1->add("b"); $sha1->add("c");
- $sha1->add("a")->add("b")->add("c");
- $sha1->add("a", "b", "c");
- $sha1->add("abc");
-
-=item $sha1->addfile($io_handle)
-
-The $io_handle will be read until EOF and its content appended to the
-message we calculate the digest for. The return value is the $sha1
-object itself.
-
-The addfile() method will croak() if it fails reading data for some
-reason. If it croaks it is unpredictable what the state of the $sha1
-object will be in. The addfile() method might have been able to read
-the file partially before it failed. It is probably wise to discard
-or reset the $sha1 object if this occurs.
-
-In most cases you want to make sure that the $io_handle is in
-C<binmode> before you pass it as argument to the addfile() method.
-
-=item $sha1->add_bits($data, $nbits)
-
-=item $sha1->add_bits($bitstring)
-
-This implementation of SHA-1 only supports byte oriented input so you
-might only add bits as multiples of 8. If you need bit level support
-please consider using the C<Digest::SHA> module instead. The
-add_bits() method is provided here for compatibility with other digest
-implementations. See L<Digest> for description of the arguments that
-add_bits() take.
-
-=item $sha1->digest
-
-Return the binary digest for the message. The returned string will be
-20 bytes long.
-
-Note that the C<digest> operation is effectively a destructive,
-read-once operation. Once it has been performed, the C<Digest::SHA1>
-object is automatically C<reset> and can be used to calculate another
-digest value. Call $sha1->clone->digest if you want to calculate the
-digest without reseting the digest state.
-
-=item $sha1->hexdigest
-
-Same as $sha1->digest, but will return the digest in hexadecimal
-form. The length of the returned string will be 40 and it will only
-contain characters from this set: '0'..'9' and 'a'..'f'.
-
-=item $sha1->b64digest
-
-Same as $sha1->digest, but will return the digest as a base64 encoded
-string. The length of the returned string will be 27 and it will only
-contain characters from this set: 'A'..'Z', 'a'..'z', '0'..'9', '+'
-and '/'.
-
-
-The base64 encoded string returned is not padded to be a multiple of 4
-bytes long. If you want interoperability with other base64 encoded
-SHA-1 digests you might want to append the string "=" to the result.
-
-=back
-
-=head1 SEE ALSO
-
-L<Digest>, L<Digest::HMAC_SHA1>, L<Digest::SHA>, L<Digest::MD5>
-
-http://www.itl.nist.gov/fipspubs/fip180-1.htm
-
-http://en.wikipedia.org/wiki/SHA_hash_functions
-
-=head1 COPYRIGHT
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
- Copyright 1999-2004 Gisle Aas.
- Copyright 1997 Uwe Hollerbach.
-
-=head1 AUTHORS
-
-Peter C. Gutmann,
-Uwe Hollerbach <uh@alumni.caltech.edu>,
-Gisle Aas <gisle@aas.no>
-
-=cut
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/File/Listing.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/File/Listing.pm
index c8d72a7185..b94c5b3910 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/File/Listing.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/File/Listing.pm
@@ -1,18 +1,17 @@
package File::Listing;
-sub Version { $VERSION; }
-$VERSION = "6.04";
-
-require Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(parse_dir);
-
use strict;
-
+use warnings;
use Carp ();
use HTTP::Date qw(str2time);
+use base qw( Exporter );
+
+# ABSTRACT: Parse directory listing
+our $VERSION = '6.14'; # VERSION
+sub Version { $File::Listing::VERSION; }
+our @EXPORT = qw(parse_dir);
sub parse_dir ($;$$$)
{
@@ -55,10 +54,11 @@ sub file_mode ($)
s/[Ll](...)$/S$1/;
while (/(.)/g) {
- $mode <<= 1;
- $mode |= 1 if $1 ne "-" &&
- $1 ne 'S' &&
- $1 ne 'T';
+ $mode <<= 1;
+ $mode |= 1 if $1 ne "-" &&
+ $1 ne "*" &&
+ $1 ne 'S' &&
+ $1 ne 'T';
}
$mode |= 0004000 if /^..s....../i;
@@ -90,7 +90,7 @@ sub parse
# file handles to read from.
if (ref($dir) eq 'ARRAY') {
- # Already splitted up
+ # Already split up
}
elsif (ref($dir) eq 'GLOB') {
# A file handle
@@ -111,17 +111,17 @@ sub parse
my @files = ();
if (ref($dir) eq 'ARRAY') {
for (@$dir) {
- push(@files, $pkg->line($_, $tz, $error));
+ push(@files, $pkg->line($_, $tz, $error));
}
}
else {
local($_);
- while (<$dir>) {
- chomp;
- push(@files, $pkg->line($_, $tz, $error));
+ while (my $line = <$dir>) {
+ chomp $line;
+ push(@files, $pkg->line($line, $tz, $error));
}
}
- wantarray ? @files : \@files;
+ wantarray ? @files : \@files; ## no critic (Freenode::Wantarray)
}
@@ -130,12 +130,10 @@ package File::Listing::unix;
use HTTP::Date qw(str2time);
-# A place to remember current directory from last line parsed.
-use vars qw($curdir @ISA);
-
-@ISA = qw(File::Listing);
-
+our @ISA = qw(File::Listing);
+# A place to remember current directory from last line parsed.
+our $curdir;
sub init
{
@@ -154,42 +152,42 @@ sub line
my ($kind, $size, $date, $name);
if (($kind, $size, $date, $name) =
- /^([\-FlrwxsStTdD]{10}) # Type and permission bits
- .* # Graps
- \D(\d+) # File size
- \s+ # Some space
- (\w{3}\s+\d+\s+(?:\d{1,2}:\d{2}|\d{4})|\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}) # Date
- \s+ # Some more space
- (.*)$ # File name
- /x )
+ /^([\-\*FlrwxsStTdD]{10}) # Type and permission bits
+ .* # Graps
+ \D(\d+) # File size
+ \s+ # Some space
+ (\w{3}\s+\d+\s+(?:\d{1,2}:\d{2}|\d{4})|\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}) # Date
+ \s+ # Some more space
+ (.*)$ # File name
+ /x )
{
- return if $name eq '.' || $name eq '..';
- $name = "$curdir/$name" if length $curdir;
- my $type = '?';
- if ($kind =~ /^l/ && $name =~ /(.*) -> (.*)/ ) {
- $name = $1;
- $type = "l $2";
- }
- elsif ($kind =~ /^[\-F]/) { # (hopefully) a regular file
- $type = 'f';
- }
- elsif ($kind =~ /^[dD]/) {
- $type = 'd';
- $size = undef; # Don't believe the reported size
- }
- return [$name, $type, $size, str2time($date, $tz),
+ return if $name eq '.' || $name eq '..';
+ $name = "$curdir/$name" if length $curdir;
+ my $type = '?';
+ if ($kind =~ /^l/ && $name =~ /(.*) -> (.*)/ ) {
+ $name = $1;
+ $type = "l $2";
+ }
+ elsif ($kind =~ /^[\-F]/) { # (hopefully) a regular file
+ $type = 'f';
+ }
+ elsif ($kind =~ /^[dD]/) {
+ $type = 'd';
+ $size = undef; # Don't believe the reported size
+ }
+ return [$name, $type, $size, str2time($date, $tz),
File::Listing::file_mode($kind)];
}
elsif (/^(.+):$/ && !/^[dcbsp].*\s.*\s.*:$/ ) {
- my $dir = $1;
- return () if $dir eq '.';
- $curdir = $dir;
- return ();
+ my $dir = $1;
+ return () if $dir eq '.';
+ $curdir = $dir;
+ return ();
}
elsif (/^[Tt]otal\s+(\d+)$/ || /^\s*$/) {
- return ();
+ return ();
}
elsif (/not found/ || # OSF1, HPUX, and SunOS return
# "$file not found"
@@ -200,16 +198,16 @@ sub line
/cannot find/ # Windows NT returns
# "The system cannot find the path specified."
) {
- return () unless defined $error;
- &$error($_) if ref($error) eq 'CODE';
- warn "Error: $_\n" if $error eq 'warn';
- return ();
+ return () unless defined $error;
+ &$error($_) if ref($error) eq 'CODE';
+ warn "Error: $_\n" if $error eq 'warn';
+ return ();
}
elsif ($_ eq '') { # AIX, and Linux return nothing
- return () unless defined $error;
- &$error("No such file or directory") if ref($error) eq 'CODE';
- warn "Warning: No such file or directory\n" if $error eq 'warn';
- return ();
+ return () unless defined $error;
+ &$error("No such file or directory") if ref($error) eq 'CODE';
+ warn "Warning: No such file or directory\n" if $error eq 'warn';
+ return ();
}
else {
# parse failed, check if the dosftp parse understands it
@@ -225,10 +223,10 @@ package File::Listing::dosftp;
use HTTP::Date qw(str2time);
-# A place to remember current directory from last line parsed.
-use vars qw($curdir @ISA);
+our @ISA = qw(File::Listing);
-@ISA = qw(File::Listing);
+# A place to remember current directory from last line parsed.
+our $curdir;
@@ -258,24 +256,24 @@ sub line
(.+)$ # File name
/x )
{
- return if $name eq '.' || $name eq '..';
- $name = "$curdir/$name" if length $curdir;
- my $type = '?';
- if ($size_or_dir eq '<DIR>') {
- $type = "d";
+ return if $name eq '.' || $name eq '..';
+ $name = "$curdir/$name" if length $curdir;
+ my $type = '?';
+ if ($size_or_dir eq '<DIR>') {
+ $type = "d";
$size = ""; # directories have no size in the pc listing
}
else {
- $type = 'f';
+ $type = 'f';
$size = $size_or_dir;
- }
- return [$name, $type, $size, str2time($date, $tz), undef];
+ }
+ return [$name, $type, $size, str2time($date, $tz), undef];
}
else {
- return () unless defined $error;
- &$error($_) if ref($error) eq 'CODE';
- warn "Can't parse: $_\n" if $error eq 'warn';
- return ();
+ return () unless defined $error;
+ &$error($_) if ref($error) eq 'CODE';
+ warn "Can't parse: $_\n" if $error eq 'warn';
+ return ();
}
}
@@ -283,18 +281,16 @@ sub line
package File::Listing::vms;
-@File::Listing::vms::ISA = qw(File::Listing);
+our @ISA = qw(File::Listing);
package File::Listing::netware;
-@File::Listing::netware::ISA = qw(File::Listing);
+our @ISA = qw(File::Listing);
package File::Listing::apache;
-use vars qw(@ISA);
-
-@ISA = qw(File::Listing);
+our @ISA = qw(File::Listing);
sub init { }
@@ -306,32 +302,41 @@ sub line {
my($tz, $error) = @_; # ignored for now...
s!</?t[rd][^>]*>! !g; # clean away various table stuff
- if (m!<A\s+HREF=\"([^\"]+)\">.*</A>.*?(\d+)-([a-zA-Z]+|\d+)-(\d+)\s+(\d+):(\d+)\s+(?:([\d\.]+[kMG]?|-))!i) {
- my($filename, $filesize) = ($1, $7);
- my($d,$m,$y, $H,$M) = ($2,$3,$4,$5,$6);
- if ($m =~ /^\d+$/) {
- ($d,$y) = ($y,$d) # iso date
- }
- else {
- $m = _monthabbrev_number($m);
- }
-
- $filesize = 0 if $filesize eq '-';
- if ($filesize =~ s/k$//i) {
- $filesize *= 1024;
- }
- elsif ($filesize =~ s/M$//) {
- $filesize *= 1024*1024;
- }
- elsif ($filesize =~ s/G$//) {
- $filesize *= 1024*1024*1024;
- }
- $filesize = int $filesize;
-
- require Time::Local;
- my $filetime = Time::Local::timelocal(0,$M,$H,$d,$m-1,_guess_year($y)-1900);
- my $filetype = ($filename =~ s|/$|| ? "d" : "f");
- return [$filename, $filetype, $filesize, $filetime, undef];
+ if (m!<A\s+HREF=\"([^?\"]+)\">.*</A>.*?(\d+)-([a-zA-Z]+|\d+)-(\d+)\s+(\d+):(\d+)\s+(?:([\d\.]+[kMG]?|-))!i) {
+ my($filename, $filesize) = ($1, $7);
+ my($d,$m,$y, $H,$M) = ($2,$3,$4,$5,$6);
+ if ($m =~ /^\d+$/) {
+ ($d,$y) = ($y,$d) # iso date
+ }
+ else {
+ $m = _monthabbrev_number($m);
+ }
+
+ $filesize = 0 if $filesize eq '-';
+ if ($filesize =~ s/k$//i) {
+ $filesize *= 1024;
+ }
+ elsif ($filesize =~ s/M$//) {
+ $filesize *= 1024*1024;
+ }
+ elsif ($filesize =~ s/G$//) {
+ $filesize *= 1024*1024*1024;
+ }
+ $filesize = int $filesize;
+
+ require Time::Local;
+ my $filetime = Time::Local::timelocal(0,$M,$H,$d,$m-1,_guess_year($y));
+ my $filetype = ($filename =~ s|/$|| ? "d" : "f");
+ return [$filename, $filetype, $filesize, $filetime, undef];
+ }
+
+ # the default listing doesn't include timestamps or file sizes
+ # but we don't want to grab navigation links, so we ignore links
+ # that have a non-trailing slash / character or ?
+ elsif(m!<A\s+HREF=\"([^?/\"]+/?)\">.*</A>!i) {
+ my $filename = $1;
+ my $filetype = ($filename =~ s|/$|| ? "d" : "f");
+ return [$filename, $filetype, undef, undef, undef];
}
return ();
@@ -340,11 +345,23 @@ sub line {
sub _guess_year {
my $y = shift;
- if ($y >= 90) {
- $y = 1900+$y;
+
+ # if the year is already four digit then we shouldn't do
+ # anything to modify it.
+ if ($y >= 1900) {
+ # do nothing
+
+ # TODO: for hysterical er historical reasons we assume 9x is in the
+ # 1990s we should probably not do that, but I don't have any examples
+ # where apache provides two digit dates so I am leaving this as-is
+ # for now. Possibly the right thing is to not handle two digit years.
+ } elsif ($y >= 90) {
+ $y = 1900+$y;
}
+
+ # TODO: likewise assuming 00-89 are 20xx is long term probably wrong.
elsif ($y < 100) {
- $y = 2000+$y;
+ $y = 2000+$y;
}
$y;
}
@@ -372,64 +389,228 @@ sub _monthabbrev_number {
__END__
+=pod
+
+=encoding UTF-8
+
=head1 NAME
-File::Listing - parse directory listing
+File::Listing - Parse directory listing
+
+=head1 VERSION
+
+version 6.14
=head1 SYNOPSIS
use File::Listing qw(parse_dir);
$ENV{LANG} = "C"; # dates in non-English locales not supported
- for (parse_dir(`ls -l`)) {
- ($name, $type, $size, $mtime, $mode) = @$_;
+ foreach my $file (parse_dir(`ls -l`)) {
+ my ($name, $type, $size, $mtime, $mode) = @$file;
next if $type ne 'f'; # plain file
#...
}
-
+
# directory listing can also be read from a file
- open(LISTING, "zcat ls-lR.gz|");
- $dir = parse_dir(\*LISTING, '+0000');
+ open my $listing, "zcat ls-lR.gz|";
+ $dir = parse_dir($listing, '+0000');
=head1 DESCRIPTION
-This module exports a single function called parse_dir(), which can be
+This module exports a single function called C<parse_dir>, which can be
used to parse directory listings.
-The first parameter to parse_dir() is the directory listing to parse.
+=head1 FUNCTIONS
+
+=head2 parse_dir
+
+ my $dir = parse_dir( $listing );
+ my $dir = parse_dir( $listing, $time_zone );
+ my $dir = parse_dir( $listing, $time_zone, $type );
+ my $dir = parse_dir( $listing, $time_zone, $type, $error );
+ my @files = parse_dir( $listing );
+ my @files = parse_dir( $listing, $time_zone );
+ my @files = parse_dir( $listing, $time_zone, $type );
+ my @files = parse_dir( $listing, $time_zone, $type, $error );
+
+The first parameter (C<$listing>) is the directory listing to parse.
It can be a scalar, a reference to an array of directory lines or a
glob representing a filehandle to read the directory listing from.
-The second parameter is the time zone to use when parsing time stamps
-in the listing. If this value is undefined, then the local time zone is
-assumed.
+The second parameter (C<$time_zone>) is the time zone to use when
+parsing time stamps in the listing. If this value is undefined,
+then the local time zone is assumed.
-The third parameter is the type of listing to assume. Currently
-supported formats are 'unix', 'apache' and 'dosftp'. The default
-value is 'unix'. Ideally, the listing type should be determined
-automatically.
+The third parameter (C<$type>) is the type of listing to assume.
+Currently supported formats are C<'unix'>, C<'apache'> and
+C<'dosftp'>. The default value is C<'unix'>. Ideally, the listing
+type should be determined automatically.
-The fourth parameter specifies how unparseable lines should be treated.
-Values can be 'ignore', 'warn' or a code reference. Warn means that
-the perl warn() function will be called. If a code reference is
-passed, then this routine will be called and the return value from it
-will be incorporated in the listing. The default is 'ignore'.
+The fourth parameter (C<$error>) specifies how unparseable lines
+should be treated. Values can be C<'ignore'>, C<'warn'> or a code reference.
+Warn means that the perl warn() function will be called. If a code
+reference is passed, then this routine will be called and the return
+value from it will be incorporated in the listing. The default is
+C<'ignore'>.
Only the first parameter is mandatory.
-The return value from parse_dir() is a list of directory entries. In
-a scalar context the return value is a reference to the list. The
-directory entries are represented by an array consisting of [
-$filename, $filetype, $filesize, $filetime, $filemode ]. The
-$filetype value is one of the letters 'f', 'd', 'l' or '?'. The
-$filetime value is the seconds since Jan 1, 1970. The
-$filemode is a bitmask like the mode returned by stat().
+ # list context
+ foreach my $file (parse_dir($listing)) {
+ my($name, $type, $size, $mtime, $mode) = @$file;
+ }
+
+ # scalar context
+ my $dir = parse_dir($listing);
+ foreach my $file (@$dir) {
+ my($name, $type, $size, $mtime, $mode) = @$file;
+ }
+
+The return value from parse_dir() is a list of directory entries.
+In a scalar context the return value is a reference to the list.
+The directory entries are represented by an array consisting of:
+
+=over 4
+
+=item name
+
+The name of the file.
+
+=item type
+
+One of: C<f> file, C<d> directory, C<l> symlink, C<?> unknown.
+
+=item size
+
+The size of the file.
+
+=item time
+
+The number of seconds since January 1, 1970.
+
+=item mode
+
+Bitmask a la the mode returned by C<stat>.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item L<File::Listing::Ftpcopy>
+
+Provides the same interface but uses XS and the parser implementation from C<ftpcopy>.
+
+=back
+
+=head1 AUTHOR
+
+Original author: Gisle Aas
+
+Current maintainer: Graham Ollis E<lt>plicease@cpan.orgE<gt>
+
+Contributors:
+
+Adam Kennedy
+
+Adam Sjogren
+
+Alex Kapranoff
+
+Alexey Tourbin
+
+Andreas J. Koenig
+
+Bill Mann
+
+Bron Gondwana
+
+DAVIDRW
+
+Daniel Hedlund
+
+David E. Wheeler
+
+David Steinbrunner
+
+Erik Esterer
+
+FWILES
+
+Father Chrysostomos
+
+Gavin Peters
+
+Graeme Thompson
+
+Hans-H. Froehlich
+
+Ian Kilgore
+
+Jacob J
+
+Mark Stosberg
+
+Mike Schilli
+
+Ondrej Hanak
+
+Peter John Acklam
+
+Peter Rabbitson
+
+Robert Stone
+
+Rolf Grossmann
+
+Sean M. Burke
+
+Simon Legner
+
+Slaven Rezic
+
+Spiros Denaxas
+
+Steve Hay
+
+Todd Lipcon
+
+Tom Hukins
+
+Tony Finch
+
+Toru Yamaguchi
+
+Ville Skyttä
+
+Yuri Karaban
+
+Zefram
+
+amire80
+
+jefflee
+
+john9art
+
+mschilli
+
+murphy
+
+phrstbrn
+
+ruff
+
+sasao
+
+uid39246
-=head1 COPYRIGHT
+=head1 COPYRIGHT AND LICENSE
-Copyright 1996-2010, Gisle Aas
+This software is copyright (c) 1996-2020 by Gisle Aas.
-Based on lsparse.pl (from Lee McLoughlin's ftp mirror package) and
-Net::FTP's parse_dir (Graham Barr).
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
+=cut
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Entities.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Entities.pm
index ecd8e0d31f..b10ca55e1d 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Entities.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Entities.pm
@@ -89,7 +89,7 @@ for example, would encode I<just> the C<< < >>, C<< & >>, C<< > >>, and C<< "
$encoded = encode_entities($input, '<>&"');
-and this would only encode non-plain ascii:
+and this would only encode non-plain ASCII:
$encoded = encode_entities($input, '^\n\x20-\x25\x27-\x7e');
@@ -136,17 +136,16 @@ modify it under the same terms as Perl itself.
=cut
use strict;
-use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
+our $VERSION = '3.75';
use vars qw(%entity2char %char2entity);
require 5.004;
require Exporter;
-@ISA = qw(Exporter);
+our @ISA = qw(Exporter);
-@EXPORT = qw(encode_entities decode_entities _decode_entities);
-@EXPORT_OK = qw(%entity2char %char2entity encode_entities_numeric);
+our @EXPORT = qw(encode_entities decode_entities _decode_entities);
+our @EXPORT_OK = qw(%entity2char %char2entity encode_entities_numeric);
-$VERSION = "3.69";
sub Version { $VERSION; }
require HTML::Parser; # for fast XS implemented decode_entities
@@ -154,7 +153,7 @@ require HTML::Parser; # for fast XS implemented decode_entities
%entity2char = (
# Some normal chars that have special meaning in SGML context
- amp => '&', # ampersand
+ amp => '&', # ampersand
'gt' => '>', # greater than
'lt' => '<', # less than
quot => '"', # double quote
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Filter.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Filter.pm
index 9230e9a170..864b370983 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Filter.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Filter.pm
@@ -1,12 +1,10 @@
package HTML::Filter;
use strict;
-use vars qw(@ISA $VERSION);
require HTML::Parser;
-@ISA=qw(HTML::Parser);
-
-$VERSION = "3.72";
+our @ISA = qw(HTML::Parser);
+our $VERSION = '3.75';
sub declaration { $_[0]->output("<!$_[1]>") }
sub process { $_[0]->output($_[2]) }
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/HeadParser.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/HeadParser.pm
index 28e9cacc40..151bdd97d5 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/HeadParser.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/HeadParser.pm
@@ -84,14 +84,14 @@ superclass) are available:
require HTML::Parser;
-@ISA = qw(HTML::Parser);
+our @ISA = qw(HTML::Parser);
use HTML::Entities ();
use strict;
-use vars qw($VERSION $DEBUG);
+use vars qw($DEBUG);
#$DEBUG = 1;
-$VERSION = "3.71";
+our $VERSION = '3.75';
=item $hp = HTML::HeadParser->new
@@ -312,4 +312,3 @@ This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
=cut
-
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm
index c2f08c62d9..58189cef51 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm
@@ -1,8 +1,8 @@
package HTML::LinkExtor;
require HTML::Parser;
-@ISA = qw(HTML::Parser);
-$VERSION = "3.69";
+our @ISA = qw(HTML::Parser);
+our $VERSION = '3.75';
=head1 NAME
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Parser.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Parser.pm
index 9c2fc214d5..d7e5289963 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Parser.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/Parser.pm
@@ -1,9 +1,8 @@
package HTML::Parser;
use strict;
-use vars qw($VERSION @ISA);
-$VERSION = "3.72";
+our $VERSION = '3.75';
require HTML::Entities;
@@ -87,13 +86,13 @@ sub parse_file
# Assume $file is a filename
local(*F);
open(F, "<", $file) || return undef;
- binmode(F); # should we? good for byte counts
+ binmode(F); # should we? good for byte counts
$opened++;
$file = *F;
}
my $chunk = '';
while (read($file, $chunk, 512)) {
- $self->parse($chunk) || last;
+ $self->parse($chunk) || last;
}
close($file) if $opened;
$self->eof;
@@ -105,7 +104,7 @@ sub netscape_buggy_comment # legacy
my $self = shift;
require Carp;
Carp::carp("netscape_buggy_comment() is deprecated. " .
- "Please use the strict_comment() method instead");
+ "Please use the strict_comment() method instead");
my $old = !$self->strict_comment;
$self->strict_comment(!shift) if @_;
return $old;
@@ -130,26 +129,30 @@ HTML::Parser - HTML parser class
=head1 SYNOPSIS
- use HTML::Parser ();
-
- # Create parser object
- $p = HTML::Parser->new( api_version => 3,
- start_h => [\&start, "tagname, attr"],
- end_h => [\&end, "tagname"],
- marked_sections => 1,
- );
-
- # Parse document text chunk by chunk
- $p->parse($chunk1);
- $p->parse($chunk2);
- #...
- $p->eof; # signal end of document
+ use strict;
+ use warnings;
+ use HTML::Parser ();
- # Parse directly from file
- $p->parse_file("foo.html");
- # or
- open(my $fh, "<:utf8", "foo.html") || die;
- $p->parse_file($fh);
+ # Create parser object
+ my $p = HTML::Parser->new(
+ api_version => 3,
+ start_h => [\&start, "tagname, attr"],
+ end_h => [\&end, "tagname"],
+ marked_sections => 1,
+ );
+
+ # Parse document text chunk by chunk
+ $p->parse($chunk1);
+ $p->parse($chunk2);
+ # ...
+ # signal end of document
+ $p->eof;
+
+ # Parse directly from file
+ $p->parse_file("foo.html");
+ # or
+ open(my $fh, "<:utf8", "foo.html") || die;
+ $p->parse_file($fh);
=head1 DESCRIPTION
@@ -205,22 +208,29 @@ mode.
Examples:
- $p = HTML::Parser->new(api_version => 3,
- text_h => [ sub {...}, "dtext" ]);
+ $p = HTML::Parser->new(
+ api_version => 3,
+ text_h => [ sub {...}, "dtext" ]
+ );
This creates a new parser object with a text event handler subroutine
that receives the original text with general entities decoded.
- $p = HTML::Parser->new(api_version => 3,
- start_h => [ 'my_start', "self,tokens" ]);
+ $p = HTML::Parser->new(
+ api_version => 3,
+ start_h => [ 'my_start', "self,tokens" ]
+ );
This creates a new parser object with a start event handler method
that receives the $p and the tokens array.
- $p = HTML::Parser->new(api_version => 3,
- handlers => { text => [\@array, "event,text"],
- comment => [\@array, "event,text"],
- });
+ $p = HTML::Parser->new(
+ api_version => 3,
+ handlers => {
+ text => [\@array, "event,text"],
+ comment => [\@array, "event,text"],
+ }
+ );
This creates a new parser object that stores the event type and the
original text in @array for text and comment events.
@@ -252,14 +262,14 @@ Parsing will also abort if one of the event handlers calls $p->eof.
The effect of this is the same as:
- while (1) {
+ while (1) {
my $chunk = &$code_ref();
if (!defined($chunk) || !length($chunk)) {
- $p->eof;
- return $p;
+ $p->eof;
+ return $p;
}
$p->parse($chunk) || return undef;
- }
+ }
But it is more efficient as this loop runs internally in XS code.
@@ -341,17 +351,17 @@ argspecs.
=item $p->case_sensitive( $bool )
-By default, tagnames and attribute names are down-cased. Enabling this
+By default, tag names and attribute names are down-cased. Enabling this
attribute leaves them as found in the HTML source document.
=item $p->closing_plaintext
=item $p->closing_plaintext( $bool )
-By default, "plaintext" element can never be closed. Everything up to
+By default, C<plaintext> element can never be closed. Everything up to
the end of the document is parsed in CDATA mode. This historical
behaviour is what at least MSIE does. Enabling this attribute makes
-closing "</plaintext>" tag effective and the parsing process will resume
+closing C< </plaintext> > tag effective and the parsing process will resume
after seeing this tag. This emulates early gecko-based browsers.
=item $p->empty_element_tags
@@ -544,8 +554,8 @@ Examples:
$p->handler(start => "start", 'self, attr, attrseq, text' );
-This causes the "start" method of object $p to be called for 'start' events.
-The callback signature is $p->start(\%attr, \@attr_seq, $text).
+This causes the "start" method of object C<$p> to be called for 'start' events.
+The callback signature is C<< $p->start(\%attr, \@attr_seq, $text) >>.
$p->handler(start => \&start, 'attr, attrseq, text' );
@@ -978,27 +988,31 @@ HTML::Parser version 2 callback methods.
This is equivalent to the following method calls:
- $p->handler(start => "start", "self, tagname, attr, attrseq, text");
- $p->handler(end => "end", "self, tagname, text");
- $p->handler(text => "text", "self, text, is_cdata");
- $p->handler(process => "process", "self, token0, text");
- $p->handler(comment =>
- sub {
- my($self, $tokens) = @_;
- for (@$tokens) {$self->comment($_);}},
- "self, tokens");
- $p->handler(declaration =>
- sub {
- my $self = shift;
- $self->declaration(substr($_[0], 2, -1));},
- "self, text");
+ $p->handler(start => "start", "self, tagname, attr, attrseq, text");
+ $p->handler(end => "end", "self, tagname, text");
+ $p->handler(text => "text", "self, text, is_cdata");
+ $p->handler(process => "process", "self, token0, text");
+ $p->handler(
+ comment => sub {
+ my($self, $tokens) = @_;
+ for (@$tokens) {$self->comment($_);}
+ },
+ "self, tokens"
+ );
+ $p->handler(
+ declaration => sub {
+ my $self = shift;
+ $self->declaration(substr($_[0], 2, -1));
+ },
+ "self, text"
+ );
Setting up these handlers can also be requested with the "api_version =>
2" constructor option.
=head1 SUBCLASSING
-The C<HTML::Parser> class is subclassable. Parser objects are plain
+The C<HTML::Parser> class is able to be subclassed. Parser objects are plain
hashes and C<HTML::Parser> reserves only hash keys that start with
"_hparser". The parser state can be set up by invoking the init()
method, which takes the same arguments as new().
@@ -1010,17 +1024,18 @@ an HTML document. We achieve this by setting up a comment handler that
does nothing and a default handler that will print out anything else:
use HTML::Parser;
- HTML::Parser->new(default_h => [sub { print shift }, 'text'],
- comment_h => [""],
- )->parse_file(shift || die) || die $!;
+ HTML::Parser->new(
+ default_h => [sub { print shift }, 'text'],
+ comment_h => [""],
+ )->parse_file(shift || die) || die $!;
An alternative implementation is:
use HTML::Parser;
- HTML::Parser->new(end_document_h => [sub { print shift },
- 'skipped_text'],
- comment_h => [""],
- )->parse_file(shift || die) || die $!;
+ HTML::Parser->new(
+ end_document_h => [sub { print shift }, 'skipped_text'],
+ comment_h => [""],
+ )->parse_file(shift || die) || die $!;
This will in most cases be much more efficient since only a single
callback will be made.
@@ -1033,17 +1048,20 @@ parsing as soon as the title end tag is seen:
use HTML::Parser ();
- sub start_handler
- {
+ sub start_handler {
return if shift ne "title";
my $self = shift;
$self->handler(text => sub { print shift }, "dtext");
- $self->handler(end => sub { shift->eof if shift eq "title"; },
- "tagname,self");
+ $self->handler(
+ end => sub {
+ shift->eof if shift eq "title";
+ },
+ "tagname,self"
+ );
}
my $p = HTML::Parser->new(api_version => 3);
- $p->handler( start => \&start_handler, "tagname,self");
+ $p->handler(start => \&start_handler, "tagname,self");
$p->parse_file(shift || die) || die $!;
print "\n";
@@ -1080,7 +1098,7 @@ respectively.
NET tags, e.g. "code/.../" are not recognized. This is SGML
shorthand for "<code>...</code>".
-Unclosed start or end tags, e.g. "<tt<b>...</b</tt>" are not
+Incomplete start or end tags, e.g. "<tt<b>...</b</tt>" are not
recognized.
=head1 DIAGNOSTICS
@@ -1190,23 +1208,23 @@ opened in ":utf8" mode.
The alternative solution is to enable the C<utf8_mode> and not decode before
passing strings to $p->parse(). The parser can process raw undecoded UTF-8
-sanely if the C<utf8_mode> is enabled, or if the "attr", "@attr" or "dtext"
+sanely if the C<utf8_mode> is enabled, or if the C<attr>, C<@attr> or C<dtext>
argspecs are avoided.
-=item Parsing string decoded with wrong endianness
+=item Parsing string decoded with wrong endian selection
(W) The first character in the document is U+FFFE. This is not a
-legal Unicode character but a byte swapped BOM. The result of parsing
+legal Unicode character but a byte swapped C<BOM>. The result of parsing
will likely be garbage.
=item Parsing of undecoded UTF-32
-(W) The parser found the Unicode UTF-32 BOM signature at the start
+(W) The parser found the Unicode UTF-32 C<BOM> signature at the start
of the document. The result of parsing will likely be garbage.
=item Parsing of undecoded UTF-16
-(W) The parser found the Unicode UTF-16 BOM signature at the start of
+(W) The parser found the Unicode UTF-16 C<BOM> signature at the start of
the document. The result of parsing will likely be garbage.
=back
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/PullParser.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/PullParser.pm
index 3083379325..49c1e9d901 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/PullParser.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/PullParser.pm
@@ -1,10 +1,11 @@
package HTML::PullParser;
+use strict;
+
require HTML::Parser;
-@ISA=qw(HTML::Parser);
-$VERSION = "3.57";
+our @ISA = qw(HTML::Parser);
+our $VERSION = '3.75';
-use strict;
use Carp ();
sub new
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/TokeParser.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/TokeParser.pm
index 959b96f6a2..3a13dfc301 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/TokeParser.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTML/TokeParser.pm
@@ -1,10 +1,11 @@
package HTML::TokeParser;
+use strict;
+
require HTML::PullParser;
-@ISA=qw(HTML::PullParser);
-$VERSION = "3.69";
+our @ISA = qw(HTML::PullParser);
+our $VERSION = '3.75';
-use strict;
use Carp ();
use HTML::Entities qw(decode_entities);
use HTML::Tagset ();
@@ -292,7 +293,7 @@ before the first of the specified tags found. For example:
$p->get_text("p", "br");
-will return the text up to either a paragraph of linebreak element.
+will return the text up to either a paragraph of line break element.
The text might span tags that should be I<textified>. This is
controlled by the $p->{textify} attribute, which is a hash that
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Config.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Config.pm
index 5905634d82..b12d35008f 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Config.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Config.pm
@@ -3,7 +3,7 @@ package HTTP::Config;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
use URI;
@@ -245,7 +245,7 @@ HTTP::Config - Configuration for request and response objects
=head1 VERSION
-version 6.22
+version 6.27
=head1 SYNOPSIS
@@ -440,7 +440,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies.pm
index 3aee7b4640..4f055d5b00 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies.pm
@@ -5,7 +5,7 @@ use HTTP::Date qw(str2time parse_date time2str);
use HTTP::Headers::Util qw(_split_header_words join_header_words);
our $EPOCH_OFFSET;
-our $VERSION = '6.08';
+our $VERSION = '6.10';
# Legacy: because "use "HTTP::Cookies" used be the ONLY way
# to load the class HTTP::Cookies::Netscape.
@@ -262,6 +262,9 @@ sub extract_cookies
}
}
}
+ elsif (!$first_param && lc($k) eq 'max-age') {
+ $expires++;
+ }
elsif (!$first_param && lc($k) =~ /^(?:version|discard|ns-cookie)/) {
# ignore
}
@@ -679,7 +682,7 @@ HTTP::Cookies - HTTP cookie jars
=head1 VERSION
-version 6.08
+version 6.10
=head1 SYNOPSIS
@@ -885,7 +888,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2002-2019 by Gisle Aas.
+This software is copyright (c) 2002 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm
index 702255a335..8f73ead280 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm
@@ -2,7 +2,7 @@ package HTTP::Cookies::Microsoft;
use strict;
-our $VERSION = '6.08';
+our $VERSION = '6.10';
require HTTP::Cookies;
our @ISA=qw(HTTP::Cookies);
@@ -244,7 +244,7 @@ HTTP::Cookies::Microsoft - Access to Microsoft cookies files
=head1 VERSION
-version 6.08
+version 6.10
=head1 SYNOPSIS
@@ -311,7 +311,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2002-2019 by Gisle Aas.
+This software is copyright (c) 2002 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm
index 28a59d4fef..15b34c0307 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm
@@ -2,7 +2,7 @@ package HTTP::Cookies::Netscape;
use strict;
-our $VERSION = '6.08';
+our $VERSION = '6.10';
require HTTP::Cookies;
our @ISA=qw(HTTP::Cookies);
@@ -24,6 +24,7 @@ sub load
my $now = time() - $HTTP::Cookies::EPOCH_OFFSET;
while (my $line = <$fh>) {
chomp($line);
+ $line =~ s/\s*\#HttpOnly_//;
next if $line =~ /^\s*\#/;
next if $line =~ /^\s*$/;
$line =~ tr/\n\r//d;
@@ -81,7 +82,7 @@ HTTP::Cookies::Netscape - Access to Netscape cookies files
=head1 VERSION
-version 6.08
+version 6.10
=head1 SYNOPSIS
@@ -119,7 +120,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2002-2019 by Gisle Aas.
+This software is copyright (c) 2002 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Daemon.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Daemon.pm
index 3b3d6903d0..1a831368c3 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Daemon.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Daemon.pm
@@ -1,16 +1,13 @@
-package HTTP::Daemon; # git description: v6.05-4-g31c6eaf
+package HTTP::Daemon; # git description: v6.11-4-g1c1c9bc
# ABSTRACT: A simple http server class
use strict;
use warnings;
-our $VERSION = '6.06';
+our $VERSION = '6.12';
-use Socket qw(
- AF_INET AF_INET6 INADDR_ANY IN6ADDR_ANY INADDR_LOOPBACK IN6ADDR_LOOPBACK
- inet_ntop sockaddr_family
-);
+use Socket ();
use IO::Socket::IP;
our @ISA = qw(IO::Socket::IP);
@@ -48,48 +45,14 @@ sub accept {
sub url {
my $self = shift;
- my $url = $self->_default_scheme . "://";
- my $addr = $self->sockaddr;
- if (!$addr || $addr eq INADDR_ANY || $addr eq IN6ADDR_ANY) {
- require Sys::Hostname;
- $url .= lc Sys::Hostname::hostname();
- }
- elsif ($addr eq INADDR_LOOPBACK) {
- $url .= inet_ntop(AF_INET, $addr);
- }
- elsif ($addr eq IN6ADDR_LOOPBACK) {
- $url .= '[' . inet_ntop(AF_INET6, $addr) . ']';
- }
- else {
- my $host = $self->sockhostname;
-
- # sockhostname() seems to return a stringified IP address if not
- # resolvable. Then quote it for a port separator and an IPv6 zone
- # separator. But be paranoid for a case when it already contains
- # a bracket.
- if (defined $host and $host =~ /:/) {
- if ($host =~ /[\[\]]/) {
- $host = undef;
- }
- else {
- $host =~ s/%/%25/g;
- $host = '[' . $host . ']';
- }
- }
- if (!defined $host) {
- my $family = sockaddr_family($self->sockname);
- if ($family && $family == AF_INET6) {
- $host = '[' . inet_ntop(AF_INET6, $addr) . ']';
- }
- elsif ($family && $family == AF_INET) {
- $host = inet_ntop(AF_INET, $addr);
- }
- else {
- die "Unknown family";
- }
- }
- $url .= $host;
- }
+
+ my $host = $self->sockhost;
+ $host =~ s/%/%25/g;
+ $host = "127.0.0.1" if $host eq "0.0.0.0";
+ $host = "::1" if $host eq "::";
+ $host = "[$host]" if $self->sockdomain == Socket::AF_INET6;
+
+ my $url = $self->_default_scheme . "://" . $host;
my $port = $self->sockport;
$url .= ":$port" if $port != $self->_default_port;
$url .= "/";
@@ -640,7 +603,7 @@ HTTP::Daemon - A simple http server class
=head1 VERSION
-version 6.06
+version 6.12
=head1 SYNOPSIS
@@ -651,13 +614,13 @@ version 6.06
print "Please contact me at: <URL:", $d->url, ">\n";
while (my $c = $d->accept) {
while (my $r = $c->get_request) {
- if ($r->method eq 'GET' and $r->uri->path eq "/xyzzy") {
+ if ($r->method eq 'GET' and $r->uri->path eq "/xyzzy") {
# remember, this is *not* recommended practice :-)
- $c->send_file_response("/etc/passwd");
- }
- else {
- $c->send_error(RC_FORBIDDEN)
- }
+ $c->send_file_response("/etc/passwd");
+ }
+ else {
+ $c->send_error(RC_FORBIDDEN)
+ }
}
$c->close;
undef($c);
@@ -670,6 +633,10 @@ listen on a socket for incoming requests. The C<HTTP::Daemon> is a
subclass of C<IO::Socket::IP>, so you can perform socket operations
directly on it too.
+Please note that C<HTTP::Daemon> used to be a subclass of C<IO::Socket::INET>.
+To support IPv6, it switched the parent class to C<IO::Socket::IP> at version 6.05.
+See L</IPv6 SUPPORT> for details.
+
The accept() method will return when a connection from a client is
available. The returned value will be an C<HTTP::Daemon::ClientConn>
object which is another C<IO::Socket::IP> subclass. Calling the
@@ -705,7 +672,7 @@ HTTP port will be constructed like this:
);
See L<IO::Socket::IP> for a description of other arguments that can
-be used configure the daemon during construction.
+be used to configure the daemon during construction.
=item $c = $d->accept
@@ -713,7 +680,7 @@ be used configure the daemon during construction.
=item ($c, $peer_addr) = $d->accept
-This method works the same the one provided by the base class, but it
+This method works the same as the one provided by the base class, but it
returns an C<HTTP::Daemon::ClientConn> reference by default. If a
package name is provided as argument, then the returned object will be
blessed into the given class. It is probably a good idea to make that
@@ -724,7 +691,7 @@ and no connection is made within the given time. The timeout() method
is described in L<IO::Socket::IP>.
In list context both the client object and the peer address will be
-returned; see the description of the accept method L<IO::Socket> for
+returned; see the description of the accept method of L<IO::Socket> for
details.
=item $d->url
@@ -743,8 +710,8 @@ replaced with the version number of this module.
=back
-The C<HTTP::Daemon::ClientConn> is a C<IO::Socket::IP>
-subclass. Instances of this class are returned by the accept() method
+The C<HTTP::Daemon::ClientConn> is a subclass of C<IO::Socket::IP>.
+Instances of this class are returned by the accept() method
of C<HTTP::Daemon>. The following methods are provided:
=over 4
@@ -756,7 +723,7 @@ of C<HTTP::Daemon>. The following methods are provided:
This method reads data from the client and turns it into an
C<HTTP::Request> object which is returned. It returns C<undef>
if reading fails. If it fails, then the C<HTTP::Daemon::ClientConn>
-object ($c) should be discarded, and you should not try call this
+object ($c) should be discarded, and you should not try to call this
method again on it. The $c->reason method might give you some
information about why $c->get_request failed.
@@ -814,8 +781,8 @@ body must be generated for these requests.
=item $c->force_last_request
Make sure that $c->get_request will not try to read more requests off
-this connection. If you generate a response that is not self
-delimiting, then you should signal this fact by calling this method.
+this connection. If you generate a response that is not self-delimiting,
+then you should signal this fact by calling this method.
This attribute is turned on automatically if the client announces
protocol HTTP/1.0 or worse and does not include a "Connection:
@@ -862,16 +829,16 @@ Send one or more header lines.
=item $c->send_response( $res )
-Write a C<HTTP::Response> object to the
+Write an C<HTTP::Response> object to the
client as a response. We try hard to make sure that the response is
-self delimiting so that the connection can stay persistent for further
+self-delimiting so that the connection can stay persistent for further
request/response exchanges.
The content attribute of the C<HTTP::Response> object can be a normal
string or a subroutine reference. If it is a subroutine, then
whatever this callback routine returns is written back to the
client as the response content. The routine will be called until it
-return an undefined or empty value. If the client is HTTP/1.1 aware
+returns an undefined or empty value. If the client is HTTP/1.1 aware
then we will use chunked transfer encoding for the response.
=item $c->send_redirect( $loc )
@@ -881,7 +848,7 @@ then we will use chunked transfer encoding for the response.
=item $c->send_redirect( $loc, $code, $entity_body )
Send a redirect response back to the client. The location ($loc) can
-be an absolute or relative URL. The $code must be one the redirect
+be an absolute or relative URL. The $code must be one of the redirect
status codes, and defaults to "301 Moved Permanently"
=item $c->send_error
@@ -892,7 +859,7 @@ status codes, and defaults to "301 Moved Permanently"
Send an error response back to the client. If the $code is missing a
"Bad Request" error is reported. The $error_message is a string that
-is incorporated in the body of the HTML entity body.
+is incorporated in the body of the HTML entity.
=item $c->send_file_response( $filename )
@@ -913,6 +880,19 @@ Return a reference to the corresponding C<HTTP::Daemon> object.
=back
+=head1 IPv6 SUPPORT
+
+Since version 6.05, C<HTTP::Daemon> is a subclass of C<IO::Socket::IP>
+rather than C<IO::Socket::INET>, so that it supports IPv6.
+
+For some reasons, you may want to force C<HTTP::Daemon> to listen on IPv4 addresses only.
+Then pass C<Family> argument to C<< HTTP::Daemon->new >>:
+
+ use HTTP::Daemon;
+ use Socket 'AF_INET';
+
+ my $d = HTTP::Daemon->new(Family => AF_INET);
+
=head1 SEE ALSO
RFC 2616
@@ -921,7 +901,7 @@ L<IO::Socket::IP>, L<IO::Socket>
=head1 SUPPORT
-bugs may be submitted through L<https://github.com/libwww-perl/HTTP-Daemon/issues>.
+Bugs may be submitted through L<https://github.com/libwww-perl/HTTP-Daemon/issues>.
There is also a mailing list available for users of this distribution, at
L<mailto:libwww@perl.org>.
@@ -935,17 +915,17 @@ Gisle Aas <gisle@activestate.com>
=head1 CONTRIBUTORS
-=for stopwords Ville Skyttä Olaf Alders Mark Stosberg Karen Etheridge Chase Whitener Slaven Rezic Zefram Alexey Tourbin Bron Gondwana Petr Písař Mike Schilli Tom Hukins Ian Kilgore Jacob J Ondrej Hanak Perlover Peter Rabbitson Robert Stone Rolf Grossmann Sean M. Burke Spiros Denaxas Steve Hay Todd Lipcon Tony Finch Toru Yamaguchi Yuri Karaban amire80 jefflee john9art murphy phrstbrn ruff Adam Kennedy sasao Sjogren Alex Kapranoff Andreas J. Koenig Bill Mann DAVIDRW Daniel Hedlund David E. Wheeler FWILES Father Chrysostomos Gavin Peters Graeme Thompson Hans-H. Froehlich
+=for stopwords Olaf Alders Ville Skyttä Mark Stosberg Karen Etheridge Shoichi Kaji Chase Whitener Slaven Rezic Zefram Petr Písař Tom Hukins Alexey Tourbin Mike Schilli Bron Gondwana Ian Kilgore Jacob J Ondrej Hanak Perlover Peter Rabbitson Robert Stone Rolf Grossmann Sean M. Burke Spiros Denaxas Steve Hay Todd Lipcon Tony Finch Toru Yamaguchi Yuri Karaban amire80 jefflee john9art murphy phrstbrn ruff Adam Kennedy sasao Sjogren Alex Kapranoff Andreas J. Koenig Bill Mann DAVIDRW Daniel Hedlund David E. Wheeler FWILES Father Chrysostomos Ferenc Erki Gavin Peters Graeme Thompson Hans-H. Froehlich
=over 4
=item *
-Ville Skyttä <ville.skytta@iki.fi>
+Olaf Alders <olaf@wundersolutions.com>
=item *
-Olaf Alders <olaf@wundersolutions.com>
+Ville Skyttä <ville.skytta@iki.fi>
=item *
@@ -957,6 +937,10 @@ Karen Etheridge <ether@cpan.org>
=item *
+Shoichi Kaji <skaji@cpan.org>
+
+=item *
+
Chase Whitener <capoeirab@cpan.org>
=item *
@@ -969,15 +953,15 @@ Zefram <zefram@fysh.org>
=item *
-Alexey Tourbin <at@altlinux.ru>
+Petr Písař <ppisar@redhat.com>
=item *
-Bron Gondwana <brong@fastmail.fm>
+Tom Hukins <tom@eborcom.com>
=item *
-Petr Písař <ppisar@redhat.com>
+Alexey Tourbin <at@altlinux.ru>
=item *
@@ -985,7 +969,7 @@ Mike Schilli <mschilli@yahoo-inc.com>
=item *
-Tom Hukins <tom@eborcom.com>
+Bron Gondwana <brong@fastmail.fm>
=item *
@@ -1113,6 +1097,10 @@ Father Chrysostomos <sprout@cpan.org>
=item *
+Ferenc Erki <erkiferenc@gmail.com>
+
+=item *
+
Gavin Peters <gpeters@deepsky.com>
=item *
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers.pm
index 4e7b1054a0..8e147ef516 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers.pm
@@ -3,7 +3,7 @@ package HTTP::Headers;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
use Carp ();
@@ -299,8 +299,8 @@ sub _process_newline {
-if (eval { require Storable; 1 }) {
- *clone = \&Storable::dclone;
+if (eval { require Clone; 1 }) {
+ *clone = \&Clone::clone;
} else {
*clone = sub {
my $self = shift;
@@ -475,7 +475,7 @@ HTTP::Headers - Class encapsulating HTTP Message headers
=head1 VERSION
-version 6.22
+version 6.27
=head1 SYNOPSIS
@@ -535,7 +535,8 @@ means that you can update several fields with a single invocation.
The $value argument may be a plain string or a reference to an array
of strings for a multi-valued field. If the $value is provided as
C<undef> then the field is removed. If the $value is not given, then
-that header field will remain unchanged.
+that header field will remain unchanged. In addition to being a string,
+$value may be something that stringifies.
The old value (or values) of the last of the header fields is returned.
If no such field exists C<undef> will be returned.
@@ -876,7 +877,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Auth.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Auth.pm
index 0e9f16d849..2f7215977d 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Auth.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Auth.pm
@@ -3,7 +3,7 @@ package HTTP::Headers::Auth;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
use HTTP::Headers;
@@ -111,7 +111,7 @@ HTTP::Headers::Auth
=head1 VERSION
-version 6.22
+version 6.27
=head1 AUTHOR
@@ -119,7 +119,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/ETag.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/ETag.pm
index e7013e7a4d..dc825ab05d 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/ETag.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/ETag.pm
@@ -3,7 +3,7 @@ package HTTP::Headers::ETag;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
require HTTP::Date;
@@ -107,7 +107,7 @@ HTTP::Headers::ETag
=head1 VERSION
-version 6.22
+version 6.27
=head1 AUTHOR
@@ -115,7 +115,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Util.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Util.pm
index 4a44b4235d..f7b0b7646b 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Util.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Headers/Util.pm
@@ -3,7 +3,7 @@ package HTTP::Headers::Util;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
use base 'Exporter';
@@ -103,7 +103,7 @@ HTTP::Headers::Util - Header value parsing utility functions
=head1 VERSION
-version 6.22
+version 6.27
=head1 SYNOPSIS
@@ -199,7 +199,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Message.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Message.pm
index c680b41f4f..c5cc176010 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Message.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Message.pm
@@ -3,7 +3,7 @@ package HTTP::Message;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
require HTTP::Headers;
require Carp;
@@ -782,7 +782,7 @@ HTTP::Message - HTTP style message (base class)
=head1 VERSION
-version 6.22
+version 6.27
=head1 SYNOPSIS
@@ -1120,7 +1120,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request.pm
index 6eee474db2..5776f33693 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request.pm
@@ -3,7 +3,7 @@ package HTTP::Request;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
use base 'HTTP::Message';
@@ -155,7 +155,7 @@ HTTP::Request - HTTP style request message
=head1 VERSION
-version 6.22
+version 6.27
=head1 SYNOPSIS
@@ -339,7 +339,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request/Common.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request/Common.pm
index 17833c8f4f..838be35a8b 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request/Common.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Request/Common.pm
@@ -3,7 +3,7 @@ package HTTP::Request::Common;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
our $DYNAMIC_FILE_UPLOAD ||= 0; # make it defined (don't know why)
@@ -313,7 +313,7 @@ HTTP::Request::Common - Construct common HTTP::Request objects
=head1 VERSION
-version 6.22
+version 6.27
=head1 SYNOPSIS
@@ -561,7 +561,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Response.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Response.pm
index e212586d0b..13f9237d20 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Response.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Response.pm
@@ -3,7 +3,7 @@ package HTTP::Response;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
use base 'HTTP::Message';
@@ -351,7 +351,7 @@ HTTP::Response - HTTP style response message
=head1 VERSION
-version 6.22
+version 6.27
=head1 SYNOPSIS
@@ -651,7 +651,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Status.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Status.pm
index b7cf8fc1f9..e4a59c3e38 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Status.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/HTTP/Status.pm
@@ -3,7 +3,7 @@ package HTTP::Status;
use strict;
use warnings;
-our $VERSION = '6.22';
+our $VERSION = '6.27';
require 5.002; # because we use prototypes
@@ -33,7 +33,7 @@ my %StatusCode = (
207 => 'Multi-Status', # RFC 4918: WebDAV
208 => 'Already Reported', # RFC 5842: WebDAV bindings
# 209 .. 225
- 226 => 'IM used', # RFC 3229: Delta encoding
+ 226 => 'IM Used', # RFC 3229: Delta encoding
# 227 .. 299
300 => 'Multiple Choices',
301 => 'Moved Permanently',
@@ -57,17 +57,17 @@ my %StatusCode = (
410 => 'Gone',
411 => 'Length Required',
412 => 'Precondition Failed', # RFC 7232: Conditional Request
- 413 => 'Request Entity Too Large',
- 414 => 'Request-URI Too Large',
+ 413 => 'Payload Too Large',
+ 414 => 'URI Too Long',
415 => 'Unsupported Media Type',
- 416 => 'Request Range Not Satisfiable', # RFC 7233: Range Requests
+ 416 => 'Range Not Satisfiable', # RFC 7233: Range Requests
417 => 'Expectation Failed',
# 418 .. 420
421 => 'Misdirected Request', # RFC 7540: HTTP/2
422 => 'Unprocessable Entity', # RFC 4918: WebDAV
423 => 'Locked', # RFC 4918: WebDAV
424 => 'Failed Dependency', # RFC 4918: WebDAV
-# 425
+ 425 => 'Too Early', # RFC 8470: Using Early Data in HTTP
426 => 'Upgrade Required',
# 427
428 => 'Precondition Required', # RFC 6585: Additional Codes
@@ -75,7 +75,7 @@ my %StatusCode = (
# 430
431 => 'Request Header Fields Too Large', # RFC 6585: Additional Codes
# 432 .. 450
- 451 => 'Unavailable For Legal Reasons', # RFC 7724: Legal Obstacles
+ 451 => 'Unavailable For Legal Reasons', # RFC 7725: Legal Obstacles
# 452 .. 499
500 => 'Internal Server Error',
501 => 'Not Implemented',
@@ -95,7 +95,6 @@ my %StatusCode = (
%StatusCode = (
%StatusCode,
418 => 'I\'m a teapot', # RFC 2324: HTCPC/1.0 1-april
- 425 => 'Unordered Collection', # WebDAV Draft
449 => 'Retry with', # microsoft
509 => 'Bandwidth Limit Exceeded', # Apache / cPanel
);
@@ -118,8 +117,21 @@ die if $@;
*RC_MOVED_TEMPORARILY = \&RC_FOUND; # 302 was renamed in the standard
push(@EXPORT, "RC_MOVED_TEMPORARILY");
-*RC_NO_CODE = \&RC_UNORDERED_COLLECTION;
-push(@EXPORT, "RC_NO_CODE");
+my %compat = (
+ REQUEST_ENTITY_TOO_LARGE => \&HTTP_PAYLOAD_TOO_LARGE,
+ REQUEST_URI_TOO_LARGE => \&HTTP_URI_TOO_LONG,
+ REQUEST_RANGE_NOT_SATISFIABLE => \&HTTP_RANGE_NOT_SATISFIABLE,
+ NO_CODE => \&HTTP_TOO_EARLY,
+ UNORDERED_COLLECTION => \&HTTP_TOO_EARLY,
+);
+
+foreach my $name (keys %compat) {
+ push(@EXPORT, "RC_$name");
+ push(@EXPORT_OK, "HTTP_$name");
+ no strict 'refs';
+ *{"RC_$name"} = $compat{$name};
+ *{"HTTP_$name"} = $compat{$name};
+}
our %EXPORT_TAGS = (
constants => [grep /^HTTP_/, @EXPORT_OK],
@@ -141,6 +153,7 @@ sub is_cacheable_by_default ($) { $_[0] && ( $_[0] == 200 # OK
|| $_[0] == 206 # Not Acceptable
|| $_[0] == 300 # Multiple Choices
|| $_[0] == 301 # Moved Permanently
+ || $_[0] == 308 # Permanent Redirect
|| $_[0] == 404 # Not Found
|| $_[0] == 405 # Method Not Allowed
|| $_[0] == 410 # Gone
@@ -162,7 +175,7 @@ HTTP::Status - HTTP Status code processing
=head1 VERSION
-version 6.22
+version 6.27
=head1 SYNOPSIS
@@ -228,15 +241,16 @@ tag to import them all.
HTTP_GONE (410)
HTTP_LENGTH_REQUIRED (411)
HTTP_PRECONDITION_FAILED (412)
- HTTP_REQUEST_ENTITY_TOO_LARGE (413)
- HTTP_REQUEST_URI_TOO_LARGE (414)
+ HTTP_PAYLOAD_TOO_LARGE (413)
+ HTTP_URI_TOO_LONG (414)
HTTP_UNSUPPORTED_MEDIA_TYPE (415)
- HTTP_REQUEST_RANGE_NOT_SATISFIABLE (416)
+ HTTP_RANGE_NOT_SATISFIABLE (416)
HTTP_EXPECTATION_FAILED (417)
HTTP_MISDIRECTED REQUEST (421)
HTTP_UNPROCESSABLE_ENTITY (422)
HTTP_LOCKED (423)
HTTP_FAILED_DEPENDENCY (424)
+ HTTP_TOO_EARLY (425)
HTTP_UPGRADE_REQUIRED (426)
HTTP_PRECONDITION_REQUIRED (428)
HTTP_TOO_MANY_REQUESTS (429)
@@ -269,7 +283,7 @@ The status_message() function will translate status codes to human
readable strings. The string is the same as found in the constant
names above. If the $code is not registered in the L<list of IANA HTTP Status
Codes|https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml>
-then C<undef> is returned.
+then C<undef> is returned.
=item is_info( $code )
@@ -335,7 +349,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1994-2017 by Gisle Aas.
+This software is copyright (c) 1994 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/IO/HTML.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/IO/HTML.pm
index 5fdad2237e..ca4fba7334 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/IO/HTML.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/IO/HTML.pm
@@ -1,7 +1,7 @@
#---------------------------------------------------------------------
package IO::HTML;
#
-# Copyright 2014 Christopher J. Madsen
+# Copyright 2020 Christopher J. Madsen
#
# Author: Christopher J. Madsen <perl@cjmweb.net>
# Created: 14 Jan 2012
@@ -25,9 +25,11 @@ use Carp 'croak';
use Encode 2.10 qw(decode find_encoding); # need utf-8-strict encoding
use Exporter 5.57 'import';
-our $VERSION = '1.001';
-# This file is part of IO-HTML 1.001 (June 28, 2014)
+our $VERSION = '1.004';
+# This file is part of IO-HTML 1.004 (September 26, 2020)
+
+our $bytes_to_check ||= 1024;
our $default_encoding ||= 'cp1252';
our @EXPORT = qw(html_file);
@@ -110,7 +112,8 @@ sub sniff_encoding
my $pos = tell $in;
croak "Could not seek $filename: $!" if $pos < 0;
- croak "Could not read $filename: $!" unless defined read $in, my $buf, 1024;
+ croak "Could not read $filename: $!"
+ unless defined read $in, my($buf), $bytes_to_check;
seek $in, $pos, 0 or croak "Could not seek $filename: $!";
@@ -166,11 +169,22 @@ sub _get_attribute
my ($name, $value) = (lc $1, '');
- if (/\G[\x09\x0A\x0C\x0D ]*=[\x09\x0A\x0C\x0D ]*/gc
- and (/\G"([^"]*)"?/gc or
- /\G'([^']*)'?/gc or
- /\G([^\x09\x0A\x0C\x0D >]*)/gc)) {
- $value = lc $1;
+ if (/\G[\x09\x0A\x0C\x0D ]*=[\x09\x0A\x0C\x0D ]*/gc) {
+ if (/\G"/gc) {
+ # Double-quoted attribute value
+ /\G([^"]*)("?)/gc;
+ return unless $2; # Incomplete attribute (missing closing quote)
+ $value = lc $1;
+ } elsif (/\G'/gc) {
+ # Single-quoted attribute value
+ /\G([^']*)('?)/gc;
+ return unless $2; # Incomplete attribute (missing closing quote)
+ $value = lc $1;
+ } else {
+ # Unquoted attribute value
+ /\G([^\x09\x0A\x0C\x0D >]*)/gc;
+ $value = lc $1;
+ }
} # end if attribute has value
return wantarray ? ($name, $value) : 1;
@@ -196,7 +210,8 @@ sub find_charset_in
{
for (shift) {
my $options = shift || {};
- my $stop = length > 1024 ? 1024 : length; # search first 1024 bytes
+ # search only the first $bytes_to_check bytes (default 1024)
+ my $stop = length > $bytes_to_check ? $bytes_to_check : length;
my $expect_pragma = (defined $options->{need_pragma}
? $options->{need_pragma} : 1);
@@ -264,8 +279,8 @@ IO::HTML - Open an HTML file with automatic charset detection
=head1 VERSION
-This document describes version 1.001 of
-IO::HTML, released June 28, 2014.
+This document describes version 1.004 of
+IO::HTML, released September 26, 2020.
=head1 SYNOPSIS
@@ -297,7 +312,7 @@ UTF-16BE, or UTF-8, then that is the encoding.
=item 2.
-If the first 1024 bytes of the file contain a C<< <meta> >> tag that
+If the first C<$bytes_to_check> bytes of the file contain a C<< <meta> >> tag that
indicates the charset, and Encode recognizes the specified charset
name, then that is the encoding. (This portion of the algorithm is
implemented by C<find_charset_in>.)
@@ -313,7 +328,7 @@ The first matching tag with a recognized encoding ends the search.
=item 3.
-If the first 1024 bytes of the file are valid UTF-8 (with at least 1
+If the first C<$bytes_to_check> bytes of the file are valid UTF-8 (with at least 1
non-ASCII character), then the encoding is UTF-8.
=item 4.
@@ -348,7 +363,9 @@ to C<$IO::HTML::default_encoding>, which is set to C<cp1252>
default should be locale dependent, but that is not currently
implemented.
-It dies if the file cannot be opened.
+It dies if the file cannot be opened, or if C<sniff_encoding> cannot
+determine the encoding and C<$IO::HTML::default_encoding> has been set
+to C<undef>.
=head2 html_file_and_encoding
@@ -366,8 +383,12 @@ BOM). This may be useful if you want to write the file out again
The optional second argument is a hashref containing options. The
possible keys are described under C<find_charset_in>.
-It dies if the file cannot be opened. The result of calling it in
-scalar context is undefined.
+It dies if the file cannot be opened, or if C<sniff_encoding> cannot
+determine the encoding and C<$IO::HTML::default_encoding> has been set
+to C<undef>.
+
+The result of calling C<html_file_and_encoding> in scalar context is undefined
+(in the C sense of there is no guarantee what you'll get).
=head2 html_outfile
@@ -379,7 +400,8 @@ using C<$encoding>, and writes a BOM to it if C<$bom> is true.
If C<$encoding> is C<undef>, it defaults to C<$IO::HTML::default_encoding>.
C<$encoding> may be either an encoding name or an Encode::Encoding object.
-It dies if the file cannot be opened.
+It dies if the file cannot be opened, or if both C<$encoding> and
+C<$IO::HTML::default_encoding> are C<undef>.
=head2 sniff_encoding
@@ -420,9 +442,10 @@ that handle:
$encoding = find_charset_in($string_containing_HTML, \%options);
This function (exported only by request) looks for charset information
-in a C<< <meta> >> tag in a possibly incomplete HTML document using
+in a C<< <meta> >> tag in a possibly-incomplete HTML document using
the "two step" algorithm specified by HTML5. It does not look for a BOM.
-Only the first 1024 bytes of the string are checked.
+The C<< <meta> >> tag must begin within the first C<$IO::HTML::bytes_to_check>
+bytes of the string.
It returns Perl's canonical name for the encoding, which is not
necessarily the same as the MIME or IANA charset name. It returns
@@ -512,7 +535,38 @@ you set C<$IO::HTML::default_encoding> to C<undef>.
=head1 CONFIGURATION AND ENVIRONMENT
-IO::HTML requires no configuration files or environment variables.
+There are two global variables that affect IO::HTML. If you need to
+change them, you should do so using C<local> if possible:
+
+ my $file = do {
+ # This file may define the charset later in the header
+ local $IO::HTML::bytes_to_check = 4096;
+ html_file(...);
+ };
+
+=over
+
+=item C<$bytes_to_check>
+
+This is the number of bytes that C<sniff_encoding> will read from the
+stream. It is also the number of bytes that C<find_charset_in> will
+search for a C<< <meta> >> tag containing charset information.
+It must be a positive integer.
+
+The HTML 5 specification recommends using the default value of 1024,
+but some pages do not follow the specification.
+
+=item C<$default_encoding>
+
+This is the encoding that C<html_file> and C<html_file_and_encoding>
+will use if no encoding can be detected by C<sniff_encoding>.
+The default value is C<cp1252> (a.k.a. Windows-1252).
+
+Setting it to C<undef> will cause the file subroutines to croak if
+C<sniff_encoding> fails to determine the encoding. (C<sniff_encoding>
+itself does not use C<$default_encoding>).
+
+=back
=head1 DEPENDENCIES
@@ -544,7 +598,7 @@ L<< https://github.com/madsen/io-html >>.
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by Christopher J. Madsen.
+This software is copyright (c) 2020 by Christopher J. Madsen.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/JSON/MaybeXS.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/JSON/MaybeXS.pm
index 302b01cb65..88dd2c5667 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/JSON/MaybeXS.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/JSON/MaybeXS.pm
@@ -4,19 +4,19 @@ use strict;
use warnings FATAL => 'all';
use base qw(Exporter);
-our $VERSION = '1.004000';
-$VERSION = eval $VERSION;
+our $VERSION = '1.004003';
+$VERSION =~ tr/_//d;
sub _choose_json_module {
return 'Cpanel::JSON::XS' if $INC{'Cpanel/JSON/XS.pm'};
- return 'JSON::XS' if $INC{'JSON/XS.pm'};
+ return 'JSON::XS' if $INC{'JSON/XS.pm'} && eval { JSON::XS->VERSION(3.0); 1 };
my @err;
return 'Cpanel::JSON::XS' if eval { require Cpanel::JSON::XS; 1; };
push @err, "Error loading Cpanel::JSON::XS: $@";
- return 'JSON::XS' if eval { require JSON::XS; 1; };
+ return 'JSON::XS' if eval { require JSON::XS; JSON::XS->VERSION(3.0); 1; };
push @err, "Error loading JSON::XS: $@";
return 'JSON::PP' if eval { require JSON::PP; 1 };
@@ -121,7 +121,8 @@ JSON::MaybeXS - Use L<Cpanel::JSON::XS> with a fallback to L<JSON::XS> and L<JSO
=head1 DESCRIPTION
This module first checks to see if either L<Cpanel::JSON::XS> or
-L<JSON::XS> is already loaded, in which case it uses that module. Otherwise
+L<JSON::XS> (at at least version 3.0)
+is already loaded, in which case it uses that module. Otherwise
it tries to load L<Cpanel::JSON::XS>, then L<JSON::XS>, then L<JSON::PP>
in order, and either uses the first module it finds or throws an error.
@@ -205,6 +206,8 @@ Since this is a bare sub in the various backend classes, it cannot be called as
a class method like the other interfaces; it must be called as a function, with
no invocant. It supports the representation used in all JSON backends.
+Available since version 1.002004.
+
=head1 CONSTRUCTOR
=head2 new
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP.pm
index ddb36fef3d..32ed569072 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP.pm
@@ -1,6 +1,6 @@
package LWP;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require LWP::UserAgent; # this should load everything you need
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm
index 513475f1a3..0f007780f9 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm
@@ -2,13 +2,21 @@ package LWP::Authen::Basic;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
+require Encode;
require MIME::Base64;
sub auth_header {
- my($class, $user, $pass) = @_;
- return "Basic " . MIME::Base64::encode("$user:$pass", "");
+ my($class, $user, $pass, $request, $ua, $h) = @_;
+
+ my $userpass = "$user:$pass";
+ # https://tools.ietf.org/html/rfc7617#section-2.1
+ my $charset = uc($h->{auth_param}->{charset} || "");
+ $userpass = Encode::encode($charset, $userpass)
+ if ($charset eq "UTF-8");
+
+ return "Basic " . MIME::Base64::encode($userpass, "");
}
sub _reauth_requested {
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm
index 5ed025182f..5e7e3fcb21 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm
@@ -3,7 +3,7 @@ package LWP::Authen::Digest;
use strict;
use base 'LWP::Authen::Basic';
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require Digest::MD5;
@@ -59,17 +59,7 @@ sub auth_header {
@resp{qw(qop cnonce nc)} = ("auth", $cnonce, $nc);
}
- my(@order) = qw(username realm qop algorithm uri nonce nc cnonce response);
- if($request->method =~ /^(?:POST|PUT)$/) {
- $md5->add($request->content);
- my $content = $md5->hexdigest;
- $md5->reset;
- $md5->add(join(":", @digest[0..1], $content));
- $md5->reset;
- $resp{"message-digest"} = $md5->hexdigest;
- push(@order, "message-digest");
- }
- push(@order, "opaque");
+ my(@order) = qw(username realm qop algorithm uri nonce nc cnonce response opaque);
my @pairs;
for (@order) {
next unless defined $resp{$_};
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm
index ebe07e2c1a..f6f7c92727 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm
@@ -2,7 +2,7 @@ package LWP::Authen::Ntlm;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
use Authen::NTLM "1.02";
use MIME::Base64 "2.12";
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/ConnCache.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/ConnCache.pm
index 240eacf091..a414e4cde3 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/ConnCache.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/ConnCache.pm
@@ -2,7 +2,7 @@ package LWP::ConnCache;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
our $DEBUG;
sub new {
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug.pm
index 7f05c43357..4769516d1a 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug.pm
@@ -1,6 +1,6 @@
package LWP::Debug; # legacy
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require Exporter;
our @ISA = qw(Exporter);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm
index febd627e0b..89508c0ec3 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm
@@ -11,7 +11,7 @@ package LWP::Debug::TraceHTTP;
use strict;
use base 'LWP::Protocol::http';
-our $VERSION = '6.43';
+our $VERSION = '6.52';
package # hide from PAUSE
LWP::Debug::TraceHTTP::Socket;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/DebugFile.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/DebugFile.pm
index 8a931ce4b1..acafa59dbd 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/DebugFile.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/DebugFile.pm
@@ -1,6 +1,6 @@
package LWP::DebugFile;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
# legacy stub
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm
index f32d27df44..2da8ddbfef 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm
@@ -1,6 +1,6 @@
package LWP::MemberMixin;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
sub _elem {
my $self = shift;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol.pm
index d1f03f133b..e38e679995 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol.pm
@@ -2,7 +2,7 @@ package LWP::Protocol;
use base 'LWP::MemberMixin';
-our $VERSION = '6.43';
+our $VERSION = '6.52';
use strict;
use Carp ();
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm
index 93f1c8a245..73087090ec 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm
@@ -4,7 +4,7 @@ use strict;
use base qw(LWP::Protocol);
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require URI;
require HTTP::Status;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm
index fdbdb2fe93..fa2daa32de 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm
@@ -4,7 +4,7 @@ package LWP::Protocol::data;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require HTTP::Response;
require HTTP::Status;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm
index 90c1c1b07c..06f45e6238 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm
@@ -4,7 +4,7 @@ use base qw(LWP::Protocol);
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require LWP::MediaTypes;
require HTTP::Request;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm
index c6d75294a9..d7415d73ff 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm
@@ -5,7 +5,7 @@ package LWP::Protocol::ftp;
use base qw(LWP::Protocol);
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
use Carp ();
use HTTP::Status ();
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm
index 3c3f8c96f6..c38c7a6e33 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm
@@ -9,7 +9,7 @@ package LWP::Protocol::gopher;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require HTTP::Response;
require HTTP::Status;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm
index 052b773d71..58827a1ad0 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm
@@ -2,7 +2,7 @@ package LWP::Protocol::http;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require HTTP::Response;
require HTTP::Status;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm
index a00a53e710..b81ffcb09b 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm
@@ -2,7 +2,7 @@ package LWP::Protocol::loopback;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require HTTP::Response;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm
index 15a4d40d9d..71f0319152 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm
@@ -11,7 +11,7 @@ require HTTP::Status;
use Carp;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
use base qw(LWP::Protocol);
our $SENDMAIL;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm
index c667c34204..33f16dfa2e 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm
@@ -4,7 +4,7 @@ package LWP::Protocol::nntp;
use base qw(LWP::Protocol);
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require HTTP::Response;
require HTTP::Status;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm
index 5a9fe05907..ff9e4b22a9 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm
@@ -7,7 +7,7 @@ package LWP::Protocol::nogo;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require HTTP::Response;
require HTTP::Status;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/RobotUA.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/RobotUA.pm
index 9fe93324a0..6523698f3b 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/RobotUA.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/RobotUA.pm
@@ -2,7 +2,7 @@ package LWP::RobotUA;
use base qw(LWP::UserAgent);
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require WWW::RobotRules;
require HTTP::Request;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Simple.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Simple.pm
index cf4b4b0c56..9d4c58d5cb 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Simple.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/Simple.pm
@@ -2,7 +2,7 @@ package LWP::Simple;
use strict;
-our $VERSION = '6.43';
+our $VERSION = '6.52';
require Exporter;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/UserAgent.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/UserAgent.pm
index 668d1c0488..c67b13041e 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/UserAgent.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/LWP/UserAgent.pm
@@ -15,7 +15,7 @@ use LWP::Protocol ();
use Scalar::Util qw(blessed);
use Try::Tiny qw(try catch);
-our $VERSION = '6.43';
+our $VERSION = '6.52';
sub new
{
@@ -301,9 +301,11 @@ sub request {
$response->previous($previous) if $previous;
if ($response->redirects >= $self->{max_redirect}) {
- $response->header("Client-Warning" =>
+ if ($response->header('Location')) {
+ $response->header("Client-Warning" =>
"Redirect loop detected (max_redirect = $self->{max_redirect})"
- );
+ );
+ }
return $response;
}
@@ -316,7 +318,8 @@ sub request {
if ( $code == HTTP::Status::RC_MOVED_PERMANENTLY
or $code == HTTP::Status::RC_FOUND
or $code == HTTP::Status::RC_SEE_OTHER
- or $code == HTTP::Status::RC_TEMPORARY_REDIRECT)
+ or $code == HTTP::Status::RC_TEMPORARY_REDIRECT
+ or $code == HTTP::Status::RC_PERMANENT_REDIRECT)
{
my $referral = $request->clone;
@@ -731,7 +734,8 @@ sub ssl_opts {
return $old;
}
- return keys %{$self->{ssl_opts}};
+ my @opts= sort keys %{$self->{ssl_opts}};
+ return @opts;
}
sub parse_head {
@@ -781,7 +785,10 @@ sub cookie_jar {
}
$self->{cookie_jar} = $jar;
$self->set_my_handler("request_prepare",
- $jar ? sub { $jar->add_cookie_header($_[0]); } : undef,
+ $jar ? sub {
+ return if $_[0]->header("Cookie");
+ $jar->add_cookie_header($_[0]);
+ } : undef,
);
$self->set_my_handler("response_done",
$jar ? sub { $jar->extract_cookies($_[0]); } : undef,
@@ -880,9 +887,8 @@ sub get_my_handler {
$init->(\%spec);
}
elsif (ref($init) eq "HASH") {
- while (my($k, $v) = each %$init) {
- $spec{$k} = $v;
- }
+ $spec{$_}= $init->{$_}
+ for keys %$init;
}
$spec{callback} ||= sub {};
$spec{line} ||= join(":", (caller)[1,2]);
@@ -1092,15 +1098,28 @@ sub env_proxy {
my ($self) = @_;
require Encode;
require Encode::Locale;
- my($k,$v);
- while(($k, $v) = each %ENV) {
- if ($ENV{REQUEST_METHOD}) {
- # Need to be careful when called in the CGI environment, as
- # the HTTP_PROXY variable is under control of that other guy.
- next if $k =~ /^HTTP_/;
- $k = "HTTP_PROXY" if $k eq "CGI_HTTP_PROXY";
- }
+ my $env_request_method= $ENV{REQUEST_METHOD};
+ my %seen;
+ foreach my $k (sort keys %ENV) {
+ my $real_key= $k;
+ my $v= $ENV{$k}
+ or next;
+ if ( $env_request_method ) {
+ # Need to be careful when called in the CGI environment, as
+ # the HTTP_PROXY variable is under control of that other guy.
+ next if $k =~ /^HTTP_/;
+ $k = "HTTP_PROXY" if $k eq "CGI_HTTP_PROXY";
+ }
$k = lc($k);
+ if (my $from_key= $seen{$k}) {
+ warn "Environment contains multiple differing definitions for '$k'.\n".
+ "Using value from '$from_key' ($ENV{$from_key}) and ignoring '$real_key' ($v)"
+ if $v ne $ENV{$from_key};
+ next;
+ } else {
+ $seen{$k}= $real_key;
+ }
+
next unless $k =~ /^(.*)_proxy$/;
$k = $1;
if ($k eq 'no') {
@@ -1246,21 +1265,21 @@ The following options correspond to attribute methods described below:
KEY DEFAULT
----------- --------------------
agent "libwww-perl/#.###"
- from undef
conn_cache undef
cookie_jar undef
default_headers HTTP::Headers->new
+ from undef
local_address undef
- ssl_opts { verify_hostname => 1 }
- max_size undef
max_redirect 7
+ max_size undef
+ no_proxy []
parse_head 1
protocols_allowed undef
protocols_forbidden undef
+ proxy undef
requests_redirectable ['GET', 'HEAD']
+ ssl_opts { verify_hostname => 1 }
timeout 180
- proxy undef
- no_proxy []
The following additional options are also accepted: If the C<env_proxy> option
is passed in with a true value, then proxy settings are read from environment
@@ -1893,6 +1912,7 @@ forced to match that of the server.
The return value is an L<HTTP::Response> object.
=head2 patch
+
# Any version of HTTP::Message works with this form:
my $res = $ua->patch( $url, $field_name => $value, Content => $content );
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA.pm
index c2f35b5f4c..e4a6c56b99 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA.pm
@@ -1,7 +1,7 @@
package Mozilla::CA;
use strict;
-our $VERSION = '20180117';
+our $VERSION = '20200520';
use Cwd ();
use File::Spec ();
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem
index 6e88a2cfd2..30a655d38b 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem
@@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
-## Certificate data from Mozilla as of: Wed Jan 17 04:12:05 2018 GMT
+## Certificate data from Mozilla as of: Wed May 20 04:49:17 2020 GMT
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@@ -13,8 +13,8 @@
## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile.
##
-## Conversion done with mk-ca-bundle.pl version 1.27.
-## SHA256: a3ac15b98179dd2f3c5de076d10b1d53048754372f7207c2f327510cdd78fbd8
+## Conversion done with mk-ca-bundle.pl version 1.28.
+## SHA256: f3bdcd74612952da8476a9d4147f50b29ad0710b7dd95b4c8690500209986d70
##
@@ -261,28 +261,6 @@ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
-----END CERTIFICATE-----
-Visa eCommerce Root
-===================
------BEGIN CERTIFICATE-----
-MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
-EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
-QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
-WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
-VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
-bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
-F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
-RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
-TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
-/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
-GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
-MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
-CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
-YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
-zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
-YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
-398znM/jra6O1I7mT1GvFpLgXPYHDw==
------END CERTIFICATE-----
-
Comodo AAA Services root
========================
-----BEGIN CERTIFICATE-----
@@ -446,60 +424,6 @@ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
llpwrN9M
-----END CERTIFICATE-----
-Camerfirma Chambers of Commerce Root
-====================================
------BEGIN CERTIFICATE-----
-MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
-QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
-ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
-NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
-cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
-MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
-AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
-xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
-NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
-DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
-d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
-EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
-cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
-AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
-bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
-VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
-aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
-fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
-L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
-UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
-ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
-erfutGWaIZDgqtCYvDi1czyL+Nw=
------END CERTIFICATE-----
-
-Camerfirma Global Chambersign Root
-==================================
------BEGIN CERTIFICATE-----
-MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
-QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
-ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
-NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
-YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
-MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
-ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
-1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
-by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
-6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
-8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
-BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
-aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
-Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
-aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
-ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
-bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
-PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
-gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
-PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
-IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
-t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
------END CERTIFICATE-----
-
XRamp Global CA Root
====================
-----BEGIN CERTIFICATE-----
@@ -668,28 +592,6 @@ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
-----END CERTIFICATE-----
-Certplus Class 2 Primary CA
-===========================
------BEGIN CERTIFICATE-----
-MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
-BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
-OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
-dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
-5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
-Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
-YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
-e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
-CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
-YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
-L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
-P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
-TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
-7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
-//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
-l7+ijrRU
------END CERTIFICATE-----
-
DST Root CA X3
==============
-----BEGIN CERTIFICATE-----
@@ -710,30 +612,6 @@ RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----
-DST ACES CA X6
-==============
------BEGIN CERTIFICATE-----
-MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
-EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
-MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
-MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
-CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
-DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
-pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
-GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
-MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
-EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
-Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
-dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
-CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
-5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
-Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
-nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
-vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
-oKfN5XozNmr6mis=
------END CERTIFICATE-----
-
SwissSign Gold CA - G2
======================
-----BEGIN CERTIFICATE-----
@@ -976,27 +854,6 @@ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
-----END CERTIFICATE-----
-Security Communication EV RootCA1
-=================================
------BEGIN CERTIFICATE-----
-MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
-U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
-dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
-BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
-Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
-/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
-WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
-ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
-bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
-9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
-SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
-iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
-Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
-mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
-T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
------END CERTIFICATE-----
-
OISTE WISeKey Global Root GA CA
===============================
-----BEGIN CERTIFICATE-----
@@ -1042,28 +899,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE-----
-Deutsche Telekom Root CA 2
-==========================
------BEGIN CERTIFICATE-----
-MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
-RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
-A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
-MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
-A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
-b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
-bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
-KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
-AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
-Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
-jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
-HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
-E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
-zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
-rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
-dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
-Cm26OWMohpLzGITY+9HPBVZkVw==
------END CERTIFICATE-----
-
Cybertrust Global Root
======================
-----BEGIN CERTIFICATE-----
@@ -2027,36 +1862,6 @@ NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
w9y4AyHqnxbxLFS1
-----END CERTIFICATE-----
-CA Disig Root R1
-================
------BEGIN CERTIFICATE-----
-MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYTAlNLMRMw
-EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp
-ZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQyMDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sx
-EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp
-c2lnIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy
-3QRkD2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/oOI7bm+V8
-u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3AfQ+lekLZWnDZv6fXARz2
-m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJeIgpFy4QxTaz+29FHuvlglzmxZcfe+5nk
-CiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8noc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTa
-YVKvJrT1cU/J19IG32PK/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6
-vpmumwKjrckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD3AjL
-LhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE7cderVC6xkGbrPAX
-ZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkCyC2fg69naQanMVXVz0tv/wQFx1is
-XxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLdqvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNV
-HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ
-04IwDQYJKoZIhvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR
-xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaASfX8MPWbTx9B
-LxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXoHqJPYNcHKfyyo6SdbhWSVhlM
-CrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpBemOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5Gfb
-VSUZP/3oNn6z4eGBrxEWi1CXYBmCAMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85
-YmLLW1AL14FABZyb7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKS
-ds+xDzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvkF7mGnjix
-lAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqFa3qdnom2piiZk4hA9z7N
-UaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsTQ6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJ
-a7+h89n07eLw4+1knj0vllJPgFOL
------END CERTIFICATE-----
-
CA Disig Root R2
================
-----BEGIN CERTIFICATE-----
@@ -2764,61 +2569,6 @@ kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
-----END CERTIFICATE-----
-TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
-====================================================
------BEGIN CERTIFICATE-----
-MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
-BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
-bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1Qg
-RWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAw
-ODA3MDFaFw0yMzA0MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0w
-SwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnE
-n2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRp
-ZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEApCUZ4WWe60ghUEoI5RHwWrom/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537
-jVJp45wnEFPzpALFp/kRGml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1m
-ep5Fimh34khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z5UNP
-9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0hO8EuPbJbKoCPrZV
-4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QIDAQABo0IwQDAdBgNVHQ4EFgQUVpkH
-HtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
-hvcNAQELBQADggEBAJ5FdnsXSDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPo
-BP5yCccLqh0lVX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq
-URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nfpeYVhDfwwvJl
-lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8
-B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
------END CERTIFICATE-----
-
-Certinomis - Root CA
-====================
------BEGIN CERTIFICATE-----
-MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
-Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAbBgNVBAMTFENlcnRpbm9taXMg
-LSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMzMTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIx
-EzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRD
-ZXJ0aW5vbWlzIC0gUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQos
-P5L2fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJflLieY6pOo
-d5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQVWZUKxkd8aRi5pwP5ynap
-z8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDFTKWrteoB4owuZH9kb/2jJZOLyKIOSY00
-8B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09x
-RLWtwHkziOC/7aOgFLScCbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE
-6OXWk6RiwsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJwx3t
-FvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SGm/lg0h9tkQPTYKbV
-PZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4F2iw4lNVYC2vPsKD2NkJK/DAZNuH
-i5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZngWVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGj
-YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I
-6tNxIqSSaHh02TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF
-AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/0KGRHCwPT5iV
-WVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWwF6YSjNRieOpWauwK0kDDPAUw
-Pk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZSg081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAX
-lCOotQqSD7J6wWAsOMwaplv/8gzjqh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJ
-y29SWwNyhlCVCNSNh4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9
-Iff/ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8Vbtaw5Bng
-DwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwjY/M50n92Uaf0yKHxDHYi
-I0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nM
-cyrDflOR1m749fPH0FFNjkulW+YZFzvWgQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVr
-hkIGuUE=
------END CERTIFICATE-----
-
OISTE WISeKey Global Root GB CA
===============================
-----BEGIN CERTIFICATE-----
@@ -2945,126 +2695,6 @@ GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
-----END CERTIFICATE-----
-Certplus Root CA G1
-===================
------BEGIN CERTIFICATE-----
-MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUAMD4xCzAJBgNV
-BAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTAe
-Fw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhD
-ZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHN
-r49aiZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt6kuJPKNx
-Qv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP0FG7Yn2ksYyy/yARujVj
-BYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTv
-LRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDEEW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2
-z4QTd28n6v+WZxcIbekN1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc
-4nBvCGrch2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCTmehd
-4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV4EJQeIQEQWGw9CEj
-jy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPOWftwenMGE9nTdDckQQoRb5fc5+R+
-ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0G
-A1UdDgQWBBSowcCbkahDFXxdBie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHY
-lwuBsTANBgkqhkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh
-66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7/SMNkPX0XtPG
-YX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BSS7CTKtQ+FjPlnsZlFT5kOwQ/
-2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F
-6ALEUz65noe8zDUa3qHpimOHZR4RKttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilX
-CNQ314cnrUlZp5GrRHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWe
-tUNy6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEVV/xuZDDC
-VRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5g4VCXA9DO2pJNdWY9BW/
-+mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl++O/QmueD6i9a5jc2NvLi6Td11n0bt3+
-qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo=
------END CERTIFICATE-----
-
-Certplus Root CA G2
-===================
------BEGIN CERTIFICATE-----
-MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT
-AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x
-NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0
-cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA
-BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN
-Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD
-AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud
-IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV
-HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl
-vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw==
------END CERTIFICATE-----
-
-OpenTrust Root CA G1
-====================
------BEGIN CERTIFICATE-----
-MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUAMEAxCzAJBgNV
-BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcx
-MB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
-CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEB
-AQUAA4ICDwAwggIKAoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7fa
-Yp6bwiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX/uMftk87
-ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR077F9jAHiOH3BX2pfJLKO
-YheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGPuY4zbGneWK2gDqdkVBFpRGZPTBKnjix9
-xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLxp2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO
-9z0M+Yo0FMT7MzUj8czxKselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq
-3ywgsNw2TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+WG+Oi
-n6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPwvFEVVJSmdz7QdFG9
-URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYYEQRVzXR7z2FwefR7LFxckvzluFqr
-TJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
-/zAdBgNVHQ4EFgQUl0YhVyE12jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/Px
-N3DlCPaTKbYwDQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E
-PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kfgLMtMrpkZ2Cv
-uVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbSFXJfLkur1J1juONI5f6ELlgK
-n0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLh
-X4SPgPL0DTatdrOjteFkdjpY3H1PXlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80
-nR14SohWZ25g/4/Ii+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcm
-GS3tTAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L9109S5zvE/
-bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/KyPu1svf0OnWZzsD2097+o
-4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJAwSQiumPv+i2tCqjI40cHLI5kqiPAlxA
-OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx
------END CERTIFICATE-----
-
-OpenTrust Root CA G2
-====================
------BEGIN CERTIFICATE-----
-MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUAMEAxCzAJBgNV
-BAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEcy
-MB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
-CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEB
-AQUAA4ICDwAwggIKAoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+
-Ntmh/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78eCbY2albz
-4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/61UWY0jUJ9gNDlP7ZvyCV
-eYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fEFY8ElggGQgT4hNYdvJGmQr5J1WqIP7wt
-UdGejeBSzFfdNTVY27SPJIjki9/ca1TSgSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz
-3GIZ38i1MH/1PCZ1Eb3XG7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj
-3CzMpSZyYhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaHvGOz
-9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4t/bQWVyJ98LVtZR0
-0dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/gh7PU3+06yzbXfZqfUAkBXKJOAGT
-y3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
-/zAdBgNVHQ4EFgQUajn6QiL35okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59
-M4PLuG53hq8wDQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz
-Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0nXGEL8pZ0keI
-mUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qTRmTFAHneIWv2V6CG1wZy7HBG
-S4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpTwm+bREx50B1ws9efAvSyB7DH5fitIw6mVskp
-EndI2S9G/Tvw/HRwkqWOOAgfZDC2t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ
-6e18CL13zSdkzJTaTkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97kr
-gCf2o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU3jg9CcCo
-SmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eAiN1nE28daCSLT7d0geX0
-YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14fWKGVyasvc0rQLW6aWQ9VGHgtPFGml4vm
-u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK
------END CERTIFICATE-----
-
-OpenTrust Root CA G3
-====================
------BEGIN CERTIFICATE-----
-MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT
-AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X
-DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w
-ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA
-IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B
-ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB
-/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf
-BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM
-BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta
-3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB
------END CERTIFICATE-----
-
ISRG Root X1
============
-----BEGIN CERTIFICATE-----
@@ -3465,3 +3095,372 @@ BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe
N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm
m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
-----END CERTIFICATE-----
+
+GlobalSign Root CA - R6
+=======================
+-----BEGIN CERTIFICATE-----
+MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX
+R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
+b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i
+YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs
+U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss
+grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE
+3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF
+vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM
+PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+
+azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O
+WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy
+CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP
+0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN
+b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE
+AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV
+HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN
+nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0
+lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY
+BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym
+Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr
+3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1
+0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T
+uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK
+oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t
+JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA=
+-----END CERTIFICATE-----
+
+OISTE WISeKey Global Root GC CA
+===============================
+-----BEGIN CERTIFICATE-----
+MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD
+SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo
+MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa
+Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL
+ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
+bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr
+VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab
+NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
+BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E
+AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
+AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
+-----END CERTIFICATE-----
+
+GTS Root R1
+===========
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
+EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
+b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
+A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi
+MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx
+9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r
+aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW
+r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM
+LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly
+4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr
+06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92
+wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om
+3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu
+JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
+VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM
+BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
+d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv
+fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm
+ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b
+gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq
+4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr
+tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo
+pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0
+sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql
+CFF1pkgl
+-----END CERTIFICATE-----
+
+GTS Root R2
+===========
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
+EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
+b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
+A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi
+MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk
+k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo
+7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI
+m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm
+dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu
+ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz
+cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW
+Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl
+aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy
+5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
+VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM
+BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
+vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ
++YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw
+c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da
+WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r
+n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu
+Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ
+7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs
+gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld
+o/DUhgkC
+-----END CERTIFICATE-----
+
+GTS Root R3
+===========
+-----BEGIN CERTIFICATE-----
+MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
+UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
+UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
+ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
+hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
+Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
+QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
+0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
+glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
+KaqW04MjyaR7YbPMAuhd
+-----END CERTIFICATE-----
+
+GTS Root R4
+===========
+-----BEGIN CERTIFICATE-----
+MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
+UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
+UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
+ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
+hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
+6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
+QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
+2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
+N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
+zPKwTdb+mciUqXWi4w==
+-----END CERTIFICATE-----
+
+UCA Global G2 Root
+==================
+-----BEGIN CERTIFICATE-----
+MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG
+EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x
+NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU
+cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
+MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT
+oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV
+8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS
+h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o
+LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/
+R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe
+KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa
+4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc
+OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97
+8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
+BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo
+5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5
+1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A
+Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9
+yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX
+c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo
+jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk
+bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x
+ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn
+RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A==
+-----END CERTIFICATE-----
+
+UCA Extended Validation Root
+============================
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG
+EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u
+IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G
+A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi
+MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs
+iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF
+Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu
+eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR
+59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH
+0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR
+el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv
+B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth
+WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS
+NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS
+3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL
+BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR
+ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM
+aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4
+dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb
++7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW
+F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi
+GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc
+GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi
+djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr
+dhh2n1ax
+-----END CERTIFICATE-----
+
+Certigna Root CA
+================
+-----BEGIN CERTIFICATE-----
+MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE
+BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ
+MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda
+MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz
+MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC
+DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX
+stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz
+KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8
+JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16
+XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq
+4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej
+wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ
+lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI
+jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/
+/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
+HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of
+1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy
+dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h
+LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl
+cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt
+OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP
+TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq
+7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3
+4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd
+8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS
+6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY
+tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS
+aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde
+E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=
+-----END CERTIFICATE-----
+
+emSign Root CA - G1
+===================
+-----BEGIN CERTIFICATE-----
+MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET
+MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl
+ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx
+ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk
+aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN
+LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1
+cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW
+DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ
+6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH
+hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG
+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2
+vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q
+NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q
++Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih
+U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx
+iN66zB+Afko=
+-----END CERTIFICATE-----
+
+emSign ECC Root CA - G3
+=======================
+-----BEGIN CERTIFICATE-----
+MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG
+A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg
+MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4
+MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11
+ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g
+RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc
+58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr
+MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC
+AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D
+CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7
+jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj
+-----END CERTIFICATE-----
+
+emSign Root CA - C1
+===================
+-----BEGIN CERTIFICATE-----
+MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx
+EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp
+Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE
+BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD
+ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up
+ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/
+Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX
+OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V
+I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms
+lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+
+XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD
+ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp
+/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1
+NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9
+wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ
+BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI=
+-----END CERTIFICATE-----
+
+emSign ECC Root CA - C3
+=======================
+-----BEGIN CERTIFICATE-----
+MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG
+A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF
+Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE
+BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD
+ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd
+6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9
+SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA
+B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA
+MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU
+ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ==
+-----END CERTIFICATE-----
+
+Hongkong Post Root CA 3
+=======================
+-----BEGIN CERTIFICATE-----
+MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQELBQAwbzELMAkG
+A1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJSG9uZyBLb25nMRYwFAYDVQQK
+Ew1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2
+MDMwMjI5NDZaFw00MjA2MDMwMjI5NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtv
+bmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMX
+SG9uZ2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz
+iNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFOdem1p+/l6TWZ5Mwc50tf
+jTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mIVoBc+L0sPOFMV4i707mV78vH9toxdCim
+5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOe
+sL4jpNrcyCse2m5FHomY2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj
+0mRiikKYvLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+TtbNe/
+JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZbx39ri1UbSsUgYT2u
+y1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+l2oBlKN8W4UdKjk60FSh0Tlxnf0h
++bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YKTE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsG
+xVd7GYYKecsAyVKvQv83j+GjHno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwID
+AQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e
+i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEwDQYJKoZIhvcN
+AQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG7BJ8dNVI0lkUmcDrudHr9Egw
+W62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCkMpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWld
+y8joRTnU+kLBEUx3XZL7av9YROXrgZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov
++BS5gLNdTaqX4fnkGMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDc
+eqFS3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJmOzj/2ZQw
+9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+l6mc1X5VTMbeRRAc6uk7
+nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6cJfTzPV4e0hz5sy229zdcxsshTrD3mUcY
+hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB
+60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq
+dBb9HxEGmpv0
+-----END CERTIFICATE-----
+
+Entrust Root Certification Authority - G4
+=========================================
+-----BEGIN CERTIFICATE-----
+MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV
+BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu
+bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1
+dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1
+dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT
+AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
+L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv
+cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv
+cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D
+umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV
+3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds
+8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ
+e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7
+ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X
+xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV
+7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
+dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW
+Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T
+AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n
+MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q
+jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht
+7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK
+YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt
+jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+
+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW
+RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA
+JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G
++TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT
+kcpG2om3PVODLAgfi49T3f+sHw==
+-----END CERTIFICATE-----
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl
index 5a84f6b0b1..b9c7ed2579 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl
@@ -6,7 +6,7 @@
# * | (__| |_| | _ <| |___
# * \___|\___/|_| \_\_____|
# *
-# * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+# * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
# *
# * This software is licensed as described in the file COPYING, which
# * you should have received as part of this distribution. The terms
@@ -38,6 +38,7 @@ use warnings;
use vars qw($opt_b $opt_d $opt_f $opt_h $opt_i $opt_k $opt_l $opt_m $opt_n $opt_p $opt_q $opt_s $opt_t $opt_u $opt_v $opt_w);
use List::Util;
use Text::Wrap;
+use Time::Local;
my $MOD_SHA = "Digest::SHA";
eval "require $MOD_SHA";
if ($@) {
@@ -62,7 +63,7 @@ $opt_d = 'release';
# If the OpenSSL commandline is not in search path you can configure it here!
my $openssl = 'openssl';
-my $version = '1.27';
+my $version = '1.28';
$opt_w = 76; # default base64 encoded lines length
@@ -136,6 +137,7 @@ if ($opt_i) {
print "Perl Version : $]\n";
print "Operating System Name : $^O\n";
print "Getopt::Std.pm Version : ${Getopt::Std::VERSION}\n";
+ print "Encode::Encoding.pm Version : ${Encode::Encoding::VERSION}\n";
print "MIME::Base64.pm Version : ${MIME::Base64::VERSION}\n";
print "LWP::UserAgent.pm Version : ${LWP::UserAgent::VERSION}\n" if($LWP::UserAgent::VERSION);
print "LWP.pm Version : ${LWP::VERSION}\n" if($LWP::VERSION);
@@ -376,6 +378,9 @@ my $newhash= sha256($txt);
if(!$opt_f && $oldhash eq $newhash) {
report "Downloaded file identical to previous run\'s source file. Exiting";
+ if($opt_u && -e $txt && !unlink($txt)) {
+ report "Failed to remove $txt: $!\n";
+ }
exit;
}
@@ -417,6 +422,8 @@ my $certnum = 0;
my $skipnum = 0;
my $start_of_cert = 0;
my @precert;
+my $cka_value;
+my $valid = 1;
open(TXT,"$txt") or die "Couldn't open $txt: $!\n";
while (<TXT>) {
@@ -431,6 +438,7 @@ while (<TXT>) {
}
elsif(/^# (Issuer|Serial Number|Subject|Not Valid Before|Not Valid After |Fingerprint \(MD5\)|Fingerprint \(SHA1\)):/) {
push @precert, $_;
+ $valid = 1;
next;
}
elsif(/^#|^\s*$/) {
@@ -439,6 +447,49 @@ while (<TXT>) {
}
chomp;
+ # Example:
+ # CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL
+ # \062\060\060\066\061\067\060\060\060\060\060\060\132
+ # END
+
+ if (/^CKA_NSS_SERVER_DISTRUST_AFTER (CK_BBOOL CK_FALSE|MULTILINE_OCTAL)/) {
+ if($1 eq "MULTILINE_OCTAL") {
+ my @timestamp;
+ while (<TXT>) {
+ last if (/^END/);
+ chomp;
+ my @octets = split(/\\/);
+ shift @octets;
+ for (@octets) {
+ push @timestamp, chr(oct);
+ }
+ }
+ # A trailing Z in the timestamp signifies UTC
+ if($timestamp[12] ne "Z") {
+ report "distrust date stamp is not using UTC";
+ }
+ # Example date: 200617000000Z
+ # Means 2020-06-17 00:00:00 UTC
+ my $distrustat =
+ timegm($timestamp[10] . $timestamp[11], # second
+ $timestamp[8] . $timestamp[9], # minute
+ $timestamp[6] . $timestamp[7], # hour
+ $timestamp[4] . $timestamp[5], # day
+ ($timestamp[2] . $timestamp[3]) - 1, # month
+ "20" . $timestamp[0] . $timestamp[1]); # year
+ if(time >= $distrustat) {
+ # not trusted anymore
+ $skipnum++;
+ report "Skipping: $caname is not trusted anymore" if ($opt_v);
+ $valid = 0;
+ }
+ else {
+ # still trusted
+ }
+ }
+ next;
+ }
+
# this is a match for the start of a certificate
if (/^CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE/) {
$start_of_cert = 1
@@ -448,21 +499,18 @@ while (<TXT>) {
}
my %trust_purposes_by_level;
if ($start_of_cert && /^CKA_VALUE MULTILINE_OCTAL/) {
- my $data;
+ $cka_value="";
while (<TXT>) {
last if (/^END/);
chomp;
my @octets = split(/\\/);
shift @octets;
for (@octets) {
- $data .= chr(oct);
+ $cka_value .= chr(oct);
}
}
- # scan forwards until the trust part
- while (<TXT>) {
- last if (/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/);
- chomp;
- }
+ }
+ if(/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/ && $valid) {
# now scan the trust part to determine how we should trust this cert
while (<TXT>) {
last if (/^#/);
@@ -479,7 +527,15 @@ while (<TXT>) {
if ( !should_output_cert(%trust_purposes_by_level) ) {
$skipnum ++;
+ report "Skipping: $caname" if ($opt_v);
} else {
+ my $data = $cka_value;
+ $cka_value = "";
+
+ if(!length($data)) {
+ # if empty, skip
+ next;
+ }
my $encoded = MIME::Base64::encode_base64($data, '');
$encoded =~ s/(.{1,${opt_w}})/$1\n/g;
my $pem = "-----BEGIN CERTIFICATE-----\n"
@@ -487,7 +543,7 @@ while (<TXT>) {
. "-----END CERTIFICATE-----\n";
print CRT "\n$caname\n";
print CRT @precert if($opt_m);
- my $maxStringLength = length(decode('UTF-8', $caname, Encode::FB_CROAK));
+ my $maxStringLength = length(decode('UTF-8', $caname, Encode::FB_CROAK | Encode::LEAVE_SRC));
if ($opt_t) {
foreach my $key (keys %trust_purposes_by_level) {
my $string = $key . ": " . join(", ", @{$trust_purposes_by_level{$key}});
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP.pm
index e36200f43e..1ef0dd22ff 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP.pm
@@ -1,9 +1,9 @@
package Net::HTTP;
-our $VERSION = '6.19';
+our $VERSION = '6.20';
use strict;
use warnings;
-use vars qw($SOCKET_CLASS);
+our $SOCKET_CLASS;
unless ($SOCKET_CLASS) {
# Try several, in order of capability and preference
if (eval { require IO::Socket::IP }) {
@@ -50,7 +50,7 @@ Net::HTTP - Low-level HTTP connection (client)
=head1 VERSION
-version 6.19
+version 6.20
=head1 SYNOPSIS
@@ -75,7 +75,7 @@ HTTP protocol is described in RFC 2616. The C<Net::HTTP> class
supports C<HTTP/1.0> and C<HTTP/1.1>.
C<Net::HTTP> is a sub-class of one of C<IO::Socket::IP> (IPv6+IPv4),
-C<IO::Socket::INET6> (IPv6+IPv4), or C<IO::Socket::INET> (IPv4 only).
+C<IO::Socket::INET6> (IPv6+IPv4), or C<IO::Socket::INET> (IPv4 only).
You can mix the methods described below with reading and writing from the
socket directly. This is not necessary a good idea, unless you know what
you are doing.
@@ -172,7 +172,7 @@ format_request(). Returns true if successful.
=item $s->format_chunk( $data )
-Returns the string to be written for the given chunk of data.
+Returns the string to be written for the given chunk of data.
=item $s->write_chunk($data)
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm
index b423e540dc..919b872ef0 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm
@@ -1,5 +1,5 @@
package Net::HTTP::Methods;
-our $VERSION = '6.19';
+our $VERSION = '6.20';
use strict;
use warnings;
use URI;
@@ -649,7 +649,7 @@ Net::HTTP::Methods - Methods shared by Net::HTTP and Net::HTTPS
=head1 VERSION
-version 6.19
+version 6.20
=head1 AUTHOR
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm
index a8eaf1bf39..a916819641 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm
@@ -1,5 +1,5 @@
package Net::HTTP::NB;
-our $VERSION = '6.19';
+our $VERSION = '6.20';
use strict;
use warnings;
@@ -60,7 +60,7 @@ Net::HTTP::NB - Non-blocking HTTP client
=head1 VERSION
-version 6.19
+version 6.20
=head1 SYNOPSIS
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTPS.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTPS.pm
index 2f88833fc1..da4db53f5a 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTPS.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Net/HTTPS.pm
@@ -1,10 +1,10 @@
package Net::HTTPS;
-our $VERSION = '6.19';
+our $VERSION = '6.20';
use strict;
use warnings;
# Figure out which SSL implementation to use
-use vars qw($SSL_SOCKET_CLASS);
+our $SSL_SOCKET_CLASS;
if ($SSL_SOCKET_CLASS) {
# somebody already set it
}
@@ -90,7 +90,7 @@ Net::HTTPS - Low-level HTTP over SSL/TLS connection (client)
=head1 VERSION
-version 6.19
+version 6.20
=head1 DESCRIPTION
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Socket.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Socket.pm
index 2c6b5e45d0..fe47ef67ec 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Socket.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Socket.pm
@@ -1,9 +1,9 @@
package Socket;
use strict;
-{ use 5.006001; }
+{ use v5.6.1; }
-our $VERSION = '2.029';
+our $VERSION = '2.031';
=head1 NAME
@@ -110,7 +110,7 @@ level.
=head2 IP_PMTUDISC_WANT, IP_PMTUDISC_DONT, ...
-Socket option value contants for C<IP_MTU_DISCOVER> socket option.
+Socket option value constants for C<IP_MTU_DISCOVER> socket option.
=head2 IPTOS_LOWDELAY, IPTOS_THROUGHPUT, IPTOS_RELIABILITY, ...
@@ -837,6 +837,14 @@ BEGIN {
*LF = \LF();
*CRLF = \CRLF();
+# The four deprecated addrinfo constants
+foreach my $name (qw( AI_IDN_ALLOW_UNASSIGNED AI_IDN_USE_STD3_ASCII_RULES NI_IDN_ALLOW_UNASSIGNED NI_IDN_USE_STD3_ASCII_RULES )) {
+ no strict 'refs';
+ *$name = sub {
+ croak "The addrinfo constant $name is deprecated";
+ };
+}
+
sub sockaddr_in {
if (@_ == 6 && !wantarray) { # perl5.001m compat; use this && die
my($af, $port, @quad) = @_;
@@ -916,13 +924,9 @@ if( defined &getaddrinfo ) {
# Constants we don't support. Export them, but croak if anyone tries to
# use them
- AI_IDN => 64,
- AI_CANONIDN => 128,
- AI_IDN_ALLOW_UNASSIGNED => 256,
- AI_IDN_USE_STD3_ASCII_RULES => 512,
- NI_IDN => 32,
- NI_IDN_ALLOW_UNASSIGNED => 64,
- NI_IDN_USE_STD3_ASCII_RULES => 128,
+ AI_IDN => 64,
+ AI_CANONIDN => 128,
+ NI_IDN => 32,
# Error constants we'll never return, so it doesn't matter what value
# these have, nor that we don't provide strings for them
@@ -992,7 +996,7 @@ sub fake_getaddrinfo
# to talk AF_INET. If not we'd have to return no addresses at all. :)
$flags &= ~(AI_V4MAPPED()|AI_ALL()|AI_ADDRCONFIG());
- $flags & (AI_IDN()|AI_CANONIDN()|AI_IDN_ALLOW_UNASSIGNED()|AI_IDN_USE_STD3_ASCII_RULES()) and
+ $flags & (AI_IDN()|AI_CANONIDN()) and
croak "Socket::getaddrinfo() does not support IDN";
$flags == 0 or return fake_makeerr( EAI_BADFLAGS() );
@@ -1090,7 +1094,7 @@ sub fake_getnameinfo
my $flag_namereqd = $flags & NI_NAMEREQD(); $flags &= ~NI_NAMEREQD();
my $flag_dgram = $flags & NI_DGRAM() ; $flags &= ~NI_DGRAM();
- $flags & (NI_IDN()|NI_IDN_ALLOW_UNASSIGNED()|NI_IDN_USE_STD3_ASCII_RULES()) and
+ $flags & NI_IDN() and
croak "Socket::getnameinfo() does not support IDN";
$flags == 0 or return fake_makeerr( EAI_BADFLAGS() );
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Test/Fatal.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Test/Fatal.pm
index 29aa6629fb..4fd0e2f361 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Test/Fatal.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Test/Fatal.pm
@@ -2,7 +2,7 @@ use strict;
use warnings;
package Test::Fatal;
# ABSTRACT: incredibly simple helpers for testing code with exceptions
-$Test::Fatal::VERSION = '0.014';
+$Test::Fatal::VERSION = '0.016';
#pod =head1 SYNOPSIS
#pod
#pod use Test::More;
@@ -36,6 +36,12 @@ $Test::Fatal::VERSION = '0.014';
#pod
#pod It exports one routine by default: C<exception>.
#pod
+#pod B<Achtung!> C<exception> intentionally does not manipulate the call stack.
+#pod User-written test functions that use C<exception> must be careful to avoid
+#pod false positives if exceptions use stack traces that show arguments. For a more
+#pod magical approach involving globally overriding C<caller>, see
+#pod L<Test::Exception>.
+#pod
#pod =cut
use Carp ();
@@ -87,6 +93,26 @@ our @EXPORT_OK = qw(exception success dies_ok lives_ok);
#pod
#pod like( exception { ... }, qr/foo/, 'foo appears in the exception' );
#pod
+#pod If you really want a test function that passes the test name, wrap the
+#pod arguments in an array reference to hide the literal text from a stack trace:
+#pod
+#pod sub exception_like(&$) {
+#pod my ($code, $args) = @_;
+#pod my ($pattern, $name) = @$args;
+#pod like( &exception($code), $pattern, $name );
+#pod }
+#pod
+#pod exception_like(sub { }, [ qr/foo/, 'foo appears in the exception' ] );
+#pod
+#pod To aid in avoiding the problem where the pattern is seen in the exception
+#pod because of the call stack, C<$Carp::MAxArgNums> is locally set to -1 when the
+#pod code block is called. If you really don't want that, set it back to whatever
+#pod value you like at the beginning of the code block. Obviously, this solution
+#pod doens't affect all possible ways that args of subroutines in the call stack
+#pod might taint the test. The intention here is to prevent some false passes from
+#pod people who didn't read the documentation. Your punishment for reading it is
+#pod that you must consider whether to do anything about this.
+#pod
#pod B<Achtung>: One final bad idea:
#pod
#pod isnt( exception { ... }, undef, "my code died!");
@@ -106,7 +132,9 @@ sub exception (&) {
my $code = shift;
return try {
- my $incremented = $Test::Builder::Level - $REAL_CALCULATED_TBL;
+ my $incremented = defined $Test::Builder::Level
+ ? $Test::Builder::Level - $REAL_CALCULATED_TBL
+ : 0;
local $Test::Builder::Level = $REAL_CALCULATED_TBL;
if ($incremented) {
# each call to exception adds 5 stack frames
@@ -126,6 +154,7 @@ sub exception (&) {
}
local $REAL_CALCULATED_TBL = $Test::Builder::Level;
+ local $Carp::MaxArgNums = -1;
$code->();
return undef;
} catch {
@@ -194,7 +223,15 @@ sub dies_ok (&;$) {
require Test::Builder;
$Tester ||= Test::Builder->new;
- my $ok = $Tester->ok( exception( \&$code ), $name );
+ my $tap_pos = $Tester->current_test;
+
+ my $exception = exception( \&$code );
+
+ $name ||= $tap_pos != $Tester->current_test
+ ? "...and code should throw an exception"
+ : "code should throw an exception";
+
+ my $ok = $Tester->ok( $exception, $name );
$ok or $Tester->diag( "expected an exception but none was raised" );
return $ok;
}
@@ -206,7 +243,15 @@ sub lives_ok (&;$) {
require Test::Builder;
$Tester ||= Test::Builder->new;
- my $ok = $Tester->ok( !exception( \&$code ), $name );
+ my $tap_pos = $Tester->current_test;
+
+ my $exception = exception( \&$code );
+
+ $name ||= $tap_pos != $Tester->current_test
+ ? "...and code should not throw an exception"
+ : "code should not throw an exception";
+
+ my $ok = $Tester->ok( ! $exception, $name );
$ok or $Tester->diag( "expected return but an exception was raised" );
return $ok;
}
@@ -225,7 +270,7 @@ Test::Fatal - incredibly simple helpers for testing code with exceptions
=head1 VERSION
-version 0.014
+version 0.016
=head1 SYNOPSIS
@@ -260,6 +305,12 @@ with about the same amount of typing.
It exports one routine by default: C<exception>.
+B<Achtung!> C<exception> intentionally does not manipulate the call stack.
+User-written test functions that use C<exception> must be careful to avoid
+false positives if exceptions use stack traces that show arguments. For a more
+magical approach involving globally overriding C<caller>, see
+L<Test::Exception>.
+
=head1 FUNCTIONS
=head2 exception
@@ -303,6 +354,26 @@ regex. Instead, write this:
like( exception { ... }, qr/foo/, 'foo appears in the exception' );
+If you really want a test function that passes the test name, wrap the
+arguments in an array reference to hide the literal text from a stack trace:
+
+ sub exception_like(&$) {
+ my ($code, $args) = @_;
+ my ($pattern, $name) = @$args;
+ like( &exception($code), $pattern, $name );
+ }
+
+ exception_like(sub { }, [ qr/foo/, 'foo appears in the exception' ] );
+
+To aid in avoiding the problem where the pattern is seen in the exception
+because of the call stack, C<$Carp::MAxArgNums> is locally set to -1 when the
+code block is called. If you really don't want that, set it back to whatever
+value you like at the beginning of the code block. Obviously, this solution
+doens't affect all possible ways that args of subroutines in the call stack
+might taint the test. The intention here is to prevent some false passes from
+people who didn't read the documentation. Your punishment for reading it is
+that you must consider whether to do anything about this.
+
B<Achtung>: One final bad idea:
isnt( exception { ... }, undef, "my code died!");
@@ -354,6 +425,34 @@ use Test::Fatal's C<exception> routine.
Ricardo Signes <rjbs@cpan.org>
+=head1 CONTRIBUTORS
+
+=for stopwords David Golden Graham Knop Jesse Luehrs Joel Bernstein Karen Etheridge
+
+=over 4
+
+=item *
+
+David Golden <dagolden@cpan.org>
+
+=item *
+
+Graham Knop <haarg@haarg.org>
+
+=item *
+
+Jesse Luehrs <doy@tozt.net>
+
+=item *
+
+Joel Bernstein <joel@fysh.org>
+
+=item *
+
+Karen Etheridge <ether@cpan.org>
+
+=back
+
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Ricardo Signes.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Time/Zone.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Time/Zone.pm
new file mode 100644
index 0000000000..8a40f9158c
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/Time/Zone.pm
@@ -0,0 +1,291 @@
+
+package Time::Zone;
+
+=head1 NAME
+
+Time::Zone -- miscellaneous timezone manipulations routines
+
+=head1 SYNOPSIS
+
+ use Time::Zone;
+ print tz2zone();
+ print tz2zone($ENV{'TZ'});
+ print tz2zone($ENV{'TZ'}, time());
+ print tz2zone($ENV{'TZ'}, undef, $isdst);
+ $offset = tz_local_offset();
+ $offset = tz_offset($TZ);
+
+=head1 DESCRIPTION
+
+This is a collection of miscellaneous timezone manipulation routines.
+
+C<tz2zone()> parses the TZ environment variable and returns a timezone
+string suitable for inclusion in L<date(1)>-like output. It opionally takes
+a timezone string, a time, and a is-dst flag.
+
+C<tz_local_offset()> determins the offset from GMT time in seconds. It
+only does the calculation once.
+
+C<tz_offset()> determines the offset from GMT in seconds of a specified
+timezone.
+
+C<tz_name()> determines the name of the timezone based on its offset
+
+=head1 AUTHORS
+
+Graham Barr <gbarr@pobox.com>
+David Muir Sharnoff <muir@idiom.com>
+Paul Foley <paul@ascent.com>
+
+=cut
+
+require 5.002;
+
+require Exporter;
+use Carp;
+use strict;
+use vars qw(@ISA @EXPORT $VERSION @tz_local);
+
+@ISA = qw(Exporter);
+@EXPORT = qw(tz2zone tz_local_offset tz_offset tz_name);
+$VERSION = "2.24";
+
+# Parts stolen from code by Paul Foley <paul@ascent.com>
+
+sub tz2zone (;$$$)
+{
+ my($TZ, $time, $isdst) = @_;
+
+ use vars qw(%tzn_cache);
+
+ $TZ = defined($ENV{'TZ'}) ? ( $ENV{'TZ'} ? $ENV{'TZ'} : 'GMT' ) : ''
+ unless $TZ;
+
+ # Hack to deal with 'PST8PDT' format of TZ
+ # Note that this can't deal with all the esoteric forms, but it
+ # does recognize the most common: [:]STDoff[DST[off][,rule]]
+
+ if (! defined $isdst) {
+ my $j;
+ $time = time() unless $time;
+ ($j, $j, $j, $j, $j, $j, $j, $j, $isdst) = localtime($time);
+ }
+
+ if (defined $tzn_cache{$TZ}->[$isdst]) {
+ return $tzn_cache{$TZ}->[$isdst];
+ }
+
+ if ($TZ =~ /^
+ ( [^:\d+\-,] {3,} )
+ ( [+-] ?
+ \d {1,2}
+ ( : \d {1,2} ) {0,2}
+ )
+ ( [^\d+\-,] {3,} )?
+ /x
+ ) {
+ my $dsttz = defined($4) ? $4 : $1;
+ $TZ = $isdst ? $dsttz : $1;
+ $tzn_cache{$TZ} = [ $1, $dsttz ];
+ } else {
+ $tzn_cache{$TZ} = [ $TZ, $TZ ];
+ }
+ return $TZ;
+}
+
+sub tz_local_offset (;$)
+{
+ my ($time) = @_;
+
+ $time = time() unless $time;
+ my (@l) = localtime($time);
+ my $isdst = $l[8];
+
+ if (defined($tz_local[$isdst])) {
+ return $tz_local[$isdst];
+ }
+
+ $tz_local[$isdst] = &calc_off($time);
+
+ return $tz_local[$isdst];
+}
+
+sub calc_off
+{
+ my ($time) = @_;
+
+ my (@l) = localtime($time);
+ my (@g) = gmtime($time);
+
+ my $off;
+
+ $off = $l[0] - $g[0]
+ + ($l[1] - $g[1]) * 60
+ + ($l[2] - $g[2]) * 3600;
+
+ # subscript 7 is yday.
+
+ if ($l[7] == $g[7]) {
+ # done
+ } elsif ($l[7] == $g[7] + 1) {
+ $off += 86400;
+ } elsif ($l[7] == $g[7] - 1) {
+ $off -= 86400;
+ } elsif ($l[7] < $g[7]) {
+ # crossed over a year boundry!
+ # localtime is beginning of year, gmt is end
+ # therefore local is ahead
+ $off += 86400;
+ } else {
+ $off -= 86400;
+ }
+
+ return $off;
+}
+
+# constants
+
+CONFIG: {
+ use vars qw(%dstZone %zoneOff %dstZoneOff %Zone);
+
+ my @dstZone = (
+ # "ndt" => -2*3600-1800, # Newfoundland Daylight
+ "brst" => -2*3600, # Brazil Summer Time (East Daylight)
+ "adt" => -3*3600, # Atlantic Daylight
+ "edt" => -4*3600, # Eastern Daylight
+ "cdt" => -5*3600, # Central Daylight
+ "mdt" => -6*3600, # Mountain Daylight
+ "pdt" => -7*3600, # Pacific Daylight
+ "akdt" => -8*3600, # Alaska Daylight
+ "ydt" => -8*3600, # Yukon Daylight
+ "hdt" => -9*3600, # Hawaii Daylight
+ "bst" => +1*3600, # British Summer
+ "mest" => +2*3600, # Middle European Summer
+ "metdst" => +2*3600, # Middle European DST
+ "sst" => +2*3600, # Swedish Summer
+ "fst" => +2*3600, # French Summer
+ "cest" => +2*3600, # Central European Daylight
+ "eest" => +3*3600, # Eastern European Summer
+ "msd" => +4*3600, # Moscow Daylight
+ "wadt" => +8*3600, # West Australian Daylight
+ "kdt" => +10*3600, # Korean Daylight
+ # "cadt" => +10*3600+1800, # Central Australian Daylight
+ "aedt" => +11*3600, # Eastern Australian Daylight
+ "eadt" => +11*3600, # Eastern Australian Daylight
+ "nzd" => +13*3600, # New Zealand Daylight
+ "nzdt" => +13*3600, # New Zealand Daylight
+ );
+
+ my @Zone = (
+ "gmt" => 0, # Greenwich Mean
+ "ut" => 0, # Universal (Coordinated)
+ "utc" => 0,
+ "wet" => 0, # Western European
+ "wat" => -1*3600, # West Africa
+ "at" => -2*3600, # Azores
+ "fnt" => -2*3600, # Brazil Time (Extreme East - Fernando Noronha)
+ "brt" => -3*3600, # Brazil Time (East Standard - Brasilia)
+ # For completeness. BST is also British Summer, and GST is also Guam Standard.
+ # "bst" => -3*3600, # Brazil Standard
+ # "gst" => -3*3600, # Greenland Standard
+ # "nft" => -3*3600-1800,# Newfoundland
+ # "nst" => -3*3600-1800,# Newfoundland Standard
+ "mnt" => -4*3600, # Brazil Time (West Standard - Manaus)
+ "ewt" => -4*3600, # U.S. Eastern War Time
+ "ast" => -4*3600, # Atlantic Standard
+ "est" => -5*3600, # Eastern Standard
+ "act" => -5*3600, # Brazil Time (Extreme West - Acre)
+ "cst" => -6*3600, # Central Standard
+ "mst" => -7*3600, # Mountain Standard
+ "pst" => -8*3600, # Pacific Standard
+ "akst" => -9*3600, # Alaska Standard
+ "yst" => -9*3600, # Yukon Standard
+ "hst" => -10*3600, # Hawaii Standard
+ "cat" => -10*3600, # Central Alaska
+ "ahst" => -10*3600, # Alaska-Hawaii Standard
+ "nt" => -11*3600, # Nome
+ "idlw" => -12*3600, # International Date Line West
+ "cet" => +1*3600, # Central European
+ "mez" => +1*3600, # Central European (German)
+ "ect" => +1*3600, # Central European (French)
+ "met" => +1*3600, # Middle European
+ "mewt" => +1*3600, # Middle European Winter
+ "swt" => +1*3600, # Swedish Winter
+ "set" => +1*3600, # Seychelles
+ "fwt" => +1*3600, # French Winter
+ "eet" => +2*3600, # Eastern Europe, USSR Zone 1
+ "ukr" => +2*3600, # Ukraine
+ "bt" => +3*3600, # Baghdad, USSR Zone 2
+ "msk" => +3*3600, # Moscow
+ # "it" => +3*3600+1800,# Iran
+ "zp4" => +4*3600, # USSR Zone 3
+ "zp5" => +5*3600, # USSR Zone 4
+ # "ist" => +5*3600+1800,# Indian Standard
+ "zp6" => +6*3600, # USSR Zone 5
+ # For completeness. NST is also Newfoundland Stanard, and SST is also Swedish Summer.
+ # "nst" => +6*3600+1800,# North Sumatra
+ # "sst" => +7*3600, # South Sumatra, USSR Zone 6
+ # "jt" => +7*3600+1800,# Java (3pm in Cronusland!)
+ "wst" => +8*3600, # West Australian Standard
+ "hkt" => +8*3600, # Hong Kong
+ "cct" => +8*3600, # China Coast, USSR Zone 7
+ "jst" => +9*3600, # Japan Standard, USSR Zone 8
+ "kst" => +9*3600, # Korean Standard
+ # "cast" => +9*3600+1800,# Central Australian Standard
+ "aest" => +10*3600, # Eastern Australian Standard
+ "east" => +10*3600, # Eastern Australian Standard
+ "gst" => +10*3600, # Guam Standard, USSR Zone 9
+ "nzt" => +12*3600, # New Zealand
+ "nzst" => +12*3600, # New Zealand Standard
+ "idle" => +12*3600, # International Date Line East
+ );
+
+ %Zone = @Zone;
+ %dstZone = @dstZone;
+ %zoneOff = reverse(@Zone);
+ %dstZoneOff = reverse(@dstZone);
+
+}
+
+sub tz_offset (;$$)
+{
+ my ($zone, $time) = @_;
+
+ return &tz_local_offset($time) unless($zone);
+
+ $time = time() unless $time;
+ my(@l) = localtime($time);
+ my $dst = $l[8];
+
+ $zone = lc $zone;
+
+ if($zone =~ /^(([\-\+])\d\d?)(\d\d)$/) {
+ my $v = $2 . $3;
+ return $1 * 3600 + $v * 60;
+ } elsif (exists $dstZone{$zone} && ($dst || !exists $Zone{$zone})) {
+ return $dstZone{$zone};
+ } elsif(exists $Zone{$zone}) {
+ return $Zone{$zone};
+ }
+ undef;
+}
+
+sub tz_name (;$$)
+{
+ my ($off, $dst) = @_;
+
+ $off = tz_offset()
+ unless(defined $off);
+
+ $dst = (localtime(time))[8]
+ unless(defined $dst);
+
+ if (exists $dstZoneOff{$off} && ($dst || !exists $zoneOff{$off})) {
+ return $dstZoneOff{$off};
+ } elsif (exists $zoneOff{$off}) {
+ return $zoneOff{$off};
+ }
+ sprintf("%+05d", int($off / 60) * 100 + $off % 60);
+}
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/TimeDate.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/TimeDate.pm
new file mode 100644
index 0000000000..7c07479fd8
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/TimeDate.pm
@@ -0,0 +1,16 @@
+package TimeDate;
+
+use vars qw($VERSION);
+
+$VERSION = "1.21";
+
+=pod
+
+This is an empty module which is just there to get ownership on TimeDate
+using first-come permissions from PAUSE.
+
+This was required during the release of 1.21 for transferring ownership.
+
+=cut
+
+1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI.pm
index 7d259c734a..52dbd4fa37 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI.pm
@@ -3,7 +3,7 @@ package URI;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
our ($ABS_REMOTE_LEADING_DOTS, $ABS_ALLOW_RELATIVE_SCHEME, $DEFAULT_QUERY_FORM_DELIMITER);
@@ -357,13 +357,13 @@ URI - Uniform Resource Identifiers (absolute and relative)
=head1 SYNOPSIS
- use URI;
+ use URI ();
- $u1 = URI->new("http://www.perl.com");
+ $u1 = URI->new("http://www.example.com");
$u2 = URI->new("foo", "http");
$u3 = $u2->abs($u1);
$u4 = $u3->clone;
- $u5 = URI->new("HTTP://WWW.perl.com:80")->canonical;
+ $u5 = URI->new("HTTP://WWW.example.com:80")->canonical;
$str = $u->as_string;
$str = "$u";
@@ -374,7 +374,7 @@ URI - Uniform Resource Identifiers (absolute and relative)
$frag = $u->fragment;
$u->scheme("ftp");
- $u->host("ftp.perl.com");
+ $u->host("ftp.example.com");
$u->path("cpan/");
=head1 DESCRIPTION
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Escape.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Escape.pm
index f9392d446f..61cb6d9f30 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Escape.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Escape.pm
@@ -141,7 +141,7 @@ use Exporter 5.57 'import';
our %escapes;
our @EXPORT = qw(uri_escape uri_unescape uri_escape_utf8);
our @EXPORT_OK = qw(%escapes);
-our $VERSION = "3.31";
+our $VERSION = '5.07';
use Carp ();
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Heuristic.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Heuristic.pm
index d4ace34379..fc11f03c04 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Heuristic.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Heuristic.pm
@@ -7,7 +7,7 @@ URI::Heuristic - Expand URI using heuristics
=head1 SYNOPSIS
use URI::Heuristic qw(uf_uristr);
- $u = uf_uristr("perl"); # http://www.perl.com
+ $u = uf_uristr("example"); # http://www.example.com
$u = uf_uristr("www.sol.no/sol"); # http://www.sol.no/sol
$u = uf_uristr("aas"); # http://www.aas.no
$u = uf_uristr("ftp.funet.fi"); # ftp://ftp.funet.fi
@@ -91,7 +91,7 @@ use warnings;
use Exporter 5.57 'import';
our @EXPORT_OK = qw(uf_uri uf_uristr uf_url uf_urlstr);
-our $VERSION = "4.20";
+our $VERSION = '5.07';
our ($MY_COUNTRY, $DEBUG);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/IRI.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/IRI.pm
index edb10450f7..deaed8c96a 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/IRI.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/IRI.pm
@@ -8,7 +8,7 @@ use URI ();
use overload '""' => sub { shift->as_string };
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub new {
my($class, $uri, $scheme) = @_;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/QueryParam.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/QueryParam.pm
index 16eed9823d..8c382bf9a4 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/QueryParam.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/QueryParam.pm
@@ -3,7 +3,7 @@ package URI::QueryParam;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub URI::_query::query_param {
my $self = shift;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Split.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Split.pm
index 39b5bcf7f2..181da6d2c4 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Split.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/Split.pm
@@ -3,7 +3,7 @@ package URI::Split;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use Exporter 5.57 'import';
our @EXPORT_OK = qw(uri_split uri_join);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/URL.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/URL.pm
index ba05ecaeba..e8d6ae6e61 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/URL.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/URL.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI::WithBase';
-our $VERSION = "5.04";
+our $VERSION = '5.07';
# Provide as much as possible of the old URI::URL interface for backwards
# compatibility...
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/WithBase.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/WithBase.pm
index 943b7b533a..a682f3d9d4 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/WithBase.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/WithBase.pm
@@ -3,10 +3,10 @@ package URI::WithBase;
use strict;
use warnings;
-use URI;
-use Scalar::Util 'blessed';
+use URI ();
+use Scalar::Util qw(blessed);
-our $VERSION = "2.20";
+our $VERSION = '5.07';
use overload '""' => "as_string", fallback => 1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_foreign.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_foreign.pm
index d556c853e6..c8ae6d7ec7 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_foreign.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_foreign.pm
@@ -5,6 +5,6 @@ use warnings;
use parent 'URI::_generic';
-our $VERSION = '1.76';
+our $VERSION = '5.07';
1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_generic.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_generic.pm
index 0da8f72998..b7085f5af9 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_generic.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_generic.pm
@@ -8,7 +8,7 @@ use parent qw(URI URI::_query);
use URI::Escape qw(uri_unescape);
use Carp ();
-our $VERSION = '1.76';
+our $VERSION = '5.07';
my $ACHAR = $URI::uric; $ACHAR =~ s,\\[/?],,g;
my $PCHAR = $URI::uric; $PCHAR =~ s,\\[?],,g;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_idna.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_idna.pm
index 8392e107d9..2b3912fa23 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_idna.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_idna.pm
@@ -6,10 +6,10 @@ package URI::_idna;
use strict;
use warnings;
-use URI::_punycode qw(encode_punycode decode_punycode);
+use URI::_punycode qw(decode_punycode encode_punycode);
use Carp qw(croak);
-our $VERSION = '1.76';
+our $VERSION = '5.07';
BEGIN {
*URI::_idna::_ENV_::JOIN_LEAKS_UTF8_FLAGS = "$]" < 5.008_003
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_ldap.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_ldap.pm
index 5057c37cb3..32834a140d 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_ldap.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_ldap.pm
@@ -7,7 +7,7 @@ package URI::_ldap;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use URI::Escape qw(uri_unescape);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_login.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_login.pm
index 7c3e5a1b83..e44e8f0418 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_login.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_login.pm
@@ -5,7 +5,7 @@ use warnings;
use parent qw(URI::_server URI::_userpass);
-our $VERSION = '1.76';
+our $VERSION = '5.07';
# Generic terminal logins. This is used as a base class for 'telnet',
# 'tn3270', and 'rlogin' URL schemes.
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_punycode.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_punycode.pm
index 405acc2de1..d3af7a3321 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_punycode.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_punycode.pm
@@ -3,7 +3,7 @@ package URI::_punycode;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use Exporter 'import';
our @EXPORT = qw(encode_punycode decode_punycode);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_query.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_query.pm
index d9dde133e3..690f844406 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_query.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_query.pm
@@ -6,7 +6,7 @@ use warnings;
use URI ();
use URI::Escape qw(uri_unescape);
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub query
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_segment.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_segment.pm
index 01f207feb1..ca8088ed0f 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_segment.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_segment.pm
@@ -11,7 +11,7 @@ use URI::Escape qw(uri_unescape);
use overload '""' => sub { $_[0]->[0] },
fallback => 1;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub new
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_server.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_server.pm
index 5c32400d17..b44b988336 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_server.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_server.pm
@@ -7,7 +7,7 @@ use parent 'URI::_generic';
use URI::Escape qw(uri_unescape);
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub _uric_escape {
my($class, $str) = @_;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_userpass.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_userpass.pm
index b57fb2a502..5553a0be4b 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_userpass.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/_userpass.pm
@@ -5,7 +5,7 @@ use warnings;
use URI::Escape qw(uri_unescape);
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub user
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/data.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/data.pm
index b21b5a31a0..ade96d80cd 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/data.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/data.pm
@@ -5,10 +5,10 @@ use warnings;
use parent 'URI';
-our $VERSION = '1.76';
+our $VERSION = '5.07';
-use MIME::Base64 qw(encode_base64 decode_base64);
-use URI::Escape qw(uri_unescape);
+use MIME::Base64 qw(decode_base64 encode_base64);
+use URI::Escape qw(uri_unescape);
sub media_type
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file.pm
index d76ddf2b5e..0d07a2d1e9 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
use parent 'URI::_generic';
-our $VERSION = "4.21";
+our $VERSION = '5.07';
use URI::Escape qw(uri_unescape);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Base.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Base.pm
index bddd78a44f..4926df773a 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Base.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Base.pm
@@ -3,9 +3,9 @@ package URI::file::Base;
use strict;
use warnings;
-use URI::Escape qw();
+use URI::Escape ();
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub new
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/FAT.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/FAT.pm
index 78ed78002e..5d8fe87263 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/FAT.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/FAT.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI::file::Win32';
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub fix_path
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Mac.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Mac.pm
index 155d618b42..ca192ec6d7 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Mac.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Mac.pm
@@ -7,7 +7,7 @@ use parent 'URI::file::Base';
use URI::Escape qw(uri_unescape);
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub _file_extract_path
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/OS2.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/OS2.pm
index a3cbf980b3..38b0106d56 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/OS2.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/OS2.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI::file::Win32';
-our $VERSION = '1.76';
+our $VERSION = '5.07';
# The Win32 version translates k:/foo to file://k:/foo (?!)
# We add an empty host
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/QNX.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/QNX.pm
index 995fd632e2..c9893cbf0f 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/QNX.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/QNX.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI::file::Unix';
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub _file_extract_path
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Unix.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Unix.pm
index 869e8991a7..08dee07d48 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Unix.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Unix.pm
@@ -7,7 +7,7 @@ use parent 'URI::file::Base';
use URI::Escape qw(uri_unescape);
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub _file_extract_path
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Win32.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Win32.pm
index d4f1ecfe56..fd51dd481f 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Win32.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/file/Win32.pm
@@ -7,7 +7,7 @@ use parent 'URI::file::Base';
use URI::Escape qw(uri_unescape);
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub _file_extract_authority
{
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ftp.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ftp.pm
index e2d195026d..15d068c81d 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ftp.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ftp.pm
@@ -3,7 +3,7 @@ package URI::ftp;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent qw(URI::_server URI::_userpass);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/gopher.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/gopher.pm
index 00bc363a9e..e251164a00 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/gopher.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/gopher.pm
@@ -3,7 +3,7 @@ package URI::gopher; # <draft-murali-url-gopher>, Dec 4, 1996
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::_server';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/http.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/http.pm
index 1b02cac9aa..b99edcc909 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/http.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/http.pm
@@ -3,7 +3,7 @@ package URI::http;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::_server';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/https.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/https.pm
index f40636bb94..a4ec77ecbc 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/https.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/https.pm
@@ -3,7 +3,7 @@ package URI::https;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::http';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldap.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldap.pm
index 813bff9ea2..ea503a3337 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldap.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldap.pm
@@ -7,7 +7,7 @@ package URI::ldap;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent qw(URI::_ldap URI::_server);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldapi.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldapi.pm
index b138c8849c..d648e1bc08 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldapi.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldapi.pm
@@ -3,11 +3,11 @@ package URI::ldapi;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent qw(URI::_ldap URI::_generic);
-require URI::Escape;
+use URI::Escape ();
sub un_path {
my $self = shift;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldaps.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldaps.pm
index 02ad5115fb..3270f3f8ff 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldaps.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ldaps.pm
@@ -3,7 +3,7 @@ package URI::ldaps;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::ldap';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mailto.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mailto.pm
index 300386ef44..2ed4275706 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mailto.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mailto.pm
@@ -3,7 +3,7 @@ package URI::mailto; # RFC 2368
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent qw(URI URI::_query);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mms.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mms.pm
index 3c0e44f054..66b11406cc 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mms.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/mms.pm
@@ -3,7 +3,7 @@ package URI::mms;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::http';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/news.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/news.pm
index 55dcf71556..fab598c2ee 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/news.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/news.pm
@@ -3,7 +3,7 @@ package URI::news; # draft-gilman-news-url-01
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::_server';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/nntp.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/nntp.pm
index 80bd9429f9..3676deb975 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/nntp.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/nntp.pm
@@ -3,7 +3,7 @@ package URI::nntp; # draft-gilman-news-url-01
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::news';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/pop.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/pop.pm
index ba824c01b0..017f699ca7 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/pop.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/pop.pm
@@ -3,7 +3,7 @@ package URI::pop; # RFC 2384
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::_server';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rlogin.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rlogin.pm
index 9dd5667486..c4c37b63dc 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rlogin.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rlogin.pm
@@ -3,7 +3,7 @@ package URI::rlogin;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::_login';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rsync.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rsync.pm
index fb6fc132f4..cf978d18b1 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rsync.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rsync.pm
@@ -5,7 +5,7 @@ package URI::rsync; # http://rsync.samba.org/
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent qw(URI::_server URI::_userpass);
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtsp.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtsp.pm
index b06193ad3b..0c056a8552 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtsp.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtsp.pm
@@ -3,7 +3,7 @@ package URI::rtsp;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::http';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtspu.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtspu.pm
index 8ed9707da4..b70be28b49 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtspu.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/rtspu.pm
@@ -3,7 +3,7 @@ package URI::rtspu;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::rtsp';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sftp.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sftp.pm
index 93ff152ed1..b1636f0901 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sftp.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sftp.pm
@@ -5,6 +5,6 @@ use warnings;
use parent 'URI::ssh';
-our $VERSION = '1.76';
+our $VERSION = '5.07';
1;
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sip.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sip.pm
index d793a3f57a..4e13644cb7 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sip.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sip.pm
@@ -12,9 +12,9 @@ use warnings;
use parent qw(URI::_server URI::_userpass);
-use URI::Escape qw(uri_unescape);
+use URI::Escape ();
-our $VERSION = '1.76';
+our $VERSION = '5.07';
sub default_port { 5060 }
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sips.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sips.pm
index 4d5553b531..7e8e0ff17c 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sips.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/sips.pm
@@ -3,7 +3,7 @@ package URI::sips;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::sip';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/snews.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/snews.pm
index 9911046396..52d3e4fdcf 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/snews.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/snews.pm
@@ -3,7 +3,7 @@ package URI::snews; # draft-gilman-news-url-01
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::news';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ssh.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ssh.pm
index c4848f02f8..53ddfee25e 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ssh.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/ssh.pm
@@ -3,7 +3,7 @@ package URI::ssh;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::_login';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/telnet.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/telnet.pm
index 4d95a6200c..72eca504a3 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/telnet.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/telnet.pm
@@ -3,7 +3,7 @@ package URI::telnet;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::_login';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/tn3270.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/tn3270.pm
index cdcabbde85..9be1c82998 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/tn3270.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/tn3270.pm
@@ -3,7 +3,7 @@ package URI::tn3270;
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::_login';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn.pm
index bca02cb788..83c9dfcbda 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn.pm
@@ -3,7 +3,7 @@ package URI::urn; # RFC 2141
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/isbn.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/isbn.pm
index 9246345944..945eba5b19 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/isbn.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/isbn.pm
@@ -3,7 +3,7 @@ package URI::urn::isbn; # RFC 3187
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::urn';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/oid.pm b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/oid.pm
index 2a4a0f9dcd..040b5ca9ce 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/oid.pm
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/URI/urn/oid.pm
@@ -3,7 +3,7 @@ package URI::urn::oid; # RFC 2061
use strict;
use warnings;
-our $VERSION = '1.76';
+our $VERSION = '5.07';
use parent 'URI::urn';
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist
index 03d54eace5..228fdadd04 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist
@@ -1,6 +1,6 @@
-D:\tlperl\bin\cpanel_json_xs
-D:\tlperl\bin\cpanel_json_xs.bat
-D:\tlperl\site\lib\Cpanel\JSON\XS.pm
-D:\tlperl\site\lib\Cpanel\JSON\XS\Boolean.pm
-D:\tlperl\site\lib\Cpanel\JSON\XS\Type.pm
-D:\tlperl\site\lib\auto\Cpanel\JSON\XS\XS.dll
+E:\tlperl\bin\cpanel_json_xs
+E:\tlperl\bin\cpanel_json_xs.bat
+E:\tlperl\site\lib\Cpanel\JSON\XS.pm
+E:\tlperl\site\lib\Cpanel\JSON\XS\Boolean.pm
+E:\tlperl\site\lib\Cpanel\JSON\XS\Type.pm
+E:\tlperl\site\lib\auto\Cpanel\JSON\XS\XS.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll
index 53d29aed26..6e49942505 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist
new file mode 100644
index 0000000000..3ce2a50b44
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist
@@ -0,0 +1,39 @@
+E:\tlperl\site\lib\Date\Format.pm
+E:\tlperl\site\lib\Date\Language.pm
+E:\tlperl\site\lib\Date\Language\Afar.pm
+E:\tlperl\site\lib\Date\Language\Amharic.pm
+E:\tlperl\site\lib\Date\Language\Austrian.pm
+E:\tlperl\site\lib\Date\Language\Brazilian.pm
+E:\tlperl\site\lib\Date\Language\Bulgarian.pm
+E:\tlperl\site\lib\Date\Language\Chinese.pm
+E:\tlperl\site\lib\Date\Language\Chinese_GB.pm
+E:\tlperl\site\lib\Date\Language\Czech.pm
+E:\tlperl\site\lib\Date\Language\Danish.pm
+E:\tlperl\site\lib\Date\Language\Dutch.pm
+E:\tlperl\site\lib\Date\Language\English.pm
+E:\tlperl\site\lib\Date\Language\Finnish.pm
+E:\tlperl\site\lib\Date\Language\French.pm
+E:\tlperl\site\lib\Date\Language\Gedeo.pm
+E:\tlperl\site\lib\Date\Language\German.pm
+E:\tlperl\site\lib\Date\Language\Greek.pm
+E:\tlperl\site\lib\Date\Language\Hungarian.pm
+E:\tlperl\site\lib\Date\Language\Icelandic.pm
+E:\tlperl\site\lib\Date\Language\Italian.pm
+E:\tlperl\site\lib\Date\Language\Norwegian.pm
+E:\tlperl\site\lib\Date\Language\Occitan.pm
+E:\tlperl\site\lib\Date\Language\Oromo.pm
+E:\tlperl\site\lib\Date\Language\Romanian.pm
+E:\tlperl\site\lib\Date\Language\Russian.pm
+E:\tlperl\site\lib\Date\Language\Russian_cp1251.pm
+E:\tlperl\site\lib\Date\Language\Russian_koi8r.pm
+E:\tlperl\site\lib\Date\Language\Sidama.pm
+E:\tlperl\site\lib\Date\Language\Somali.pm
+E:\tlperl\site\lib\Date\Language\Spanish.pm
+E:\tlperl\site\lib\Date\Language\Swedish.pm
+E:\tlperl\site\lib\Date\Language\Tigrinya.pm
+E:\tlperl\site\lib\Date\Language\TigrinyaEritrean.pm
+E:\tlperl\site\lib\Date\Language\TigrinyaEthiopian.pm
+E:\tlperl\site\lib\Date\Language\Turkish.pm
+E:\tlperl\site\lib\Date\Parse.pm
+E:\tlperl\site\lib\TimeDate.pm
+E:\tlperl\site\lib\Time\Zone.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist
new file mode 100644
index 0000000000..915cf6fc67
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist
@@ -0,0 +1,4 @@
+E:\tlperl\bin\shasum
+E:\tlperl\bin\shasum.bat
+E:\tlperl\site\lib\Digest\SHA.pm
+E:\tlperl\site\lib\auto\Digest\SHA\SHA.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dll
new file mode 100755
index 0000000000..1e72cbc53f
--- /dev/null
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA1/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA1/.packlist
deleted file mode 100644
index 5565625989..0000000000
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA1/.packlist
+++ /dev/null
@@ -1,2 +0,0 @@
-D:\tlperl\site\lib\Digest\SHA1.pm
-D:\tlperl\site\lib\auto\Digest\SHA1\SHA1.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA1/SHA1.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA1/SHA1.dll
deleted file mode 100755
index a39bb62e30..0000000000
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Digest/SHA1/SHA1.dll
+++ /dev/null
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist
index ab92a81c67..9fd84edc87 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\Encode\Locale.pm
+E:\tlperl\site\lib\Encode\Locale.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist
index 1efa98462c..60c4858995 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist
@@ -1,4 +1,4 @@
-D:\tlperl\site\lib\Encode\compat.pm
-D:\tlperl\site\lib\Encode\compat\5006001.pm
-D:\tlperl\site\lib\Encode\compat\Alias.pm
-D:\tlperl\site\lib\Encode\compat\common.pm
+E:\tlperl\site\lib\Encode\compat.pm
+E:\tlperl\site\lib\Encode\compat\5006001.pm
+E:\tlperl\site\lib\Encode\compat\Alias.pm
+E:\tlperl\site\lib\Encode\compat\common.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist
index e7f9804feb..2a9f354284 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\File\Listing.pm
+E:\tlperl\site\lib\File\Listing.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Which/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Which/.packlist
index 6071facafe..018541e49a 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Which/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/File/Which/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\File\Which.pm
+E:\tlperl\site\lib\File\Which.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist
index cb9d663150..ac6022d7d6 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist
@@ -1,8 +1,8 @@
-D:\tlperl\site\lib\HTML\Entities.pm
-D:\tlperl\site\lib\HTML\Filter.pm
-D:\tlperl\site\lib\HTML\HeadParser.pm
-D:\tlperl\site\lib\HTML\LinkExtor.pm
-D:\tlperl\site\lib\HTML\Parser.pm
-D:\tlperl\site\lib\HTML\PullParser.pm
-D:\tlperl\site\lib\HTML\TokeParser.pm
-D:\tlperl\site\lib\auto\HTML\Parser\Parser.dll
+E:\tlperl\site\lib\HTML\Entities.pm
+E:\tlperl\site\lib\HTML\Filter.pm
+E:\tlperl\site\lib\HTML\HeadParser.pm
+E:\tlperl\site\lib\HTML\LinkExtor.pm
+E:\tlperl\site\lib\HTML\Parser.pm
+E:\tlperl\site\lib\HTML\PullParser.pm
+E:\tlperl\site\lib\HTML\TokeParser.pm
+E:\tlperl\site\lib\auto\HTML\Parser\Parser.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll
index d25c0521dc..77113d7821 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist
index 0625f11b92..dab2adba68 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\HTML\Tagset.pm
+E:\tlperl\site\lib\HTML\Tagset.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist
index 82eb84f3ef..3c859961d9 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist
@@ -1,3 +1,3 @@
-D:\tlperl\site\lib\HTTP\Cookies.pm
-D:\tlperl\site\lib\HTTP\Cookies\Microsoft.pm
-D:\tlperl\site\lib\HTTP\Cookies\Netscape.pm
+E:\tlperl\site\lib\HTTP\Cookies.pm
+E:\tlperl\site\lib\HTTP\Cookies\Microsoft.pm
+E:\tlperl\site\lib\HTTP\Cookies\Netscape.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist
index 8133238e5e..6a3e7177e9 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\HTTP\Daemon.pm
+E:\tlperl\site\lib\HTTP\Daemon.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist
index 78da80fb27..b1a8ab9044 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\HTTP\Date.pm
+E:\tlperl\site\lib\HTTP\Date.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist
index 71010b4ecc..09b22f2e9a 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist
@@ -1,10 +1,10 @@
-D:\tlperl\site\lib\HTTP\Config.pm
-D:\tlperl\site\lib\HTTP\Headers.pm
-D:\tlperl\site\lib\HTTP\Headers\Auth.pm
-D:\tlperl\site\lib\HTTP\Headers\ETag.pm
-D:\tlperl\site\lib\HTTP\Headers\Util.pm
-D:\tlperl\site\lib\HTTP\Message.pm
-D:\tlperl\site\lib\HTTP\Request.pm
-D:\tlperl\site\lib\HTTP\Request\Common.pm
-D:\tlperl\site\lib\HTTP\Response.pm
-D:\tlperl\site\lib\HTTP\Status.pm
+E:\tlperl\site\lib\HTTP\Config.pm
+E:\tlperl\site\lib\HTTP\Headers.pm
+E:\tlperl\site\lib\HTTP\Headers\Auth.pm
+E:\tlperl\site\lib\HTTP\Headers\ETag.pm
+E:\tlperl\site\lib\HTTP\Headers\Util.pm
+E:\tlperl\site\lib\HTTP\Message.pm
+E:\tlperl\site\lib\HTTP\Request.pm
+E:\tlperl\site\lib\HTTP\Request\Common.pm
+E:\tlperl\site\lib\HTTP\Response.pm
+E:\tlperl\site\lib\HTTP\Status.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist
index b25f4bacca..68a4a80368 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\HTTP\Negotiate.pm
+E:\tlperl\site\lib\HTTP\Negotiate.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist
index 647eea0824..dbd37f98e3 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\IO\HTML.pm
+E:\tlperl\site\lib\IO\HTML.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/String/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/String/.packlist
index 6e2e1666d0..6c34e39534 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/String/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/IO/String/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\IO\String.pm
+E:\tlperl\site\lib\IO\String.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist
index 1033ee8cca..664b0def44 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\JSON\MaybeXS.pm
+E:\tlperl\site\lib\JSON\MaybeXS.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist
index 1fb51f2710..4b70b3ba38 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist
@@ -1,2 +1,2 @@
-D:\tlperl\site\lib\LWP\MediaTypes.pm
-D:\tlperl\site\lib\LWP\media.types
+E:\tlperl\site\lib\LWP\MediaTypes.pm
+E:\tlperl\site\lib\LWP\media.types
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist
index 7ef7fd51f6..1faa7d92da 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist
@@ -1,5 +1,5 @@
-D:\tlperl\site\lib\Math\Int64.pm
-D:\tlperl\site\lib\Math\Int64\die_on_overflow.pm
-D:\tlperl\site\lib\Math\Int64\native_if_available.pm
-D:\tlperl\site\lib\Math\UInt64.pm
-D:\tlperl\site\lib\auto\Math\Int64\Int64.dll
+E:\tlperl\site\lib\Math\Int64.pm
+E:\tlperl\site\lib\Math\Int64\die_on_overflow.pm
+E:\tlperl\site\lib\Math\Int64\native_if_available.pm
+E:\tlperl\site\lib\Math\UInt64.pm
+E:\tlperl\site\lib\auto\Math\Int64\Int64.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll
index aaade88906..767cb6d060 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist
index a3c007873c..15939f0e26 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist
@@ -1,3 +1,3 @@
-D:\tlperl\site\lib\Mozilla\CA.pm
-D:\tlperl\site\lib\Mozilla\CA\cacert.pem
-D:\tlperl\site\lib\Mozilla\mk-ca-bundle.pl
+E:\tlperl\site\lib\Mozilla\CA.pm
+E:\tlperl\site\lib\Mozilla\CA\cacert.pem
+E:\tlperl\site\lib\Mozilla\mk-ca-bundle.pl
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist
index 5bad66fceb..002dde0575 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist
@@ -1,4 +1,4 @@
-D:\tlperl\site\lib\Net\HTTP.pm
-D:\tlperl\site\lib\Net\HTTPS.pm
-D:\tlperl\site\lib\Net\HTTP\Methods.pm
-D:\tlperl\site\lib\Net\HTTP\NB.pm
+E:\tlperl\site\lib\Net\HTTP.pm
+E:\tlperl\site\lib\Net\HTTPS.pm
+E:\tlperl\site\lib\Net\HTTP\Methods.pm
+E:\tlperl\site\lib\Net\HTTP\NB.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/.packlist
index 2f1d04b340..6d7afb92d1 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/.packlist
@@ -1,2 +1,2 @@
-D:\tlperl\site\lib\Socket.pm
-D:\tlperl\site\lib\auto\Socket\Socket.dll
+E:\tlperl\site\lib\Socket.pm
+E:\tlperl\site\lib\auto\Socket\Socket.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll
index a837f98bbc..106ab2daf4 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist
index 8ad2320ded..30a11b4e85 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\Test\Fatal.pm
+E:\tlperl\site\lib\Test\Fatal.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist
index 98a686ca44..31bdc9e5bd 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\Test\Needs.pm
+E:\tlperl\site\lib\Test\Needs.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist
index e7d736e3b5..b752d66bc1 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\Test\RequiresInternet.pm
+E:\tlperl\site\lib\Test\RequiresInternet.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist
index b101b6e842..e0b49c463a 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist
@@ -1 +1 @@
-D:\tlperl\site\lib\Try\Tiny.pm
+E:\tlperl\site\lib\Try\Tiny.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/URI/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/URI/.packlist
index 7b559a2cc9..26740caa46 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/URI/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/URI/.packlist
@@ -1,53 +1,53 @@
-D:\tlperl\site\lib\URI.pm
-D:\tlperl\site\lib\URI\Escape.pm
-D:\tlperl\site\lib\URI\Heuristic.pm
-D:\tlperl\site\lib\URI\IRI.pm
-D:\tlperl\site\lib\URI\QueryParam.pm
-D:\tlperl\site\lib\URI\Split.pm
-D:\tlperl\site\lib\URI\URL.pm
-D:\tlperl\site\lib\URI\WithBase.pm
-D:\tlperl\site\lib\URI\_foreign.pm
-D:\tlperl\site\lib\URI\_generic.pm
-D:\tlperl\site\lib\URI\_idna.pm
-D:\tlperl\site\lib\URI\_ldap.pm
-D:\tlperl\site\lib\URI\_login.pm
-D:\tlperl\site\lib\URI\_punycode.pm
-D:\tlperl\site\lib\URI\_query.pm
-D:\tlperl\site\lib\URI\_segment.pm
-D:\tlperl\site\lib\URI\_server.pm
-D:\tlperl\site\lib\URI\_userpass.pm
-D:\tlperl\site\lib\URI\data.pm
-D:\tlperl\site\lib\URI\file.pm
-D:\tlperl\site\lib\URI\file\Base.pm
-D:\tlperl\site\lib\URI\file\FAT.pm
-D:\tlperl\site\lib\URI\file\Mac.pm
-D:\tlperl\site\lib\URI\file\OS2.pm
-D:\tlperl\site\lib\URI\file\QNX.pm
-D:\tlperl\site\lib\URI\file\Unix.pm
-D:\tlperl\site\lib\URI\file\Win32.pm
-D:\tlperl\site\lib\URI\ftp.pm
-D:\tlperl\site\lib\URI\gopher.pm
-D:\tlperl\site\lib\URI\http.pm
-D:\tlperl\site\lib\URI\https.pm
-D:\tlperl\site\lib\URI\ldap.pm
-D:\tlperl\site\lib\URI\ldapi.pm
-D:\tlperl\site\lib\URI\ldaps.pm
-D:\tlperl\site\lib\URI\mailto.pm
-D:\tlperl\site\lib\URI\mms.pm
-D:\tlperl\site\lib\URI\news.pm
-D:\tlperl\site\lib\URI\nntp.pm
-D:\tlperl\site\lib\URI\pop.pm
-D:\tlperl\site\lib\URI\rlogin.pm
-D:\tlperl\site\lib\URI\rsync.pm
-D:\tlperl\site\lib\URI\rtsp.pm
-D:\tlperl\site\lib\URI\rtspu.pm
-D:\tlperl\site\lib\URI\sftp.pm
-D:\tlperl\site\lib\URI\sip.pm
-D:\tlperl\site\lib\URI\sips.pm
-D:\tlperl\site\lib\URI\snews.pm
-D:\tlperl\site\lib\URI\ssh.pm
-D:\tlperl\site\lib\URI\telnet.pm
-D:\tlperl\site\lib\URI\tn3270.pm
-D:\tlperl\site\lib\URI\urn.pm
-D:\tlperl\site\lib\URI\urn\isbn.pm
-D:\tlperl\site\lib\URI\urn\oid.pm
+E:\tlperl\site\lib\URI.pm
+E:\tlperl\site\lib\URI\Escape.pm
+E:\tlperl\site\lib\URI\Heuristic.pm
+E:\tlperl\site\lib\URI\IRI.pm
+E:\tlperl\site\lib\URI\QueryParam.pm
+E:\tlperl\site\lib\URI\Split.pm
+E:\tlperl\site\lib\URI\URL.pm
+E:\tlperl\site\lib\URI\WithBase.pm
+E:\tlperl\site\lib\URI\_foreign.pm
+E:\tlperl\site\lib\URI\_generic.pm
+E:\tlperl\site\lib\URI\_idna.pm
+E:\tlperl\site\lib\URI\_ldap.pm
+E:\tlperl\site\lib\URI\_login.pm
+E:\tlperl\site\lib\URI\_punycode.pm
+E:\tlperl\site\lib\URI\_query.pm
+E:\tlperl\site\lib\URI\_segment.pm
+E:\tlperl\site\lib\URI\_server.pm
+E:\tlperl\site\lib\URI\_userpass.pm
+E:\tlperl\site\lib\URI\data.pm
+E:\tlperl\site\lib\URI\file.pm
+E:\tlperl\site\lib\URI\file\Base.pm
+E:\tlperl\site\lib\URI\file\FAT.pm
+E:\tlperl\site\lib\URI\file\Mac.pm
+E:\tlperl\site\lib\URI\file\OS2.pm
+E:\tlperl\site\lib\URI\file\QNX.pm
+E:\tlperl\site\lib\URI\file\Unix.pm
+E:\tlperl\site\lib\URI\file\Win32.pm
+E:\tlperl\site\lib\URI\ftp.pm
+E:\tlperl\site\lib\URI\gopher.pm
+E:\tlperl\site\lib\URI\http.pm
+E:\tlperl\site\lib\URI\https.pm
+E:\tlperl\site\lib\URI\ldap.pm
+E:\tlperl\site\lib\URI\ldapi.pm
+E:\tlperl\site\lib\URI\ldaps.pm
+E:\tlperl\site\lib\URI\mailto.pm
+E:\tlperl\site\lib\URI\mms.pm
+E:\tlperl\site\lib\URI\news.pm
+E:\tlperl\site\lib\URI\nntp.pm
+E:\tlperl\site\lib\URI\pop.pm
+E:\tlperl\site\lib\URI\rlogin.pm
+E:\tlperl\site\lib\URI\rsync.pm
+E:\tlperl\site\lib\URI\rtsp.pm
+E:\tlperl\site\lib\URI\rtspu.pm
+E:\tlperl\site\lib\URI\sftp.pm
+E:\tlperl\site\lib\URI\sip.pm
+E:\tlperl\site\lib\URI\sips.pm
+E:\tlperl\site\lib\URI\snews.pm
+E:\tlperl\site\lib\URI\ssh.pm
+E:\tlperl\site\lib\URI\telnet.pm
+E:\tlperl\site\lib\URI\tn3270.pm
+E:\tlperl\site\lib\URI\urn.pm
+E:\tlperl\site\lib\URI\urn\isbn.pm
+E:\tlperl\site\lib\URI\urn\oid.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist
index 5d6442b9ba..25db7235d5 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist
@@ -1,2 +1,2 @@
-D:\tlperl\site\lib\WWW\RobotRules.pm
-D:\tlperl\site\lib\WWW\RobotRules\AnyDBM_File.pm
+E:\tlperl\site\lib\WWW\RobotRules.pm
+E:\tlperl\site\lib\WWW\RobotRules\AnyDBM_File.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist
index d567f9d28f..66ecb127f4 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist
@@ -1,7 +1,7 @@
-D:\tlperl\site\lib\Win32\API.pm
-D:\tlperl\site\lib\Win32\API\Callback.pm
-D:\tlperl\site\lib\Win32\API\Callback\IATPatch.pod
-D:\tlperl\site\lib\Win32\API\Struct.pm
-D:\tlperl\site\lib\Win32\API\Type.pm
-D:\tlperl\site\lib\auto\Win32\API\API.dll
-D:\tlperl\site\lib\auto\Win32\API\Callback\Callback.dll
+E:\tlperl\site\lib\Win32\API.pm
+E:\tlperl\site\lib\Win32\API\Callback.pm
+E:\tlperl\site\lib\Win32\API\Callback\IATPatch.pod
+E:\tlperl\site\lib\Win32\API\Struct.pm
+E:\tlperl\site\lib\Win32\API\Type.pm
+E:\tlperl\site\lib\auto\Win32\API\API.dll
+E:\tlperl\site\lib\auto\Win32\API\Callback\Callback.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll
index c166b53f2b..b660a88fa2 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll
index 1c5d512350..75e5eac2bf 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist
index 2ea80397bd..e1b52bc9cd 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist
@@ -1,2 +1,2 @@
-D:\tlperl\site\lib\Win32\Console.pm
-D:\tlperl\site\lib\auto\Win32\Console\Console.dll
+E:\tlperl\site\lib\Win32\Console.pm
+E:\tlperl\site\lib\auto\Win32\Console\Console.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll
index 42c6a717c1..325d592fac 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist
index a18c87682c..4adf837270 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist
@@ -1,2 +1,2 @@
-D:\tlperl\site\lib\Win32\Shortcut.pm
-D:\tlperl\site\lib\auto\Win32\Shortcut\Shortcut.dll
+E:\tlperl\site\lib\Win32\Shortcut.pm
+E:\tlperl\site\lib\auto\Win32\Shortcut\Shortcut.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll
index e053bb72ca..d5038629b9 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist
index 34633f64e3..e9917b3014 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist
@@ -1,2 +1,2 @@
-D:\tlperl\site\lib\Tie\Registry.pm
-D:\tlperl\site\lib\Win32\TieRegistry.pm
+E:\tlperl\site\lib\Tie\Registry.pm
+E:\tlperl\site\lib\Win32\TieRegistry.pm
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist
index 3e88e7530b..2c7650348d 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist
@@ -1,3 +1,3 @@
-D:\tlperl\site\lib\Win32API\Registry.pm
-D:\tlperl\site\lib\Win32API\Registry\cRegistry.pc
-D:\tlperl\site\lib\auto\Win32API\Registry\Registry.dll
+E:\tlperl\site\lib\Win32API\Registry.pm
+E:\tlperl\site\lib\Win32API\Registry\cRegistry.pc
+E:\tlperl\site\lib\auto\Win32API\Registry\Registry.dll
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll
index 8d1d2a0545..c46c18c2ad 100755
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist
index 37441f8705..2089a5a254 100644
--- a/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist
+++ b/systems/texlive/tlnet/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist
@@ -1,33 +1,33 @@
-D:\tlperl\bin\lwp-download
-D:\tlperl\bin\lwp-download.bat
-D:\tlperl\bin\lwp-dump
-D:\tlperl\bin\lwp-dump.bat
-D:\tlperl\bin\lwp-mirror
-D:\tlperl\bin\lwp-mirror.bat
-D:\tlperl\bin\lwp-request
-D:\tlperl\bin\lwp-request.bat
-D:\tlperl\site\lib\LWP.pm
-D:\tlperl\site\lib\LWP\Authen\Basic.pm
-D:\tlperl\site\lib\LWP\Authen\Digest.pm
-D:\tlperl\site\lib\LWP\Authen\Ntlm.pm
-D:\tlperl\site\lib\LWP\ConnCache.pm
-D:\tlperl\site\lib\LWP\Debug.pm
-D:\tlperl\site\lib\LWP\DebugFile.pm
-D:\tlperl\site\lib\LWP\Debug\TraceHTTP.pm
-D:\tlperl\site\lib\LWP\MemberMixin.pm
-D:\tlperl\site\lib\LWP\Protocol.pm
-D:\tlperl\site\lib\LWP\Protocol\cpan.pm
-D:\tlperl\site\lib\LWP\Protocol\data.pm
-D:\tlperl\site\lib\LWP\Protocol\file.pm
-D:\tlperl\site\lib\LWP\Protocol\ftp.pm
-D:\tlperl\site\lib\LWP\Protocol\gopher.pm
-D:\tlperl\site\lib\LWP\Protocol\http.pm
-D:\tlperl\site\lib\LWP\Protocol\loopback.pm
-D:\tlperl\site\lib\LWP\Protocol\mailto.pm
-D:\tlperl\site\lib\LWP\Protocol\nntp.pm
-D:\tlperl\site\lib\LWP\Protocol\nogo.pm
-D:\tlperl\site\lib\LWP\RobotUA.pm
-D:\tlperl\site\lib\LWP\Simple.pm
-D:\tlperl\site\lib\LWP\UserAgent.pm
-D:\tlperl\site\lib\libwww\lwpcook.pod
-D:\tlperl\site\lib\libwww\lwptut.pod
+E:\tlperl\bin\lwp-download
+E:\tlperl\bin\lwp-download.bat
+E:\tlperl\bin\lwp-dump
+E:\tlperl\bin\lwp-dump.bat
+E:\tlperl\bin\lwp-mirror
+E:\tlperl\bin\lwp-mirror.bat
+E:\tlperl\bin\lwp-request
+E:\tlperl\bin\lwp-request.bat
+E:\tlperl\site\lib\LWP.pm
+E:\tlperl\site\lib\LWP\Authen\Basic.pm
+E:\tlperl\site\lib\LWP\Authen\Digest.pm
+E:\tlperl\site\lib\LWP\Authen\Ntlm.pm
+E:\tlperl\site\lib\LWP\ConnCache.pm
+E:\tlperl\site\lib\LWP\Debug.pm
+E:\tlperl\site\lib\LWP\DebugFile.pm
+E:\tlperl\site\lib\LWP\Debug\TraceHTTP.pm
+E:\tlperl\site\lib\LWP\MemberMixin.pm
+E:\tlperl\site\lib\LWP\Protocol.pm
+E:\tlperl\site\lib\LWP\Protocol\cpan.pm
+E:\tlperl\site\lib\LWP\Protocol\data.pm
+E:\tlperl\site\lib\LWP\Protocol\file.pm
+E:\tlperl\site\lib\LWP\Protocol\ftp.pm
+E:\tlperl\site\lib\LWP\Protocol\gopher.pm
+E:\tlperl\site\lib\LWP\Protocol\http.pm
+E:\tlperl\site\lib\LWP\Protocol\loopback.pm
+E:\tlperl\site\lib\LWP\Protocol\mailto.pm
+E:\tlperl\site\lib\LWP\Protocol\nntp.pm
+E:\tlperl\site\lib\LWP\Protocol\nogo.pm
+E:\tlperl\site\lib\LWP\RobotUA.pm
+E:\tlperl\site\lib\LWP\Simple.pm
+E:\tlperl\site\lib\LWP\UserAgent.pm
+E:\tlperl\site\lib\libwww\lwpcook.pod
+E:\tlperl\site\lib\libwww\lwptut.pod