diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2013-03-21 09:16:59 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2013-03-21 09:16:59 +0000 |
commit | 388463b9fa865c3b2311508c41647b0f3c532031 (patch) | |
tree | 1cdfbf5552d0783ecbcc52017e49567e5042af33 /Build/source/texk/web2c/luatexdir/luasocket | |
parent | abd0b00a4e8c1ac6f5b20c7474d70ef579129991 (diff) |
Import MetaPost 1.800 and LuaTeX beta-0.75.0 from LuaTeX repository r4604
git-svn-id: svn://tug.org/texlive/trunk@29453 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luasocket')
93 files changed, 5558 insertions, 3593 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/LICENSE b/Build/source/texk/web2c/luatexdir/luasocket/LICENSE index 8c3cfe5bcad..5bd3478897d 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/LICENSE +++ b/Build/source/texk/web2c/luatexdir/luasocket/LICENSE @@ -1,5 +1,5 @@ -LuaSocket 2.0.2 license -Copyright © 2004-2007 Diego Nehab +LuaSocket 2.1 license +Copyright © 2004-2012 Diego Nehab Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff --git a/Build/source/texk/web2c/luatexdir/luasocket/NEW b/Build/source/texk/web2c/luatexdir/luasocket/NEW index 0191ccd500d..76b84487037 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/NEW +++ b/Build/source/texk/web2c/luatexdir/luasocket/NEW @@ -2,13 +2,37 @@ What's New This is just a bug-fix/update release. - * Improved: http.request() now supports deprecated HTTP/0.9 - servers (Florian Berger) - * Fixed: could return "timedout" instead of "timeout" (Leo Leo) - * Fixed: crash when reading '*a' on closed socket (Paul Ducklin); - * Fixed: return values are consistent when reading from closed sockets; - * Fixed: case sensitivity in headers of multipart messages in - smtp.message() (Graham Henstridge); - * Fixed a couple instances of error() being called instead of base.error(). These would cause an error when an error was reported. :) (Ketmar Dark); - * Fixed: test script now uses pairs() iterator instead of the old - Lua syntax (Robert Dodier). + * Fixed: manual sample of HTTP authentication now uses correct + "authorization" header (Alexandre Ittner); + * Fixed: failure on bind() was destroying the socket (Sam Roberts); + * Fixed: receive() returns immediatelly if prefix can satisfy + bytes requested (M Joonas Pihlaja); + * Fixed: multicast didn't work on Windows, or anywhere + else for that matter (Herbert Leuwer, Adrian Sietsma); + * Fixed: select() now reports an error when called with more + sockets than FD_SETSIZE (Lorenzo Leonini); + * Fixed: manual links to home.html changed to index.html (Robert Hahn); + * Fixed: mime.unb64() would return an empty string on results that started + with a null character (Robert Raschke); + * Fixed: HTTP now automatically redirects on 303 and 307 (Jonathan Gray); + * Fixed: calling sleep() with negative numbers could + block forever, wasting CPU. Now it returns immediately (MPB); + * Improved: FTP commands are now sent in upper case to + help buggy servers (Anders Eurenius); + * Improved: known headers now sent in canonic + capitalization to help buggy servers (Joseph Stewart); + * Improved: Clarified tcp:receive() in the manual (MPB); + * Improved: Decent makefiles (LHF). + * Fixed: RFC links in documentation now point to IETF (Cosmin Apreutesei). + + + Yuri's bug? + Dahlberg + Sam Roberts + Thomas Harning Jr. + Sebastien Perin + remove getn in all files + ltn12.pump.all( + ltn12.source.file(io.open("original.png")), + ltn12.sink.file(io.open("copy.png", "wb")) + ) diff --git a/Build/source/texk/web2c/luatexdir/luasocket/README b/Build/source/texk/web2c/luatexdir/luasocket/README index 5d65f882fce..e9dc323bfc6 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/README +++ b/Build/source/texk/web2c/luatexdir/luasocket/README @@ -1,5 +1,5 @@ -This is the LuaSocket 2.0.1. It has been tested on WinXP, Mac OS X, -and Linux. Please use the Lua mailing list to report any bugs +This is the LuaSocket 2.1. It has been tested on --[[WinXP--]], Mac OS X, +and --[[Linux--]]. Please use the Lua mailing list to report any bugs (or "features") you encounter. Have fun, diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html index f4c3b07d2b7..c4a0472e23e 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -39,12 +39,16 @@ <h2 id=dns>DNS</h2> <p> -Name resolution functions return <em>all</em> information obtained from the -resolver in a table of the form: +IPv4 name resolution functions +<a href=#toip><tt>dns.toip</tt></a> +and +<a href=#tohostname><tt>dns.tohostname</tt></a> +return <em>all</em> information obtained from +the resolver in a table of the form: </p> <blockquote><tt> -resolved = {<br> +resolved4 = {<br> name = <i>canonic-name</i>,<br> alias = <i>alias-list</i>,<br> ip = <i>ip-address-list</i><br> @@ -55,6 +59,53 @@ resolved = {<br> Note that the <tt>alias</tt> list can be empty. </p> +<p> +The more general name resolution function +<a href=#getaddrinfo><tt>dns.getaddrinfo</tt></a>, which +supports both IPv6 and IPv4, +returns <em>all</em> information obtained from +the resolver in a table of the form: +</p> + +<blockquote><tt> +resolved6 = {<br> + [1] = {<br> + family = <i>family-name-1</i>,<br> + addr = <i>address-1</i><br> + },<br> + ...<br> + [n] = {<br> + family = <i>family-name-n</i>,<br> + addr = <i>address-n</i><br> + }<br> +} +</tt> </blockquote> + +<p> +Here, <tt>family</tt> contains the string <tt>"inet"</tt> for IPv4 +addresses, and <tt>"inet6"</tt> for IPv6 addresses. +</p> + +<!-- getaddrinfo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class=name id=getaddrinfo> +socket.dns.<b>getaddrinfo(</b>address<b>)</b> +</p> + +<p class=description> +Converts from host name to address. +</p> + +<p class=parameters> +<tt>Address</tt> can be an IPv4 or IPv6 address or host name. +</p> + +<p class=return> +The function returns a table with all information returned by +the resolver. In case of error, the function returns <b><tt>nil</tt></b> +followed by an error message. +</p> + <!-- gethostname ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <p class=name id=gethostname> @@ -72,7 +123,7 @@ socket.dns.<b>tohostname(</b>address<b>)</b> </p> <p class=description> -Converts from IP address to host name. +Converts from IPv4 address to host name. </p> <p class=parameters> @@ -93,7 +144,7 @@ socket.dns.<b>toip(</b>address<b>)</b> </p> <p class=description> -Converts from host name to IP address. +Converts from host name to IPv4 address. </p> <p class=parameters> @@ -113,8 +164,8 @@ message. <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html index 9884f31339d..3f23a4a93cc 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -42,7 +42,7 @@ FTP (File Transfer Protocol) is a protocol used to transfer files between hosts. The <tt>ftp</tt> namespace offers thorough support to FTP, under a simple interface. The implementation conforms to -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc0959.txt">RFC 959</a>. +<a href="http://www.ietf.org/rfc/rfc959.txt">RFC 959</a>. </p> <p> @@ -70,8 +70,8 @@ local ftp = require("socket.ftp") <p> URLs MUST conform to -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc1738.txt">RFC -1738</a>, that is, an URL is a string in the form: +<a href="http://www.ietf.org/rfc/rfc1738.txt">RFC 1738</a>, +that is, an URL is a string in the form: </p> <blockquote> @@ -270,8 +270,8 @@ f, e = ftp.put{ <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/http.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/http.html index 0acac13feec..cd41c0ddb9e 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/http.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/http.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="introduction.html">introduction</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -36,7 +36,7 @@ <!-- http +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<h2 id=http>HTTP</h2> +<h2 id="http">HTTP</h2> <p> HTTP (Hyper Text Transfer Protocol) is the protocol used to exchange @@ -45,8 +45,7 @@ namespace offers full support for the client side of the HTTP protocol (i.e., the facilities that would be used by a web-browser implementation). The implementation conforms to the HTTP/1.1 standard, -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2616.txt">RFC -2616</a>. +<a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>. </p> <p> @@ -67,8 +66,7 @@ local http = require("socket.http") <p> URLs must conform to -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc1738.txt">RFC -1738</a>, +<a href="http://www.ietf.org/rfc/rfc1738.txt">RFC 1738</a>, that is, an URL is a string in the form: </p> @@ -97,8 +95,9 @@ headers = {<br> </blockquote> <p> -Field names are case insensitive (as specified by the standard) and all -functions work with lowercase field names. +Field names are case insensitive (as specified by the standard) and all +functions work with lowercase field names (but see +<a href=socket.html#headers.canonic><tt>socket.headers.canonic</tt></a>). Field values are left unmodified. </p> @@ -119,9 +118,10 @@ the HTTP module: <li> <tt>USERAGENT</tt>: default user agent reported to server. </ul> + <!-- http.request ++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=request> +<p class=name id="request"> http.<b>request(</b>url [, body]<b>)</b><br> http.<b>request{</b><br> url = <i>string</i>,<br> @@ -199,8 +199,7 @@ it usually returns a message body (a web page informing the URL was not found or some other useless page). To make sure the operation was successful, check the returned status <tt>code</tt>. For a list of the possible values and their meanings, refer to <a -href="http://www.cs.princeton.edu/~diego/rfc/rfc2616.txt">RFC -2616</a>. +href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>. </p> <p class=description> @@ -259,7 +258,7 @@ r, c, h = http.request { -- } </pre> -<p class=note id=post> +<p class=note id="post"> Note: When sending a POST request, simple interface adds a "<tt>Content-type: application/x-www-form-urlencoded</tt>" header to the request. This is the type used by @@ -267,7 +266,7 @@ HTML forms. If you need another type, use the generic interface. </p> -<p class=note id=authentication> +<p class=note id="authentication"> Note: Some URLs are protected by their servers from anonymous download. For those URLs, the server must receive some sort of authentication along with the request or it will deny @@ -278,7 +277,7 @@ download and return status "401 Authentication Required". The HTTP/1.1 standard defines two authentication methods: the Basic Authentication Scheme and the Digest Authentication Scheme, both explained in detail in -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2068.txt">RFC 2068</a>. +<a href="http://www.ietf.org/rfc/rfc2068.txt">RFC 2068</a>. </p> <p class=note>The Basic Authentication Scheme sends @@ -304,7 +303,7 @@ b, c, h = http.request("http://fulano:silva@www.example.com/private/index.html") -- the request directly. r, c = http.request { url = "http://www.example.com/private/index.html", - headers = { authentication = "Basic " .. (mime.b64("fulano:silva")) } + headers = { authorization = "Basic " .. (mime.b64("fulano:silva")) } } </pre> @@ -314,8 +313,8 @@ r, c = http.request { <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/index.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/index.html index 57a790714ac..d8ee4a492d2 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/index.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/index.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -78,8 +78,8 @@ LuaSocket. </p> <p> -Copyright © 2004-2007 Diego Nehab. All rights reserved. <br> -Author: <A href="http://www.cs.princeton.edu/~diego">Diego Nehab</a> +Copyright © 1999-2012 Diego Nehab. All rights reserved. <br> +Author: <A href="http://www.impa.br/~diego">Diego Nehab</a> </p> <!-- download +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> @@ -87,25 +87,18 @@ Author: <A href="http://www.cs.princeton.edu/~diego">Diego Nehab</a> <h2 id=download>Download</h2> <p> -LuaSocket version 2.0.2 is now available for download! It is -compatible with Lua 5.1, and has +LuaSocket version 2.1-rc1 is now available for download! +It is compatible with Lua 5.1 and 5.2, and has been tested on Windows XP, Linux, and Mac OS X. Chances are it works well on most UNIX distributions and Windows flavors. </p> <p> The library can be downloaded in source code from the -<a href=http://luaforge.net/projects/luasocket/>LuaSocket -project page</a> at LuaForge. -Besides the full C and Lua source code for the library, the distribution -contains several examples, this user's manual and basic test procedures. -</p> - -<p> -Danilo Tuler is maintaining Win32 binaries for LuaSocket, which are also -available from LuaForge. These are compatible with the -<a href=http://luaforge.net/projects/luabinaries>LuaBinaries</a>, -also available from LuaForge. +<a href="https://github.com/diegonehab/luasocket/downloads">LuaSocket +project page</a> at GitHub. Besides the full C and Lua source code +for the library, the distribution contains several examples, +this user's manual and basic test procedures. </p> <p> Take a look at the <a @@ -118,14 +111,13 @@ manual to find out how to properly install the library. <h2 id=thanks>Special thanks</h2> <p> -Throughout LuaSocket's history, many people gave suggestions that helped -improve it. For that, I thank the Lua community. -Special thanks go to -David Burgess, who has helped push the library to a new level of quality and -from whom I have learned a lot of stuff that doesn't show up in RFCs. -Special thanks also to Carlos Cassino, who played a big part in the -extensible design seen in the C core of LuaSocket 2.0. Mike Pall -has been helping a lot too! Thanks to you all! +This marks the first release of LuaSocket that +wholeheartedly embraces the open-source development +philosophy. After a long hiatus, Matthew Wild finally +convinced me it was time for a release including IPv6 +and Lua 5.2 support. Special thanks to Sam Roberts, Florian +Zeitz, and Paul Aurich, Liam Devine, and everybody else that +has helped bring this library back to life. </p> <!-- whatsnew +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> @@ -133,44 +125,30 @@ has been helping a lot too! Thanks to you all! <h2 id=new>What's New</h2> <p> -2.0.2 is just a bug-fix/update release. +Main changes for LuaSocket 2.1-rc1 are IPv6 support +and Lua 5.2 compatibility. </p> <ul> -<li> Improved: http.request() now supports deprecated -HTTP/0.9 servers (Florian Berger); -<li> Fixed: could return "timedout" instead of "timeout" (Leo Leo); -<li> Fixed: crash when reading '*a' on closed socket (Paul Ducklin); -<li> Fixed: return values are consistent when reading from closed sockets; -<li> Fixed: case sensitivity in headers of multipart -messages in smtp.message() (Graham Henstridge); -<li> Fixed a couple instances of error() being called instead of -base.error(). These would cause an error when an error was -reported :) (Ketmar Dark); -<li> Fixed: test script now uses pairs() iterator instead -of the old Lua syntax (Robert Dodier). -</ul> - -<p> -2.0.1 is just a bug-fix/update release. -</p> - +<li> Added: Compatible with Lua 5.2 (using <tt>LUA_COMPAT_MODULE</tt>); +<li> Added: IPv6 support; <ul> -<li> Updated: now using <tt>compat-5.1r5</tt>; -<li> Improved: <tt>http.request</tt> is more robust to -malformed URLs (Adrian Sietsma); -<li> Improved: the simple <tt>http.request</tt> interface sends a -"<tt>Content-type: application/x-www-form-urlencoded</tt>" -header (William Trenker); -<li> Improved: <tt>http.request</tt> is robust to evil -servers that send inappropriate 100-continue messages -(David Burgess); -<li> Fixed: <tt>http.request</tt> was using the old host header during -redirects (Florian Berger); -<li> Fixed: sample <tt>unix.c</tt> had fallen through the -cracks during development (Matthew Percival); -<li> Fixed: error code was not being propagated correctly in -ftp.lua (David Burgess). +<li> <tt>Socket.connect</tt> and <tt>socket.bind</tt> support IPv6 addresses; +<li> <tt>Getpeername</tt> and <tt>getsockname</tt> support +IPv6 addresses, and return the socket family as a third value; +<li> URL module updated to support IPv6 host names; +<li> New <tt>socket.tcp6</tt> and <tt>socket.udp6</tt> functions; +<li> New <tt>socket.dns.getaddrinfo</tt> function; +</ul> +<li> Added: <tt>getoption</tt> method; +<li> Fixed: <tt>url.unescape</tt> was returning additional values; +<li> Fixed: <tt>mime.qp</tt>, <tt>mime.unqp</tt>, + <tt>mime.b64</tt>, and <tt>mime.unb64</tt> could + mistaking their own stack slots for functions arguments; +<li> Fixed: Receiving zero-length datagram is now possible; +<li> Improved: Hidden all internal library symbols; +<li> Improved: Better error messages; +<li> Improved: Better documentation of socket options. </ul> <!-- old ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> @@ -179,7 +157,7 @@ ftp.lua (David Burgess). <p> All previous versions of the LuaSocket library can be downloaded <a -href="http://www.cs.princeton.edu/~diego/professional/luasocket/old"> +href="http://www.impa.br/~diego/software/luasocket/old"> here</a>. Although these versions are no longer supported, they are still available for those that have compatibility issues. </p> @@ -190,7 +168,7 @@ still available for those that have compatibility issues. <hr> <center> <p class=bar> -<a href="home.html#download">download</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -198,7 +176,7 @@ still available for those that have compatibility issues. <p> <small> Last modified by Diego Nehab on <br> -Wed Oct 3 02:07:59 BRT 2007 +Mon Apr 16 21:58:56 HKT 2012 </small> </p> </center> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html index 0288f4af31a..37c309b5d24 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html @@ -25,8 +25,8 @@ Installation"> </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -39,24 +39,16 @@ Installation"> <h2>Installation</h2> -<p> LuaSocket 2.0.2 uses the new package system for Lua 5.1. -All Lua library developers are encouraged to update their libraries so that -all libraries can coexist peacefully and users can benefit from the -standardization and flexibility of the standard. -</p> - -<p> -Those stuck with Lua 5.0 will need the -<a href=http://www.keplerproject.org/compat/>compat-5.1</a> -module. It is maintained by -<a href=http://www.keplerproject.org/>The Kepler -Project</a>'s team, and implements the Lua 5.1 package proposal -on top of Lua 5.0. </p> +<p> LuaSocket 2.1-rc still uses Lua 5.1's package +system. Users that have already made the switch to +Lua 5.2 should leave the default +<tt>LUA_COMPAT_MODULE</tt> defined when compiling their Lua +distribution for compatibility with LuaSocket. </p> -<p> Here we will only describe the standard distribution. -If the standard doesn't meet your needs, we refer you to the -Lua discussion list, where any question about the package -scheme will likely already have been answered. </p> +<p> Here we describe the standard distribution. If the +standard doesn't meet your needs, we refer you to the Lua +discussion list, where any question about the package scheme +will likely already have been answered. </p> <h3>Directory structure</h3> @@ -64,14 +56,19 @@ scheme will likely already have been answered. </p> directories, one for system dependent files, and another for system independent files. Let's call these directories <tt><CDIR></tt> and <tt><LDIR></tt>, respectively. -For instance, in my laptop, I use '<tt>/usr/local/lib/lua/5.0</tt>' for -<tt><CDIR></tt> and '<tt>/usr/local/share/lua/5.0</tt>' for -<tt><LDIR></tt>. On Windows, sometimes only one directory is used, say -'<tt>c:\program files\lua\5.0</tt>'. Here is the standard LuaSocket +For example, in my laptp, Lua 5.1 is configured to +use '<tt>/usr/local/lib/lua/5.1</tt>' for +<tt><CDIR></tt> and '<tt>/usr/local/share/lua/5.1</tt>' for +<tt><LDIR></tt>. On Windows, <tt><CDIR></tt> +usually points to the directory where the Lua executable is +found, and <tt><LDIR></tt> points to a +<tt>lua/</tt> directory inside <tt><CDIR></tt>. (These +settings can be overridden by environment variables +<tt>LUA_PATH</tt> and <tt>LUA_CPATH</tt>. See the Lua +documentation for details.) Here is the standard LuaSocket distribution directory structure:</p> <pre class=example> -<LDIR>/compat-5.1.lua <LDIR>/ltn12.lua <LDIR>/socket.lua <CDIR>/socket/core.dll @@ -88,33 +85,6 @@ distribution directory structure:</p> would be replaced by <tt>core.so</tt>. </p> -<p> In order for the interpreter to find all LuaSocket components, three -environment variables need to be set. The first environment variable tells -the interpreter to load the <tt>compat-5.1.lua</tt> module at startup: </p> - -<pre class=example> -LUA_INIT=@<LDIR>/compat-5.1.lua -</pre> - -<p> -This is only need for Lua 5.0! Lua 5.1 comes with -the package system built in, of course. -</p> - -<p> -The other two environment variables instruct the compatibility module to -look for dynamic libraries and extension modules in the appropriate -directories and with the appropriate filename extensions. -</p> - -<pre class=example> -LUA_PATH=<LDIR>/?.lua;?.lua -LUA_CPATH=<CDIR>/?.dll;?.dll -</pre> - -<p> Again, naturally, on Unix systems the shared library extension would be -<tt>.so</tt> instead of <tt>.dll</tt>.</p> - <h3>Using LuaSocket</h3> <p> With the above setup, and an interpreter with shared library support, @@ -122,19 +92,19 @@ it should be easy to use LuaSocket. Just fire the interpreter and use the <tt>require</tt> function to gain access to whatever module you need:</p> <pre class=example> -Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio +Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio > socket = require("socket") > print(socket._VERSION) ---> LuaSocket 2.0.2 +--> LuaSocket 2.1-rc1 </pre> <p> Each module loads their dependencies automatically, so you only need to load the modules you directly depend upon: </p> <pre class=example> -Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio +Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio > http = require("socket.http") -> print(http.request("http://www.cs.princeton.edu/~diego/professional/luasocket")) +> print(http.request("http://www.impa.br/~diego/software/luasocket")) --> homepage gets dumped to terminal </pre> @@ -144,8 +114,8 @@ Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -153,7 +123,7 @@ Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio <p> <small> Last modified by Diego Nehab on <br> -Thu Apr 20 00:25:30 EDT 2006 +Mon Apr 16 21:01:42 HKT 2012 </small> </p> </center> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html index eff63676750..fd22f483deb 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html @@ -25,8 +25,8 @@ Library, Support"> </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -314,8 +314,8 @@ and many others are covered by the <a href=reference.html>reference manual</a>. <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html index 001395030af..7e2f49a8c4c 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html @@ -25,8 +25,8 @@ Pump, Support, Library"> </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -411,8 +411,8 @@ Creates and returns a source that produces the contents of a <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html index d7faf52cbcb..ae136fd85d1 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -44,11 +44,11 @@ content transfer encodings, such as Base64 and Quoted-Printable. It also provides functions to break text into lines and change the end-of-line convention. MIME is described mainly in -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2045.txt">RFC 2045</a>, -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2046.txt">2046</a>, -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2047.txt">2047</a>, -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2047.txt">2048</a>, and -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2048.txt">2049</a>. +<a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>, +<a href="http://www.ietf.org/rfc/rfc2046.txt">2046</a>, +<a href="http://www.ietf.org/rfc/rfc2047.txt">2047</a>, +<a href="http://www.ietf.org/rfc/rfc2047.txt">2048</a>, and +<a href="http://www.ietf.org/rfc/rfc2048.txt">2049</a>. </p> <p> @@ -457,8 +457,8 @@ marker. <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html index b329f57f58b..e9bb5eb6fcc 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html @@ -25,8 +25,8 @@ Support, Manual"> </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -42,9 +42,10 @@ Support, Manual"> <blockquote> <a href="dns.html">DNS (in socket)</a> <blockquote> -<a href="dns.html#toip">toip</a>, +<a href="dns.html#getaddrinfo">getaddrinfo</a>, +<a href="dns.html#gethostname">gethostname</a>, <a href="dns.html#tohostname">tohostname</a>, -<a href="dns.html#gethostname">gethostname</a>. +<a href="dns.html#toip">toip</a>. </blockquote> </blockquote> @@ -108,9 +109,9 @@ Support, Manual"> <a href="mime.html">MIME</a> <blockquote> <a href="mime.html#high">high-level</a>: -<a href="mime.html#normalize">normalize</a>, <a href="mime.html#decode">decode</a>, <a href="mime.html#encode">encode</a>, +<a href="mime.html#normalize">normalize</a>, <a href="mime.html#stuff">stuff</a>, <a href="mime.html#wrap">wrap</a>. </blockquote> @@ -120,10 +121,10 @@ Support, Manual"> <a href="mime.html#dot">dot</a>, <a href="mime.html#eol">eol</a>, <a href="mime.html#qp">qp</a>, -<a href="mime.html#wrp">wrp</a>, -<a href="mime.html#qpwrp">qpwrp</a>. +<a href="mime.html#qpwrp">qpwrp</a>, <a href="mime.html#unb64">unb64</a>, <a href="mime.html#unqp">unqp</a>, +<a href="mime.html#wrp">wrp</a>. </blockquote> </blockquote> @@ -142,19 +143,27 @@ Support, Manual"> <blockquote> <a href="socket.html">Socket</a> <blockquote> +<a href="socket.html#bind">bind</a>, +<a href="socket.html#connect">connect</a>, +<a href="socket.html#connect">connect4</a>, +<a href="socket.html#connect">connect6</a>, <a href="socket.html#debug">_DEBUG</a>, <a href="dns.html#dns">dns</a>, <a href="socket.html#gettime">gettime</a>, +<a href="socket.html#headers.canonic">headers.canonic</a>, <a href="socket.html#newtry">newtry</a>, <a href="socket.html#protect">protect</a>, <a href="socket.html#select">select</a>, <a href="socket.html#sink">sink</a>, <a href="socket.html#skip">skip</a>, <a href="socket.html#sleep">sleep</a>, +<a href="socket.html#setsize">_SETSIZE</a>, <a href="socket.html#source">source</a>, -<a href="tcp.html#tcp">tcp</a>, +<a href="tcp.html#socket.tcp">tcp</a>, +<a href="tcp.html#socket.tcp6">tcp6</a>, <a href="socket.html#try">try</a>, -<a href="udp.html#udp">udp</a>, +<a href="udp.html#socket.udp">udp</a>, +<a href="udp.html#socket.udp6">udp6</a>, <a href="socket.html#version">_VERSION</a>. </blockquote> </blockquote> @@ -168,11 +177,16 @@ Support, Manual"> <a href="tcp.html#bind">bind</a>, <a href="tcp.html#close">close</a>, <a href="tcp.html#connect">connect</a>, +<a href="tcp.html#dirty">dirty</a>, +<a href="tcp.html#getfd">getfd</a>, +<a href="tcp.html#getoption">getoption</a>, <a href="tcp.html#getpeername">getpeername</a>, <a href="tcp.html#getsockname">getsockname</a>, <a href="tcp.html#getstats">getstats</a>, +<a href="tcp.html#listen">listen</a>, <a href="tcp.html#receive">receive</a>, <a href="tcp.html#send">send</a>, +<a href="tcp.html#setfd">setfd</a>, <a href="tcp.html#setoption">setoption</a>, <a href="tcp.html#setstats">setstats</a>, <a href="tcp.html#settimeout">settimeout</a>, @@ -186,6 +200,7 @@ Support, Manual"> <a href="udp.html">UDP (in socket)</a> <blockquote> <a href="udp.html#close">close</a>, +<a href="udp.html#getoption">getoption</a>, <a href="udp.html#getpeername">getpeername</a>, <a href="udp.html#getsockname">getsockname</a>, <a href="udp.html#receive">receive</a>, @@ -220,8 +235,8 @@ Support, Manual"> <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html index 27dd4736b4b..bbbff8047b9 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html @@ -25,8 +25,8 @@ Library, Support"> </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -48,14 +48,13 @@ control (if you bother to read the code). </p> <p>The implementation conforms to the Simple Mail Transfer Protocol, -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2821.txt">RFC 2821</a>. +<a href="http://www.ietf.org/rfc/rfc2821.txt">RFC 2821</a>. Another RFC of interest is <a -href="http://www.cs.princeton.edu/~diego/rfc/rfc2822.txt">RFC 2822</a>, +href="http://www.ietf.org/rfc/rfc2822.txt">RFC 2822</a>, which governs the Internet Message Format. Multipart messages (those that contain attachments) are part of the MIME standard, but described mainly -in <a href="http://www.cs.princeton.edu/~diego/rfc/rfc2046.txt">RFC -2046</a> +in <a href="http://www.ietf.org/rfc/rfc2046.txt">RFC 2046</a> <p> In the description below, good understanding of <a href="http://lua-users.org/wiki/FiltersSourcesAndSinks"> LTN012, Filters @@ -91,8 +90,9 @@ headers = {<br> </blockquote> <p> -Field names are case insensitive (as specified by the standard) and all -functions work with lowercase field names. +Field names are case insensitive (as specified by the standard) and all +functions work with lowercase field names (but see +<a href=socket.html#headers.canonic><tt>socket.headers.canonic</tt></a>). Field values are left unmodified. </p> @@ -196,7 +196,7 @@ part of the message and will not be sent to anyone. </p> <p class=note> -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2822.txt">RFC 2822</a> +<a href="http://www.ietf.org/rfc/rfc2822.txt">RFC 2822</a> has two <em>important and short</em> sections, "3.6.3. Destination address fields" and "5. Security considerations", explaining the proper use of these headers. Here is a summary of what it says: @@ -236,9 +236,9 @@ exactly what you <em>don't</em> want to happen! <p class=note> I hope this clarifies the issue. Otherwise, please refer to -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2821.txt">RFC 2821</a> +<a href="http://www.ietf.org/rfc/rfc2821.txt">RFC 2821</a> and -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2822.txt">RFC 2822</a>. +<a href="http://www.ietf.org/rfc/rfc2822.txt">RFC 2822</a>. </p> <pre class=example> @@ -398,8 +398,8 @@ r, e = smtp.send{ <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html index ba4b7303e32..b9303cb505a 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -73,14 +73,19 @@ set to <tt><b>true</b></tt>. <!-- connect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <p class=name id=connect> -socket.<b>connect(</b>address, port [, locaddr, locport]<b>)</b> +socket.<b>connect[46](</b>address, port [, locaddr] [, locport] [, family]<b>)</b> </p> <p class=description> This function is a shortcut that creates and returns a TCP client object -connected to a remote <tt>host</tt> at a given <tt>port</tt>. Optionally, +connected to a remote <tt>address</tt> at a given <tt>port</tt>. Optionally, the user can also specify the local address and port to bind -(<tt>locaddr</tt> and <tt>locport</tt>). +(<tt>locaddr</tt> and <tt>locport</tt>), or restrict the socket family +to "<tt>inet</tt>" or "<tt>inet6</tt>". +Without specifying <tt>family</tt> to <tt>connect</tt>, whether a tcp or tcp6 +connection is created depends on your system configuration. Two variations +of connect are defined as simple helper functions that restrict the +<tt>family</tt>, <tt>socket.connect4</tt> and <tt>socket.connect6</tt>. </p> <!-- debug ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> @@ -94,6 +99,47 @@ This constant is set to <tt><b>true</b></tt> if the library was compiled with debug support. </p> +<!-- get time +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class=name id=gettime> +socket.<b>gettime()</b> +</p> + +<p class=description> +Returns the time in seconds, relative to the origin of the +universe. You should subtract the values returned by this function +to get meaningful values. +</p> + +<pre class=example> +t = socket.gettime() +-- do stuff +print(socket.gettime() - t .. " seconds elapsed") +</pre> + +<!-- socket.headers ++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class=name id="headers.canonic"> +socket.headers.<b>canonic</b></p> + +<p> The <tt>socket.headers.canonic</tt> table +is used by the HTTP and SMTP modules to translate from +lowercase field names back into their canonic +capitalization. When a lowercase field name exists as a key +in this table, the associated value is substituted in +whenever the field name is sent out. +</p> + +<p> +You can obtain the <tt>headers</tt> namespace if case run-time +modifications are required by running: +</p> + +<pre class=example> +-- loads the headers module +local headers = require("headers") +</pre> + <!-- newtry +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <p class=name id=newtry> @@ -200,6 +246,15 @@ changed status. </p> <p class=note> +<b>Note: </b>: <tt>select</tt> can monitor a limited number +of sockets, as defined by the constant <tt>socket._SETSIZE</tt>. This +number may be as high as 1024 or as low as 64 by default, +depending on the system. It is usually possible to change this +at compile time. Invoking <tt>select</tt> with a larger +number of sockets will raise an error. +</p> + +<p class=note> <b>Important note</b>: a known bug in WinSock causes <tt>select</tt> to fail on non-blocking TCP sockets. The function may return a socket as writable even though the socket is <em>not</em> ready for sending. @@ -217,6 +272,10 @@ method or <tt>accept</tt> might block forever. it to <tt>select</tt>, it will be ignored. </p> +<p class=note> +<b>Using select with non-socket objects</b>: Any object that implements <tt>getfd</tt> and <tt>dirty</tt> can be used with <tt>select</tt>, allowing objects from other libraries to be used within a <tt>socket.select</tt> driven loop. +</p> + <!-- sink ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <p class=name id=sink> @@ -288,7 +347,8 @@ Freezes the program execution during a given amount of time. </p> <p class=parameters> -<tt>Time</tt> is the number of seconds to sleep for. +<tt>Time</tt> is the number of seconds to sleep for. If +<tt>time</tt> is negative, the function returns immediately. </p> <!-- source +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> @@ -323,24 +383,17 @@ side closes the connection. The function returns a source with the appropriate behavior. </p> -<!-- time ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> +<!-- setsize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=gettime> -socket.<b>gettime()</b> +<p class=name id=setsize> +socket.<b>_SETSIZE</b> </p> <p class=description> -Returns the time in seconds, relative to the origin of the -universe. You should subtract the values returned by this function -to get meaningful values. +The maximum number of sockets that the <a +href=#select><tt>select</tt></a> function can handle. </p> -<pre class=example> -t = socket.gettime() --- do stuff -print(socket.gettime() - t .. " seconds elapsed") -</pre> - <!-- try ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <p class=name id=try> @@ -385,8 +438,8 @@ This constant has a string describing the current LuaSocket version. <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html index a16a09ed538..151a4c993c1 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -36,16 +36,16 @@ <!-- tcp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<h2 id=tcp>TCP</h2> +<h2 id="tcp">TCP</h2> <!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=socket.tcp> +<p class=name id="socket.tcp"> socket.<b>tcp()</b> </p> <p class=description> -Creates and returns a TCP master object. A master object can +Creates and returns an IPv4 TCP master object. A master object can be transformed into a server object with the method <a href=#listen><tt>listen</tt></a> (after a call to <a href=#bind><tt>bind</tt></a>) or into a client object with @@ -58,9 +58,34 @@ In case of success, a new master object is returned. In case of error, <b><tt>nil</tt></b> is returned, followed by an error message. </p> +<!-- socket.tcp6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class=name id="socket.tcp6"> +socket.<b>tcp6()</b> +</p> + +<p class=description> +Creates and returns an IPv6 TCP master object. A master object can +be transformed into a server object with the method +<a href=#listen><tt>listen</tt></a> (after a call to <a +href=#bind><tt>bind</tt></a>) or into a client object with +the method <a href=#connect><tt>connect</tt></a>. The only other +method supported by a master object is the +<a href=#close><tt>close</tt></a> method.</p> + +<p class=return> +In case of success, a new master object is returned. In case of error, +<b><tt>nil</tt></b> is returned, followed by an error message. +</p> + +<p class=note> +Note: The TCP object returned will have the option +"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>. +</p> + <!-- accept +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=accept> +<p class=name id="accept"> server:<b>accept()</b> </p> @@ -87,7 +112,7 @@ might block until <em>another</em> client shows up. <!-- bind +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=bind> +<p class=name id="bind"> master:<b>bind(</b>address, port<b>)</b> </p> @@ -100,7 +125,9 @@ local host. <tt>Port</tt> must be an integer number in the range [0..64K). If <tt>address</tt> is '<tt>*</tt>', the system binds to all local interfaces -using the <tt>INADDR_ANY</tt> constant. If <tt>port</tt> is 0, the system automatically +using the <tt>INADDR_ANY</tt> constant or +<tt>IN6ADDR_ANY_INIT</tt>, according to the family. +If <tt>port</tt> is 0, the system automatically chooses an ephemeral port. </p> @@ -116,7 +143,7 @@ is available and is a shortcut for the creation of server sockets. <!-- close ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=close> +<p class=name id="close"> master:<b>close()</b><br> client:<b>close()</b><br> server:<b>close()</b> @@ -139,7 +166,7 @@ automatically closed before destruction, though. <!-- connect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=connect> +<p class=name id="connect"> master:<b>connect(</b>address, port<b>)</b> </p> @@ -180,9 +207,18 @@ href=socket.html#select><tt>socket.select</tt></a> with the socket in the established. </p> +<p class=note> +Note: Starting with LuaSocket 2.1, the host name resolution +depends on whether the socket was created by <a +href=#socket.tcp><tt>socket.tcp</tt></a> or <a +href=#socket.tcp6><tt>socket.tcp6</tt></a>. Addresses from +the appropriate family are tried in succession until the +first success or until the last failure. +</p> + <!-- getpeername ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=getpeername> +<p class=name id="getpeername"> client:<b>getpeername()</b> </p> @@ -191,8 +227,9 @@ Returns information about the remote side of a connected client object. </p> <p class=return> -Returns a string with the IP address of the peer, followed by the -port number that peer is using for the connection. +Returns a string with the IP address of the peer, the +port number that peer is using for the connection, +and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>"). In case of error, the method returns <b><tt>nil</tt></b>. </p> @@ -202,7 +239,7 @@ Note: It makes no sense to call this method on server objects. <!-- getsockname ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=getsockname> +<p class=name id="getsockname"> master:<b>getsockname()</b><br> client:<b>getsockname()</b><br> server:<b>getsockname()</b> @@ -213,13 +250,15 @@ Returns the local address information associated to the object. </p> <p class=return> -The method returns a string with local IP address and a number with -the port. In case of error, the method returns <b><tt>nil</tt></b>. +The method returns a string with local IP address, a number with +the local port, +and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>"). +In case of error, the method returns <b><tt>nil</tt></b>. </p> <!-- getstats +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=getstats> +<p class=name id="getstats"> master:<b>getstats()</b><br> client:<b>getstats()</b><br> server:<b>getstats()</b><br> @@ -237,7 +276,7 @@ and the age of the socket object in seconds. <!-- listen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=listen> +<p class=name id="listen"> master:<b>listen(</b>backlog<b>)</b> </p> @@ -265,7 +304,7 @@ method returns <b><tt>nil</tt></b> followed by an error message. <!-- receive ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=receive> +<p class=name id="receive"> client:<b>receive(</b>[pattern [, prefix]]<b>)</b> </p> @@ -297,12 +336,12 @@ of any received data before return. <p class=return> If successful, the method returns the received pattern. In case of error, -the method returns <tt><b>nil</b></tt> followed by an error message which -can be the string '<tt>closed</tt>' in case the connection was +the method returns <tt><b>nil</b></tt> followed by an error +message, followed by a (possibly empty) string containing +the partial that was received. The error message can be +the string '<tt>closed</tt>' in case the connection was closed before the transmission was completed or the string '<tt>timeout</tt>' in case there was a timeout during the operation. -Also, after the error message, the function returns the partial result of -the transmission. </p> <p class=note> @@ -316,7 +355,7 @@ too. <!-- send +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=send> +<p class=name id="send"> client:<b>send(</b>data [, i [, j]]<b>)</b> </p> @@ -354,7 +393,7 @@ instead of calling the method several times. <!-- setoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=setoption> +<p class=name id="setoption"> client:<b>setoption(</b>option [, value]<b>)</b><br> server:<b>setoption(</b>option [, value]<b>)</b> </p> @@ -392,21 +431,53 @@ used in validating addresses supplied in a call to <a href=#bind><tt>bind</tt></a> should allow reuse of local addresses; <li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt> -disables the Nagle's algorithm for the connection. +disables the Nagle's algorithm for the connection; +<li> '<tt>ipv6-v6only</tt>': +Setting this option to <tt>true</tt> restricts an <tt>inet6</tt> socket to +sending and receiving only IPv6 packets. </ul> <p class=return> -The method returns 1 in case of success, or <b><tt>nil</tt></b> otherwise. +The method returns 1 in case of success, or <b><tt>nil</tt></b> +followed by an error message otherwise. </p> <p class=note> Note: The descriptions above come from the man pages. </p> +<!-- getoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class=name id="getoption"> +client:<b>getoption(</b>option)</b><br> +server:<b>getoption(</b>option)</b> +</p> + +<p class=description> +Gets options for the TCP object. +See <a href=#setoption><tt>setoption</tt></a> for description of the +option names and values. +</p> + +<p class=parameters> +<tt>Option</tt> is a string with the option name. +<ul> + +<li> '<tt>keepalive</tt>' +<li> '<tt>linger</tt>' +<li> '<tt>reuseaddr</tt>' +<li> '<tt>tcp-nodelay</tt>' +</ul> + +<p class=return> +The method returns the option <tt>value</tt> in case of success, or +<b><tt>nil</tt></b> followed by an error message otherwise. +</p> + <!-- setstats +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=setstats> +<p class=name id="setstats"> master:<b>setstats(</b>received, sent, age<b>)</b><br> client:<b>setstats(</b>received, sent, age<b>)</b><br> server:<b>setstats(</b>received, sent, age<b>)</b><br> @@ -429,7 +500,7 @@ The method returns 1 in case of success and <tt><b>nil</b></tt> otherwise. <!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=settimeout> +<p class=name id="settimeout"> master:<b>settimeout(</b>value [, mode]<b>)</b><br> client:<b>settimeout(</b>value [, mode]<b>)</b><br> server:<b>settimeout(</b>value [, mode]<b>)</b> @@ -486,7 +557,7 @@ contained verbs making their imperative nature obvious. <!-- shutdown +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=shutdown> +<p class=name id="shutdown"> client:<b>shutdown(</b>mode<b>)</b><br> </p> @@ -508,14 +579,74 @@ This is the default mode; This function returns 1. </p> +<!-- dirty +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class=name id="dirty"> +master:<b>dirty()</b><br> +client:<b>dirty()</b><br> +server:<b>dirty()</b> +</p> + +<p class=description> +Check the read buffer status. +</p> + +<p class=return> +Returns <tt>true</tt> if there is any data in the read buffer, <tt>false</tt> otherwise. +</p> + +<p class=note> +Note: <b>This is an internal method, any use is unlikely to be portable.</b> +</p> + +<!-- getfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class=name id="getfd"> +master:<b>getfd()</b><br> +client:<b>getfd()</b><br> +server:<b>getfd()</b> +</p> + +<p class=description> +Returns the underling socket descriptor or handle associated to the object. +</p> + +<p class=return> +The descriptor or handle. In case the object has been closed, the return will be -1. +</p> + +<p class=note> +Note: <b>This is an internal method, any use is unlikely to be portable.</b> +</p> + +<!-- setfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class=name id="setfd"> +master:<b>setfd(</b>fd<b>)</b><br> +client:<b>setfd(</b>fd<b>)</b><br> +server:<b>setfd(</b>fd<b>)</b> +</p> + +<p class=description> +Sets the underling socket descriptor or handle associated to the object. The current one is simply replaced, not closed, and no other change to the object state is made. +</p> + +<p class=return> +No return value. +</p> + +<p class=note> +Note: <b>This is an internal method, any use is unlikely to be portable.</b> +</p> + <!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div class=footer> <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html index 688649decb9..554fa317688 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -37,7 +37,7 @@ <!-- udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<h2 id=udp>UDP</h2> +<h2 id="udp">UDP</h2> <!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> @@ -46,10 +46,12 @@ socket.<b>udp()</b> </p> <p class="description"> -Creates and returns an unconnected UDP object. Unconnected objects support the +Creates and returns an unconnected IPv4 UDP object. +Unconnected objects support the <a href="#sendto"><tt>sendto</tt></a>, <a href="#receive"><tt>receive</tt></a>, <a href="#receivefrom"><tt>receivefrom</tt></a>, +<a href="#getoption"><tt>getoption</tt></a>, <a href="#getsockname"><tt>getsockname</tt></a>, <a href="#setoption"><tt>setoption</tt></a>, <a href="#settimeout"><tt>settimeout</tt></a>, @@ -66,6 +68,44 @@ returned. In case of error, <b><tt>nil</tt></b> is returned, followed by an error message. </p> +<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class="name" id="socket.udp6"> +socket.<b>udp6()</b> +</p> + +<p class="description"> +Creates and returns an unconnected IPv6 UDP object. +Unconnected objects support the +<a href="#sendto"><tt>sendto</tt></a>, +<a href="#receive"><tt>receive</tt></a>, +<a href="#receivefrom"><tt>receivefrom</tt></a>, +<a href="#getoption"><tt>getoption</tt></a>, +<a href="#getsockname"><tt>getsockname</tt></a>, +<a href="#setoption"><tt>setoption</tt></a>, +<a href="#settimeout"><tt>settimeout</tt></a>, +<a href="#setpeername"><tt>setpeername</tt></a>, +<a href="#setsockname"><tt>setsockname</tt></a>, and +<a href="#close"><tt>close</tt></a>. +The <a href="#setpeername"><tt>setpeername</tt></a> +is used to connect the object. +</p> + +<p class="return"> +In case of success, a new unconnected UDP object +returned. In case of error, <b><tt>nil</tt></b> is returned, followed by +an error message. +</p> + +<p class=note> +Note: The TCP object returned will have the option +"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>. +</p> + + + +<!-- close +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + <!-- close +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <p class="name" id="close"> @@ -100,8 +140,12 @@ Retrieves information about the peer associated with a connected UDP object. </p> -<p class="return"> -Returns the IP address and port number of the peer. + +<p class=return> +Returns a string with the IP address of the peer, the +port number that peer is using for the connection, +and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>"). +In case of error, the method returns <b><tt>nil</tt></b>. </p> <p class="note"> @@ -119,10 +163,12 @@ unconnected:<b>getsockname()</b> Returns the local address information associated to the object. </p> -<p class="return"> -The method returns a string with local IP -address and a number with the port. In case of error, the method -returns <b><tt>nil</tt></b>. + +<p class=return> +The method returns a string with local IP address, a number with +the local port, +and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>"). +In case of error, the method returns <b><tt>nil</tt></b>. </p> <p class="note"> @@ -177,6 +223,40 @@ address and port as extra return values (and is therefore slightly less efficient). </p> +<!-- getoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> + +<p class="name" id="getoption"> +connected:<b>getoption()</b><br> +unconnected:<b>getoption()</b> +</p> + +<p class="description"> +Gets an option value from the UDP object. +See <a href=#setoption><tt>setoption</tt></a> for +description of the option names and values. +</p> + +<p class="parameters"><tt>Option</tt> is a string with the option name. +<ul> +<li> '<tt>dontroute</tt>' +<li> '<tt>broadcast</tt>' +<li> '<tt>reuseaddr</tt>' +<li> '<tt>reuseport</tt>' +<li> '<tt>ip-multicast-loop</tt>' +<li> '<tt>ipv6-v6only</tt>' +<li> '<tt>ip-multicast-if</tt>' +<li> '<tt>ip-multicast-ttl</tt>' +<li> '<tt>ip-add-membership</tt>' +<li> '<tt>ip-drop-membership</tt>' +</ul> +</p> + +<p class=return> +The method returns the option <tt>value</tt> in case of +success, or +<b><tt>nil</tt></b> followed by an error message otherwise. +</p> + <!-- send ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <p class="name" id="send"> @@ -284,6 +364,15 @@ is recommended when the same peer is used for several transmissions and can result in up to 30% performance gains. </p> +<p class=note> +Note: Starting with LuaSocket 2.1, the host name resolution +depends on whether the socket was created by <a +href=#socket.udp><tt>socket.udp</tt></a> or <a +href=#socket.udp6><tt>socket.udp6</tt></a>. Addresses from +the appropriate family are tried in succession until the +first success or until the last failure. +</p> + <!-- setsockname +++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <p class="name" id="setsockname"> @@ -332,23 +421,57 @@ only modify an option if you are sure you need it.</p> name, and <tt>value</tt> depends on the option being set: </p> -<ul> -<li>'<tt>dontroute</tt>': Setting this option to <tt>true</tt> -indicates that outgoing messages should bypass the standard routing -facilities;</li> -<li>'<tt>broadcast</tt>': Setting this option to <tt>true</tt> -requests permission to send broadcast datagrams on the -socket.</li> -</ul> +<ul> +<li> '<tt>dontroute</tt>': Indicates that outgoing +messages should bypass the standard routing facilities. +Receives a boolean value; +<li> '<tt>broadcast</tt>': Requests permission to send +broadcast datagrams on the socket. +Receives a boolean value; +<li> '<tt>reuseaddr</tt>': Indicates that the rules used in +validating addresses supplied in a <tt>bind()</tt> call +should allow reuse of local addresses. +Receives a boolean value; +<li> '<tt>reuseport</tt>': Allows completely duplicate +bindings by multiple processes if they all set +'<tt>reuseport</tt>' before binding the port. +Receives a boolean value; +<li> '<tt>ip-multicast-loop</tt>': +Specifies whether or not a copy of an outgoing multicast +datagram is delivered to the sending host as long as it is a +member of the multicast group. +Receives a boolean value; +<li> '<tt>ipv6-v6only</tt>': +Specifies whether to restrict <tt>inet6</tt> sockets to +sending and receiving only IPv6 packets. +Receive a boolean value; +<li> '<tt>ip-multicast-if</tt>': +Sets the interface over which outgoing multicast datagrams +are sent. +Receives an IP address; +<li> '<tt>ip-multicast-ttl</tt>': +Sets the Time To Live in the IP header for outgoing +multicast datagrams. +Receives a number; +<li> '<tt>ip-add-membership</tt>': +Joins the multicast group specified. +Receives a table with fields +<tt>multiaddr</tt> and <tt>interface</tt>, each containing an +IP address; +<li> '<tt>ip-drop-membership</tt>': Leaves the multicast +group specified. +Receives a table with fields +<tt>multiaddr</tt> and <tt>interface</tt>, each containing an +IP address. +</ul> <p class="return"> The method returns 1 in case of success, or <b><tt>nil</tt></b> followed by an error message otherwise. </p> -<p class="note"> -Note: The descriptions above come from the man -pages. +<p class=note> +Note: The descriptions above come from the man pages. </p> <!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> @@ -397,8 +520,8 @@ imperative nature obvious. <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/url.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/url.html index e87126fa316..6ff673da565 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/doc/url.html +++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/url.html @@ -24,8 +24,8 @@ </td></tr> </table> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#download">download</a> · +<a href="index.html">home</a> · +<a href="index.html#download">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> @@ -36,14 +36,13 @@ <!-- url ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<h2 id=url>URL</h2> +<h2 id="url">URL</h2> <p> The <tt>url</tt> namespace provides functions to parse, protect, and build URLs, as well as functions to compose absolute URLs from base and relative URLs, according to -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2396.txt">RFC -2396</a>. +<a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>. </p> <p> @@ -70,7 +69,7 @@ An URL is defined by the following grammar: <!-- absolute +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=absolute> +<p class=name id="absolute"> url.<b>absolute(</b>base, relative<b>)</b> </p> @@ -91,7 +90,7 @@ The function returns a string with the absolute URL. <p class=note> Note: The rules that govern the composition are fairly complex, and are described in detail in -<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2396.txt">RFC 2396</a>. +<a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>. The example bellow should give an idea of what the rules are. </p> @@ -126,7 +125,7 @@ g;x?y#s = http://a/b/c/g;x?y#s <!-- build ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=build> +<p class=name id="build"> url.<b>build(</b>parsed_url<b>)</b> </p> @@ -147,7 +146,7 @@ The function returns a string with the built URL. <!-- build_path +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=build_path> +<p class=name id="build_path"> url.<b>build_path(</b>segments, unsafe<b>)</b> </p> @@ -201,7 +200,7 @@ code = url.escape("/#?;") <!-- parse ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=parse> +<p class=name id="parse"> url.<b>parse(</b>url, default<b>)</b> </p> @@ -266,7 +265,7 @@ parsed_url = url.parse("ftp://root:passwd@unsafe.org/pub/virus.exe;type=i") <!-- parse_path +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> -<p class=name id=parse_path> +<p class=name id="parse_path"> url.<b>parse_path(</b>path<b>)</b> </p> @@ -310,8 +309,8 @@ The function returns the decoded string. <hr> <center> <p class=bar> -<a href="home.html">home</a> · -<a href="home.html#down">download</a> · +<a href="index.html">home</a> · +<a href="index.html#down">download</a> · <a href="installation.html">installation</a> · <a href="introduction.html">introduction</a> · <a href="reference.html">reference</a> diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua index f75c4232db6..11eeb2d2d74 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua @@ -2,7 +2,6 @@ -- Little program to convert to and from Base64 -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: b64.lua,v 1.8 2004/06/16 04:28:21 diego Exp $ ----------------------------------------------------------------------------- local ltn12 = require("ltn12") local mime = require("mime") diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua index a989f8c271e..d2e4266e809 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua @@ -3,7 +3,6 @@ -- non-blocking I/O via the dispatcher module. -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $$ ----------------------------------------------------------------------------- local url = require("socket.url") local dispatch = require("dispatch") diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua index c082c24c0db..8c5b711c139 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua @@ -2,7 +2,6 @@ -- Little program to download DICT word definitions -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: dict.lua,v 1.22 2005/11/22 08:33:29 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -44,48 +43,48 @@ function metat.__index:check(ok) end function metat.__index:getdef() - local line = socket.try(self.tp:receive()) - local def = {} - while line ~= "." do - table.insert(def, line) - line = socket.try(self.tp:receive()) - end - return table.concat(def, "\n") + local line = socket.try(self.tp:receive()) + local def = {} + while line ~= "." do + table.insert(def, line) + line = socket.try(self.tp:receive()) + end + return table.concat(def, "\n") end function metat.__index:define(database, word) database = database or "!" - socket.try(self.tp:command("DEFINE", database .. " " .. word)) + socket.try(self.tp:command("DEFINE", database .. " " .. word)) local code, count = self:check(150) - local defs = {} - for i = 1, count do - self:check(151) - table.insert(defs, self:getdef()) - end - self:check(250) + local defs = {} + for i = 1, count do + self:check(151) + table.insert(defs, self:getdef()) + end + self:check(250) return defs end function metat.__index:match(database, strat, word) database = database or "!" strat = strat or "." - socket.try(self.tp:command("MATCH", database .." ".. strat .." ".. word)) + socket.try(self.tp:command("MATCH", database .." ".. strat .." ".. word)) self:check(152) - local mat = {} - local line = socket.try(self.tp:receive()) + local mat = {} + local line = socket.try(self.tp:receive()) while line ~= '.' do database, word = socket.skip(2, string.find(line, "(%S+) (.*)")) if not mat[database] then mat[database] = {} end table.insert(mat[database], word) - line = socket.try(self.tp:receive()) - end - self:check(250) + line = socket.try(self.tp:receive()) + end + self:check(250) return mat end function metat.__index:quit() - self.tp:command("QUIT") - return self:check(221) + self.tp:command("QUIT") + return self:check(221) end function metat.__index:close() diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua index 3ef1e72b690..cc8cb23c882 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua @@ -2,7 +2,6 @@ -- A hacked dispatcher module -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $$ ----------------------------------------------------------------------------- local base = _G local table = require("table") @@ -54,7 +53,7 @@ function socket.protect(f) local results = {coroutine.resume(co, base.unpack(arg))} local status = table.remove(results, 1) if not status then - if type(results[1]) == 'table' then + if base.type(results[1]) == 'table' then return nil, results[1][1] else base.error(results[1]) end end diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua index b90be79d8f9..eeaf0ce0327 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua @@ -2,7 +2,6 @@ -- Little program to adjust end of line markers. -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: eol.lua,v 1.8 2005/11/22 08:33:29 diego Exp $ ----------------------------------------------------------------------------- local mime = require("mime") local ltn12 = require("ltn12") diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua index 3df6a451262..4196f000b09 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua @@ -2,7 +2,6 @@ -- Little program to download files from URLs -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: get.lua,v 1.25 2007/03/12 04:08:40 diego Exp $ ----------------------------------------------------------------------------- local socket = require("socket") local http = require("socket.http") @@ -12,53 +11,53 @@ local ltn12 = require("ltn12") -- formats a number of seconds into human readable form function nicetime(s) - local l = "s" - if s > 60 then - s = s / 60 - l = "m" - if s > 60 then - s = s / 60 - l = "h" - if s > 24 then - s = s / 24 - l = "d" -- hmmm - end - end - end - if l == "s" then return string.format("%5.0f%s", s, l) - else return string.format("%5.2f%s", s, l) end + local l = "s" + if s > 60 then + s = s / 60 + l = "m" + if s > 60 then + s = s / 60 + l = "h" + if s > 24 then + s = s / 24 + l = "d" -- hmmm + end + end + end + if l == "s" then return string.format("%5.0f%s", s, l) + else return string.format("%5.2f%s", s, l) end end -- formats a number of bytes into human readable form function nicesize(b) - local l = "B" - if b > 1024 then - b = b / 1024 - l = "KB" - if b > 1024 then - b = b / 1024 - l = "MB" - if b > 1024 then - b = b / 1024 - l = "GB" -- hmmm - end - end - end - return string.format("%7.2f%2s", b, l) + local l = "B" + if b > 1024 then + b = b / 1024 + l = "KB" + if b > 1024 then + b = b / 1024 + l = "MB" + if b > 1024 then + b = b / 1024 + l = "GB" -- hmmm + end + end + end + return string.format("%7.2f%2s", b, l) end -- returns a string with the current state of the download local remaining_s = "%s received, %s/s throughput, %2.0f%% done, %s remaining" local elapsed_s = "%s received, %s/s throughput, %s elapsed " function gauge(got, delta, size) - local rate = got / delta - if size and size >= 1 then - return string.format(remaining_s, nicesize(got), nicesize(rate), - 100*got/size, nicetime((size-got)/rate)) - else - return string.format(elapsed_s, nicesize(got), - nicesize(rate), nicetime(delta)) - end + local rate = got / delta + if size and size >= 1 then + return string.format(remaining_s, nicesize(got), nicesize(rate), + 100*got/size, nicetime((size-got)/rate)) + else + return string.format(elapsed_s, nicesize(got), + nicesize(rate), nicetime(delta)) + end end -- creates a new instance of a receive_cb that saves to disk @@ -89,10 +88,10 @@ end -- determines the size of a http file function gethttpsize(u) - local r, c, h = http.request {method = "HEAD", url = u} - if c == 200 then - return tonumber(h["content-length"]) - end + local r, c, h = http.request {method = "HEAD", url = u} + if c == 200 then + return tonumber(h["content-length"]) + end end -- downloads a file using the http protocol @@ -101,7 +100,7 @@ function getbyhttp(u, file) -- only print feedback if output is not stdout if file then save = ltn12.sink.chain(stats(gethttpsize(u)), save) end local r, c, h, s = http.request {url = u, sink = save } - if c ~= 200 then io.stderr:write(s or c, "\n") end + if c ~= 200 then io.stderr:write(s or c, "\n") end end -- downloads a file using the ftp protocol @@ -114,29 +113,29 @@ function getbyftp(u, file) gett.sink = save gett.type = "i" local ret, err = ftp.get(gett) - if err then print(err) end + if err then print(err) end end -- determines the scheme function getscheme(u) - -- this is an heuristic to solve a common invalid url poblem - if not string.find(u, "//") then u = "//" .. u end - local parsed = url.parse(u, {scheme = "http"}) - return parsed.scheme + -- this is an heuristic to solve a common invalid url poblem + if not string.find(u, "//") then u = "//" .. u end + local parsed = url.parse(u, {scheme = "http"}) + return parsed.scheme end -- gets a file either by http or ftp, saving as <name> function get(u, name) local fout = name and io.open(name, "wb") - local scheme = getscheme(u) - if scheme == "ftp" then getbyftp(u, fout) - elseif scheme == "http" then getbyhttp(u, fout) - else print("unknown scheme" .. scheme) end + local scheme = getscheme(u) + if scheme == "ftp" then getbyftp(u, fout) + elseif scheme == "http" then getbyhttp(u, fout) + else print("unknown scheme" .. scheme) end end -- main program arg = arg or {} if table.getn(arg) < 1 then - io.write("Usage:\n lua get.lua <remote-url> [<local-file>]\n") - os.exit(1) + io.write("Usage:\n lua get.lua <remote-url> [<local-file>]\n") + os.exit(1) else get(arg[1], arg[2]) end diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua index 32699209c6b..25f0b95e15e 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua @@ -3,7 +3,6 @@ -- LuaSocket toolkit. -- Author: David Burgess -- Modified by Diego Nehab, but David is in charge --- RCS ID: $Id: lp.lua,v 1.14 2005/11/21 07:04:44 diego Exp $ ----------------------------------------------------------------------------- --[[ if you have any questions: RFC 1179 @@ -268,11 +267,11 @@ send = socket.protect(function(option) local class = string.sub(option.class or localip or localhost,1,31) local _,_,ctlfn = string.find(file,".*[%/%\\](.*)") ctlfn = string.sub(ctlfn or file,1,131) - local cfile = - string.format("H%-s\nC%-s\nJ%-s\nP%-s\n%.1s%-s\nU%-s\nN%-s\n", - localhost, + local cfile = + string.format("H%-s\nC%-s\nJ%-s\nP%-s\n%.1s%-s\nU%-s\nN%-s\n", + localhost, class, - option.job or "LuaSocket", + option.job or "LuaSocket", user, fmt, lpfile, lpfile, diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua index a4c0cad5933..523238b18f2 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua @@ -2,7 +2,6 @@ -- Little program to convert to and from Quoted-Printable -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: qp.lua,v 1.5 2004/06/17 21:46:22 diego Exp $ ----------------------------------------------------------------------------- local ltn12 = require("ltn12") local mime = require("mime") diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua index 94eaf3424d8..ed99cd164b0 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua @@ -2,7 +2,6 @@ -- TFTP support for the Lua language -- LuaSocket toolkit. -- Author: Diego Nehab --- RCS ID: $Id: tftp.lua,v 1.16 2005/11/22 08:33:29 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -35,18 +34,18 @@ local OP_INV = {"RRQ", "WRQ", "DATA", "ACK", "ERROR"} -- Packet creation functions ----------------------------------------------------------------------------- local function RRQ(source, mode) - return char(0, OP_RRQ) .. source .. char(0) .. mode .. char(0) + return char(0, OP_RRQ) .. source .. char(0) .. mode .. char(0) end local function WRQ(source, mode) - return char(0, OP_RRQ) .. source .. char(0) .. mode .. char(0) + return char(0, OP_RRQ) .. source .. char(0) .. mode .. char(0) end local function ACK(block) - local low, high - low = math.mod(block, 256) - high = (block - low)/256 - return char(0, OP_ACK, high, low) + local low, high + low = math.mod(block, 256) + high = (block - low)/256 + return char(0, OP_ACK, high, low) end local function get_OP(dgram) @@ -58,16 +57,16 @@ end -- Packet analysis functions ----------------------------------------------------------------------------- local function split_DATA(dgram) - local block = byte(dgram, 3)*256 + byte(dgram, 4) - local data = string.sub(dgram, 5) - return block, data + local block = byte(dgram, 3)*256 + byte(dgram, 4) + local data = string.sub(dgram, 5) + return block, data end local function get_ERROR(dgram) - local code = byte(dgram, 3)*256 + byte(dgram, 4) - local msg - _,_, msg = string.find(dgram, "(.*)\000", 5) - return string.format("error code %d: %s", code, msg) + local code = byte(dgram, 3)*256 + byte(dgram, 4) + local msg + _,_, msg = string.find(dgram, "(.*)\000", 5) + return string.format("error code %d: %s", code, msg) end ----------------------------------------------------------------------------- @@ -77,40 +76,40 @@ local function tget(gett) local retries, dgram, sent, datahost, dataport, code local last = 0 socket.try(gett.host, "missing host") - local con = socket.try(socket.udp()) + local con = socket.try(socket.udp()) local try = socket.newtry(function() con:close() end) -- convert from name to ip if needed - gett.host = try(socket.dns.toip(gett.host)) - con:settimeout(1) + gett.host = try(socket.dns.toip(gett.host)) + con:settimeout(1) -- first packet gives data host/port to be used for data transfers local path = string.gsub(gett.path or "", "^/", "") path = url.unescape(path) retries = 0 - repeat - sent = try(con:sendto(RRQ(path, "octet"), gett.host, gett.port)) - dgram, datahost, dataport = con:receivefrom() + repeat + sent = try(con:sendto(RRQ(path, "octet"), gett.host, gett.port)) + dgram, datahost, dataport = con:receivefrom() retries = retries + 1 - until dgram or datahost ~= "timeout" or retries > 5 - try(dgram, datahost) + until dgram or datahost ~= "timeout" or retries > 5 + try(dgram, datahost) -- associate socket with data host/port - try(con:setpeername(datahost, dataport)) + try(con:setpeername(datahost, dataport)) -- default sink local sink = gett.sink or ltn12.sink.null() -- process all data packets - while 1 do + while 1 do -- decode packet - code = get_OP(dgram) - try(code ~= OP_ERROR, get_ERROR(dgram)) + code = get_OP(dgram) + try(code ~= OP_ERROR, get_ERROR(dgram)) try(code == OP_DATA, "unhandled opcode " .. code) -- get data packet parts - local block, data = split_DATA(dgram) + local block, data = split_DATA(dgram) -- if not repeated, write if block == last+1 then - try(sink(data)) + try(sink(data)) last = block end -- last packet brings less than 512 bytes of data - if string.len(data) < 512 then + if string.len(data) < 512 then try(con:send(ACK(block))) try(con:close()) try(sink(nil)) @@ -118,13 +117,13 @@ local function tget(gett) end -- get the next packet retries = 0 - repeat - sent = try(con:send(ACK(last))) - dgram, err = con:receive() + repeat + sent = try(con:send(ACK(last))) + dgram, err = con:receive() retries = retries + 1 - until dgram or err ~= "timeout" or retries > 5 - try(dgram, err) - end + until dgram or err ~= "timeout" or retries > 5 + try(dgram, err) + end end local default = { diff --git a/Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln b/Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln index a674c33caab..0e5cdc73f00 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln +++ b/Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln @@ -1,37 +1,35 @@ -Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "socket", "socket.vcproj", "{66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "socket", "socket.vcxproj", "{66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mime", "mime.vcproj", "{128E8BD0-174A-48F0-8771-92B1E8D18713}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libluasocket", "libluasocket.vcproj", "{599EAD40-60EE-4043-9C14-AE090A8A092D}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mime", "mime.vcxproj", "{128E8BD0-174A-48F0-8771-92B1E8D18713}"
EndProject
Global
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug.ActiveCfg = Debug|Win32
- {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug.Build.0 = Debug|Win32
- {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release.ActiveCfg = Release|Win32
- {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release.Build.0 = Release|Win32
- {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug.ActiveCfg = Debug|Win32
- {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug.Build.0 = Debug|Win32
- {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release.ActiveCfg = Release|Win32
- {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release.Build.0 = Release|Win32
- {599EAD40-60EE-4043-9C14-AE090A8A092D}.Debug.ActiveCfg = Debug|Win32
- {599EAD40-60EE-4043-9C14-AE090A8A092D}.Debug.Build.0 = Debug|Win32
- {599EAD40-60EE-4043-9C14-AE090A8A092D}.Release.ActiveCfg = Release|Win32
- {599EAD40-60EE-4043-9C14-AE090A8A092D}.Release.Build.0 = Release|Win32
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug|Win32.Build.0 = Debug|Win32
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug|x64.ActiveCfg = Debug|x64
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug|x64.Build.0 = Debug|x64
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release|Win32.ActiveCfg = Release|Win32
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release|Win32.Build.0 = Release|Win32
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release|x64.ActiveCfg = Release|x64
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release|x64.Build.0 = Release|x64
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug|Win32.ActiveCfg = Debug|Win32
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug|Win32.Build.0 = Debug|Win32
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug|x64.ActiveCfg = Debug|x64
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug|x64.Build.0 = Debug|x64
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release|Win32.ActiveCfg = Release|Win32
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release|Win32.Build.0 = Release|Win32
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release|x64.ActiveCfg = Release|x64
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release|x64.Build.0 = Release|x64
EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/makefile b/Build/source/texk/web2c/luatexdir/luasocket/makefile index 6d700392a0a..f9fa6fe7803 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/makefile +++ b/Build/source/texk/web2c/luatexdir/luasocket/makefile @@ -1,51 +1,34 @@ -#------ -# Load configuration +# luasocket makefile # -include config - -#------ -# Hopefully no need to change anything below this line +# see src/makefile for description of how to customize the build # -INSTALL_SOCKET_SHARE=$(INSTALL_TOP_SHARE)/socket -INSTALL_SOCKET_LIB=$(INSTALL_TOP_LIB)/socket -INSTALL_MIME_SHARE=$(INSTALL_TOP_SHARE)/mime -INSTALL_MIME_LIB=$(INSTALL_TOP_LIB)/mime +# Targets: +# install install system independent support +# install-unix also install unix-only support +# install-both install both lua5.1 and lua5.2 socket support +# print print the build settings -all clean: - cd src; $(MAKE) $@ +PLAT?= linux +PLATS= macosx linux win32 + +all: $(PLAT) + +$(PLATS) none install install-unix local clean: + $(MAKE) -C src $@ + +print: + $(MAKE) -C src $@ + +test: + lua test/hello.lua + +install-both: + $(MAKE) clean + @cd src; $(MAKE) $(PLAT) LUAV=5.1 + @cd src; $(MAKE) install-unix LUAV=5.1 + $(MAKE) clean + @cd src; $(MAKE) $(PLAT) LUAV=5.2 + @cd src; $(MAKE) install-unix LUAV=5.2 + +.PHONY: test -#------ -# Files to install -# -TO_SOCKET_SHARE:= \ - http.lua \ - url.lua \ - tp.lua \ - ftp.lua \ - smtp.lua - -TO_TOP_SHARE:= \ - ltn12.lua \ - socket.lua \ - mime.lua - -TO_MIME_SHARE:= - -#------ -# Install LuaSocket according to recommendation -# -install: all - cd src; mkdir -p $(INSTALL_TOP_SHARE) - cd src; $(INSTALL_DATA) $(TO_TOP_SHARE) $(INSTALL_TOP_SHARE) - cd src; mkdir -p $(INSTALL_SOCKET_SHARE) - cd src; $(INSTALL_DATA) $(TO_SOCKET_SHARE) $(INSTALL_SOCKET_SHARE) - cd src; mkdir -p $(INSTALL_SOCKET_LIB) - cd src; $(INSTALL_EXEC) $(SOCKET_SO) $(INSTALL_SOCKET_LIB)/core.$(EXT) - #cd src; mkdir -p $(INSTALL_MIME_SHARE) - #cd src; $(INSTALL_DATA) $(TO_MIME_SHARE) $(INSTALL_MIME_SHARE) - cd src; mkdir -p $(INSTALL_MIME_LIB) - cd src; $(INSTALL_EXEC) $(MIME_SO) $(INSTALL_MIME_LIB)/core.$(EXT) - -#------ -# End of makefile -# diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua index 883730c3a4c..49a187119f8 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua @@ -32,7 +32,7 @@ end local host = socket.dns.gethostname() local query = "%s?cmd=cddb+read+%s+%s&hello=LuaSocket+%s+LuaSocket+2.0&proto=6" local url = string.format(query, server, arg[1], arg[2], host) -local body, headers, code = http.get(url) +local body, headers, code = http.request(url) if code == 200 then local data, code, error = parse(body) diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua index 90ab39e9713..f81e37c4884 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua @@ -2,7 +2,6 @@ -- UDP sample: daytime protocol client -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: daytimeclnt.lua,v 1.11 2004/06/21 06:07:57 diego Exp $ ----------------------------------------------------------------------------- local socket = require"socket" host = host or "127.0.0.1" diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua index 038be4c239d..bb22557a0be 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua @@ -2,7 +2,6 @@ -- UDP sample: echo protocol client -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: echoclnt.lua,v 1.10 2005/01/02 22:44:00 diego Exp $ ----------------------------------------------------------------------------- local socket = require("socket") host = host or "localhost" diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua index 2697ca46d69..ea564e246d7 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua @@ -2,7 +2,6 @@ -- UDP sample: echo protocol server -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: echosrvr.lua,v 1.12 2005/11/22 08:33:29 diego Exp $ ----------------------------------------------------------------------------- local socket = require("socket") host = host or "127.0.0.1" diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua index 9260fbb0f35..77db2d539b7 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua @@ -2,7 +2,6 @@ -- TCP sample: Little program to dump lines received at a given port -- LuaSocket sample files -- Author: Diego Nehab --- RCS ID: $Id: listener.lua,v 1.11 2005/01/02 22:44:00 diego Exp $ ----------------------------------------------------------------------------- local socket = require("socket") host = host or "*" diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua index 2b059b15871..3d5e2f8d1be 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua @@ -29,7 +29,7 @@ end do local opt = {} local pat = "[%s%c%p]*([%w]*)=([\"]?[%w%s_!@#$%%^&*()<>:;]+[\"]\?\.?)" - for i = 2, table.getn(arg), 1 do + for i = 2, #arg, 1 do string.gsub(arg[i], pat, function(name, value) opt[name] = value end) end if not arg[2] then diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua index 607ff31989b..d5a36cbe256 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua @@ -2,7 +2,6 @@ -- TCP sample: Little program to send text lines to a given host/port
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: talker.lua,v 1.9 2005/01/02 22:44:00 diego Exp $
-----------------------------------------------------------------------------
local socket = require("socket")
host = host or "localhost"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua index f474302e0a2..5babb7e1ea1 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua @@ -2,7 +2,6 @@ -- Select sample: simple text line server -- LuaSocket sample files. -- Author: Diego Nehab --- RCS ID: $Id: tinyirc.lua,v 1.14 2005/11/22 08:33:29 diego Exp $ ----------------------------------------------------------------------------- local socket = require("socket") host = host or "*" @@ -32,7 +31,7 @@ function newset() insert = function(set, value) if not reverse[value] then table.insert(set, value) - reverse[value] = table.getn(set) + reverse[value] = #set end end, remove = function(set, value) diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c b/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c index 9514970119f..de625e9d743 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * Auxiliar routines for class hierarchy manipulation * LuaSocket toolkit -* -* RCS ID: $Id: auxiliar.c,v 1.14 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include <string.h> #include <stdio.h> @@ -24,7 +22,7 @@ int auxiliar_open(lua_State *L) { * Creates a new class with given methods * Methods whose names start with __ are passed directly to the metatable. \*-------------------------------------------------------------------------*/ -void auxiliar_newclass(lua_State *L, const char *classname, luaL_reg *func) { +void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func) { luaL_newmetatable(L, classname); /* mt */ /* create __index table to place methods */ lua_pushstring(L, "__index"); /* mt,"__index" */ @@ -81,7 +79,7 @@ void auxiliar_add2group(lua_State *L, const char *classname, const char *groupna \*-------------------------------------------------------------------------*/ int auxiliar_checkboolean(lua_State *L, int objidx) { if (!lua_isboolean(L, objidx)) - luaL_typerror(L, objidx, lua_typename(L, LUA_TBOOLEAN)); + auxiliar_typeerror(L, objidx, lua_typename(L, LUA_TBOOLEAN)); return lua_toboolean(L, objidx); } @@ -147,3 +145,14 @@ void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) { void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) { return luaL_checkudata(L, objidx, classname); } + +/*-------------------------------------------------------------------------*\ +* Throws error when argument does not have correct type. +* Used to be part of lauxlib in Lua 5.1, was dropped from 5.2. +\*-------------------------------------------------------------------------*/ +int auxiliar_typeerror (lua_State *L, int narg, const char *tname) { + const char *msg = lua_pushfstring(L, "%s expected, got %s", tname, + luaL_typename(L, narg)); + return luaL_argerror(L, narg, msg); +} + diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h b/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h index 18b849554ff..ea9901333de 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h @@ -27,15 +27,13 @@ * * The mapping from class name to the corresponding metatable and the * reverse mapping are done using lauxlib. -* -* RCS ID: $Id: auxiliar.h,v 1.9 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "lauxlib.h" int auxiliar_open(lua_State *L); -void auxiliar_newclass(lua_State *L, const char *classname, luaL_reg *func); +void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func); void auxiliar_add2group(lua_State *L, const char *classname, const char *group); void auxiliar_setclass(lua_State *L, const char *classname, int objidx); void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx); @@ -44,5 +42,6 @@ void *auxiliar_getclassudata(lua_State *L, const char *groupname, int objidx); void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx); int auxiliar_checkboolean(lua_State *L, int objidx); int auxiliar_tostring(lua_State *L); +int auxiliar_typeerror(lua_State *L, int narg, const char *tname); #endif /* AUXILIAR_H */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c b/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c index 73f4ffa85e6..4ef4e8eb5c4 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * Input/Output interface for Lua programs * LuaSocket toolkit -* -* RCS ID: $Id: buffer.c,v 1.28 2007/06/11 23:44:54 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "lauxlib.h" @@ -42,7 +40,7 @@ int buffer_open(lua_State *L) { * Initializes C structure \*-------------------------------------------------------------------------*/ void buffer_init(p_buffer buf, p_io io, p_timeout tm) { - buf->first = buf->last = 0; + buf->first = buf->last = 0; buf->io = io; buf->tm = tm; buf->received = buf->sent = 0; @@ -53,8 +51,8 @@ void buffer_init(p_buffer buf, p_io io, p_timeout tm) { * object:getstats() interface \*-------------------------------------------------------------------------*/ int buffer_meth_getstats(lua_State *L, p_buffer buf) { - lua_pushnumber(L, buf->received); - lua_pushnumber(L, buf->sent); + lua_pushnumber(L, (lua_Number) buf->received); + lua_pushnumber(L, (lua_Number) buf->sent); lua_pushnumber(L, timeout_gettime() - buf->birthday); return 3; } @@ -63,8 +61,8 @@ int buffer_meth_getstats(lua_State *L, p_buffer buf) { * object:setstats() interface \*-------------------------------------------------------------------------*/ int buffer_meth_setstats(lua_State *L, p_buffer buf) { - buf->received = (long) luaL_optnumber(L, 2, buf->received); - buf->sent = (long) luaL_optnumber(L, 3, buf->sent); + buf->received = (long) luaL_optnumber(L, 2, (lua_Number) buf->received); + buf->sent = (long) luaL_optnumber(L, 3, (lua_Number) buf->sent); if (lua_isnumber(L, 4)) buf->birthday = timeout_gettime() - lua_tonumber(L, 4); lua_pushnumber(L, 1); return 1; @@ -80,7 +78,9 @@ int buffer_meth_send(lua_State *L, p_buffer buf) { const char *data = luaL_checklstring(L, 2, &size); long start = (long) luaL_optnumber(L, 3, 1); long end = (long) luaL_optnumber(L, 4, -1); +#ifdef LUASOCKET_DEBUG p_timeout tm = timeout_markstart(buf->tm); +#endif if (start < 0) start = (long) (size+start+1); if (end < 0) end = (long) (size+end+1); if (start < 1) start = (long) 1; @@ -90,9 +90,9 @@ int buffer_meth_send(lua_State *L, p_buffer buf) { if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, buf->io->error(buf->io->ctx, err)); - lua_pushnumber(L, sent+start-1); + lua_pushnumber(L, (lua_Number) (sent+start-1)); } else { - lua_pushnumber(L, sent+start-1); + lua_pushnumber(L, (lua_Number) (sent+start-1)); lua_pushnil(L); lua_pushnil(L); } @@ -111,7 +111,9 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) { luaL_Buffer b; size_t size; const char *part = luaL_optlstring(L, 3, "", &size); +#ifdef LUASOCKET_DEBUG p_timeout tm = timeout_markstart(buf->tm); +#endif /* initialize buffer with optional extra prefix * (useful for concatenating previous partial results) */ luaL_buffinit(L, &b); @@ -122,9 +124,15 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) { if (p[0] == '*' && p[1] == 'l') err = recvline(buf, &b); else if (p[0] == '*' && p[1] == 'a') err = recvall(buf, &b); else luaL_argcheck(L, 0, 2, "invalid receive pattern"); - /* get a fixed number of bytes (minus what was already partially - * received) */ - } else err = recvraw(buf, (size_t) lua_tonumber(L, 2)-size, &b); + /* get a fixed number of bytes (minus what was already partially + * received) */ + } else { + double n = lua_tonumber(L, 2); + size_t wanted = (size_t) n; + luaL_argcheck(L, n >= 0, 2, "invalid receive pattern"); + if (size == 0 || wanted > size) + err = recvraw(buf, wanted-size, &b); + } /* check if there was an error */ if (err != IO_DONE) { /* we can't push anyting in the stack before pushing the @@ -166,7 +174,7 @@ static int sendraw(p_buffer buf, const char *data, size_t count, size_t *sent) { size_t total = 0; int err = IO_DONE; while (total < count && err == IO_DONE) { - size_t done; + size_t done = 0; size_t step = (count-total <= STEPSIZE)? count-total: STEPSIZE; err = io->send(io->ctx, data+total, step, &done, tm); total += done; @@ -225,7 +233,7 @@ static int recvline(p_buffer buf, luaL_Buffer *b) { pos = 0; while (pos < count && data[pos] != '\n') { /* we ignore all \r's */ - if (data[pos] != '\r') luaL_putchar(b, data[pos]); + if (data[pos] != '\r') luaL_addchar(b, data[pos]); pos++; } if (pos < count) { /* found '\n' */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h b/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h index baf93caa031..1281bb39149 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h @@ -14,8 +14,6 @@ * * The module is built on top of the I/O abstraction defined in io.h and the * timeout management is done with the timeout.h interface. -* -* RCS ID: $Id: buffer.h,v 1.12 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" @@ -31,8 +29,8 @@ typedef struct t_buffer_ { size_t sent, received; /* bytes sent, and bytes received */ p_io io; /* IO driver used for this buffer */ p_timeout tm; /* timeout management for this buffer */ - size_t first, last; /* index of first and last bytes of stored data */ - char data[BUF_SIZE]; /* storage space for buffer data */ + size_t first, last; /* index of first and last bytes of stored data */ + char data[BUF_SIZE]; /* storage space for buffer data */ } t_buffer; typedef t_buffer *p_buffer; diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/except.c b/Build/source/texk/web2c/luatexdir/luasocket/src/except.c index 5faa5be0039..1d1ade0ee00 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/except.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/except.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * Simple exception support * LuaSocket toolkit -* -* RCS ID: $Id: except.c,v 1.8 2005/09/29 06:11:41 diego Exp $ \*=========================================================================*/ #include <stdio.h> @@ -21,7 +19,7 @@ static int finalize(lua_State *L); static int do_nothing(lua_State *L); /* except functions */ -static luaL_reg func[] = { +static luaL_Reg func[] = { {"newtry", global_newtry}, {"protect", global_protect}, {NULL, NULL} diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/except.h b/Build/source/texk/web2c/luatexdir/luasocket/src/except.h index 81efb29be53..1e7a2455e70 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/except.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/except.h @@ -24,8 +24,6 @@ * * With these two function, it's easy to write functions that throw * exceptions on error, but that don't interrupt the user script. -* -* RCS ID: $Id: except.h,v 1.2 2005/09/29 06:11:41 diego Exp $ \*=========================================================================*/ #include "lua.h" diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua index 598f65dcaf0..5aa646b1767 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua @@ -2,7 +2,6 @@ -- FTP support for the Lua language -- LuaSocket toolkit. -- Author: Diego Nehab --- RCS ID: $Id: ftp.lua,v 1.45 2007/07/11 19:25:47 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -212,8 +211,8 @@ local function tput(putt) end local default = { - path = "/", - scheme = "ftp" + path = "/", + scheme = "ftp" } local function parse(u) diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c index b359db30b5c..6c158328cc2 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c @@ -1,5 +1,5 @@ /* - * This file is auto-generated by "./lua2c ftp.lua ftp_lua" + * This file is auto-generated by "lua2c ftp.lua ftp_lua" */ #include "lua.h" @@ -15,455 +15,452 @@ int luatex_ftp_lua_open (lua_State *L) { 32, 76,117, 97, 32,108, 97,110,103,117, 97,103,101, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65, 117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, - 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,102,116,112, 46,108, -117, 97, 44,118, 32, 49, 46, 52, 53, 32, 50, 48, 48, 55, 47, 48, 55, 47, 49, 49, - 32, 49, 57, 58, 50, 53, 58, 52, 55, 32,100,105,101,103,111, 32, 69,120,112, 32, - 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, - 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, - 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 32, 97,110,100, - 32,105,109,112,111,114,116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, - 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108, -111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, - 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, - 98,108,101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, - 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108, -111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, - 34,109, 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, - 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 34, 41, - 10,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32,114,101,113,117,105,114,101, - 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10,108,111, 99, 97,108, - 32,116,112, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101, -116, 46,116,112, 34, 41, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, - 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,109,111, -100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,102,116,112, 34, 41, 10, 10, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68, +101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109, +112,111,114,116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, - 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116,115, 10, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97, +108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, + 98,108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, 98,108,101, + 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101, +113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97, +108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97, +116,104, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32, +114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 34, 41, 10,108,111, + 99, 97,108, 32,117,114,108, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115, +111, 99,107,101,116, 46,117,114,108, 34, 41, 10,108,111, 99, 97,108, 32,116,112, + 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,116, +112, 34, 41, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101, +113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,109,111,100,117,108, +101, 40, 34,115,111, 99,107,101,116, 46,102,116,112, 34, 41, 10, 10, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,114, +111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, -116,105,109,101,111,117,116, 32,105,110, 32,115,101, 99,111,110,100,115, 32, 98, -101,102,111,114,101, 32,116,104,101, 32,112,114,111,103,114, 97,109, 32,103,105, -118,101,115, 32,117,112, 32,111,110, 32, 97, 32, 99,111,110,110,101, 99,116,105, -111,110, 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100, -101,102, 97,117,108,116, 32,112,111,114,116, 32,102,111,114, 32,102,116,112, 32, -115,101,114,118,105, 99,101, 10, 80, 79, 82, 84, 32, 61, 32, 50, 49, 10, 45, 45, - 32,116,104,105,115, 32,105,115, 32,116,104,101, 32,100,101,102, 97,117,108,116, - 32, 97,110,111,110,121,109,111,117,115, 32,112, 97,115,115,119,111,114,100, 46, - 32,117,115,101,100, 32,119,104,101,110, 32,110,111, 32,112, 97,115,115,119,111, -114,100, 32,105,115, 10, 45, 45, 32,112,114,111,118,105,100,101,100, 32,105,110, - 32,117,114,108, 46, 32,115,104,111,117,108,100, 32, 98,101, 32, 99,104, 97,110, -103,101,100, 32,116,111, 32,121,111,117,114, 32,101, 45,109, 97,105,108, 46, 10, - 85, 83, 69, 82, 32, 61, 32, 34,102,116,112, 34, 10, 80, 65, 83, 83, 87, 79, 82, - 68, 32, 61, 32, 34, 97,110,111,110,121,109,111,117,115, 64, 97,110,111,110,121, -109,111,117,115, 46,111,114,103, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,116,105,109, +101,111,117,116, 32,105,110, 32,115,101, 99,111,110,100,115, 32, 98,101,102,111, +114,101, 32,116,104,101, 32,112,114,111,103,114, 97,109, 32,103,105,118,101,115, + 32,117,112, 32,111,110, 32, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 10, + 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100,101,102, 97, +117,108,116, 32,112,111,114,116, 32,102,111,114, 32,102,116,112, 32,115,101,114, +118,105, 99,101, 10, 80, 79, 82, 84, 32, 61, 32, 50, 49, 10, 45, 45, 32,116,104, +105,115, 32,105,115, 32,116,104,101, 32,100,101,102, 97,117,108,116, 32, 97,110, +111,110,121,109,111,117,115, 32,112, 97,115,115,119,111,114,100, 46, 32,117,115, +101,100, 32,119,104,101,110, 32,110,111, 32,112, 97,115,115,119,111,114,100, 32, +105,115, 10, 45, 45, 32,112,114,111,118,105,100,101,100, 32,105,110, 32,117,114, +108, 46, 32,115,104,111,117,108,100, 32, 98,101, 32, 99,104, 97,110,103,101,100, + 32,116,111, 32,121,111,117,114, 32,101, 45,109, 97,105,108, 46, 10, 85, 83, 69, + 82, 32, 61, 32, 34,102,116,112, 34, 10, 80, 65, 83, 83, 87, 79, 82, 68, 32, 61, + 32, 34, 97,110,111,110,121,109,111,117,115, 64, 97,110,111,110,121,109,111,117, +115, 46,111,114,103, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,108,101,118,101, -108, 32, 70, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,108,101,118,101,108, 32, 70, + 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32, - 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,125, 32,125, 10, 10, -102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,115,101,114,118,101,114, - 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32, -108,111, 99, 97,108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46,116,114, -121, 40,116,112, 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101,114, 44, - 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 44, 32, 84, 73, 77, 69, 79, - 85, 84, 44, 32, 99,114,101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,102, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, - 97, 98,108,101, 40,123, 32,116,112, 32, 61, 32,116,112, 32,125, 44, 32,109,101, -116, 97,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114, -101, 32,101,118,101,114,121,116,104,105,110,103, 32,103,101,116,115, 32, 99,108, -111,115,101,100, 32,105,110, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110, - 10, 32, 32, 32, 32,102, 46,116,114,121, 32, 61, 32,115,111, 99,107,101,116, 46, -110,101,119,116,114,121, 40,102,117,110, 99,116,105,111,110, 40, 41, 32,102, 58, - 99,108,111,115,101, 40, 41, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116, -117,114,110, 32,102, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, -109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112,111,114,116, 99,111, -110,110,101, 99,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, - 40,115,101,108,102, 46,115,101,114,118,101,114, 58,115,101,116,116,105,109,101, -111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101, -108,102, 46,100, 97,116, 97, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115, -101,108,102, 46,115,101,114,118,101,114, 58, 97, 99, 99,101,112,116, 40, 41, 41, - 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,100, - 97,116, 97, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, - 85, 84, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, -101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 99,111,110, -110,101, 99,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, 97, - 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,111, 99,107,101,116, 46,116, - 99,112, 40, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115, -101,108,102, 46,100, 97,116, 97, 58,115,101,116,116,105,109,101,111,117,116, 40, - 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116, -114,121, 40,115,101,108,102, 46,100, 97,116, 97, 58, 99,111,110,110,101, 99,116, - 40,115,101,108,102, 46,112, 97,115,118,116, 46,105,112, 44, 32,115,101,108,102, - 46,112, 97,115,118,116, 46,112,111,114,116, 41, 41, 10,101,110,100, 10, 10,102, -117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101, -120, 58,108,111,103,105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111, -114,100, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, -102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,117,115,101,114, 34, 44, - 32,117,115,101,114, 32,111,114, 32, 85, 83, 69, 82, 41, 41, 10, 32, 32, 32, 32, -108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32, -115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, - 99,107,123, 34, 50, 46, 46, 34, 44, 32, 51, 51, 49,125, 41, 10, 32, 32, 32, 32, -105,102, 32, 99,111,100,101, 32, 61, 61, 32, 51, 51, 49, 32,116,104,101,110, 10, - 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, -102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,112, 97,115,115, 34, 44, - 32,112, 97,115,115,119,111,114,100, 32,111,114, 32, 80, 65, 83, 83, 87, 79, 82, - 68, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, - 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, - 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114, -110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, -116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 40, 41, 10, 32, - 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, - 99,111,109,109, 97,110,100, 40, 34,112, 97,115,118, 34, 41, 41, 10, 32, 32, 32, + 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123, + 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,125, 32,125, 10, 10,102,117,110, + 99,116,105,111,110, 32,111,112,101,110, 40,115,101,114,118,101,114, 44, 32,112, +111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, + 97,108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116, +112, 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101,114, 44, 32,112,111, +114,116, 32,111,114, 32, 80, 79, 82, 84, 44, 32, 84, 73, 77, 69, 79, 85, 84, 44, + 32, 99,114,101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, +102, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108, +101, 40,123, 32,116,112, 32, 61, 32,116,112, 32,125, 44, 32,109,101,116, 97,116, + 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,101, +118,101,114,121,116,104,105,110,103, 32,103,101,116,115, 32, 99,108,111,115,101, +100, 32,105,110, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110, 10, 32, 32, + 32, 32,102, 46,116,114,121, 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119, +116,114,121, 40,102,117,110, 99,116,105,111,110, 40, 41, 32,102, 58, 99,108,111, +115,101, 40, 41, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, + 32,102, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, + 97,116, 46, 95, 95,105,110,100,101,120, 58,112,111,114,116, 99,111,110,110,101, + 99,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101, +108,102, 46,115,101,114,118,101,114, 58,115,101,116,116,105,109,101,111,117,116, + 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46, +100, 97,116, 97, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, + 46,115,101,114,118,101,114, 58, 97, 99, 99,101,112,116, 40, 41, 41, 10, 32, 32, + 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,100, 97,116, 97, + 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, + 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97, +116, 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 99,111,110,110,101, 99, +116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, 97, 32, 61, 32, +115,101,108,102, 46,116,114,121, 40,115,111, 99,107,101,116, 46,116, 99,112, 40, + 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, + 46,100, 97,116, 97, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, + 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40, +115,101,108,102, 46,100, 97,116, 97, 58, 99,111,110,110,101, 99,116, 40,115,101, +108,102, 46,112, 97,115,118,116, 46,105,112, 44, 32,115,101,108,102, 46,112, 97, +115,118,116, 46,112,111,114,116, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99, +116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,108, +111,103,105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 41, + 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116, +112, 58, 99,111,109,109, 97,110,100, 40, 34,117,115,101,114, 34, 44, 32,117,115, +101,114, 32,111,114, 32, 85, 83, 69, 82, 41, 41, 10, 32, 32, 32, 32,108,111, 99, + 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32,115,101,108, +102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,123, + 34, 50, 46, 46, 34, 44, 32, 51, 51, 49,125, 41, 10, 32, 32, 32, 32,105,102, 32, + 99,111,100,101, 32, 61, 61, 32, 51, 51, 49, 32,116,104,101,110, 10, 32, 32, 32, + 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116, +112, 58, 99,111,109,109, 97,110,100, 40, 34,112, 97,115,115, 34, 44, 32,112, 97, +115,115,119,111,114,100, 32,111,114, 32, 80, 65, 83, 83, 87, 79, 82, 68, 41, 41, + 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101, +108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, + 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, + 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, + 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 40, 41, 10, 32, 32, 32, 32, +115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109, +109, 97,110,100, 40, 34,112, 97,115,118, 34, 41, 41, 10, 32, 32, 32, 32,108,111, + 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32,115,101, +108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, + 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, + 97,116,116,101,114,110, 32, 61, 32, 34, 40, 37,100, 43, 41, 37, 68, 40, 37,100, + 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37, +100, 43, 41, 37, 68, 40, 37,100, 43, 41, 34, 10, 32, 32, 32, 32,108,111, 99, 97, +108, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 44, 32,112, 49, 44, 32,112, 50, + 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116, +114,105,110,103, 46,102,105,110,100, 40,114,101,112,108,121, 44, 32,112, 97,116, +116,101,114,110, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40, + 97, 32, 97,110,100, 32, 98, 32, 97,110,100, 32, 99, 32, 97,110,100, 32,100, 32, + 97,110,100, 32,112, 49, 32, 97,110,100, 32,112, 50, 44, 32,114,101,112,108,121, + 41, 10, 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, 61, 32,123, + 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 32, 61, 32,115,116,114,105,110,103, + 46,102,111,114,109, 97,116, 40, 34, 37,100, 46, 37,100, 46, 37,100, 46, 37,100, + 34, 44, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 41, 44, 10, 32, 32, 32, 32, + 32, 32, 32, 32,112,111,114,116, 32, 61, 32,112, 49, 42, 50, 53, 54, 32, 43, 32, +112, 50, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32,115,101,108,102, + 46,115,101,114,118,101,114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, + 32,115,101,108,102, 46,115,101,114,118,101,114, 58, 99,108,111,115,101, 40, 41, + 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,115,101,114,118,101,114, + 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114, +101,116,117,114,110, 32,115,101,108,102, 46,112, 97,115,118,116, 46,105,112, 44, + 32,115,101,108,102, 46,112, 97,115,118,116, 46,112,111,114,116, 10,101,110,100, + 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105, +110,100,101,120, 58,112,111,114,116, 40,105,112, 44, 32,112,111,114,116, 41, 10, + 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, 61, 32,110,105,108, + 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,105,112, 32,116,104,101,110, 10, + 32, 32, 32, 32, 32, 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, 61, 32,115, +101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,103,101,116, 99, +111,110,116,114,111,108, 40, 41, 58,103,101,116,115,111, 99,107,110, 97,109,101, + 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,115,101,114, +118,101,114, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,111, 99,107,101, +116, 46, 98,105,110,100, 40,105,112, 44, 32, 48, 41, 41, 10, 32, 32, 32, 32, 32, + 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, 61, 32,115,101,108,102, 46,116, +114,121, 40,115,101,108,102, 46,115,101,114,118,101,114, 58,103,101,116,115,111, + 99,107,110, 97,109,101, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101, +108,102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101,114, 58,115, +101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, + 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,108, + 32, 61, 32,109, 97,116,104, 46,109,111,100, 40,112,111,114,116, 44, 32, 50, 53, + 54, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,104, 32, 61, 32, 40,112, +111,114,116, 32, 45, 32,112,108, 41, 47, 50, 53, 54, 10, 32, 32, 32, 32,108,111, + 99, 97,108, 32, 97,114,103, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, + 98, 40,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37,115, 44, + 37,100, 44, 37,100, 34, 44, 32,105,112, 44, 32,112,104, 44, 32,112,108, 41, 44, + 32, 34, 37, 46, 34, 44, 32, 34, 44, 34, 41, 10, 32, 32, 32, 32,115,101,108,102, + 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, + 40, 34,112,111,114,116, 34, 44, 32, 97,114,103, 41, 41, 10, 32, 32, 32, 32,115, +101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99, +107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, + 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, + 97,116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,115,101,110,100, +116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, + 46,112, 97,115,118,116, 32,111,114, 32,115,101,108,102, 46,115,101,114,118,101, +114, 44, 32, 34,110,101,101,100, 32,112,111,114,116, 32,111,114, 32,112, 97,115, +118, 32,102,105,114,115,116, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32, +116,104,101,114,101, 32,105,115, 32, 97, 32,112, 97,115,118,116, 32,116, 97, 98, +108,101, 44, 32,119,101, 32, 97,108,114,101, 97,100,121, 32,115,101,110,116, 32, + 97, 32, 80, 65, 83, 86, 32, 99,111,109,109, 97,110,100, 10, 32, 32, 32, 32, 45, + 45, 32,119,101, 32,106,117,115,116, 32,103,101,116, 32,116,104,101, 32,100, 97, +116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 32,105,110,116,111, 32,115, +101,108,102, 46,100, 97,116, 97, 10, 32, 32, 32, 32,105,102, 32,115,101,108,102, + 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112, 97,115, +118, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32, 45, + 45, 32,103,101,116, 32,116,104,101, 32,116,114, 97,110,115,102,101,114, 32, 97, +114,103,117,109,101,110,116, 32, 97,110,100, 32, 99,111,109,109, 97,110,100, 10, + 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103,117,109,101,110,116, 32, 61, + 32,115,101,110,100,116, 46, 97,114,103,117,109,101,110,116, 32,111,114, 10, 32, + 32, 32, 32, 32, 32, 32, 32,117,114,108, 46,117,110,101,115, 99, 97,112,101, 40, +115,116,114,105,110,103, 46,103,115,117, 98, 40,115,101,110,100,116, 46,112, 97, +116,104, 32,111,114, 32, 34, 34, 44, 32, 34, 94, 91, 47, 92, 92, 93, 34, 44, 32, + 34, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,103,117,109,101,110,116, + 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 97,114,103,117,109,101,110,116, + 32, 61, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, + 32, 99,111,109,109, 97,110,100, 32, 61, 32,115,101,110,100,116, 46, 99,111,109, +109, 97,110,100, 32,111,114, 32, 34,115,116,111,114, 34, 10, 32, 32, 32, 32, 45, + 45, 32,115,101,110,100, 32,116,104,101, 32,116,114, 97,110,115,102,101,114, 32, + 99,111,109,109, 97,110,100, 32, 97,110,100, 32, 99,104,101, 99,107, 32,116,104, +101, 32,114,101,112,108,121, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, + 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 99,111,109, +109, 97,110,100, 44, 32, 97,114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104, -101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97, -108, 32,112, 97,116,116,101,114,110, 32, 61, 32, 34, 40, 37,100, 43, 41, 37, 68, - 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, - 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 34, 10, 32, 32, 32, 32,108, -111, 99, 97,108, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 44, 32,112, 49, 44, - 32,112, 50, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, - 32,115,116,114,105,110,103, 46,102,105,110,100, 40,114,101,112,108,121, 44, 32, -112, 97,116,116,101,114,110, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116, -114,121, 40, 97, 32, 97,110,100, 32, 98, 32, 97,110,100, 32, 99, 32, 97,110,100, - 32,100, 32, 97,110,100, 32,112, 49, 32, 97,110,100, 32,112, 50, 44, 32,114,101, -112,108,121, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, - 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 32, 61, 32,115,116,114, -105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37,100, 46, 37,100, 46, 37,100, - 46, 37,100, 34, 44, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 41, 44, 10, 32, - 32, 32, 32, 32, 32, 32, 32,112,111,114,116, 32, 61, 32,112, 49, 42, 50, 53, 54, - 32, 43, 32,112, 50, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32,115, -101,108,102, 46,115,101,114,118,101,114, 32,116,104,101,110, 10, 32, 32, 32, 32, - 32, 32, 32, 32,115,101,108,102, 46,115,101,114,118,101,114, 58, 99,108,111,115, -101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,115,101,114, -118,101,114, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, - 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,112, 97,115,118,116, 46, -105,112, 44, 32,115,101,108,102, 46,112, 97,115,118,116, 46,112,111,114,116, 10, -101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, - 95, 95,105,110,100,101,120, 58,112,111,114,116, 40,105,112, 44, 32,112,111,114, -116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, 61, 32, -110,105,108, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,105,112, 32,116,104, -101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, - 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,103, -101,116, 99,111,110,116,114,111,108, 40, 41, 58,103,101,116,115,111, 99,107,110, - 97,109,101, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46, -115,101,114,118,101,114, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,111, - 99,107,101,116, 46, 98,105,110,100, 40,105,112, 44, 32, 48, 41, 41, 10, 32, 32, - 32, 32, 32, 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, 61, 32,115,101,108, -102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101,114, 58,103,101, -116,115,111, 99,107,110, 97,109,101, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, - 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101, -114, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, - 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, - 32,112,108, 32, 61, 32,109, 97,116,104, 46,109,111,100, 40,112,111,114,116, 44, - 32, 50, 53, 54, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,104, 32, 61, - 32, 40,112,111,114,116, 32, 45, 32,112,108, 41, 47, 50, 53, 54, 10, 32, 32, 32, - 32,108,111, 99, 97,108, 32, 97,114,103, 32, 61, 32,115,116,114,105,110,103, 46, -103,115,117, 98, 40,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, - 37,115, 44, 37,100, 44, 37,100, 34, 44, 32,105,112, 44, 32,112,104, 44, 32,112, -108, 41, 44, 32, 34, 37, 46, 34, 44, 32, 34, 44, 34, 41, 10, 32, 32, 32, 32,115, -101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, - 97,110,100, 40, 34,112,111,114,116, 34, 44, 32, 97,114,103, 41, 41, 10, 32, 32, - 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99, -104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116, -117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, -109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,115, -101,110,100,116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115, -101,108,102, 46,112, 97,115,118,116, 32,111,114, 32,115,101,108,102, 46,115,101, -114,118,101,114, 44, 32, 34,110,101,101,100, 32,112,111,114,116, 32,111,114, 32, -112, 97,115,118, 32,102,105,114,115,116, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32, -105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,112, 97,115,118,116, 32, -116, 97, 98,108,101, 44, 32,119,101, 32, 97,108,114,101, 97,100,121, 32,115,101, -110,116, 32, 97, 32, 80, 65, 83, 86, 32, 99,111,109,109, 97,110,100, 10, 32, 32, - 32, 32, 45, 45, 32,119,101, 32,106,117,115,116, 32,103,101,116, 32,116,104,101, - 32,100, 97,116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 32,105,110,116, -111, 32,115,101,108,102, 46,100, 97,116, 97, 10, 32, 32, 32, 32,105,102, 32,115, -101,108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58, -112, 97,115,118, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, - 32, 32, 45, 45, 32,103,101,116, 32,116,104,101, 32,116,114, 97,110,115,102,101, -114, 32, 97,114,103,117,109,101,110,116, 32, 97,110,100, 32, 99,111,109,109, 97, +101, 99,107,123, 34, 50, 46, 46, 34, 44, 32, 34, 49, 46, 46, 34,125, 41, 10, 32, + 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32,110,111, +116, 32, 97, 32, 97, 32,112, 97,115,118,116, 32,116, 97, 98,108,101, 44, 32,116, +104,101,110, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,115,101,114,118,101, +114, 10, 32, 32, 32, 32, 45, 45, 32, 97,110,100, 32,119,101, 32, 97,108,114,101, + 97,100,121, 32,115,101,110,116, 32, 97, 32, 80, 79, 82, 84, 32, 99,111,109,109, + 97,110,100, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101,108,102, 46, +112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112,111,114,116, + 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, + 32,103,101,116, 32,116,104,101, 32,115,105,110,107, 44, 32,115,111,117,114, 99, +101, 32, 97,110,100, 32,115,116,101,112, 32,102,111,114, 32,116,104,101, 32,116, +114, 97,110,115,102,101,114, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116, +101,112, 32, 61, 32,115,101,110,100,116, 46,115,116,101,112, 32,111,114, 32,108, +116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, 32, 32,108, +111, 99, 97,108, 32,114,101, 97,100,116, 32, 61, 32,123,115,101,108,102, 46,116, +112, 46, 99,125, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,101, 99,107, +115,116,101,112, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,114, 99, 44, + 32,115,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, 99,104,101, + 99,107, 32,115,116, 97,116,117,115, 32,105,110, 32, 99,111,110,116,114,111,108, + 32, 99,111,110,110,101, 99,116,105,111,110, 32,119,104,105,108,101, 32,100,111, +119,110,108,111, 97,100,105,110,103, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, + 99, 97,108, 32,114,101, 97,100,121,116, 32, 61, 32,115,111, 99,107,101,116, 46, +115,101,108,101, 99,116, 40,114,101, 97,100,116, 44, 32,110,105,108, 44, 32, 48, + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,114,101, 97,100,121,116, 91, +116,112, 93, 32,116,104,101,110, 32, 99,111,100,101, 32, 61, 32,115,101,108,102, + 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, + 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114, +101,116,117,114,110, 32,115,116,101,112, 40,115,114, 99, 44, 32,115,110,107, 41, + 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, +105,110,107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,107, 40, 34, 99, +108,111,115,101, 45,119,104,101,110, 45,100,111,110,101, 34, 44, 32,115,101,108, +102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32, 45, 45, 32,116,114, 97,110,115, +102,101,114, 32, 97,108,108, 32,100, 97,116, 97, 32, 97,110,100, 32, 99,104,101, + 99,107, 32,101,114,114,111,114, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114, +121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,101,110, +100,116, 46,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32, 99,104,101, + 99,107,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105, +110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41, + 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, +116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, + 10, 32, 32, 32, 32, 45, 45, 32,100,111,110,101, 32,119,105,116,104, 32,100, 97, +116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 10, 32, 32, 32, 32,115,101, +108,102, 46,100, 97,116, 97, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, + 45, 45, 32,102,105,110,100, 32,111,117,116, 32,104,111,119, 32,109, 97,110,121, + 32, 98,121,116,101,115, 32,119,101,114,101, 32,115,101,110,116, 10, 32, 32, 32, + 32,108,111, 99, 97,108, 32,115,101,110,116, 32, 61, 32,115,111, 99,107,101,116, + 46,115,107,105,112, 40, 49, 44, 32,115,101,108,102, 46,100, 97,116, 97, 58,103, +101,116,115,116, 97,116,115, 40, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46, +100, 97,116, 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101,116,117,114, +110, 32,115,101,110,116, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, + 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105, +118,101, 40,114,101, 99,118,116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116, +114,121, 40,115,101,108,102, 46,112, 97,115,118,116, 32,111,114, 32,115,101,108, +102, 46,115,101,114,118,101,114, 44, 32, 34,110,101,101,100, 32,112,111,114,116, + 32,111,114, 32,112, 97,115,118, 32,102,105,114,115,116, 34, 41, 10, 32, 32, 32, + 32,105,102, 32,115,101,108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32, +115,101,108,102, 58,112, 97,115,118, 99,111,110,110,101, 99,116, 40, 41, 32,101, 110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103,117,109,101,110, -116, 32, 61, 32,115,101,110,100,116, 46, 97,114,103,117,109,101,110,116, 32,111, +116, 32, 61, 32,114,101, 99,118,116, 46, 97,114,103,117,109,101,110,116, 32,111, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,114,108, 46,117,110,101,115, 99, 97, -112,101, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,115,101,110,100,116, +112,101, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,114,101, 99,118,116, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 44, 32, 34, 94, 91, 47, 92, 92, 93, 34, 44, 32, 34, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,103,117,109, 101,110,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 97,114,103,117,109, 101,110,116, 32, 61, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111, - 99, 97,108, 32, 99,111,109,109, 97,110,100, 32, 61, 32,115,101,110,100,116, 46, - 99,111,109,109, 97,110,100, 32,111,114, 32, 34,115,116,111,114, 34, 10, 32, 32, - 32, 32, 45, 45, 32,115,101,110,100, 32,116,104,101, 32,116,114, 97,110,115,102, -101,114, 32, 99,111,109,109, 97,110,100, 32, 97,110,100, 32, 99,104,101, 99,107, - 32,116,104,101, 32,114,101,112,108,121, 10, 32, 32, 32, 32,115,101,108,102, 46, -116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, - 99,111,109,109, 97,110,100, 44, 32, 97,114,103,117,109,101,110,116, 41, 41, 10, - 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108, -121, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, - 58, 99,104,101, 99,107,123, 34, 50, 46, 46, 34, 44, 32, 34, 49, 46, 46, 34,125, - 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, - 32,110,111,116, 32, 97, 32, 97, 32,112, 97,115,118,116, 32,116, 97, 98,108,101, - 44, 32,116,104,101,110, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,115,101, -114,118,101,114, 10, 32, 32, 32, 32, 45, 45, 32, 97,110,100, 32,119,101, 32, 97, -108,114,101, 97,100,121, 32,115,101,110,116, 32, 97, 32, 80, 79, 82, 84, 32, 99, -111,109,109, 97,110,100, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101, -108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112, -111,114,116, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, - 32, 45, 45, 32,103,101,116, 32,116,104,101, 32,115,105,110,107, 44, 32,115,111, -117,114, 99,101, 32, 97,110,100, 32,115,116,101,112, 32,102,111,114, 32,116,104, -101, 32,116,114, 97,110,115,102,101,114, 10, 32, 32, 32, 32,108,111, 99, 97,108, - 32,115,116,101,112, 32, 61, 32,115,101,110,100,116, 46,115,116,101,112, 32,111, -114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, - 32, 32,108,111, 99, 97,108, 32,114,101, 97,100,116, 32, 61, 32,123,115,101,108, -102, 46,116,112, 46, 99,125, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104, -101, 99,107,115,116,101,112, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115, -114, 99, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, - 99,104,101, 99,107, 32,115,116, 97,116,117,115, 32,105,110, 32, 99,111,110,116, -114,111,108, 32, 99,111,110,110,101, 99,116,105,111,110, 32,119,104,105,108,101, - 32,100,111,119,110,108,111, 97,100,105,110,103, 10, 32, 32, 32, 32, 32, 32, 32, - 32,108,111, 99, 97,108, 32,114,101, 97,100,121,116, 32, 61, 32,115,111, 99,107, -101,116, 46,115,101,108,101, 99,116, 40,114,101, 97,100,116, 44, 32,110,105,108, - 44, 32, 48, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,114,101, 97,100, -121,116, 91,116,112, 93, 32,116,104,101,110, 32, 99,111,100,101, 32, 61, 32,115, -101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99, -107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, - 32, 32,114,101,116,117,114,110, 32,115,116,101,112, 40,115,114, 99, 44, 32,115, -110,107, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97, -108, 32,115,105,110,107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,107, - 40, 34, 99,108,111,115,101, 45,119,104,101,110, 45,100,111,110,101, 34, 44, 32, -115,101,108,102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32, 45, 45, 32,116,114, - 97,110,115,102,101,114, 32, 97,108,108, 32,100, 97,116, 97, 32, 97,110,100, 32, - 99,104,101, 99,107, 32,101,114,114,111,114, 10, 32, 32, 32, 32,115,101,108,102, - 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40, -115,101,110,100,116, 46,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32, - 99,104,101, 99,107,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,105,102, 32,115, -116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, - 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101, -108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32, -101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,100,111,110,101, 32,119,105,116,104, - 32,100, 97,116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 10, 32, 32, 32, - 32,115,101,108,102, 46,100, 97,116, 97, 58, 99,108,111,115,101, 40, 41, 10, 32, - 32, 32, 32, 45, 45, 32,102,105,110,100, 32,111,117,116, 32,104,111,119, 32,109, - 97,110,121, 32, 98,121,116,101,115, 32,119,101,114,101, 32,115,101,110,116, 10, - 32, 32, 32, 32,108,111, 99, 97,108, 32,115,101,110,116, 32, 61, 32,115,111, 99, -107,101,116, 46,115,107,105,112, 40, 49, 44, 32,115,101,108,102, 46,100, 97,116, - 97, 58,103,101,116,115,116, 97,116,115, 40, 41, 41, 10, 32, 32, 32, 32,115,101, -108,102, 46,100, 97,116, 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101, -116,117,114,110, 32,115,101,110,116, 10,101,110,100, 10, 10,102,117,110, 99,116, -105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, - 99,101,105,118,101, 40,114,101, 99,118,116, 41, 10, 32, 32, 32, 32,115,101,108, -102, 46,116,114,121, 40,115,101,108,102, 46,112, 97,115,118,116, 32,111,114, 32, -115,101,108,102, 46,115,101,114,118,101,114, 44, 32, 34,110,101,101,100, 32,112, -111,114,116, 32,111,114, 32,112, 97,115,118, 32,102,105,114,115,116, 34, 41, 10, - 32, 32, 32, 32,105,102, 32,115,101,108,102, 46,112, 97,115,118,116, 32,116,104, -101,110, 32,115,101,108,102, 58,112, 97,115,118, 99,111,110,110,101, 99,116, 40, - 41, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103,117, -109,101,110,116, 32, 61, 32,114,101, 99,118,116, 46, 97,114,103,117,109,101,110, -116, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,114,108, 46,117,110,101, -115, 99, 97,112,101, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,114,101, - 99,118,116, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 44, 32, 34, 94, 91, 47, - 92, 92, 93, 34, 44, 32, 34, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114, -103,117,109,101,110,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 97,114, -103,117,109,101,110,116, 32, 61, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, - 32,108,111, 99, 97,108, 32, 99,111,109,109, 97,110,100, 32, 61, 32,114,101, 99, -118,116, 46, 99,111,109,109, 97,110,100, 32,111,114, 32, 34,114,101,116,114, 34, - 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116, -112, 58, 99,111,109,109, 97,110,100, 40, 99,111,109,109, 97,110,100, 44, 32, 97, -114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, - 99,111,100,101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, - 46,116,112, 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, 32, 34, 50, 46, - 46, 34,125, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101,108,102, - 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112,111,114, -116, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,108, -111, 99, 97,108, 32,115,111,117,114, 99,101, 32, 61, 32,115,111, 99,107,101,116, - 46,115,111,117,114, 99,101, 40, 34,117,110,116,105,108, 45, 99,108,111,115,101, -100, 34, 44, 32,115,101,108,102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32,108, -111, 99, 97,108, 32,115,116,101,112, 32, 61, 32,114,101, 99,118,116, 46,115,116, -101,112, 32,111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101, -112, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, - 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,114,101, - 99,118,116, 46,115,105,110,107, 44, 32,115,116,101,112, 41, 41, 10, 32, 32, 32, - 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, - 44, 32, 34, 49, 46, 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116, -114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, - 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97, -116, 97, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46, -100, 97,116, 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101,116,117,114, -110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, -116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,119,100, 40,100,105,114, 41, - 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116, -112, 58, 99,111,109,109, 97,110,100, 40, 34, 99,119,100, 34, 44, 32,100,105,114, - 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, - 46,116,112, 58, 99,104,101, 99,107, 40, 50, 53, 48, 41, 41, 10, 32, 32, 32, 32, -114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105, -111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,116,121,112, -101, 40,116,121,112,101, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, - 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,116,121, -112,101, 34, 44, 32,116,121,112,101, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, - 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 50, - 48, 48, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110, -100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95, -105,110,100,101,120, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,108,111, - 99, 97,108, 32, 99,111,100,101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40, -115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, - 32, 34, 50, 46, 46, 34,125, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105, -110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41, - 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, -116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, - 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102, -117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101, -120, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114, -121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,113, -117,105,116, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40, + 99, 97,108, 32, 99,111,109,109, 97,110,100, 32, 61, 32,114,101, 99,118,116, 46, + 99,111,109,109, 97,110,100, 32,111,114, 32, 34,114,101,116,114, 34, 10, 32, 32, + 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99, +111,109,109, 97,110,100, 40, 99,111,109,109, 97,110,100, 44, 32, 97,114,103,117, +109,101,110,116, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100, +101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, + 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, 32, 34, 50, 46, 46, 34,125, + 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101,108,102, 46,112, 97, +115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112,111,114,116, 99,111, +110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97, +108, 32,115,111,117,114, 99,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,111, +117,114, 99,101, 40, 34,117,110,116,105,108, 45, 99,108,111,115,101,100, 34, 44, + 32,115,101,108,102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32,108,111, 99, 97, +108, 32,115,116,101,112, 32, 61, 32,114,101, 99,118,116, 46,115,116,101,112, 32, +111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, + 32, 32, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117, +109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,114,101, 99,118,116, + 46,115,105,110,107, 44, 32,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,105,102, + 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, + 49, 46, 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40, 115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, + 41, 32,101,110,100, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, 97, 58, + 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, + 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, + 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, + 46, 95, 95,105,110,100,101,120, 58, 99,119,100, 40,100,105,114, 41, 10, 32, 32, + 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99, +111,109,109, 97,110,100, 40, 34, 99,119,100, 34, 44, 32,100,105,114, 41, 41, 10, + 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, + 58, 99,104,101, 99,107, 40, 50, 53, 48, 41, 41, 10, 32, 32, 32, 32,114,101,116, +117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, +109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,116,121,112,101, 40,116, +121,112,101, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101, +108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,116,121,112,101, 34, + 44, 32,116,121,112,101, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114, +121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 50, 48, 48, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10, 102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100, -101,120, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,105,102, 32,115,101, -108,102, 46,100, 97,116, 97, 32,116,104,101,110, 32,115,101,108,102, 46,100, 97, -116, 97, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,105, -102, 32,115,101,108,102, 46,115,101,114,118,101,114, 32,116,104,101,110, 32,115, -101,108,102, 46,115,101,114,118,101,114, 58, 99,108,111,115,101, 40, 41, 32,101, -110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116, -112, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, +101,120, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, + 32, 99,111,100,101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, +102, 46,116,112, 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, 32, 34, 50, + 46, 46, 34,125, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46, +102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41, 32,116,104, +101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, + 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, + 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99, +116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,113, +117,105,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115, +101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,113,117,105,116, + 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, +102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, + 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, + 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, + 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,105,102, 32,115,101,108,102, 46, +100, 97,116, 97, 32,116,104,101,110, 32,115,101,108,102, 46,100, 97,116, 97, 58, + 99,108,111,115,101, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,115, +101,108,102, 46,115,101,114,118,101,114, 32,116,104,101,110, 32,115,101,108,102, + 46,115,101,114,118,101,114, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 10, + 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,112, 58, 99, +108,111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, - 32,108,101,118,101,108, 32, 70, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101, +118,101,108, 32, 70, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102, -117,110, 99,116,105,111,110, 32,111,118,101,114,114,105,100,101, 40,116, 41, 10, - 32, 32, 32, 32,105,102, 32,116, 46,117,114,108, 32,116,104,101,110, 10, 32, 32, - 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,117, 32, 61, 32,117,114,108, 46, -112, 97,114,115,101, 40,116, 46,117,114,108, 41, 10, 32, 32, 32, 32, 32, 32, 32, - 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105, -114,115, 40,116, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32,117, 91,105, 93, 32, 61, 32,118, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110, -100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,117, 10, 32, - 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,116, 32,101,110,100, - 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, - 32,116,112,117,116, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,112,117,116,116, - 32, 61, 32,111,118,101,114,114,105,100,101, 40,112,117,116,116, 41, 10, 32, 32, - 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,112,117,116,116, 46,104,111, -115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109, -101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112, -101,110, 40,112,117,116,116, 46,104,111,115,116, 44, 32,112,117,116,116, 46,112, -111,114,116, 44, 32,112,117,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, - 32, 32,102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111, -103,105,110, 40,112,117,116,116, 46,117,115,101,114, 44, 32,112,117,116,116, 46, -112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,112,117,116, -116, 46,116,121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,112, -117,116,116, 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58, -112, 97,115,118, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,101,110, -116, 32, 61, 32,102, 58,115,101,110,100, 40,112,117,116,116, 41, 10, 32, 32, 32, - 32,102, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,102, 58, 99,108,111,115, -101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,110,116, 10, -101,110,100, 10, 10,108,111, 99, 97,108, 32,100,101,102, 97,117,108,116, 32, 61, - 32,123, 10, 9,112, 97,116,104, 32, 61, 32, 34, 47, 34, 44, 10, 9,115, 99,104, -101,109,101, 32, 61, 32, 34,102,116,112, 34, 10,125, 10, 10,108,111, 99, 97,108, - 32,102,117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 40,117, 41, 10, 32, - 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,115,111, 99,107,101,116, 46, -116,114,121, 40,117,114,108, 46,112, 97,114,115,101, 40,117, 44, 32,100,101,102, - 97,117,108,116, 41, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114, -121, 40,116, 46,115, 99,104,101,109,101, 32, 61, 61, 32, 34,102,116,112, 34, 44, - 32, 34,119,114,111,110,103, 32,115, 99,104,101,109,101, 32, 39, 34, 32, 46, 46, - 32,116, 46,115, 99,104,101,109,101, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, - 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116, 46,104,111,115,116, 44, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,117,110, 99, +116,105,111,110, 32,111,118,101,114,114,105,100,101, 40,116, 41, 10, 32, 32, 32, + 32,105,102, 32,116, 46,117,114,108, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, + 32, 32, 32,108,111, 99, 97,108, 32,117, 32, 61, 32,117,114,108, 46,112, 97,114, +115,101, 40,116, 46,117,114,108, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,111, +114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40, +116, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,117, 91, +105, 93, 32, 61, 32,118, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, + 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,117, 10, 32, 32, 32, 32, +101,108,115,101, 32,114,101,116,117,114,110, 32,116, 32,101,110,100, 10,101,110, +100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,116,112, +117,116, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,112,117,116,116, 32, 61, 32, +111,118,101,114,114,105,100,101, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,115, +111, 99,107,101,116, 46,116,114,121, 40,112,117,116,116, 46,104,111,115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109,101, 34, 41, - 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,116, 32, 61, 32, 34, 94,116, -121,112,101, 61, 40, 46, 41, 36, 34, 10, 32, 32, 32, 32,105,102, 32,116, 46,112, - 97,114, 97,109,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,116, - 46,116,121,112,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, - 50, 44, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,116, 46,112, 97,114, - 97,109,115, 44, 32,112, 97,116, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115, -111, 99,107,101,116, 46,116,114,121, 40,116, 46,116,121,112,101, 32, 61, 61, 32, - 34, 97, 34, 32,111,114, 32,116, 46,116,121,112,101, 32, 61, 61, 32, 34,105, 34, - 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34,105,110,118, 97,108, -105,100, 32,116,121,112,101, 32, 39, 34, 32, 46, 46, 32,116, 46,116,121,112,101, - 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, - 32,114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10,108,111, 99, 97,108, - 32,102,117,110, 99,116,105,111,110, 32,115,112,117,116, 40,117, 44, 32, 98,111, -100,121, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,117,116,116, 32, 61, - 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,112,117,116,116, 46,115, -111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,101, - 46,115,116,114,105,110,103, 40, 98,111,100,121, 41, 10, 32, 32, 32, 32,114,101, -116,117,114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 10,101,110,100, 10, - 10,112,117,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99, -116, 40,102,117,110, 99,116,105,111,110, 40,112,117,116,116, 44, 32, 98,111,100, -121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40, -112,117,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32,116,104, -101,110, 32,114,101,116,117,114,110, 32,115,112,117,116, 40,112,117,116,116, 44, - 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117, -114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 32,101,110,100, 10,101,110, -100, 41, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,116, -103,101,116, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,103,101,116,116, 32, 61, - 32,111,118,101,114,114,105,100,101, 40,103,101,116,116, 41, 10, 32, 32, 32, 32, -115,111, 99,107,101,116, 46,116,114,121, 40,103,101,116,116, 46,104,111,115,116, - 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109,101, 34, - 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,101,110, - 40,103,101,116,116, 46,104,111,115,116, 44, 32,103,101,116,116, 46,112,111,114, -116, 44, 32,103,101,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32, -102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,103,105, -110, 40,103,101,116,116, 46,117,115,101,114, 44, 32,103,101,116,116, 46,112, 97, -115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,103,101,116,116, 46, -116,121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,103,101,116, -116, 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,112, 97, -115,118, 40, 41, 10, 32, 32, 32, 32,102, 58,114,101, 99,101,105,118,101, 40,103, -101,116,116, 41, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40, 41, 10, 32, 32, - 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,111,115,101, 40, 41, 10,101, -110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115, -103,101,116, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,103,101,116, -116, 32, 61, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,103,101,116,116, 46,115, -105,110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,116, 97, 98, -108,101, 40,116, 41, 10, 32, 32, 32, 32,116,103,101,116, 40,103,101,116,116, 41, - 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101, 46, 99,111, -110, 99, 97,116, 40,116, 41, 10,101,110,100, 10, 10, 99,111,109,109, 97,110,100, - 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99,116, 40,102,117, -110, 99,116,105,111,110, 40, 99,109,100,116, 41, 10, 32, 32, 32, 32, 99,109,100, -116, 32, 61, 32,111,118,101,114,114,105,100,101, 40, 99,109,100,116, 41, 10, 32, - 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, 99,109,100,116, 46,104, + 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,101,110, 40, +112,117,116,116, 46,104,111,115,116, 44, 32,112,117,116,116, 46,112,111,114,116, + 44, 32,112,117,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,102, + 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,103,105,110, + 40,112,117,116,116, 46,117,115,101,114, 44, 32,112,117,116,116, 46,112, 97,115, +115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,112,117,116,116, 46,116, +121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,112,117,116,116, + 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,112, 97,115, +118, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,101,110,116, 32, 61, + 32,102, 58,115,101,110,100, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,102, 58, +113,117,105,116, 40, 41, 10, 32, 32, 32, 32,102, 58, 99,108,111,115,101, 40, 41, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,110,116, 10,101,110,100, + 10, 10,108,111, 99, 97,108, 32,100,101,102, 97,117,108,116, 32, 61, 32,123, 10, + 32, 32, 32, 32,112, 97,116,104, 32, 61, 32, 34, 47, 34, 44, 10, 32, 32, 32, 32, +115, 99,104,101,109,101, 32, 61, 32, 34,102,116,112, 34, 10,125, 10, 10,108,111, + 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 40,117, + 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,115,111, 99,107, +101,116, 46,116,114,121, 40,117,114,108, 46,112, 97,114,115,101, 40,117, 44, 32, +100,101,102, 97,117,108,116, 41, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, + 46,116,114,121, 40,116, 46,115, 99,104,101,109,101, 32, 61, 61, 32, 34,102,116, +112, 34, 44, 32, 34,119,114,111,110,103, 32,115, 99,104,101,109,101, 32, 39, 34, + 32, 46, 46, 32,116, 46,115, 99,104,101,109,101, 32, 46, 46, 32, 34, 39, 34, 41, + 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116, 46,104,111, +115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109, +101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,116, 32, 61, 32, + 34, 94,116,121,112,101, 61, 40, 46, 41, 36, 34, 10, 32, 32, 32, 32,105,102, 32, +116, 46,112, 97,114, 97,109,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, + 32, 32,116, 46,116,121,112,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107, +105,112, 40, 50, 44, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,116, 46, +112, 97,114, 97,109,115, 44, 32,112, 97,116, 41, 41, 10, 32, 32, 32, 32, 32, 32, + 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116, 46,116,121,112,101, 32, + 61, 61, 32, 34, 97, 34, 32,111,114, 32,116, 46,116,121,112,101, 32, 61, 61, 32, + 34,105, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34,105,110, +118, 97,108,105,100, 32,116,121,112,101, 32, 39, 34, 32, 46, 46, 32,116, 46,116, +121,112,101, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, + 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10,108,111, + 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,112,117,116, 40,117, 44, + 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,117,116, +116, 32, 61, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,112,117,116, +116, 46,115,111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117, +114, 99,101, 46,115,116,114,105,110,103, 40, 98,111,100,121, 41, 10, 32, 32, 32, + 32,114,101,116,117,114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 10,101, +110,100, 10, 10,112,117,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111, +116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,112,117,116,116, 44, 32, + 98,111,100,121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121, +112,101, 40,112,117,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, + 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,112,117,116, 40,112,117, +116,116, 44, 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114, +101,116,117,114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 32,101,110,100, + 10,101,110,100, 41, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111, +110, 32,116,103,101,116, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,103,101,116, +116, 32, 61, 32,111,118,101,114,114,105,100,101, 40,103,101,116,116, 41, 10, 32, + 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,103,101,116,116, 46,104, 111,115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97, -109,101, 34, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, - 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 34,109,105,115,115,105, -110,103, 32, 99,111,109,109, 97,110,100, 34, 41, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,102, 32, 61, 32,111,112,101,110, 40, 99,109,100,116, 46,104,111,115, -116, 44, 32, 99,109,100,116, 46,112,111,114,116, 44, 32, 99,109,100,116, 46, 99, -114,101, 97,116,101, 41, 10, 32, 32, 32, 32,102, 58,103,114,101,101,116, 40, 41, - 10, 32, 32, 32, 32,102, 58,108,111,103,105,110, 40, 99,109,100,116, 46,117,115, -101,114, 44, 32, 99,109,100,116, 46,112, 97,115,115,119,111,114,100, 41, 10, 32, - 32, 32, 32,102, 46,116,114,121, 40,102, 46,116,112, 58, 99,111,109,109, 97,110, -100, 40, 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 99,109,100,116, - 46, 97,114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 99, -109,100,116, 46, 99,104,101, 99,107, 32,116,104,101,110, 32,102, 46,116,114,121, - 40,102, 46,116,112, 58, 99,104,101, 99,107, 40, 99,109,100,116, 46, 99,104,101, - 99,107, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40, - 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,111,115,101, - 40, 41, 10,101,110,100, 41, 10, 10,103,101,116, 32, 61, 32,115,111, 99,107,101, -116, 46,112,114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,103, -101,116,116, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112, -101, 40,103,101,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32, -116,104,101,110, 32,114,101,116,117,114,110, 32,115,103,101,116, 40,103,101,116, -116, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,116, -103,101,116, 40,103,101,116,116, 41, 32,101,110,100, 10,101,110,100, 41, 10, 10, - +109,101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111, +112,101,110, 40,103,101,116,116, 46,104,111,115,116, 44, 32,103,101,116,116, 46, +112,111,114,116, 44, 32,103,101,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, + 32, 32, 32,102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108, +111,103,105,110, 40,103,101,116,116, 46,117,115,101,114, 44, 32,103,101,116,116, + 46,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,103,101, +116,116, 46,116,121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40, +103,101,116,116, 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, + 58,112, 97,115,118, 40, 41, 10, 32, 32, 32, 32,102, 58,114,101, 99,101,105,118, +101, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40, 41, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,111,115,101, 40, + 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111, +110, 32,115,103,101,116, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, +103,101,116,116, 32, 61, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32, +108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,103,101,116, +116, 46,115,105,110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46, +116, 97, 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,116,103,101,116, 40,103,101, +116,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101, + 46, 99,111,110, 99, 97,116, 40,116, 41, 10,101,110,100, 10, 10, 99,111,109,109, + 97,110,100, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99,116, + 40,102,117,110, 99,116,105,111,110, 40, 99,109,100,116, 41, 10, 32, 32, 32, 32, + 99,109,100,116, 32, 61, 32,111,118,101,114,114,105,100,101, 40, 99,109,100,116, + 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, 99,109,100, +116, 46,104,111,115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115, +116,110, 97,109,101, 34, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116, +114,121, 40, 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 34,109,105, +115,115,105,110,103, 32, 99,111,109,109, 97,110,100, 34, 41, 10, 32, 32, 32, 32, +108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,101,110, 40, 99,109,100,116, 46, +104,111,115,116, 44, 32, 99,109,100,116, 46,112,111,114,116, 44, 32, 99,109,100, +116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,102, 58,103,114,101,101, +116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,103,105,110, 40, 99,109,100,116, + 46,117,115,101,114, 44, 32, 99,109,100,116, 46,112, 97,115,115,119,111,114,100, + 41, 10, 32, 32, 32, 32,102, 46,116,114,121, 40,102, 46,116,112, 58, 99,111,109, +109, 97,110,100, 40, 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 99, +109,100,116, 46, 97,114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,105, +102, 32, 99,109,100,116, 46, 99,104,101, 99,107, 32,116,104,101,110, 32,102, 46, +116,114,121, 40,102, 46,116,112, 58, 99,104,101, 99,107, 40, 99,109,100,116, 46, + 99,104,101, 99,107, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,113,117, +105,116, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108, +111,115,101, 40, 41, 10,101,110,100, 41, 10, 10,103,101,116, 32, 61, 32,115,111, + 99,107,101,116, 46,112,114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111, +110, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46, +116,121,112,101, 40,103,101,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110, +103, 34, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,103,101,116, 40, +103,101,116,116, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114, +110, 32,116,103,101,116, 40,103,101,116,116, 41, 32,101,110,100, 10,101,110,100, + 41, 10, 10, 0 }; return luaL_dostring(L, (const char*)B); } /* end of embedded lua code */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/headers.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/headers.lua new file mode 100644 index 00000000000..41794baeef0 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/headers.lua @@ -0,0 +1,99 @@ +----------------------------------------------------------------------------- +-- Canonic header field capitalization +-- LuaSocket toolkit. +-- Author: Diego Nehab +----------------------------------------------------------------------------- +module("socket.headers") + +canonic = { + ["accept"] = "Accept", + ["accept-charset"] = "Accept-Charset", + ["accept-encoding"] = "Accept-Encoding", + ["accept-language"] = "Accept-Language", + ["accept-ranges"] = "Accept-Ranges", + ["action"] = "Action", + ["alternate-recipient"] = "Alternate-Recipient", + ["age"] = "Age", + ["allow"] = "Allow", + ["arrival-date"] = "Arrival-Date", + ["authorization"] = "Authorization", + ["bcc"] = "Bcc", + ["cache-control"] = "Cache-Control", + ["cc"] = "Cc", + ["comments"] = "Comments", + ["connection"] = "Connection", + ["content-description"] = "Content-Description", + ["content-disposition"] = "Content-Disposition", + ["content-encoding"] = "Content-Encoding", + ["content-id"] = "Content-ID", + ["content-language"] = "Content-Language", + ["content-length"] = "Content-Length", + ["content-location"] = "Content-Location", + ["content-md5"] = "Content-MD5", + ["content-range"] = "Content-Range", + ["content-transfer-encoding"] = "Content-Transfer-Encoding", + ["content-type"] = "Content-Type", + ["date"] = "Date", + ["diagnostic-code"] = "Diagnostic-Code", + ["dsn-gateway"] = "DSN-Gateway", + ["etag"] = "ETag", + ["expect"] = "Expect", + ["expires"] = "Expires", + ["final-log-id"] = "Final-Log-ID", + ["final-recipient"] = "Final-Recipient", + ["from"] = "From", + ["host"] = "Host", + ["if-match"] = "If-Match", + ["if-modified-since"] = "If-Modified-Since", + ["if-none-match"] = "If-None-Match", + ["if-range"] = "If-Range", + ["if-unmodified-since"] = "If-Unmodified-Since", + ["in-reply-to"] = "In-Reply-To", + ["keywords"] = "Keywords", + ["last-attempt-date"] = "Last-Attempt-Date", + ["last-modified"] = "Last-Modified", + ["location"] = "Location", + ["max-forwards"] = "Max-Forwards", + ["message-id"] = "Message-ID", + ["mime-version"] = "MIME-Version", + ["original-envelope-id"] = "Original-Envelope-ID", + ["original-recipient"] = "Original-Recipient", + ["pragma"] = "Pragma", + ["proxy-authenticate"] = "Proxy-Authenticate", + ["proxy-authorization"] = "Proxy-Authorization", + ["range"] = "Range", + ["received"] = "Received", + ["received-from-mta"] = "Received-From-MTA", + ["references"] = "References", + ["referer"] = "Referer", + ["remote-mta"] = "Remote-MTA", + ["reply-to"] = "Reply-To", + ["reporting-mta"] = "Reporting-MTA", + ["resent-bcc"] = "Resent-Bcc", + ["resent-cc"] = "Resent-Cc", + ["resent-date"] = "Resent-Date", + ["resent-from"] = "Resent-From", + ["resent-message-id"] = "Resent-Message-ID", + ["resent-reply-to"] = "Resent-Reply-To", + ["resent-sender"] = "Resent-Sender", + ["resent-to"] = "Resent-To", + ["retry-after"] = "Retry-After", + ["return-path"] = "Return-Path", + ["sender"] = "Sender", + ["server"] = "Server", + ["smtp-remote-recipient"] = "SMTP-Remote-Recipient", + ["status"] = "Status", + ["subject"] = "Subject", + ["te"] = "TE", + ["to"] = "To", + ["trailer"] = "Trailer", + ["transfer-encoding"] = "Transfer-Encoding", + ["upgrade"] = "Upgrade", + ["user-agent"] = "User-Agent", + ["vary"] = "Vary", + ["via"] = "Via", + ["warning"] = "Warning", + ["will-retry-until"] = "Will-Retry-Until", + ["www-authenticate"] = "WWW-Authenticate", + ["x-mailer"] = "X-Mailer", +} diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/headers_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/headers_lua.c new file mode 100644 index 00000000000..412f4064533 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/headers_lua.c @@ -0,0 +1,194 @@ +/* + * This file is auto-generated by "lua2c headers.lua headers_lua" + */ + +#include "lua.h" +#include "lauxlib.h" + +int luatex_headers_lua_open (lua_State *L) { + static unsigned char B[] = { + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, + 32, 67, 97,110,111,110,105, 99, 32,104,101, 97,100,101,114, 32,102,105,101,108, +100, 32, 99, 97,112,105,116, 97,108,105,122, 97,116,105,111,110, 10, 45, 45, 32, + 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, + 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, + 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, +109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,104,101, 97,100,101, +114,115, 34, 41, 10, 10, 99, 97,110,111,110,105, 99, 32, 61, 32,123, 10, 32, 32, + 32, 32, 91, 34, 97, 99, 99,101,112,116, 34, 93, 32, 61, 32, 34, 65, 99, 99,101, +112,116, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97, 99, 99,101,112,116, 45, 99,104, + 97,114,115,101,116, 34, 93, 32, 61, 32, 34, 65, 99, 99,101,112,116, 45, 67,104, + 97,114,115,101,116, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97, 99, 99,101,112,116, + 45,101,110, 99,111,100,105,110,103, 34, 93, 32, 61, 32, 34, 65, 99, 99,101,112, +116, 45, 69,110, 99,111,100,105,110,103, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97, + 99, 99,101,112,116, 45,108, 97,110,103,117, 97,103,101, 34, 93, 32, 61, 32, 34, + 65, 99, 99,101,112,116, 45, 76, 97,110,103,117, 97,103,101, 34, 44, 10, 32, 32, + 32, 32, 91, 34, 97, 99, 99,101,112,116, 45,114, 97,110,103,101,115, 34, 93, 32, + 61, 32, 34, 65, 99, 99,101,112,116, 45, 82, 97,110,103,101,115, 34, 44, 10, 32, + 32, 32, 32, 91, 34, 97, 99,116,105,111,110, 34, 93, 32, 61, 32, 34, 65, 99,116, +105,111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97,108,116,101,114,110, 97,116, +101, 45,114,101, 99,105,112,105,101,110,116, 34, 93, 32, 61, 32, 34, 65,108,116, +101,114,110, 97,116,101, 45, 82,101, 99,105,112,105,101,110,116, 34, 44, 10, 32, + 32, 32, 32, 91, 34, 97,103,101, 34, 93, 32, 61, 32, 34, 65,103,101, 34, 44, 10, + 32, 32, 32, 32, 91, 34, 97,108,108,111,119, 34, 93, 32, 61, 32, 34, 65,108,108, +111,119, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97,114,114,105,118, 97,108, 45,100, + 97,116,101, 34, 93, 32, 61, 32, 34, 65,114,114,105,118, 97,108, 45, 68, 97,116, +101, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97,117,116,104,111,114,105,122, 97,116, +105,111,110, 34, 93, 32, 61, 32, 34, 65,117,116,104,111,114,105,122, 97,116,105, +111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34, 98, 99, 99, 34, 93, 32, 61, 32, 34, + 66, 99, 99, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99, 97, 99,104,101, 45, 99,111, +110,116,114,111,108, 34, 93, 32, 61, 32, 34, 67, 97, 99,104,101, 45, 67,111,110, +116,114,111,108, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99, 99, 34, 93, 32, 61, 32, + 34, 67, 99, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,109,109,101,110,116,115, + 34, 93, 32, 61, 32, 34, 67,111,109,109,101,110,116,115, 34, 44, 10, 32, 32, 32, + 32, 91, 34, 99,111,110,110,101, 99,116,105,111,110, 34, 93, 32, 61, 32, 34, 67, +111,110,110,101, 99,116,105,111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111, +110,116,101,110,116, 45,100,101,115, 99,114,105,112,116,105,111,110, 34, 93, 32, + 61, 32, 34, 67,111,110,116,101,110,116, 45, 68,101,115, 99,114,105,112,116,105, +111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,100, +105,115,112,111,115,105,116,105,111,110, 34, 93, 32, 61, 32, 34, 67,111,110,116, +101,110,116, 45, 68,105,115,112,111,115,105,116,105,111,110, 34, 44, 10, 32, 32, + 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,101,110, 99,111,100,105,110,103, + 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, 69,110, 99,111,100,105, +110,103, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,105, +100, 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, 73, 68, 34, 44, 10, + 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,108, 97,110,103,117, 97, +103,101, 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, 76, 97,110,103, +117, 97,103,101, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, + 45,108,101,110,103,116,104, 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, + 45, 76,101,110,103,116,104, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,110,116, +101,110,116, 45,108,111, 99, 97,116,105,111,110, 34, 93, 32, 61, 32, 34, 67,111, +110,116,101,110,116, 45, 76,111, 99, 97,116,105,111,110, 34, 44, 10, 32, 32, 32, + 32, 91, 34, 99,111,110,116,101,110,116, 45,109,100, 53, 34, 93, 32, 61, 32, 34, + 67,111,110,116,101,110,116, 45, 77, 68, 53, 34, 44, 10, 32, 32, 32, 32, 91, 34, + 99,111,110,116,101,110,116, 45,114, 97,110,103,101, 34, 93, 32, 61, 32, 34, 67, +111,110,116,101,110,116, 45, 82, 97,110,103,101, 34, 44, 10, 32, 32, 32, 32, 91, + 34, 99,111,110,116,101,110,116, 45,116,114, 97,110,115,102,101,114, 45,101,110, + 99,111,100,105,110,103, 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, + 84,114, 97,110,115,102,101,114, 45, 69,110, 99,111,100,105,110,103, 34, 44, 10, + 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,116,121,112,101, 34, 93, + 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, 84,121,112,101, 34, 44, 10, 32, + 32, 32, 32, 91, 34,100, 97,116,101, 34, 93, 32, 61, 32, 34, 68, 97,116,101, 34, + 44, 10, 32, 32, 32, 32, 91, 34,100,105, 97,103,110,111,115,116,105, 99, 45, 99, +111,100,101, 34, 93, 32, 61, 32, 34, 68,105, 97,103,110,111,115,116,105, 99, 45, + 67,111,100,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,100,115,110, 45,103, 97,116, +101,119, 97,121, 34, 93, 32, 61, 32, 34, 68, 83, 78, 45, 71, 97,116,101,119, 97, +121, 34, 44, 10, 32, 32, 32, 32, 91, 34,101,116, 97,103, 34, 93, 32, 61, 32, 34, + 69, 84, 97,103, 34, 44, 10, 32, 32, 32, 32, 91, 34,101,120,112,101, 99,116, 34, + 93, 32, 61, 32, 34, 69,120,112,101, 99,116, 34, 44, 10, 32, 32, 32, 32, 91, 34, +101,120,112,105,114,101,115, 34, 93, 32, 61, 32, 34, 69,120,112,105,114,101,115, + 34, 44, 10, 32, 32, 32, 32, 91, 34,102,105,110, 97,108, 45,108,111,103, 45,105, +100, 34, 93, 32, 61, 32, 34, 70,105,110, 97,108, 45, 76,111,103, 45, 73, 68, 34, + 44, 10, 32, 32, 32, 32, 91, 34,102,105,110, 97,108, 45,114,101, 99,105,112,105, +101,110,116, 34, 93, 32, 61, 32, 34, 70,105,110, 97,108, 45, 82,101, 99,105,112, +105,101,110,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,102,114,111,109, 34, 93, 32, + 61, 32, 34, 70,114,111,109, 34, 44, 10, 32, 32, 32, 32, 91, 34,104,111,115,116, + 34, 93, 32, 61, 32, 34, 72,111,115,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,105, +102, 45,109, 97,116, 99,104, 34, 93, 32, 61, 32, 34, 73,102, 45, 77, 97,116, 99, +104, 34, 44, 10, 32, 32, 32, 32, 91, 34,105,102, 45,109,111,100,105,102,105,101, +100, 45,115,105,110, 99,101, 34, 93, 32, 61, 32, 34, 73,102, 45, 77,111,100,105, +102,105,101,100, 45, 83,105,110, 99,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,105, +102, 45,110,111,110,101, 45,109, 97,116, 99,104, 34, 93, 32, 61, 32, 34, 73,102, + 45, 78,111,110,101, 45, 77, 97,116, 99,104, 34, 44, 10, 32, 32, 32, 32, 91, 34, +105,102, 45,114, 97,110,103,101, 34, 93, 32, 61, 32, 34, 73,102, 45, 82, 97,110, +103,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,105,102, 45,117,110,109,111,100,105, +102,105,101,100, 45,115,105,110, 99,101, 34, 93, 32, 61, 32, 34, 73,102, 45, 85, +110,109,111,100,105,102,105,101,100, 45, 83,105,110, 99,101, 34, 44, 10, 32, 32, + 32, 32, 91, 34,105,110, 45,114,101,112,108,121, 45,116,111, 34, 93, 32, 61, 32, + 34, 73,110, 45, 82,101,112,108,121, 45, 84,111, 34, 44, 10, 32, 32, 32, 32, 91, + 34,107,101,121,119,111,114,100,115, 34, 93, 32, 61, 32, 34, 75,101,121,119,111, +114,100,115, 34, 44, 10, 32, 32, 32, 32, 91, 34,108, 97,115,116, 45, 97,116,116, +101,109,112,116, 45,100, 97,116,101, 34, 93, 32, 61, 32, 34, 76, 97,115,116, 45, + 65,116,116,101,109,112,116, 45, 68, 97,116,101, 34, 44, 10, 32, 32, 32, 32, 91, + 34,108, 97,115,116, 45,109,111,100,105,102,105,101,100, 34, 93, 32, 61, 32, 34, + 76, 97,115,116, 45, 77,111,100,105,102,105,101,100, 34, 44, 10, 32, 32, 32, 32, + 91, 34,108,111, 99, 97,116,105,111,110, 34, 93, 32, 61, 32, 34, 76,111, 99, 97, +116,105,111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34,109, 97,120, 45,102,111,114, +119, 97,114,100,115, 34, 93, 32, 61, 32, 34, 77, 97,120, 45, 70,111,114,119, 97, +114,100,115, 34, 44, 10, 32, 32, 32, 32, 91, 34,109,101,115,115, 97,103,101, 45, +105,100, 34, 93, 32, 61, 32, 34, 77,101,115,115, 97,103,101, 45, 73, 68, 34, 44, + 10, 32, 32, 32, 32, 91, 34,109,105,109,101, 45,118,101,114,115,105,111,110, 34, + 93, 32, 61, 32, 34, 77, 73, 77, 69, 45, 86,101,114,115,105,111,110, 34, 44, 10, + 32, 32, 32, 32, 91, 34,111,114,105,103,105,110, 97,108, 45,101,110,118,101,108, +111,112,101, 45,105,100, 34, 93, 32, 61, 32, 34, 79,114,105,103,105,110, 97,108, + 45, 69,110,118,101,108,111,112,101, 45, 73, 68, 34, 44, 10, 32, 32, 32, 32, 91, + 34,111,114,105,103,105,110, 97,108, 45,114,101, 99,105,112,105,101,110,116, 34, + 93, 32, 61, 32, 34, 79,114,105,103,105,110, 97,108, 45, 82,101, 99,105,112,105, +101,110,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,112,114, 97,103,109, 97, 34, 93, + 32, 61, 32, 34, 80,114, 97,103,109, 97, 34, 44, 10, 32, 32, 32, 32, 91, 34,112, +114,111,120,121, 45, 97,117,116,104,101,110,116,105, 99, 97,116,101, 34, 93, 32, + 61, 32, 34, 80,114,111,120,121, 45, 65,117,116,104,101,110,116,105, 99, 97,116, +101, 34, 44, 10, 32, 32, 32, 32, 91, 34,112,114,111,120,121, 45, 97,117,116,104, +111,114,105,122, 97,116,105,111,110, 34, 93, 32, 61, 32, 34, 80,114,111,120,121, + 45, 65,117,116,104,111,114,105,122, 97,116,105,111,110, 34, 44, 10, 32, 32, 32, + 32, 91, 34,114, 97,110,103,101, 34, 93, 32, 61, 32, 34, 82, 97,110,103,101, 34, + 44, 10, 32, 32, 32, 32, 91, 34,114,101, 99,101,105,118,101,100, 34, 93, 32, 61, + 32, 34, 82,101, 99,101,105,118,101,100, 34, 44, 10, 32, 32, 32, 32, 91, 34,114, +101, 99,101,105,118,101,100, 45,102,114,111,109, 45,109,116, 97, 34, 93, 32, 61, + 32, 34, 82,101, 99,101,105,118,101,100, 45, 70,114,111,109, 45, 77, 84, 65, 34, + 44, 10, 32, 32, 32, 32, 91, 34,114,101,102,101,114,101,110, 99,101,115, 34, 93, + 32, 61, 32, 34, 82,101,102,101,114,101,110, 99,101,115, 34, 44, 10, 32, 32, 32, + 32, 91, 34,114,101,102,101,114,101,114, 34, 93, 32, 61, 32, 34, 82,101,102,101, +114,101,114, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,109,111,116,101, 45,109, +116, 97, 34, 93, 32, 61, 32, 34, 82,101,109,111,116,101, 45, 77, 84, 65, 34, 44, + 10, 32, 32, 32, 32, 91, 34,114,101,112,108,121, 45,116,111, 34, 93, 32, 61, 32, + 34, 82,101,112,108,121, 45, 84,111, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101, +112,111,114,116,105,110,103, 45,109,116, 97, 34, 93, 32, 61, 32, 34, 82,101,112, +111,114,116,105,110,103, 45, 77, 84, 65, 34, 44, 10, 32, 32, 32, 32, 91, 34,114, +101,115,101,110,116, 45, 98, 99, 99, 34, 93, 32, 61, 32, 34, 82,101,115,101,110, +116, 45, 66, 99, 99, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,115,101,110,116, + 45, 99, 99, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,116, 45, 67, 99, 34, 44, + 10, 32, 32, 32, 32, 91, 34,114,101,115,101,110,116, 45,100, 97,116,101, 34, 93, + 32, 61, 32, 34, 82,101,115,101,110,116, 45, 68, 97,116,101, 34, 44, 10, 32, 32, + 32, 32, 91, 34,114,101,115,101,110,116, 45,102,114,111,109, 34, 93, 32, 61, 32, + 34, 82,101,115,101,110,116, 45, 70,114,111,109, 34, 44, 10, 32, 32, 32, 32, 91, + 34,114,101,115,101,110,116, 45,109,101,115,115, 97,103,101, 45,105,100, 34, 93, + 32, 61, 32, 34, 82,101,115,101,110,116, 45, 77,101,115,115, 97,103,101, 45, 73, + 68, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,115,101,110,116, 45,114,101,112, +108,121, 45,116,111, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,116, 45, 82,101, +112,108,121, 45, 84,111, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,115,101,110, +116, 45,115,101,110,100,101,114, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,116, + 45, 83,101,110,100,101,114, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,115,101, +110,116, 45,116,111, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,116, 45, 84,111, + 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,116,114,121, 45, 97,102,116,101,114, + 34, 93, 32, 61, 32, 34, 82,101,116,114,121, 45, 65,102,116,101,114, 34, 44, 10, + 32, 32, 32, 32, 91, 34,114,101,116,117,114,110, 45,112, 97,116,104, 34, 93, 32, + 61, 32, 34, 82,101,116,117,114,110, 45, 80, 97,116,104, 34, 44, 10, 32, 32, 32, + 32, 91, 34,115,101,110,100,101,114, 34, 93, 32, 61, 32, 34, 83,101,110,100,101, +114, 34, 44, 10, 32, 32, 32, 32, 91, 34,115,101,114,118,101,114, 34, 93, 32, 61, + 32, 34, 83,101,114,118,101,114, 34, 44, 10, 32, 32, 32, 32, 91, 34,115,109,116, +112, 45,114,101,109,111,116,101, 45,114,101, 99,105,112,105,101,110,116, 34, 93, + 32, 61, 32, 34, 83, 77, 84, 80, 45, 82,101,109,111,116,101, 45, 82,101, 99,105, +112,105,101,110,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,115,116, 97,116,117,115, + 34, 93, 32, 61, 32, 34, 83,116, 97,116,117,115, 34, 44, 10, 32, 32, 32, 32, 91, + 34,115,117, 98,106,101, 99,116, 34, 93, 32, 61, 32, 34, 83,117, 98,106,101, 99, +116, 34, 44, 10, 32, 32, 32, 32, 91, 34,116,101, 34, 93, 32, 61, 32, 34, 84, 69, + 34, 44, 10, 32, 32, 32, 32, 91, 34,116,111, 34, 93, 32, 61, 32, 34, 84,111, 34, + 44, 10, 32, 32, 32, 32, 91, 34,116,114, 97,105,108,101,114, 34, 93, 32, 61, 32, + 34, 84,114, 97,105,108,101,114, 34, 44, 10, 32, 32, 32, 32, 91, 34,116,114, 97, +110,115,102,101,114, 45,101,110, 99,111,100,105,110,103, 34, 93, 32, 61, 32, 34, + 84,114, 97,110,115,102,101,114, 45, 69,110, 99,111,100,105,110,103, 34, 44, 10, + 32, 32, 32, 32, 91, 34,117,112,103,114, 97,100,101, 34, 93, 32, 61, 32, 34, 85, +112,103,114, 97,100,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,117,115,101,114, 45, + 97,103,101,110,116, 34, 93, 32, 61, 32, 34, 85,115,101,114, 45, 65,103,101,110, +116, 34, 44, 10, 32, 32, 32, 32, 91, 34,118, 97,114,121, 34, 93, 32, 61, 32, 34, + 86, 97,114,121, 34, 44, 10, 32, 32, 32, 32, 91, 34,118,105, 97, 34, 93, 32, 61, + 32, 34, 86,105, 97, 34, 44, 10, 32, 32, 32, 32, 91, 34,119, 97,114,110,105,110, +103, 34, 93, 32, 61, 32, 34, 87, 97,114,110,105,110,103, 34, 44, 10, 32, 32, 32, + 32, 91, 34,119,105,108,108, 45,114,101,116,114,121, 45,117,110,116,105,108, 34, + 93, 32, 61, 32, 34, 87,105,108,108, 45, 82,101,116,114,121, 45, 85,110,116,105, +108, 34, 44, 10, 32, 32, 32, 32, 91, 34,119,119,119, 45, 97,117,116,104,101,110, +116,105, 99, 97,116,101, 34, 93, 32, 61, 32, 34, 87, 87, 87, 45, 65,117,116,104, +101,110,116,105, 99, 97,116,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,120, 45,109, + 97,105,108,101,114, 34, 93, 32, 61, 32, 34, 88, 45, 77, 97,105,108,101,114, 34, + 44, 10,125, 10, + 0 }; + return luaL_dostring(L, (const char*)B); +} /* end of embedded lua code */ + diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/http.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/http.lua index ad8db1ee065..4c7e7d80e30 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/http.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/http.lua @@ -2,7 +2,6 @@ -- HTTP/1.1 client support for the Lua language. -- LuaSocket toolkit. -- Author: Diego Nehab --- RCS ID: $Id: http.lua,v 1.71 2007/10/13 23:55:20 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -13,6 +12,7 @@ local url = require("socket.url") local ltn12 = require("ltn12") local mime = require("mime") local string = require("string") +local headers = require("socket.headers") local base = _G local table = require("table") module("socket.http") @@ -123,10 +123,11 @@ function metat.__index:sendrequestline(method, uri) return self.try(self.c:send(reqline)) end -function metat.__index:sendheaders(headers) +function metat.__index:sendheaders(tosend) + local canonic = headers.canonic local h = "\r\n" - for i, v in base.pairs(headers) do - h = i .. ": " .. v .. "\r\n" .. h + for f, v in base.pairs(tosend) do + h = (canonic[f] or f) .. ": " .. v .. "\r\n" .. h end self.try(self.c:send(h)) return 1 @@ -254,7 +255,7 @@ local function shouldredirect(reqt, code, headers) return headers.location and string.gsub(headers.location, "%s", "") ~= "" and (reqt.redirect ~= false) and - (code == 301 or code == 302) and + (code == 301 or code == 302 or code == 303 or code == 307) and (not reqt.method or reqt.method == "GET" or reqt.method == "HEAD") and (not reqt.nredirects or reqt.nredirects < 5) end diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c index fa287503798..1fd892e6f6c 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c @@ -1,5 +1,5 @@ /* - * This file is auto-generated by "./lua2c http.lua http_lua" + * This file is auto-generated by "lua2c http.lua http_lua" */ #include "lua.h" @@ -15,608 +15,611 @@ int luatex_http_lua_open (lua_State *L) { 112,111,114,116, 32,102,111,114, 32,116,104,101, 32, 76,117, 97, 32,108, 97,110, 103,117, 97,103,101, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32, 116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, - 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, - 68, 58, 32, 36, 73,100, 58, 32,104,116,116,112, 46,108,117, 97, 44,118, 32, 49, - 46, 55, 49, 32, 50, 48, 48, 55, 47, 49, 48, 47, 49, 51, 32, 50, 51, 58, 53, 53, - 58, 50, 48, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, + 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, - 97,114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114, -116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32, +109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101, +112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, - 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115, -111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32, -114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, - 41, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117, -105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,109, -105,109,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109,105,109,101, 34, - 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113, -117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, - 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98, -108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34, - 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,104,116,116, -112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,111, 99, +107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101, +116, 34, 41, 10,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32,114,101,113,117, +105,114,101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10,108,111, + 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, + 34,108,116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,109,105,109,101, 32, + 61, 32,114,101,113,117,105,114,101, 40, 34,109,105,109,101, 34, 41, 10,108,111, + 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, + 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32,104,101, 97, +100,101,114,115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107, +101,116, 46,104,101, 97,100,101,114,115, 34, 41, 10,108,111, 99, 97,108, 32, 98, + 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98,108,101, + 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10, +109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,104,116,116,112, 34, + 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97, -110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116, +115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, + 45, 45, 32, 99,111,110,110,101, 99,116,105,111,110, 32,116,105,109,101,111,117, +116, 32,105,110, 32,115,101, 99,111,110,100,115, 10, 84, 73, 77, 69, 79, 85, 84, + 32, 61, 32, 54, 48, 10, 45, 45, 32,100,101,102, 97,117,108,116, 32,112,111,114, +116, 32,102,111,114, 32,100,111, 99,117,109,101,110,116, 32,114,101,116,114,105, +101,118, 97,108, 10, 80, 79, 82, 84, 32, 61, 32, 56, 48, 10, 45, 45, 32,117,115, +101,114, 32, 97,103,101,110,116, 32,102,105,101,108,100, 32,115,101,110,116, 32, +105,110, 32,114,101,113,117,101,115,116, 10, 85, 83, 69, 82, 65, 71, 69, 78, 84, + 32, 61, 32,115,111, 99,107,101,116, 46, 95, 86, 69, 82, 83, 73, 79, 78, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 10, 45, 45, 32, 99,111,110,110,101, 99,116,105,111,110, 32,116,105,109,101, -111,117,116, 32,105,110, 32,115,101, 99,111,110,100,115, 10, 84, 73, 77, 69, 79, - 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100,101,102, 97,117,108,116, 32,112, -111,114,116, 32,102,111,114, 32,100,111, 99,117,109,101,110,116, 32,114,101,116, -114,105,101,118, 97,108, 10, 80, 79, 82, 84, 32, 61, 32, 56, 48, 10, 45, 45, 32, -117,115,101,114, 32, 97,103,101,110,116, 32,102,105,101,108,100, 32,115,101,110, -116, 32,105,110, 32,114,101,113,117,101,115,116, 10, 85, 83, 69, 82, 65, 71, 69, - 78, 84, 32, 61, 32,115,111, 99,107,101,116, 46, 95, 86, 69, 82, 83, 73, 79, 78, - 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, + 32, 82,101, 97,100,115, 32, 77, 73, 77, 69, 32,104,101, 97,100,101,114,115, 32, +102,114,111,109, 32, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 44, 32,117, +110,102,111,108,100,105,110,103, 32,119,104,101,114,101, 32,110,101,101,100,101, +100, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, - 45, 45, 32, 82,101, 97,100,115, 32, 77, 73, 77, 69, 32,104,101, 97,100,101,114, -115, 32,102,114,111,109, 32, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 44, - 32,117,110,102,111,108,100,105,110,103, 32,119,104,101,114,101, 32,110,101,101, -100,101,100, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,114,101, 99, -101,105,118,101,104,101, 97,100,101,114,115, 40,115,111, 99,107, 44, 32,104,101, - 97,100,101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110, -101, 44, 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 44, 32,101,114,114, 10, - 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, 97,100,101,114, -115, 32,111,114, 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,102, -105,114,115,116, 32,108,105,110,101, 10, 32, 32, 32, 32,108,105,110,101, 44, 32, -101,114,114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, - 10, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116, -117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, - 32, 45, 45, 32,104,101, 97,100,101,114,115, 32,103,111, 32,117,110,116,105,108, - 32, 97, 32, 98,108, 97,110,107, 32,108,105,110,101, 32,105,115, 32,102,111,117, -110,100, 10, 32, 32, 32, 32,119,104,105,108,101, 32,108,105,110,101, 32,126, 61, - 32, 34, 34, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,103,101, -116, 32,102,105,101,108,100, 45,110, 97,109,101, 32, 97,110,100, 32,118, 97,108, -117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 44, 32,118, 97,108, -117,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32, -115,116,114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, - 40, 46, 45, 41, 58, 37,115, 42, 40, 46, 42, 41, 34, 41, 41, 10, 32, 32, 32, 32, - 32, 32, 32, 32,105,102, 32,110,111,116, 32, 40,110, 97,109,101, 32, 97,110,100, - 32,118, 97,108,117,101, 41, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, -110,105,108, 44, 32, 34,109, 97,108,102,111,114,109,101,100, 32,114,101,112,111, -110,115,101, 32,104,101, 97,100,101,114,115, 34, 32,101,110,100, 10, 32, 32, 32, - 32, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,108, -111,119,101,114, 40,110, 97,109,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, - 45, 32,103,101,116, 32,110,101,120,116, 32,108,105,110,101, 32, 40,118, 97,108, -117,101, 32,109,105,103,104,116, 32, 98,101, 32,102,111,108,100,101,100, 41, 10, - 32, 32, 32, 32, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 32, 61, +108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,114,101, 99,101,105, +118,101,104,101, 97,100,101,114,115, 40,115,111, 99,107, 44, 32,104,101, 97,100, +101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,101, 44, + 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 44, 32,101,114,114, 10, 32, 32, + 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, 97,100,101,114,115, 32, +111,114, 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,102,105,114, +115,116, 32,108,105,110,101, 10, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114, +114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, + 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114, +110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 45, + 45, 32,104,101, 97,100,101,114,115, 32,103,111, 32,117,110,116,105,108, 32, 97, + 32, 98,108, 97,110,107, 32,108,105,110,101, 32,105,115, 32,102,111,117,110,100, + 10, 32, 32, 32, 32,119,104,105,108,101, 32,108,105,110,101, 32,126, 61, 32, 34, + 34, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32, +102,105,101,108,100, 45,110, 97,109,101, 32, 97,110,100, 32,118, 97,108,117,101, + 10, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 44, 32,118, 97,108,117,101, + 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116, +114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 46, + 45, 41, 58, 37,115, 42, 40, 46, 42, 41, 34, 41, 41, 10, 32, 32, 32, 32, 32, 32, + 32, 32,105,102, 32,110,111,116, 32, 40,110, 97,109,101, 32, 97,110,100, 32,118, + 97,108,117,101, 41, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105, +108, 44, 32, 34,109, 97,108,102,111,114,109,101,100, 32,114,101,112,111,110,115, +101, 32,104,101, 97,100,101,114,115, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32, + 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,108,111,119, +101,114, 40,110, 97,109,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, +103,101,116, 32,110,101,120,116, 32,108,105,110,101, 32, 40,118, 97,108,117,101, + 32,109,105,103,104,116, 32, 98,101, 32,102,111,108,100,101,100, 41, 10, 32, 32, + 32, 32, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 32, 61, 32,115, +111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, + 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, + 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, + 32, 32, 45, 45, 32,117,110,102,111,108,100, 32, 97,110,121, 32,102,111,108,100, +101,100, 32,118, 97,108,117,101,115, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104, +105,108,101, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, + 44, 32, 34, 94, 37,115, 34, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,118, 97,108,117,101, 32, 61, 32,118, 97,108,117,101, 32, 46, 46, + 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,105, +110,101, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116, +104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32, +101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, + 32, 32, 32, 32, 45, 45, 32,115, 97,118,101, 32,112, 97,105,114, 32,105,110, 32, +116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,104,101, 97, +100,101,114,115, 91,110, 97,109,101, 93, 32,116,104,101,110, 32,104,101, 97,100, +101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, +110, 97,109,101, 93, 32, 46, 46, 32, 34, 44, 32, 34, 32, 46, 46, 32,118, 97,108, +117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,104,101, 97,100, +101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,118, 97,108,117,101, 32,101,110, +100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, + 32,104,101, 97,100,101,114,115, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,120,116,114, 97, + 32,115,111,117,114, 99,101,115, 32, 97,110,100, 32,115,105,110,107,115, 10, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,115,111, 99, +107,101,116, 46,115,111,117,114, 99,101,116, 91, 34,104,116,116,112, 45, 99,104, +117,110,107,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115, +111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114,101, +116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98, +108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, 61, + 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115, +111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32, + 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105,111, +110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114,116, +121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116,105, +111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, +103,101,116, 32, 99,104,117,110,107, 32,115,105,122,101, 44, 32,115,107,105,112, + 32,101,120,116,101,110,116,105,111,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, - 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117, -114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 45, 45, 32,117,110,102,111,108,100, 32, 97,110,121, 32,102,111, -108,100,101,100, 32,118, 97,108,117,101,115, 10, 32, 32, 32, 32, 32, 32, 32, 32, -119,104,105,108,101, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,108,105, -110,101, 44, 32, 34, 94, 37,115, 34, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32,118, 97,108,117,101, 32, 61, 32,118, 97,108,117,101, 32, - 46, 46, 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -108,105,110,101, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, - 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, - 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114, -114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 45, 45, 32,115, 97,118,101, 32,112, 97,105,114, 32,105, -110, 32,116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,104, -101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32,116,104,101,110, 32,104,101, - 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,104,101, 97,100,101,114, -115, 91,110, 97,109,101, 93, 32, 46, 46, 32, 34, 44, 32, 34, 32, 46, 46, 32,118, - 97,108,117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,104,101, - 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,118, 97,108,117,101, 32, -101,110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117, -114,110, 32,104,101, 97,100,101,114,115, 10,101,110,100, 10, 10, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,120,116, -114, 97, 32,115,111,117,114, 99,101,115, 32, 97,110,100, 32,115,105,110,107,115, - 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,115, -111, 99,107,101,116, 46,115,111,117,114, 99,101,116, 91, 34,104,116,116,112, 45, - 99,104,117,110,107,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, - 40,115,111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, -114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, - 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, - 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, - 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, - 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116, -105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105, -114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99, -116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, - 45, 32,103,101,116, 32, 99,104,117,110,107, 32,115,105,122,101, 44, 32,115,107, -105,112, 32,101,120,116,101,110,116,105,111,110, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,101, 44, 32,101,114,114, - 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101, -110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110, -100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, -115,105,122,101, 32, 61, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, - 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,108,105,110,101, 44, 32, 34, - 59, 46, 42, 34, 44, 32, 34, 34, 41, 44, 32, 49, 54, 41, 10, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,105,122,101, 32,116, -104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 34,105,110,118, - 97,108,105,100, 32, 99,104,117,110,107, 32,115,105,122,101, 34, 32,101,110,100, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,119, 97,115, 32, -105,116, 32,116,104,101, 32,108, 97,115,116, 32, 99,104,117,110,107, 63, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,105,122,101, 32, 62, - 32, 48, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 45, 45, 32,105,102, 32,110,111,116, 44, 32,103,101,116, 32, 99, -104,117,110,107, 32, 97,110,100, 32,115,107,105,112, 32,116,101,114,109,105,110, - 97,116,105,110,103, 32, 67, 82, 76, 70, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32, -101,114,114, 44, 32,112, 97,114,116, 32, 61, 32,115,111, 99,107, 58,114,101, 99, -101,105,118,101, 40,115,105,122,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, - 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 32,101,110,100, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117, -114,110, 32, 99,104,117,110,107, 44, 32,101,114,114, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,105,102, 32,105,116, 32,119, 97,115, 44, - 32,114,101, 97,100, 32,116,114, 97,105,108,101,114,115, 32,105,110,116,111, 32, -104,101, 97,100,101,114,115, 32,116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 44, 32,101, -114,114, 32, 61, 32,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, -115,111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,104,101, - 97,100,101,114,115, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105, -108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, - 32, 32, 32,125, 41, 10,101,110,100, 10, 10,115,111, 99,107,101,116, 46,115,105, -110,107,116, 91, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 93, 32, - 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, - 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97, -116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102, -100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114, -110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, - 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99, -116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100, -105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, - 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101, -114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110, -111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, - 32,115,111, 99,107, 58,115,101,110,100, 40, 34, 48, 92,114, 92,110, 92,114, 92, -110, 34, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -108,111, 99, 97,108, 32,115,105,122,101, 32, 61, 32,115,116,114,105,110,103, 46, -102,111,114,109, 97,116, 40, 34, 37, 88, 92,114, 92,110, 34, 44, 32,115,116,114, -105,110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 41, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58, -115,101,110,100, 40,115,105,122,101, 32, 46, 46, 32, 32, 99,104,117,110,107, 32, - 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, -110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32, -108,101,118,101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109, -101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123, -125, 32,125, 10, 10,102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,104, -111,115,116, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, - 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32,115,111, 99,107,101,116, 32, -119,105,116,104, 32,117,115,101,114, 32, 99,111,110,110,101, 99,116, 32,102,117, -110, 99,116,105,111,110, 44, 32,111,114, 32,119,105,116,104, 32,100,101,102, 97, -117,108,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 32, 61, 32,115,111, - 99,107,101,116, 46,116,114,121, 40, 40, 99,114,101, 97,116,101, 32,111,114, 32, -115,111, 99,107,101,116, 46,116, 99,112, 41, 40, 41, 41, 10, 32, 32, 32, 32,108, -111, 99, 97,108, 32,104, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, - 97,116, 97, 98,108,101, 40,123, 32, 99, 32, 61, 32, 99, 32,125, 44, 32,109,101, -116, 97,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32,102, -105,110, 97,108,105,122,101,100, 32,116,114,121, 10, 32, 32, 32, 32,104, 46,116, -114,121, 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114,121, 40,102, -117,110, 99,116,105,111,110, 40, 41, 32,104, 58, 99,108,111,115,101, 40, 41, 32, -101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,116, 32,116,105,109,101, -111,117,116, 32, 98,101,102,111,114,101, 32, 99,111,110,110,101, 99,116,105,110, -103, 10, 32, 32, 32, 32,104, 46,116,114,121, 40, 99, 58,115,101,116,116,105,109, -101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,104, - 46,116,114,121, 40, 99, 58, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, - 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 41, 41, 10, 32, 32, 32, 32, - 45, 45, 32,104,101,114,101, 32,101,118,101,114,121,116,104,105,110,103, 32,119, -111,114,107,101,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,104, 10,101, -110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, - 95,105,110,100,101,120, 58,115,101,110,100,114,101,113,117,101,115,116,108,105, -110,101, 40,109,101,116,104,111,100, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32, -108,111, 99, 97,108, 32,114,101,113,108,105,110,101, 32, 61, 32,115,116,114,105, -110,103, 46,102,111,114,109, 97,116, 40, 34, 37,115, 32, 37,115, 32, 72, 84, 84, - 80, 47, 49, 46, 49, 92,114, 92,110, 34, 44, 32,109,101,116,104,111,100, 32,111, -114, 32, 34, 71, 69, 84, 34, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32,114,101, -116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, - 58,115,101,110,100, 40,114,101,113,108,105,110,101, 41, 41, 10,101,110,100, 10, - 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110, -100,101,120, 58,115,101,110,100,104,101, 97,100,101,114,115, 40,104,101, 97,100, -101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, 34, - 92,114, 92,110, 34, 10, 32, 32, 32, 32,102,111,114, 32,105, 44, 32,118, 32,105, -110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,114,115, - 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 32, 61, 32,105, 32, 46, - 46, 32, 34, 58, 32, 34, 32, 46, 46, 32,118, 32, 46, 46, 32, 34, 92,114, 92,110, - 34, 32, 46, 46, 32,104, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,115, -101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,115,101,110,100, 40, -104, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, + 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32, +114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105, +122,101, 32, 61, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,115, +116,114,105,110,103, 46,103,115,117, 98, 40,108,105,110,101, 44, 32, 34, 59, 46, + 42, 34, 44, 32, 34, 34, 41, 44, 32, 49, 54, 41, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,105,122,101, 32,116,104,101, +110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 34,105,110,118, 97,108, +105,100, 32, 99,104,117,110,107, 32,115,105,122,101, 34, 32,101,110,100, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,119, 97,115, 32,105,116, + 32,116,104,101, 32,108, 97,115,116, 32, 99,104,117,110,107, 63, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,105,122,101, 32, 62, 32, 48, + 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 45, 45, 32,105,102, 32,110,111,116, 44, 32,103,101,116, 32, 99,104,117, +110,107, 32, 97,110,100, 32,115,107,105,112, 32,116,101,114,109,105,110, 97,116, +105,110,103, 32, 67, 82, 76, 70, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114, +114, 44, 32,112, 97,114,116, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105, +118,101, 40,115,105,122,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,115, +111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 32,101,110,100, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, + 32, 99,104,117,110,107, 44, 32,101,114,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 45, 45, 32,105,102, 32,105,116, 32,119, 97,115, 44, 32,114, +101, 97,100, 32,116,114, 97,105,108,101,114,115, 32,105,110,116,111, 32,104,101, + 97,100,101,114,115, 32,116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 44, 32,101,114,114, + 32, 61, 32,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40,115,111, + 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,104,101, 97,100, +101,114,115, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, + 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, + 32,125, 41, 10,101,110,100, 10, 10,115,111, 99,107,101,116, 46,115,105,110,107, +116, 91, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 93, 32, 61, 32, +102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, 32,114, +101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, + 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, + 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32, +115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, + 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105, +111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114, +116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116, +105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101,114,114, + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, + 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115, +111, 99,107, 58,115,101,110,100, 40, 34, 48, 92,114, 92,110, 92,114, 92,110, 34, + 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, + 99, 97,108, 32,115,105,122,101, 32, 61, 32,115,116,114,105,110,103, 46,102,111, +114,109, 97,116, 40, 34, 37, 88, 92,114, 92,110, 34, 44, 32,115,116,114,105,110, +103, 46,108,101,110, 40, 99,104,117,110,107, 41, 41, 10, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,115,101, +110,100, 40,115,105,122,101, 32, 46, 46, 32, 32, 99,104,117,110,107, 32, 46, 46, + 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, + 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,108,101, +118,101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,101,116, + 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,125, 32, +125, 10, 10,102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,104,111,115, +116, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, + 32, 45, 45, 32, 99,114,101, 97,116,101, 32,115,111, 99,107,101,116, 32,119,105, +116,104, 32,117,115,101,114, 32, 99,111,110,110,101, 99,116, 32,102,117,110, 99, +116,105,111,110, 44, 32,111,114, 32,119,105,116,104, 32,100,101,102, 97,117,108, +116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 32, 61, 32,115,111, 99,107, +101,116, 46,116,114,121, 40, 40, 99,114,101, 97,116,101, 32,111,114, 32,115,111, + 99,107,101,116, 46,116, 99,112, 41, 40, 41, 41, 10, 32, 32, 32, 32,108,111, 99, + 97,108, 32,104, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, + 97, 98,108,101, 40,123, 32, 99, 32, 61, 32, 99, 32,125, 44, 32,109,101,116, 97, +116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32,102,105,110, + 97,108,105,122,101,100, 32,116,114,121, 10, 32, 32, 32, 32,104, 46,116,114,121, + 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114,121, 40,102,117,110, + 99,116,105,111,110, 40, 41, 32,104, 58, 99,108,111,115,101, 40, 41, 32,101,110, +100, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,116, 32,116,105,109,101,111,117, +116, 32, 98,101,102,111,114,101, 32, 99,111,110,110,101, 99,116,105,110,103, 10, + 32, 32, 32, 32,104, 46,116,114,121, 40, 99, 58,115,101,116,116,105,109,101,111, +117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,104, 46,116, +114,121, 40, 99, 58, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, 32,112, +111,114,116, 32,111,114, 32, 80, 79, 82, 84, 41, 41, 10, 32, 32, 32, 32, 45, 45, + 32,104,101,114,101, 32,101,118,101,114,121,116,104,105,110,103, 32,119,111,114, +107,101,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,104, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105, -110,100,101,120, 58,115,101,110,100, 98,111,100,121, 40,104,101, 97,100,101,114, -115, 44, 32,115,111,117,114, 99,101, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, - 32,115,111,117,114, 99,101, 32, 61, 32,115,111,117,114, 99,101, 32,111,114, 32, -108,116,110, 49, 50, 46,115,111,117,114, 99,101, 46,101,109,112,116,121, 40, 41, - 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111,114, 32, -108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, 32, 32, - 45, 45, 32,105,102, 32,119,101, 32,100,111,110, 39,116, 32,107,110,111,119, 32, -116,104,101, 32,115,105,122,101, 32,105,110, 32, 97,100,118, 97,110, 99,101, 44, - 32,115,101,110,100, 32, 99,104,117,110,107,101,100, 32, 97,110,100, 32,104,111, -112,101, 32,102,111,114, 32,116,104,101, 32, 98,101,115,116, 10, 32, 32, 32, 32, -108,111, 99, 97,108, 32,109,111,100,101, 32, 61, 32, 34,104,116,116,112, 45, 99, -104,117,110,107,101,100, 34, 10, 32, 32, 32, 32,105,102, 32,104,101, 97,100,101, -114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101,110,103,116,104, 34, 93, - 32,116,104,101,110, 32,109,111,100,101, 32, 61, 32, 34,107,101,101,112, 45,111, -112,101,110, 34, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, -115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, - 97,108,108, 40,115,111,117,114, 99,101, 44, 32,115,111, 99,107,101,116, 46,115, -105,110,107, 40,109,111,100,101, 44, 32,115,101,108,102, 46, 99, 41, 44, 32,115, -116,101,112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, -109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118, -101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32, 32, 32,108,111, - 99, 97,108, 32,115,116, 97,116,117,115, 32, 61, 32,115,101,108,102, 46,116,114, -121, 40,115,101,108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40, 53, 41, 41, - 10, 32, 32, 32, 32, 45, 45, 32,105,100,101,110,116,105,102,121, 32, 72, 84, 84, - 80, 47, 48, 46, 57, 32,114,101,115,112,111,110,115,101,115, 44, 32,119,104,105, - 99,104, 32,100,111, 32,110,111,116, 32, 99,111,110,116, 97,105,110, 32, 97, 32, -115,116, 97,116,117,115, 32,108,105,110,101, 10, 32, 32, 32, 32, 45, 45, 32,116, -104,105,115, 32,105,115, 32,106,117,115,116, 32, 97, 32,104,101,117,114,105,115, -116,105, 99, 44, 32, 98,117,116, 32,105,115, 32,119,104, 97,116, 32,116,104,101, - 32, 82, 70, 67, 32,114,101, 99,111,109,109,101,110,100,115, 10, 32, 32, 32, 32, -105,102, 32,115,116, 97,116,117,115, 32,126, 61, 32, 34, 72, 84, 84, 80, 47, 34, - 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,115,116, - 97,116,117,115, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,111,116,104,101, -114,119,105,115,101, 32,112,114,111, 99,101,101,100, 32,114,101, 97,100,105,110, -103, 32, 97, 32,115,116, 97,116,117,115, 32,108,105,110,101, 10, 32, 32, 32, 32, -115,116, 97,116,117,115, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101, -108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40, 34, 42,108, 34, 44, 32,115, -116, 97,116,117,115, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111, -100,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32, -115,116,114,105,110,103, 46,102,105,110,100, 40,115,116, 97,116,117,115, 44, 32, - 34, 72, 84, 84, 80, 47, 37,100, 42, 37, 46, 37,100, 42, 32, 40, 37,100, 37,100, - 37,100, 41, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101, -108,102, 46,116,114,121, 40, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, - 40, 99,111,100,101, 41, 44, 32,115,116, 97,116,117,115, 41, 10,101,110,100, 10, - 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110, -100,101,120, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 41, - 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, - 40,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40,115,101,108,102, - 46, 99, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, -101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101, - 98,111,100,121, 40,104,101, 97,100,101,114,115, 44, 32,115,105,110,107, 44, 32, -115,116,101,112, 41, 10, 32, 32, 32, 32,115,105,110,107, 32, 61, 32,115,105,110, -107, 32,111,114, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,110,117,108,108, - 40, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111, -114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, - 32, 32,108,111, 99, 97,108, 32,108,101,110,103,116,104, 32, 61, 32, 98, 97,115, -101, 46,116,111,110,117,109, 98,101,114, 40,104,101, 97,100,101,114,115, 91, 34, - 99,111,110,116,101,110,116, 45,108,101,110,103,116,104, 34, 93, 41, 10, 32, 32, - 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,104,101, 97,100,101,114,115, 91, - 34,116,114, 97,110,115,102,101,114, 45,101,110, 99,111,100,105,110,103, 34, 93, - 32, 45, 45, 32,115,104,111,114,116, 99,117,116, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,109,111,100,101, 32, 61, 32, 34,100,101,102, 97,117,108,116, 34, 32, - 45, 45, 32, 99,111,110,110,101, 99,116,105,111,110, 32, 99,108,111,115,101, 10, - 32, 32, 32, 32,105,102, 32,116, 32, 97,110,100, 32,116, 32,126, 61, 32, 34,105, -100,101,110,116,105,116,121, 34, 32,116,104,101,110, 32,109,111,100,101, 32, 61, +110,100,101,120, 58,115,101,110,100,114,101,113,117,101,115,116,108,105,110,101, + 40,109,101,116,104,111,100, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32,108,111, + 99, 97,108, 32,114,101,113,108,105,110,101, 32, 61, 32,115,116,114,105,110,103, + 46,102,111,114,109, 97,116, 40, 34, 37,115, 32, 37,115, 32, 72, 84, 84, 80, 47, + 49, 46, 49, 92,114, 92,110, 34, 44, 32,109,101,116,104,111,100, 32,111,114, 32, + 34, 71, 69, 84, 34, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32,114,101,116,117, +114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,115, +101,110,100, 40,114,101,113,108,105,110,101, 41, 41, 10,101,110,100, 10, 10,102, +117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101, +120, 58,115,101,110,100,104,101, 97,100,101,114,115, 40,116,111,115,101,110,100, + 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 97,110,111,110,105, 99, 32, + 61, 32,104,101, 97,100,101,114,115, 46, 99, 97,110,111,110,105, 99, 10, 32, 32, + 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, 34, 92,114, 92,110, 34, 10, 32, + 32, 32, 32,102,111,114, 32,102, 44, 32,118, 32,105,110, 32, 98, 97,115,101, 46, +112, 97,105,114,115, 40,116,111,115,101,110,100, 41, 32,100,111, 10, 32, 32, 32, + 32, 32, 32, 32, 32,104, 32, 61, 32, 40, 99, 97,110,111,110,105, 99, 91,102, 93, + 32,111,114, 32,102, 41, 32, 46, 46, 32, 34, 58, 32, 34, 32, 46, 46, 32,118, 32, + 46, 46, 32, 34, 92,114, 92,110, 34, 32, 46, 46, 32,104, 10, 32, 32, 32, 32,101, +110,100, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, + 46, 99, 58,115,101,110,100, 40,104, 41, 41, 10, 32, 32, 32, 32,114,101,116,117, +114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, +101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 98,111,100, +121, 40,104,101, 97,100,101,114,115, 44, 32,115,111,117,114, 99,101, 44, 32,115, +116,101,112, 41, 10, 32, 32, 32, 32,115,111,117,114, 99,101, 32, 61, 32,115,111, +117,114, 99,101, 32,111,114, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,101, + 46,101,109,112,116,121, 40, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32, +115,116,101,112, 32,111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115, +116,101,112, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,119,101, 32,100,111,110, + 39,116, 32,107,110,111,119, 32,116,104,101, 32,115,105,122,101, 32,105,110, 32, + 97,100,118, 97,110, 99,101, 44, 32,115,101,110,100, 32, 99,104,117,110,107,101, +100, 32, 97,110,100, 32,104,111,112,101, 32,102,111,114, 32,116,104,101, 32, 98, +101,115,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,109,111,100,101, 32, 61, 32, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 10, 32, 32, 32, 32, -101,108,115,101,105,102, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, - 40,104,101, 97,100,101,114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101, -110,103,116,104, 34, 93, 41, 32,116,104,101,110, 32,109,111,100,101, 32, 61, 32, - 34, 98,121, 45,108,101,110,103,116,104, 34, 32,101,110,100, 10, 32, 32, 32, 32, +105,102, 32,104,101, 97,100,101,114,115, 91, 34, 99,111,110,116,101,110,116, 45, +108,101,110,103,116,104, 34, 93, 32,116,104,101,110, 32,109,111,100,101, 32, 61, + 32, 34,107,101,101,112, 45,111,112,101,110, 34, 32,101,110,100, 10, 32, 32, 32, + 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, + 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32, +115,111, 99,107,101,116, 46,115,105,110,107, 40,109,111,100,101, 44, 32,115,101, +108,102, 46, 99, 41, 44, 32,115,116,101,112, 41, 41, 10,101,110,100, 10, 10,102, +117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101, +120, 58,114,101, 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, + 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116, 97,116,117,115, 32, 61, + 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,114,101, 99, +101,105,118,101, 40, 53, 41, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,100,101,110, +116,105,102,121, 32, 72, 84, 84, 80, 47, 48, 46, 57, 32,114,101,115,112,111,110, +115,101,115, 44, 32,119,104,105, 99,104, 32,100,111, 32,110,111,116, 32, 99,111, +110,116, 97,105,110, 32, 97, 32,115,116, 97,116,117,115, 32,108,105,110,101, 10, + 32, 32, 32, 32, 45, 45, 32,116,104,105,115, 32,105,115, 32,106,117,115,116, 32, + 97, 32,104,101,117,114,105,115,116,105, 99, 44, 32, 98,117,116, 32,105,115, 32, +119,104, 97,116, 32,116,104,101, 32, 82, 70, 67, 32,114,101, 99,111,109,109,101, +110,100,115, 10, 32, 32, 32, 32,105,102, 32,115,116, 97,116,117,115, 32,126, 61, + 32, 34, 72, 84, 84, 80, 47, 34, 32,116,104,101,110, 32,114,101,116,117,114,110, + 32,110,105,108, 44, 32,115,116, 97,116,117,115, 32,101,110,100, 10, 32, 32, 32, + 32, 45, 45, 32,111,116,104,101,114,119,105,115,101, 32,112,114,111, 99,101,101, +100, 32,114,101, 97,100,105,110,103, 32, 97, 32,115,116, 97,116,117,115, 32,108, +105,110,101, 10, 32, 32, 32, 32,115,116, 97,116,117,115, 32, 61, 32,115,101,108, +102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,114,101, 99,101,105,118,101, + 40, 34, 42,108, 34, 44, 32,115,116, 97,116,117,115, 41, 41, 10, 32, 32, 32, 32, +108,111, 99, 97,108, 32, 99,111,100,101, 32, 61, 32,115,111, 99,107,101,116, 46, +115,107,105,112, 40, 50, 44, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, +115,116, 97,116,117,115, 44, 32, 34, 72, 84, 84, 80, 47, 37,100, 42, 37, 46, 37, +100, 42, 32, 40, 37,100, 37,100, 37,100, 41, 34, 41, 41, 10, 32, 32, 32, 32,114, +101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40, 98, 97,115,101, 46, +116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32,115,116, 97,116, +117,115, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, +116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101,104, +101, 97,100,101,114,115, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, +115,101,108,102, 46,116,114,121, 40,114,101, 99,101,105,118,101,104,101, 97,100, +101,114,115, 40,115,101,108,102, 46, 99, 41, 41, 10,101,110,100, 10, 10,102,117, +110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, + 58,114,101, 99,101,105,118,101, 98,111,100,121, 40,104,101, 97,100,101,114,115, + 44, 32,115,105,110,107, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,115,105, +110,107, 32, 61, 32,115,105,110,107, 32,111,114, 32,108,116,110, 49, 50, 46,115, +105,110,107, 46,110,117,108,108, 40, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, + 61, 32,115,116,101,112, 32,111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, + 46,115,116,101,112, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,101,110,103, +116,104, 32, 61, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,104, +101, 97,100,101,114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101,110,103, +116,104, 34, 93, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32, +104,101, 97,100,101,114,115, 91, 34,116,114, 97,110,115,102,101,114, 45,101,110, + 99,111,100,105,110,103, 34, 93, 32, 45, 45, 32,115,104,111,114,116, 99,117,116, + 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,109,111,100,101, 32, 61, 32, 34,100, +101,102, 97,117,108,116, 34, 32, 45, 45, 32, 99,111,110,110,101, 99,116,105,111, +110, 32, 99,108,111,115,101, 10, 32, 32, 32, 32,105,102, 32,116, 32, 97,110,100, + 32,116, 32,126, 61, 32, 34,105,100,101,110,116,105,116,121, 34, 32,116,104,101, +110, 32,109,111,100,101, 32, 61, 32, 34,104,116,116,112, 45, 99,104,117,110,107, +101,100, 34, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32, 98, 97,115,101, 46, +116,111,110,117,109, 98,101,114, 40,104,101, 97,100,101,114,115, 91, 34, 99,111, +110,116,101,110,116, 45,108,101,110,103,116,104, 34, 93, 41, 32,116,104,101,110, + 32,109,111,100,101, 32, 61, 32, 34, 98,121, 45,108,101,110,103,116,104, 34, 32, +101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, +116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115, +111, 99,107,101,116, 46,115,111,117,114, 99,101, 40,109,111,100,101, 44, 32,115, +101,108,102, 46, 99, 44, 32,108,101,110,103,116,104, 41, 44, 10, 32, 32, 32, 32, + 32, 32, 32, 32,115,105,110,107, 44, 32,115,116,101,112, 41, 41, 10,101,110,100, + 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105, +110,100,101,120, 58,114,101, 99,101,105,118,101, 48, 57, 98,111,100,121, 40,115, +116, 97,116,117,115, 44, 32,115,105,110,107, 44, 32,115,116,101,112, 41, 10, 32, + 32, 32, 32,108,111, 99, 97,108, 32,115,111,117,114, 99,101, 32, 61, 32,108,116, +110, 49, 50, 46,115,111,117,114, 99,101, 46,114,101,119,105,110,100, 40,115,111, + 99,107,101,116, 46,115,111,117,114, 99,101, 40, 34,117,110,116,105,108, 45, 99, +108,111,115,101,100, 34, 44, 32,115,101,108,102, 46, 99, 41, 41, 10, 32, 32, 32, + 32,115,111,117,114, 99,101, 40,115,116, 97,116,117,115, 41, 10, 32, 32, 32, 32, 114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49, - 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111, 99,107,101,116, 46,115,111, -117,114, 99,101, 40,109,111,100,101, 44, 32,115,101,108,102, 46, 99, 44, 32,108, -101,110,103,116,104, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,105,110,107, - 44, 32,115,116,101,112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105, -111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99, -101,105,118,101, 48, 57, 98,111,100,121, 40,115,116, 97,116,117,115, 44, 32,115, -105,110,107, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, - 32,115,111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, - 99,101, 46,114,101,119,105,110,100, 40,115,111, 99,107,101,116, 46,115,111,117, -114, 99,101, 40, 34,117,110,116,105,108, 45, 99,108,111,115,101,100, 34, 44, 32, -115,101,108,102, 46, 99, 41, 41, 10, 32, 32, 32, 32,115,111,117,114, 99,101, 40, -115,116, 97,116,117,115, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, -101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97, -108,108, 40,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32,115,116,101, -112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, -116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,108,111,115,101, 40, 41, 10, - 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58, 99,108, -111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118, -101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,117,110, 99, -116,105,111,110, 32, 97,100,106,117,115,116,117,114,105, 40,114,101,113,116, 41, - 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117, 32, 61, 32,114,101,113,116, 10, - 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, - 32,112,114,111,120,121, 44, 32,119,101, 32,110,101,101,100, 32,116,104,101, 32, -102,117,108,108, 32,117,114,108, 46, 32,111,116,104,101,114,119,105,115,101, 44, - 32,106,117,115,116, 32, 97, 32,112, 97,114,116, 46, 10, 32, 32, 32, 32,105,102, - 32,110,111,116, 32,114,101,113,116, 46,112,114,111,120,121, 32, 97,110,100, 32, -110,111,116, 32, 80, 82, 79, 88, 89, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, - 32, 32, 32,117, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -112, 97,116,104, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,121, 40,114,101, -113,116, 46,112, 97,116,104, 44, 32, 34,105,110,118, 97,108,105,100, 32,112, 97, -116,104, 32, 39,110,105,108, 39, 34, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,112, 97,114, 97,109,115, 32, 61, 32,114,101,113,116, 46,112, 97,114, - 97,109,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,113,117,101,114, -121, 32, 61, 32,114,101,113,116, 46,113,117,101,114,121, 44, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,102,114, 97,103,109,101,110,116, 32, 61, 32,114,101, -113,116, 46,102,114, 97,103,109,101,110,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, -125, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, - 32,117,114,108, 46, 98,117,105,108,100, 40,117, 41, 10,101,110,100, 10, 10,108, -111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116, -112,114,111,120,121, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97, -108, 32,112,114,111,120,121, 32, 61, 32,114,101,113,116, 46,112,114,111,120,121, - 32,111,114, 32, 80, 82, 79, 88, 89, 10, 32, 32, 32, 32,105,102, 32,112,114,111, -120,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,114,111,120, -121, 32, 61, 32,117,114,108, 46,112, 97,114,115,101, 40,112,114,111,120,121, 41, - 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,112,114,111,120, -121, 46,104,111,115,116, 44, 32,112,114,111,120,121, 46,112,111,114,116, 32,111, -114, 32, 51, 49, 50, 56, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, - 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,113,116, 46,104,111,115,116, - 44, 32,114,101,113,116, 46,112,111,114,116, 10, 32, 32, 32, 32,101,110,100, 10, -101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, - 97,100,106,117,115,116,104,101, 97,100,101,114,115, 40,114,101,113,116, 41, 10, - 32, 32, 32, 32, 45, 45, 32,100,101,102, 97,117,108,116, 32,104,101, 97,100,101, -114,115, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,111,119,101,114, 32, 61, - 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,117,115,101,114, 45, 97,103, -101,110,116, 34, 93, 32, 61, 32, 85, 83, 69, 82, 65, 71, 69, 78, 84, 44, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 91, 34,104,111,115,116, 34, 93, 32, 61, 32,114,101, -113,116, 46,104,111,115,116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99, -111,110,110,101, 99,116,105,111,110, 34, 93, 32, 61, 32, 34, 99,108,111,115,101, - 44, 32, 84, 69, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,116,101, 34, - 93, 32, 61, 32, 34,116,114, 97,105,108,101,114,115, 34, 10, 32, 32, 32, 32,125, - 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,119,101, 32,104, 97,118,101, 32, 97, -117,116,104,101,110,116,105, 99, 97,116,105,111,110, 32,105,110,102,111,114,109, - 97,116,105,111,110, 44, 32,112, 97,115,115, 32,105,116, 32, 97,108,111,110,103, - 10, 32, 32, 32, 32,105,102, 32,114,101,113,116, 46,117,115,101,114, 32, 97,110, -100, 32,114,101,113,116, 46,112, 97,115,115,119,111,114,100, 32,116,104,101,110, - 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101,114, 91, 34, 97,117,116,104, -111,114,105,122, 97,116,105,111,110, 34, 93, 32, 61, 32, 10, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 34, 66, 97,115,105, 99, 32, 34, 32, 46, 46, 32, 32, - 40,109,105,109,101, 46, 98, 54, 52, 40,114,101,113,116, 46,117,115,101,114, 32, - 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,114,101,113,116, 46,112, 97,115,115,119, -111,114,100, 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, - 32,111,118,101,114,114,105,100,101, 32,119,105,116,104, 32,117,115,101,114, 32, -104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32, -105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,114,101,113,116, 46,104, -101, 97,100,101,114,115, 32,111,114, 32,108,111,119,101,114, 41, 32,100,111, 10, - 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101,114, 91,115,116,114,105,110,103, - 46,108,111,119,101,114, 40,105, 41, 93, 32, 61, 32,118, 10, 32, 32, 32, 32,101, -110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,111,119,101,114, 10, -101,110,100, 10, 10, 45, 45, 32,100,101,102, 97,117,108,116, 32,117,114,108, 32, -112, 97,114,116,115, 10,108,111, 99, 97,108, 32,100,101,102, 97,117,108,116, 32, - 61, 32,123, 10, 32, 32, 32, 32,104,111,115,116, 32, 61, 32, 34, 34, 44, 10, 32, - 32, 32, 32,112,111,114,116, 32, 61, 32, 80, 79, 82, 84, 44, 10, 32, 32, 32, 32, -112, 97,116,104, 32, 61, 34, 47, 34, 44, 10, 32, 32, 32, 32,115, 99,104,101,109, -101, 32, 61, 32, 34,104,116,116,112, 34, 10,125, 10, 10,108,111, 99, 97,108, 32, -102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,114,101,113,117,101, -115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,114,115, -101, 32,117,114,108, 32,105,102, 32,112,114,111,118,105,100,101,100, 10, 32, 32, - 32, 32,108,111, 99, 97,108, 32,110,114,101,113,116, 32, 61, 32,114,101,113,116, - 46,117,114,108, 32, 97,110,100, 32,117,114,108, 46,112, 97,114,115,101, 40,114, -101,113,116, 46,117,114,108, 44, 32,100,101,102, 97,117,108,116, 41, 32,111,114, - 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,101,120,112,108,105, 99,105,116, 32, - 99,111,109,112,111,110,101,110,116,115, 32,111,118,101,114,114,105,100,101, 32, -117,114,108, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, - 97,115,101, 46,112, 97,105,114,115, 40,114,101,113,116, 41, 32,100,111, 32,110, -114,101,113,116, 91,105, 93, 32, 61, 32,118, 32,101,110,100, 10, 32, 32, 32, 32, -105,102, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61, 61, 32, 34, 34, 32, -116,104,101,110, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61, 32, 56, 48, - 32,101,110,100, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, -110,114,101,113,116, 46,104,111,115,116, 32, 97,110,100, 32,110,114,101,113,116, - 46,104,111,115,116, 32,126, 61, 32, 34, 34, 44, 32, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 34,105,110,118, 97,108,105,100, 32,104,111,115,116, 32, 39, 34, 32, 46, - 46, 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110,114,101,113, -116, 46,104,111,115,116, 41, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32, - 45, 45, 32, 99,111,109,112,117,116,101, 32,117,114,105, 32,105,102, 32,117,115, -101,114, 32,104, 97,115,110, 39,116, 32,111,118,101,114,114,105,100,101,110, 10, - 32, 32, 32, 32,110,114,101,113,116, 46,117,114,105, 32, 61, 32,114,101,113,116, - 46,117,114,105, 32,111,114, 32, 97,100,106,117,115,116,117,114,105, 40,110,114, -101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,106,117,115,116, 32,104,111, -115,116, 32, 97,110,100, 32,112,111,114,116, 32,105,102, 32,116,104,101,114,101, - 32,105,115, 32, 97, 32,112,114,111,120,121, 10, 32, 32, 32, 32,110,114,101,113, -116, 46,104,111,115,116, 44, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61, - 32, 97,100,106,117,115,116,112,114,111,120,121, 40,110,114,101,113,116, 41, 10, - 32, 32, 32, 32, 45, 45, 32, 97,100,106,117,115,116, 32,104,101, 97,100,101,114, -115, 32,105,110, 32,114,101,113,117,101,115,116, 10, 32, 32, 32, 32,110,114,101, -113,116, 46,104,101, 97,100,101,114,115, 32, 61, 32, 97,100,106,117,115,116,104, -101, 97,100,101,114,115, 40,110,114,101,113,116, 41, 10, 32, 32, 32, 32,114,101, -116,117,114,110, 32,110,114,101,113,116, 10,101,110,100, 10, 10,108,111, 99, 97, -108, 32,102,117,110, 99,116,105,111,110, 32,115,104,111,117,108,100,114,101,100, -105,114,101, 99,116, 40,114,101,113,116, 44, 32, 99,111,100,101, 44, 32,104,101, - 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,104,101, - 97,100,101,114,115, 46,108,111, 99, 97,116,105,111,110, 32, 97,110,100, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116,114,105,110,103, 46,103,115,117, - 98, 40,104,101, 97,100,101,114,115, 46,108,111, 99, 97,116,105,111,110, 44, 32, - 34, 37,115, 34, 44, 32, 34, 34, 41, 32,126, 61, 32, 34, 34, 32, 97,110,100, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,114,101,113,116, 46,114,101,100, -105,114,101, 99,116, 32,126, 61, 32,102, 97,108,115,101, 41, 32, 97,110,100, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 99,111,100,101, 32, 61, 61, 32, - 51, 48, 49, 32,111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 50, 41, 32, - 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,110,111,116, 32, -114,101,113,116, 46,109,101,116,104,111,100, 32,111,114, 32,114,101,113,116, 46, -109,101,116,104,111,100, 32, 61, 61, 32, 34, 71, 69, 84, 34, 32,111,114, 32,114, -101,113,116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34, - 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,110,100, 32, 40,110,111, -116, 32,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114, - 32,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32, 60, 32, 53, + 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,115, +105,110,107, 44, 32,115,116,101,112, 41, 41, 10,101,110,100, 10, 10,102,117,110, + 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, + 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, +101,108,102, 46, 99, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, + 72,105,103,104, 32,108,101,118,101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, + 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,117, +114,105, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117, + 32, 61, 32,114,101,113,116, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104, +101,114,101, 32,105,115, 32, 97, 32,112,114,111,120,121, 44, 32,119,101, 32,110, +101,101,100, 32,116,104,101, 32,102,117,108,108, 32,117,114,108, 46, 32,111,116, +104,101,114,119,105,115,101, 44, 32,106,117,115,116, 32, 97, 32,112, 97,114,116, + 46, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,113,116, 46,112,114, +111,120,121, 32, 97,110,100, 32,110,111,116, 32, 80, 82, 79, 88, 89, 32,116,104, +101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,117, 32, 61, 32,123, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,115,111, 99,107,101, +116, 46,116,114,121, 40,114,101,113,116, 46,112, 97,116,104, 44, 32, 34,105,110, +118, 97,108,105,100, 32,112, 97,116,104, 32, 39,110,105,108, 39, 34, 41, 44, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114, 97,109,115, 32, 61, 32, +114,101,113,116, 46,112, 97,114, 97,109,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,113,117,101,114,121, 32, 61, 32,114,101,113,116, 46,113,117,101, +114,121, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,102,114, 97,103,109, +101,110,116, 32, 61, 32,114,101,113,116, 46,102,114, 97,103,109,101,110,116, 10, + 32, 32, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, + 32, 32,114,101,116,117,114,110, 32,117,114,108, 46, 98,117,105,108,100, 40,117, 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111, -110, 32,115,104,111,117,108,100,114,101, 99,101,105,118,101, 98,111,100,121, 40, -114,101,113,116, 44, 32, 99,111,100,101, 41, 10, 32, 32, 32, 32,105,102, 32,114, -101,113,116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34, - 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, - 10, 32, 32, 32, 32,105,102, 32, 99,111,100,101, 32, 61, 61, 32, 50, 48, 52, 32, -111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 52, 32,116,104,101,110, 32, -114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,105, -102, 32, 99,111,100,101, 32, 62, 61, 32, 49, 48, 48, 32, 97,110,100, 32, 99,111, -100,101, 32, 60, 32, 50, 48, 48, 32,116,104,101,110, 32,114,101,116,117,114,110, - 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, - 49, 10,101,110,100, 10, 10, 45, 45, 32,102,111,114,119, 97,114,100, 32,100,101, - 99,108, 97,114, 97,116,105,111,110,115, 10,108,111, 99, 97,108, 32,116,114,101, -113,117,101,115,116, 44, 32,116,114,101,100,105,114,101, 99,116, 10, 10,102,117, -110, 99,116,105,111,110, 32,116,114,101,100,105,114,101, 99,116, 40,114,101,113, -116, 44, 32,108,111, 99, 97,116,105,111,110, 41, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,114,101,115,117,108,116, 44, 32, 99,111,100,101, 44, 32,104,101, 97, -100,101,114,115, 44, 32,115,116, 97,116,117,115, 32, 61, 32,116,114,101,113,117, -101,115,116, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,116,104,101, - 32, 82, 70, 67, 32,115, 97,121,115, 32,116,104,101, 32,114,101,100,105,114,101, - 99,116, 32, 85, 82, 76, 32,104, 97,115, 32,116,111, 32, 98,101, 32, 97, 98,115, -111,108,117,116,101, 44, 32, 98,117,116, 32,115,111,109,101, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 45, 45, 32,115,101,114,118,101,114,115, 32,100,111, 32,110,111, -116, 32,114,101,115,112,101, 99,116, 32,116,104, 97,116, 10, 32, 32, 32, 32, 32, - 32, 32, 32,117,114,108, 32, 61, 32,117,114,108, 46, 97, 98,115,111,108,117,116, -101, 40,114,101,113,116, 46,117,114,108, 44, 32,108,111, 99, 97,116,105,111,110, - 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,111,117,114, 99,101, 32, 61, 32, -114,101,113,116, 46,115,111,117,114, 99,101, 44, 10, 32, 32, 32, 32, 32, 32, 32, - 32,115,105,110,107, 32, 61, 32,114,101,113,116, 46,115,105,110,107, 44, 10, 32, - 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,114,101,113, -116, 46,104,101, 97,100,101,114,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, -114,111,120,121, 32, 61, 32,114,101,113,116, 46,112,114,111,120,121, 44, 32, 10, - 32, 32, 32, 32, 32, 32, 32, 32,110,114,101,100,105,114,101, 99,116,115, 32, 61, - 32, 40,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114, - 32, 48, 41, 32, 43, 32, 49, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,114,101, - 97,116,101, 32, 61, 32,114,101,113,116, 46, 99,114,101, 97,116,101, 10, 32, 32, - 32, 32,125, 32, 32, 32, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,115,115, 32,108, -111, 99, 97,116,105,111,110, 32,104,101, 97,100,101,114, 32, 98, 97, 99,107, 32, - 97,115, 32, 97, 32,104,105,110,116, 32,119,101, 32,114,101,100,105,114,101, 99, -116,101,100, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, - 97,100,101,114,115, 32,111,114, 32,123,125, 10, 32, 32, 32, 32,104,101, 97,100, -101,114,115, 46,108,111, 99, 97,116,105,111,110, 32, 61, 32,104,101, 97,100,101, -114,115, 46,108,111, 99, 97,116,105,111,110, 32,111,114, 32,108,111, 99, 97,116, -105,111,110, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,115,117,108, -116, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, - 97,116,117,115, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,116, -114,101,113,117,101,115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, - 32,119,101, 32,108,111,111,112, 32,117,110,116,105,108, 32,119,101, 32,103,101, -116, 32,119,104, 97,116, 32,119,101, 32,119, 97,110,116, 44, 32,111,114, 10, 32, - 32, 32, 32, 45, 45, 32,117,110,116,105,108, 32,119,101, 32, 97,114,101, 32,115, -117,114,101, 32,116,104,101,114,101, 32,105,115, 32,110,111, 32,119, 97,121, 32, -116,111, 32,103,101,116, 32,105,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, -110,114,101,113,116, 32, 61, 32, 97,100,106,117,115,116,114,101,113,117,101,115, -116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, - 61, 32,111,112,101,110, 40,110,114,101,113,116, 46,104,111,115,116, 44, 32,110, -114,101,113,116, 46,112,111,114,116, 44, 32,110,114,101,113,116, 46, 99,114,101, - 97,116,101, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,114,101,113, -117,101,115,116, 32,108,105,110,101, 32, 97,110,100, 32,104,101, 97,100,101,114, -115, 10, 32, 32, 32, 32,104, 58,115,101,110,100,114,101,113,117,101,115,116,108, -105,110,101, 40,110,114,101,113,116, 46,109,101,116,104,111,100, 44, 32,110,114, -101,113,116, 46,117,114,105, 41, 10, 32, 32, 32, 32,104, 58,115,101,110,100,104, -101, 97,100,101,114,115, 40,110,114,101,113,116, 46,104,101, 97,100,101,114,115, - 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, - 32, 97, 32, 98,111,100,121, 44, 32,115,101,110,100, 32,105,116, 10, 32, 32, 32, - 32,105,102, 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101, -110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,115,101,110,100, 98,111,100,121, - 40,110,114,101,113,116, 46,104,101, 97,100,101,114,115, 44, 32,110,114,101,113, -116, 46,115,111,117,114, 99,101, 44, 32,110,114,101,113,116, 46,115,116,101,112, - 41, 32, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, - 32, 99,111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, 32,104, 58,114,101, - 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32, - 32, 32, 45, 45, 32,105,102, 32,105,116, 32,105,115, 32, 97,110, 32, 72, 84, 84, - 80, 47, 48, 46, 57, 32,115,101,114,118,101,114, 44, 32,115,105,109,112,108,121, - 32,103,101,116, 32,116,104,101, 32, 98,111,100,121, 32, 97,110,100, 32,119,101, - 32, 97,114,101, 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,110,111,116, - 32, 99,111,100,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, - 58,114,101, 99,101,105,118,101, 48, 57, 98,111,100,121, 40,115,116, 97,116,117, -115, 44, 32,110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, - 46,115,116,101,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114, -110, 32, 49, 44, 32, 50, 48, 48, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, - 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32, 45, - 45, 32,105,103,110,111,114,101, 32, 97,110,121, 32, 49, 48, 48, 45, 99,111,110, -116,105,110,117,101, 32,109,101,115,115, 97,103,101,115, 10, 32, 32, 32, 32,119, -104,105,108,101, 32, 99,111,100,101, 32, 61, 61, 32, 49, 48, 48, 32,100,111, 32, - 10, 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104, - 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 41, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 99,111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, - 32,104, 58,114,101, 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, - 40, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104,101, 97,100,101, -114,115, 32, 61, 32,104, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114, -115, 40, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,116, 32,116,104,105,115, 32,112, -111,105,110,116, 32,119,101, 32,115,104,111,117,108,100, 32,104, 97,118,101, 32, - 97, 32,104,111,110,101,115,116, 32,114,101,112,108,121, 32,102,114,111,109, 32, -116,104,101, 32,115,101,114,118,101,114, 10, 32, 32, 32, 32, 45, 45, 32,119,101, - 32, 99, 97,110, 39,116, 32,114,101,100,105,114,101, 99,116, 32,105,102, 32,119, -101, 32, 97,108,114,101, 97,100,121, 32,117,115,101,100, 32,116,104,101, 32,115, -111,117,114, 99,101, 44, 32,115,111, 32,119,101, 32,114,101,112,111,114,116, 32, -116,104,101, 32,101,114,114,111,114, 32, 10, 32, 32, 32, 32,105,102, 32,115,104, -111,117,108,100,114,101,100,105,114,101, 99,116, 40,110,114,101,113,116, 44, 32, - 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 41, 32, 97,110,100, 32,110, -111,116, 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101,110, - 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58, 99,108,111,115,101, 40, 41, 10, 32, - 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,116,114,101,100,105,114, -101, 99,116, 40,114,101,113,116, 44, 32,104,101, 97,100,101,114,115, 46,108,111, - 99, 97,116,105,111,110, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, - 45, 45, 32,104,101,114,101, 32,119,101, 32, 97,114,101, 32,102,105,110, 97,108, -108,121, 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,115,104,111,117,108, -100,114,101, 99,101,105,118,101, 98,111,100,121, 40,110,114,101,113,116, 44, 32, - 99,111,100,101, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, - 58,114,101, 99,101,105,118,101, 98,111,100,121, 40,104,101, 97,100,101,114,115, - 44, 32,110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, 46, -115,116,101,112, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104, 58, - 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, - 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97, -116,117,115, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116, -105,111,110, 32,115,114,101,113,117,101,115,116, 40,117, 44, 32, 98, 41, 10, 32, - 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32, -108,111, 99, 97,108, 32,114,101,113,116, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, - 32, 32, 32,117,114,108, 32, 61, 32,117, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, -115,105,110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,116, 97, - 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32, - 98, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46, -115,111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99, -101, 46,115,116,114,105,110,103, 40, 98, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, -114,101,113,116, 46,104,101, 97,100,101,114,115, 32, 61, 32,123, 10, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,108, -101,110,103,116,104, 34, 93, 32, 61, 32,115,116,114,105,110,103, 46,108,101,110, - 40, 98, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99, -111,110,116,101,110,116, 45,116,121,112,101, 34, 93, 32, 61, 32, 34, 97,112,112, -108,105, 99, 97,116,105,111,110, 47,120, 45,119,119,119, 45,102,111,114,109, 45, -117,114,108,101,110, 99,111,100,101,100, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, -125, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46,109,101,116,104,111, -100, 32, 61, 32, 34, 80, 79, 83, 84, 34, 10, 32, 32, 32, 32,101,110,100, 10, 32, - 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,104,101, 97,100,101, -114,115, 44, 32,115,116, 97,116,117,115, 32, 61, 32,115,111, 99,107,101,116, 46, -115,107,105,112, 40, 49, 44, 32,116,114,101,113,117,101,115,116, 40,114,101,113, -116, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101, - 46, 99,111,110, 99, 97,116, 40,116, 41, 44, 32, 99,111,100,101, 44, 32,104,101, - 97,100,101,114,115, 44, 32,115,116, 97,116,117,115, 10,101,110,100, 10, 10,114, -101,113,117,101,115,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116, -101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,114,101,113,116, 44, 32, 98, -111,100,121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112, -101, 40,114,101,113,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32, -116,104,101,110, 32,114,101,116,117,114,110, 32,115,114,101,113,117,101,115,116, - 40,114,101,113,116, 44, 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115, -101, 32,114,101,116,117,114,110, 32,116,114,101,113,117,101,115,116, 40,114,101, -113,116, 41, 32,101,110,100, 10,101,110,100, 41, 10, +110, 32, 97,100,106,117,115,116,112,114,111,120,121, 40,114,101,113,116, 41, 10, + 32, 32, 32, 32,108,111, 99, 97,108, 32,112,114,111,120,121, 32, 61, 32,114,101, +113,116, 46,112,114,111,120,121, 32,111,114, 32, 80, 82, 79, 88, 89, 10, 32, 32, + 32, 32,105,102, 32,112,114,111,120,121, 32,116,104,101,110, 10, 32, 32, 32, 32, + 32, 32, 32, 32,112,114,111,120,121, 32, 61, 32,117,114,108, 46,112, 97,114,115, +101, 40,112,114,111,120,121, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116, +117,114,110, 32,112,114,111,120,121, 46,104,111,115,116, 44, 32,112,114,111,120, +121, 46,112,111,114,116, 32,111,114, 32, 51, 49, 50, 56, 10, 32, 32, 32, 32,101, +108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,114, +101,113,116, 46,104,111,115,116, 44, 32,114,101,113,116, 46,112,111,114,116, 10, + 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102, +117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,104,101, 97,100,101,114, +115, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,100,101,102, 97,117, +108,116, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,108,111, 99, 97,108, + 32,108,111,119,101,114, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, + 34,117,115,101,114, 45, 97,103,101,110,116, 34, 93, 32, 61, 32, 85, 83, 69, 82, + 65, 71, 69, 78, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,104,111,115, +116, 34, 93, 32, 61, 32,114,101,113,116, 46,104,111,115,116, 44, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 91, 34, 99,111,110,110,101, 99,116,105,111,110, 34, 93, 32, + 61, 32, 34, 99,108,111,115,101, 44, 32, 84, 69, 34, 44, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 91, 34,116,101, 34, 93, 32, 61, 32, 34,116,114, 97,105,108,101,114, +115, 34, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,119, +101, 32,104, 97,118,101, 32, 97,117,116,104,101,110,116,105, 99, 97,116,105,111, +110, 32,105,110,102,111,114,109, 97,116,105,111,110, 44, 32,112, 97,115,115, 32, +105,116, 32, 97,108,111,110,103, 10, 32, 32, 32, 32,105,102, 32,114,101,113,116, + 46,117,115,101,114, 32, 97,110,100, 32,114,101,113,116, 46,112, 97,115,115,119, +111,114,100, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119, +101,114, 91, 34, 97,117,116,104,111,114,105,122, 97,116,105,111,110, 34, 93, 32, + 61, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 66, 97,115,105, + 99, 32, 34, 32, 46, 46, 32, 32, 40,109,105,109,101, 46, 98, 54, 52, 40,114,101, +113,116, 46,117,115,101,114, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,114,101, +113,116, 46,112, 97,115,115,119,111,114,100, 41, 41, 10, 32, 32, 32, 32,101,110, +100, 10, 32, 32, 32, 32, 45, 45, 32,111,118,101,114,114,105,100,101, 32,119,105, +116,104, 32,117,115,101,114, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32, +102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114, +115, 40,114,101,113,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,108,111, +119,101,114, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101, +114, 91,115,116,114,105,110,103, 46,108,111,119,101,114, 40,105, 41, 93, 32, 61, + 32,118, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114, +110, 32,108,111,119,101,114, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102, 97, +117,108,116, 32,117,114,108, 32,112, 97,114,116,115, 10,108,111, 99, 97,108, 32, +100,101,102, 97,117,108,116, 32, 61, 32,123, 10, 32, 32, 32, 32,104,111,115,116, + 32, 61, 32, 34, 34, 44, 10, 32, 32, 32, 32,112,111,114,116, 32, 61, 32, 80, 79, + 82, 84, 44, 10, 32, 32, 32, 32,112, 97,116,104, 32, 61, 34, 47, 34, 44, 10, 32, + 32, 32, 32,115, 99,104,101,109,101, 32, 61, 32, 34,104,116,116,112, 34, 10,125, + 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106, +117,115,116,114,101,113,117,101,115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, + 32, 45, 45, 32,112, 97,114,115,101, 32,117,114,108, 32,105,102, 32,112,114,111, +118,105,100,101,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110,114,101,113, +116, 32, 61, 32,114,101,113,116, 46,117,114,108, 32, 97,110,100, 32,117,114,108, + 46,112, 97,114,115,101, 40,114,101,113,116, 46,117,114,108, 44, 32,100,101,102, + 97,117,108,116, 41, 32,111,114, 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,101, +120,112,108,105, 99,105,116, 32, 99,111,109,112,111,110,101,110,116,115, 32,111, +118,101,114,114,105,100,101, 32,117,114,108, 10, 32, 32, 32, 32,102,111,114, 32, +105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,114,101, +113,116, 41, 32,100,111, 32,110,114,101,113,116, 91,105, 93, 32, 61, 32,118, 32, +101,110,100, 10, 32, 32, 32, 32,105,102, 32,110,114,101,113,116, 46,112,111,114, +116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32,110,114,101,113,116, 46,112, +111,114,116, 32, 61, 32, 56, 48, 32,101,110,100, 10, 32, 32, 32, 32,115,111, 99, +107,101,116, 46,116,114,121, 40,110,114,101,113,116, 46,104,111,115,116, 32, 97, +110,100, 32,110,114,101,113,116, 46,104,111,115,116, 32,126, 61, 32, 34, 34, 44, + 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34,105,110,118, 97,108,105,100, 32,104, +111,115,116, 32, 39, 34, 32, 46, 46, 32, 98, 97,115,101, 46,116,111,115,116,114, +105,110,103, 40,110,114,101,113,116, 46,104,111,115,116, 41, 32, 46, 46, 32, 34, + 39, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,111,109,112,117,116,101, 32,117, +114,105, 32,105,102, 32,117,115,101,114, 32,104, 97,115,110, 39,116, 32,111,118, +101,114,114,105,100,101,110, 10, 32, 32, 32, 32,110,114,101,113,116, 46,117,114, +105, 32, 61, 32,114,101,113,116, 46,117,114,105, 32,111,114, 32, 97,100,106,117, +115,116,117,114,105, 40,110,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, + 97,106,117,115,116, 32,104,111,115,116, 32, 97,110,100, 32,112,111,114,116, 32, +105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,112,114,111,120,121, 10, + 32, 32, 32, 32,110,114,101,113,116, 46,104,111,115,116, 44, 32,110,114,101,113, +116, 46,112,111,114,116, 32, 61, 32, 97,100,106,117,115,116,112,114,111,120,121, + 40,110,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,100,106,117,115, +116, 32,104,101, 97,100,101,114,115, 32,105,110, 32,114,101,113,117,101,115,116, + 10, 32, 32, 32, 32,110,114,101,113,116, 46,104,101, 97,100,101,114,115, 32, 61, + 32, 97,100,106,117,115,116,104,101, 97,100,101,114,115, 40,110,114,101,113,116, + 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,114,101,113,116, 10,101, +110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115, +104,111,117,108,100,114,101,100,105,114,101, 99,116, 40,114,101,113,116, 44, 32, + 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114, +101,116,117,114,110, 32,104,101, 97,100,101,114,115, 46,108,111, 99, 97,116,105, +111,110, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, +114,105,110,103, 46,103,115,117, 98, 40,104,101, 97,100,101,114,115, 46,108,111, + 99, 97,116,105,111,110, 44, 32, 34, 37,115, 34, 44, 32, 34, 34, 41, 32,126, 61, + 32, 34, 34, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, +114,101,113,116, 46,114,101,100,105,114,101, 99,116, 32,126, 61, 32,102, 97,108, +115,101, 41, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, + 99,111,100,101, 32, 61, 61, 32, 51, 48, 49, 32,111,114, 32, 99,111,100,101, 32, + 61, 61, 32, 51, 48, 50, 32,111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, + 51, 32,111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 55, 41, 32, 97,110, +100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,110,111,116, 32,114,101, +113,116, 46,109,101,116,104,111,100, 32,111,114, 32,114,101,113,116, 46,109,101, +116,104,111,100, 32, 61, 61, 32, 34, 71, 69, 84, 34, 32,111,114, 32,114,101,113, +116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34, 41, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,110,100, 32, 40,110,111,116, 32, +114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114, 32,114, +101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32, 60, 32, 53, 41, 10, +101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, +115,104,111,117,108,100,114,101, 99,101,105,118,101, 98,111,100,121, 40,114,101, +113,116, 44, 32, 99,111,100,101, 41, 10, 32, 32, 32, 32,105,102, 32,114,101,113, +116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34, 32,116, +104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, + 32, 32, 32,105,102, 32, 99,111,100,101, 32, 61, 61, 32, 50, 48, 52, 32,111,114, + 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 52, 32,116,104,101,110, 32,114,101, +116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, + 99,111,100,101, 32, 62, 61, 32, 49, 48, 48, 32, 97,110,100, 32, 99,111,100,101, + 32, 60, 32, 50, 48, 48, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110, +105,108, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, +101,110,100, 10, 10, 45, 45, 32,102,111,114,119, 97,114,100, 32,100,101, 99,108, + 97,114, 97,116,105,111,110,115, 10,108,111, 99, 97,108, 32,116,114,101,113,117, +101,115,116, 44, 32,116,114,101,100,105,114,101, 99,116, 10, 10,102,117,110, 99, +116,105,111,110, 32,116,114,101,100,105,114,101, 99,116, 40,114,101,113,116, 44, + 32,108,111, 99, 97,116,105,111,110, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, + 32,114,101,115,117,108,116, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101, +114,115, 44, 32,115,116, 97,116,117,115, 32, 61, 32,116,114,101,113,117,101,115, +116, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,116,104,101, 32, 82, + 70, 67, 32,115, 97,121,115, 32,116,104,101, 32,114,101,100,105,114,101, 99,116, + 32, 85, 82, 76, 32,104, 97,115, 32,116,111, 32, 98,101, 32, 97, 98,115,111,108, +117,116,101, 44, 32, 98,117,116, 32,115,111,109,101, 10, 32, 32, 32, 32, 32, 32, + 32, 32, 45, 45, 32,115,101,114,118,101,114,115, 32,100,111, 32,110,111,116, 32, +114,101,115,112,101, 99,116, 32,116,104, 97,116, 10, 32, 32, 32, 32, 32, 32, 32, + 32,117,114,108, 32, 61, 32,117,114,108, 46, 97, 98,115,111,108,117,116,101, 40, +114,101,113,116, 46,117,114,108, 44, 32,108,111, 99, 97,116,105,111,110, 41, 44, + 10, 32, 32, 32, 32, 32, 32, 32, 32,115,111,117,114, 99,101, 32, 61, 32,114,101, +113,116, 46,115,111,117,114, 99,101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115, +105,110,107, 32, 61, 32,114,101,113,116, 46,115,105,110,107, 44, 10, 32, 32, 32, + 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,114,101,113,116, 46, +104,101, 97,100,101,114,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,114,111, +120,121, 32, 61, 32,114,101,113,116, 46,112,114,111,120,121, 44, 32, 10, 32, 32, + 32, 32, 32, 32, 32, 32,110,114,101,100,105,114,101, 99,116,115, 32, 61, 32, 40, +114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114, 32, 48, + 41, 32, 43, 32, 49, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,114,101, 97,116, +101, 32, 61, 32,114,101,113,116, 46, 99,114,101, 97,116,101, 10, 32, 32, 32, 32, +125, 32, 32, 32, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,115,115, 32,108,111, 99, + 97,116,105,111,110, 32,104,101, 97,100,101,114, 32, 98, 97, 99,107, 32, 97,115, + 32, 97, 32,104,105,110,116, 32,119,101, 32,114,101,100,105,114,101, 99,116,101, +100, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, 97,100, +101,114,115, 32,111,114, 32,123,125, 10, 32, 32, 32, 32,104,101, 97,100,101,114, +115, 46,108,111, 99, 97,116,105,111,110, 32, 61, 32,104,101, 97,100,101,114,115, + 46,108,111, 99, 97,116,105,111,110, 32,111,114, 32,108,111, 99, 97,116,105,111, +110, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,115,117,108,116, 44, + 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97,116, +117,115, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,116,114,101, +113,117,101,115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,119, +101, 32,108,111,111,112, 32,117,110,116,105,108, 32,119,101, 32,103,101,116, 32, +119,104, 97,116, 32,119,101, 32,119, 97,110,116, 44, 32,111,114, 10, 32, 32, 32, + 32, 45, 45, 32,117,110,116,105,108, 32,119,101, 32, 97,114,101, 32,115,117,114, +101, 32,116,104,101,114,101, 32,105,115, 32,110,111, 32,119, 97,121, 32,116,111, + 32,103,101,116, 32,105,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110,114, +101,113,116, 32, 61, 32, 97,100,106,117,115,116,114,101,113,117,101,115,116, 40, +114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, +111,112,101,110, 40,110,114,101,113,116, 46,104,111,115,116, 44, 32,110,114,101, +113,116, 46,112,111,114,116, 44, 32,110,114,101,113,116, 46, 99,114,101, 97,116, +101, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,114,101,113,117,101, +115,116, 32,108,105,110,101, 32, 97,110,100, 32,104,101, 97,100,101,114,115, 10, + 32, 32, 32, 32,104, 58,115,101,110,100,114,101,113,117,101,115,116,108,105,110, +101, 40,110,114,101,113,116, 46,109,101,116,104,111,100, 44, 32,110,114,101,113, +116, 46,117,114,105, 41, 10, 32, 32, 32, 32,104, 58,115,101,110,100,104,101, 97, +100,101,114,115, 40,110,114,101,113,116, 46,104,101, 97,100,101,114,115, 41, 10, + 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, + 32, 98,111,100,121, 44, 32,115,101,110,100, 32,105,116, 10, 32, 32, 32, 32,105, +102, 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101,110, 10, + 32, 32, 32, 32, 32, 32, 32, 32,104, 58,115,101,110,100, 98,111,100,121, 40,110, +114,101,113,116, 46,104,101, 97,100,101,114,115, 44, 32,110,114,101,113,116, 46, +115,111,117,114, 99,101, 44, 32,110,114,101,113,116, 46,115,116,101,112, 41, 32, + 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, +111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, 32,104, 58,114,101, 99,101, +105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32, 32, 32, + 45, 45, 32,105,102, 32,105,116, 32,105,115, 32, 97,110, 32, 72, 84, 84, 80, 47, + 48, 46, 57, 32,115,101,114,118,101,114, 44, 32,115,105,109,112,108,121, 32,103, +101,116, 32,116,104,101, 32, 98,111,100,121, 32, 97,110,100, 32,119,101, 32, 97, +114,101, 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99, +111,100,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,114, +101, 99,101,105,118,101, 48, 57, 98,111,100,121, 40,115,116, 97,116,117,115, 44, + 32,110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, 46,115, +116,101,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, + 49, 44, 32, 50, 48, 48, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108, +111, 99, 97,108, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32, 45, 45, 32, +105,103,110,111,114,101, 32, 97,110,121, 32, 49, 48, 48, 45, 99,111,110,116,105, +110,117,101, 32,109,101,115,115, 97,103,101,115, 10, 32, 32, 32, 32,119,104,105, +108,101, 32, 99,111,100,101, 32, 61, 61, 32, 49, 48, 48, 32,100,111, 32, 10, 32, + 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104, 58,114, +101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 41, 10, 32, 32, 32, 32, + 32, 32, 32, 32, 99,111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, 32,104, + 58,114,101, 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, 41, + 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, + 32, 61, 32,104, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, + 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,116, 32,116,104,105,115, 32,112,111,105, +110,116, 32,119,101, 32,115,104,111,117,108,100, 32,104, 97,118,101, 32, 97, 32, +104,111,110,101,115,116, 32,114,101,112,108,121, 32,102,114,111,109, 32,116,104, +101, 32,115,101,114,118,101,114, 10, 32, 32, 32, 32, 45, 45, 32,119,101, 32, 99, + 97,110, 39,116, 32,114,101,100,105,114,101, 99,116, 32,105,102, 32,119,101, 32, + 97,108,114,101, 97,100,121, 32,117,115,101,100, 32,116,104,101, 32,115,111,117, +114, 99,101, 44, 32,115,111, 32,119,101, 32,114,101,112,111,114,116, 32,116,104, +101, 32,101,114,114,111,114, 32, 10, 32, 32, 32, 32,105,102, 32,115,104,111,117, +108,100,114,101,100,105,114,101, 99,116, 40,110,114,101,113,116, 44, 32, 99,111, +100,101, 44, 32,104,101, 97,100,101,114,115, 41, 32, 97,110,100, 32,110,111,116, + 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101,110, 10, 32, + 32, 32, 32, 32, 32, 32, 32,104, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, + 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,116,114,101,100,105,114,101, 99, +116, 40,114,101,113,116, 44, 32,104,101, 97,100,101,114,115, 46,108,111, 99, 97, +116,105,111,110, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, + 32,104,101,114,101, 32,119,101, 32, 97,114,101, 32,102,105,110, 97,108,108,121, + 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,115,104,111,117,108,100,114, +101, 99,101,105,118,101, 98,111,100,121, 40,110,114,101,113,116, 44, 32, 99,111, +100,101, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,114, +101, 99,101,105,118,101, 98,111,100,121, 40,104,101, 97,100,101,114,115, 44, 32, +110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, 46,115,116, +101,112, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104, 58, 99,108, +111,115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 44, 32, + 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97,116,117, +115, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111, +110, 32,115,114,101,113,117,101,115,116, 40,117, 44, 32, 98, 41, 10, 32, 32, 32, + 32,108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,108,111, + 99, 97,108, 32,114,101,113,116, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, + 32,117,114,108, 32, 61, 32,117, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,105, +110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,116, 97, 98,108, +101, 40,116, 41, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32, 98, 32, +116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46,115,111, +117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,101, 46, +115,116,114,105,110,103, 40, 98, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101, +113,116, 46,104,101, 97,100,101,114,115, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,108,101,110, +103,116,104, 34, 93, 32, 61, 32,115,116,114,105,110,103, 46,108,101,110, 40, 98, + 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,111,110, +116,101,110,116, 45,116,121,112,101, 34, 93, 32, 61, 32, 34, 97,112,112,108,105, + 99, 97,116,105,111,110, 47,120, 45,119,119,119, 45,102,111,114,109, 45,117,114, +108,101,110, 99,111,100,101,100, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,125, 10, + 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46,109,101,116,104,111,100, 32, + 61, 32, 34, 80, 79, 83, 84, 34, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, + 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, + 44, 32,115,116, 97,116,117,115, 32, 61, 32,115,111, 99,107,101,116, 46,115,107, +105,112, 40, 49, 44, 32,116,114,101,113,117,101,115,116, 40,114,101,113,116, 41, + 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101, 46, 99, +111,110, 99, 97,116, 40,116, 41, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100, +101,114,115, 44, 32,115,116, 97,116,117,115, 10,101,110,100, 10, 10,114,101,113, +117,101,115,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99, +116, 40,102,117,110, 99,116,105,111,110, 40,114,101,113,116, 44, 32, 98,111,100, +121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40, +114,101,113,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32,116,104, +101,110, 32,114,101,116,117,114,110, 32,115,114,101,113,117,101,115,116, 40,114, +101,113,116, 44, 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115,101, 32, +114,101,116,117,114,110, 32,116,114,101,113,117,101,115,116, 40,114,101,113,116, + 41, 32,101,110,100, 10,101,110,100, 41, 10, 0 }; return luaL_dostring(L, (const char*)B); } /* end of embedded lua code */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/inet.c b/Build/source/texk/web2c/luatexdir/luasocket/src/inet.c index 3d30698cadc..8bad83e7aa1 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/inet.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/inet.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * Internet domain functions * LuaSocket toolkit -* -* RCS ID: $Id: inet.c,v 1.28 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include <stdio.h> #include <string.h> @@ -12,22 +10,75 @@ #include "inet.h" -#if defined(__SUNOS__) || defined (__SUN__) -#define INET_ATON 1 -#endif +#if defined(__MINGW32__) +const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt) +{ + if (af == AF_INET) + { + struct sockaddr_in in; + memset(&in, 0, sizeof(in)); + in.sin_family = AF_INET; + memcpy(&in.sin_addr, src, sizeof(struct in_addr)); + getnameinfo((struct sockaddr *)&in, sizeof(struct +sockaddr_in), dst, cnt, NULL, 0, NI_NUMERICHOST); + return dst; + } + else if (af == AF_INET6) + { + struct sockaddr_in6 in; + memset(&in, 0, sizeof(in)); + in.sin6_family = AF_INET6; + memcpy(&in.sin6_addr, src, sizeof(struct in_addr6)); + getnameinfo((struct sockaddr *)&in, sizeof(struct +sockaddr_in6), dst, cnt, NULL, 0, NI_NUMERICHOST); + return dst; + } + return NULL; +} + +int inet_pton(int af, const char *src, void *dst) +{ + struct addrinfo hints, *res, *ressave; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = af; + + if (getaddrinfo(src, NULL, &hints, &res) != 0) + { + return -1; + } + + ressave = res; + + while (res) + { + memcpy(dst, res->ai_addr, res->ai_addrlen); + res = res->ai_next; + } + + freeaddrinfo(ressave); + return 0; +} + +#endif + /*=========================================================================*\ * Internal function prototypes. \*=========================================================================*/ static int inet_global_toip(lua_State *L); +static int inet_global_getaddrinfo(lua_State *L); static int inet_global_tohostname(lua_State *L); +static int inet_global_getnameinfo(lua_State *L); static void inet_pushresolved(lua_State *L, struct hostent *hp); static int inet_global_gethostname(lua_State *L); /* DNS functions */ -static luaL_reg func[] = { - { "toip", inet_global_toip }, - { "tohostname", inet_global_tohostname }, +static luaL_Reg func[] = { + { "toip", inet_global_toip}, + { "getaddrinfo", inet_global_getaddrinfo}, + { "tohostname", inet_global_tohostname}, + { "getnameinfo", inet_global_getnameinfo}, { "gethostname", inet_global_gethostname}, { NULL, NULL} }; @@ -58,7 +109,7 @@ static int inet_gethost(const char *address, struct hostent **hp) { struct in_addr addr; if (inet_aton(address, &addr)) return socket_gethostbyaddr((char *) &addr, sizeof(addr), hp); - else + else return socket_gethostbyname(address, hp); } @@ -68,7 +119,7 @@ static int inet_gethost(const char *address, struct hostent **hp) { \*-------------------------------------------------------------------------*/ static int inet_global_tohostname(lua_State *L) { const char *address = luaL_checkstring(L, 1); - struct hostent *hp = NULL; + struct hostent *hp = NULL; int err = inet_gethost(address, &hp); if (err != IO_DONE) { lua_pushnil(L); @@ -80,6 +131,52 @@ static int inet_global_tohostname(lua_State *L) { return 2; } +static int inet_global_getnameinfo(lua_State *L) { + int i, ret; + char host[1024]; + char serv[32]; + struct addrinfo hints; + struct addrinfo *resolved, *iter; + const char *node = luaL_optstring(L, 1, NULL); + const char *service = luaL_optstring(L, 2, NULL); + + if (!(node || service)) + luaL_error(L, "You have to specify a hostname, a service, or both"); + + memset(&hints, 0, sizeof(hints)); + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = PF_UNSPEC; + + /* getaddrinfo must get a node and a service argument */ + ret = getaddrinfo(node ? node : "127.0.0.1", service ? service : "7", + &hints, &resolved); + if (ret != 0) { + lua_pushnil(L); + lua_pushstring(L, socket_gaistrerror(ret)); + return 2; + } + + lua_newtable(L); + for (i = 1, iter = resolved; iter; i++, iter = iter->ai_next) { + getnameinfo(iter->ai_addr, (socklen_t) iter->ai_addrlen, host, + node ? (socklen_t) sizeof(host) : 0, serv, service ? (socklen_t) sizeof(serv) : 0, 0); + + if (node) { + lua_pushnumber(L, i); + lua_pushstring(L, host); + lua_settable(L, -3); + } + } + freeaddrinfo(resolved); + + if (service) { + lua_pushstring(L, serv); + return 2; + } else { + return 1; + } +} + /*-------------------------------------------------------------------------*\ * Returns all information provided by the resolver given a host name * or ip address @@ -87,7 +184,7 @@ static int inet_global_tohostname(lua_State *L) { static int inet_global_toip(lua_State *L) { const char *address = luaL_checkstring(L, 1); - struct hostent *hp = NULL; + struct hostent *hp = NULL; int err = inet_gethost(address, &hp); if (err != IO_DONE) { lua_pushnil(L); @@ -99,6 +196,66 @@ static int inet_global_toip(lua_State *L) return 2; } +int inet_optfamily(lua_State* L, int narg, const char* def) +{ + static const char* optname[] = { "unspec", "inet", "inet6", NULL }; + static int optvalue[] = { PF_UNSPEC, PF_INET, PF_INET6, 0 }; + + return optvalue[luaL_checkoption(L, narg, def, optname)]; +} + +int inet_optsocktype(lua_State* L, int narg, const char* def) +{ + static const char* optname[] = { "stream", "dgram", NULL }; + static int optvalue[] = { SOCK_STREAM, SOCK_DGRAM, 0 }; + + return optvalue[luaL_checkoption(L, narg, def, optname)]; +} + +static int inet_global_getaddrinfo(lua_State *L) +{ + const char *hostname = luaL_checkstring(L, 1); + struct addrinfo *iterator = NULL, *resolved = NULL; + struct addrinfo hints; + int i = 1, ret = 0; + memset(&hints, 0, sizeof(hints)); + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = PF_UNSPEC; + ret = getaddrinfo(hostname, NULL, &hints, &resolved); + if (ret != 0) { + lua_pushnil(L); + lua_pushstring(L, socket_gaistrerror(ret)); + return 2; + } + lua_newtable(L); + for (iterator = resolved; iterator; iterator = iterator->ai_next) { + char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; + getnameinfo(iterator->ai_addr, (socklen_t) iterator->ai_addrlen, hbuf, + (socklen_t) sizeof(hbuf), sbuf, 0, NI_NUMERICHOST); + lua_pushnumber(L, i); + lua_newtable(L); + switch (iterator->ai_family) { + case AF_INET: + lua_pushliteral(L, "family"); + lua_pushliteral(L, "inet"); + lua_settable(L, -3); + break; + case AF_INET6: + lua_pushliteral(L, "family"); + lua_pushliteral(L, "inet6"); + lua_settable(L, -3); + break;; + } + lua_pushliteral(L, "addr"); + lua_pushstring(L, hbuf); + lua_settable(L, -3); + lua_settable(L, -3); + i++; + } + freeaddrinfo(resolved); + return 1; +} + /*-------------------------------------------------------------------------*\ * Gets the host name @@ -109,7 +266,7 @@ static int inet_global_gethostname(lua_State *L) name[256] = '\0'; if (gethostname(name, 256) < 0) { lua_pushnil(L); - lua_pushstring(L, "gethostname failed"); + lua_pushstring(L, socket_strerror(errno)); return 2; } else { lua_pushstring(L, name); @@ -125,35 +282,91 @@ static int inet_global_gethostname(lua_State *L) /*-------------------------------------------------------------------------*\ * Retrieves socket peer name \*-------------------------------------------------------------------------*/ -int inet_meth_getpeername(lua_State *L, p_socket ps) +int inet_meth_getpeername(lua_State *L, p_socket ps, int family) { - struct sockaddr_in peer; - socklen_t peer_len = sizeof(peer); - if (getpeername(*ps, (SA *) &peer, &peer_len) < 0) { - lua_pushnil(L); - lua_pushstring(L, "getpeername failed"); - } else { - lua_pushstring(L, inet_ntoa(peer.sin_addr)); - lua_pushnumber(L, ntohs(peer.sin_port)); + switch (family) { + case PF_INET: { + struct sockaddr_in peer; + socklen_t peer_len = sizeof(peer); + char name[INET_ADDRSTRLEN]; + if (getpeername(*ps, (SA *) &peer, &peer_len) < 0) { + lua_pushnil(L); + lua_pushstring(L, socket_strerror(errno)); + return 2; + } else { + inet_ntop(family, &peer.sin_addr, name, sizeof(name)); + lua_pushstring(L, name); + lua_pushnumber(L, ntohs(peer.sin_port)); + lua_pushliteral(L, "inet"); + return 3; + } + } + case PF_INET6: { + struct sockaddr_in6 peer; + socklen_t peer_len = sizeof(peer); + char name[INET6_ADDRSTRLEN]; + if (getpeername(*ps, (SA *) &peer, &peer_len) < 0) { + lua_pushnil(L); + lua_pushstring(L, socket_strerror(errno)); + return 2; + } else { + inet_ntop(family, &peer.sin6_addr, name, sizeof(name)); + lua_pushstring(L, name); + lua_pushnumber(L, ntohs(peer.sin6_port)); + lua_pushliteral(L, "inet6"); + return 3; + } + } + default: + lua_pushnil(L); + lua_pushfstring(L, "unknown family %d", family); + return 2; } - return 2; } /*-------------------------------------------------------------------------*\ * Retrieves socket local name \*-------------------------------------------------------------------------*/ -int inet_meth_getsockname(lua_State *L, p_socket ps) +int inet_meth_getsockname(lua_State *L, p_socket ps, int family) { - struct sockaddr_in local; - socklen_t local_len = sizeof(local); - if (getsockname(*ps, (SA *) &local, &local_len) < 0) { - lua_pushnil(L); - lua_pushstring(L, "getsockname failed"); - } else { - lua_pushstring(L, inet_ntoa(local.sin_addr)); - lua_pushnumber(L, ntohs(local.sin_port)); + switch (family) { + case PF_INET: { + struct sockaddr_in local; + socklen_t local_len = sizeof(local); + char name[INET_ADDRSTRLEN]; + if (getsockname(*ps, (SA *) &local, &local_len) < 0) { + lua_pushnil(L); + lua_pushstring(L, socket_strerror(errno)); + return 2; + } else { + inet_ntop(family, &local.sin_addr, name, sizeof(name)); + lua_pushstring(L, name); + lua_pushnumber(L, ntohs(local.sin_port)); + lua_pushliteral(L, "inet"); + return 3; + } + } + case PF_INET6: { + struct sockaddr_in6 local; + socklen_t local_len = sizeof(local); + char name[INET6_ADDRSTRLEN]; + if (getsockname(*ps, (SA *) &local, &local_len) < 0) { + lua_pushnil(L); + lua_pushstring(L, socket_strerror(errno)); + return 2; + } else { + inet_ntop(family, &local.sin6_addr, name, sizeof(name)); + lua_pushstring(L, name); + lua_pushnumber(L, ntohs(local.sin6_port)); + lua_pushliteral(L, "inet6"); + return 3; + } + } + default: + lua_pushnil(L); + lua_pushfstring(L, "unknown family %d", family); + return 2; } - return 2; } /*=========================================================================*\ @@ -202,58 +415,123 @@ static void inet_pushresolved(lua_State *L, struct hostent *hp) /*-------------------------------------------------------------------------*\ * Tries to create a new inet socket \*-------------------------------------------------------------------------*/ -const char *inet_trycreate(p_socket ps, int type) { - return socket_strerror(socket_create(ps, AF_INET, type, 0)); +const char *inet_trycreate(p_socket ps, int family, int type) { + return socket_strerror(socket_create(ps, family, type, 0)); } /*-------------------------------------------------------------------------*\ -* Tries to connect to remote address (address, port) +* "Disconnects" a DGRAM socket \*-------------------------------------------------------------------------*/ -const char *inet_tryconnect(p_socket ps, const char *address, - unsigned short port, p_timeout tm) +const char *inet_trydisconnect(p_socket ps, int family, p_timeout tm) { - struct sockaddr_in remote; - int err; - memset(&remote, 0, sizeof(remote)); - remote.sin_family = AF_INET; - remote.sin_port = htons(port); - if (strcmp(address, "*")) { - if (!inet_aton(address, &remote.sin_addr)) { - struct hostent *hp = NULL; - struct in_addr **addr; - err = socket_gethostbyname(address, &hp); - if (err != IO_DONE) return socket_hoststrerror(err); - addr = (struct in_addr **) hp->h_addr_list; - memcpy(&remote.sin_addr, *addr, sizeof(struct in_addr)); + switch (family) { + case PF_INET: { + struct sockaddr_in sin; + memset((char *) &sin, 0, sizeof(sin)); + sin.sin_family = AF_UNSPEC; + sin.sin_addr.s_addr = INADDR_ANY; + return socket_strerror(socket_connect(ps, (SA *) &sin, + sizeof(sin), tm)); + } + case PF_INET6: { + struct sockaddr_in6 sin6; + struct in6_addr addrany = IN6ADDR_ANY_INIT; + memset((char *) &sin6, 0, sizeof(sin6)); + sin6.sin6_family = AF_UNSPEC; +fprintf(stderr, "disconnecting\n"); + sin6.sin6_addr = addrany; + return socket_strerror(socket_connect(ps, (SA *) &sin6, + sizeof(sin6), tm)); } - } else remote.sin_family = AF_UNSPEC; - err = socket_connect(ps, (SA *) &remote, sizeof(remote), tm); - return socket_strerror(err); + } + return NULL; +} + +/*-------------------------------------------------------------------------*\ +* Tries to connect to remote address (address, port) +\*-------------------------------------------------------------------------*/ +const char *inet_tryconnect(p_socket ps, const char *address, + const char *serv, p_timeout tm, struct addrinfo *connecthints) +{ + struct addrinfo *iterator = NULL, *resolved = NULL; + const char *err = NULL; + /* try resolving */ + err = socket_gaistrerror(getaddrinfo(address, serv, + connecthints, &resolved)); + if (err != NULL) { + if (resolved) freeaddrinfo(resolved); + return err; + } + for (iterator = resolved; iterator; iterator = iterator->ai_next) { + timeout_markstart(tm); + /* try connecting to remote address */ + err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr, + (socklen_t) iterator->ai_addrlen, tm)); + /* if success, break out of loop */ + if (err == NULL) break; + } + freeaddrinfo(resolved); + /* here, if err is set, we failed */ + return err; +} + +/*-------------------------------------------------------------------------*\ +* Tries to accept a socket +\*-------------------------------------------------------------------------*/ +const char *inet_tryaccept(p_socket server, int family, p_socket client, p_timeout tm) +{ + socklen_t len; + t_sockaddr_storage addr; + if (family == PF_INET6) { + len = sizeof(struct sockaddr_in6); + } else { + len = sizeof(struct sockaddr_in); + } + return socket_strerror(socket_accept(server, client, (SA *) &addr, &len, tm)); } /*-------------------------------------------------------------------------*\ * Tries to bind socket to (address, port) \*-------------------------------------------------------------------------*/ -const char *inet_trybind(p_socket ps, const char *address, unsigned short port) +const char *inet_trybind(p_socket ps, const char *address, const char *serv, + struct addrinfo *bindhints) { - struct sockaddr_in local; - int err; - memset(&local, 0, sizeof(local)); - /* address is either wildcard or a valid ip address */ - local.sin_addr.s_addr = htonl(INADDR_ANY); - local.sin_port = htons(port); - local.sin_family = AF_INET; - if (strcmp(address, "*") && !inet_aton(address, &local.sin_addr)) { - struct hostent *hp = NULL; - struct in_addr **addr; - err = socket_gethostbyname(address, &hp); - if (err != IO_DONE) return socket_hoststrerror(err); - addr = (struct in_addr **) hp->h_addr_list; - memcpy(&local.sin_addr, *addr, sizeof(struct in_addr)); + struct addrinfo *iterator = NULL, *resolved = NULL; + const char *err = NULL; + t_socket sock = *ps; + /* try resolving */ + err = socket_gaistrerror(getaddrinfo(address, serv, bindhints, &resolved)); + if (err) { + if (resolved) freeaddrinfo(resolved); + return err; + } + /* iterate over resolved addresses until one is good */ + for (iterator = resolved; iterator; iterator = iterator->ai_next) { + if(sock == SOCKET_INVALID) { + err = socket_strerror(socket_create(&sock, iterator->ai_family, + iterator->ai_socktype, iterator->ai_protocol)); + if(err) + continue; + } + /* try binding to local address */ + err = socket_strerror(socket_bind(&sock, + (SA *) iterator->ai_addr, + (socklen_t) iterator->ai_addrlen)); + + /* keep trying unless bind succeeded */ + if (err) { + if(sock != *ps) + socket_destroy(&sock); + } else { + /* remember what we connected to, particularly the family */ + *bindhints = *iterator; + break; + } } - err = socket_bind(ps, (SA *) &local, sizeof(local)); - if (err != IO_DONE) socket_destroy(ps); - return socket_strerror(err); + /* cleanup and return error */ + freeaddrinfo(resolved); + *ps = sock; + return err; } /*-------------------------------------------------------------------------*\ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/inet.h b/Build/source/texk/web2c/luatexdir/luasocket/src/inet.h index 7662266110a..4678ba656c4 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/inet.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/inet.h @@ -13,8 +13,6 @@ * getpeername and getsockname functions as seen by Lua programs. * * The Lua functions toip and tohostname are also implemented here. -* -* RCS ID: $Id: inet.h,v 1.16 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "socket.h" @@ -26,14 +24,19 @@ int inet_open(lua_State *L); -const char *inet_trycreate(p_socket ps, int type); -const char *inet_tryconnect(p_socket ps, const char *address, - unsigned short port, p_timeout tm); -const char *inet_trybind(p_socket ps, const char *address, - unsigned short port); +const char *inet_trycreate(p_socket ps, int family, int type); +const char *inet_tryconnect(p_socket ps, const char *address, + const char *serv, p_timeout tm, struct addrinfo *connecthints); +const char *inet_trybind(p_socket ps, const char *address, const char *serv, + struct addrinfo *bindhints); +const char *inet_trydisconnect(p_socket ps, int family, p_timeout tm); +const char *inet_tryaccept(p_socket server, int family, p_socket client, p_timeout tm); + +int inet_meth_getpeername(lua_State *L, p_socket ps, int family); +int inet_meth_getsockname(lua_State *L, p_socket ps, int family); -int inet_meth_getpeername(lua_State *L, p_socket ps); -int inet_meth_getsockname(lua_State *L, p_socket ps); +int inet_optfamily(lua_State* L, int narg, const char* def); +int inet_optsocktype(lua_State* L, int narg, const char* def); #ifdef INET_ATON int inet_aton(const char *cp, struct in_addr *inp); diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/io.c b/Build/source/texk/web2c/luatexdir/luasocket/src/io.c index 06dc50ecacc..35f46f785a9 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/io.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/io.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * Input/Output abstraction * LuaSocket toolkit -* -* RCS ID: $Id: io.c,v 1.6 2005/09/29 06:11:41 diego Exp $ \*=========================================================================*/ #include "io.h" diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/io.h b/Build/source/texk/web2c/luatexdir/luasocket/src/io.h index cce3aaf556b..8cca08a8602 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/io.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/io.h @@ -11,8 +11,6 @@ * * The module socket.h implements this interface, and thus the module tcp.h * is very simple. -* -* RCS ID: $Id: io.h,v 1.11 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include <stdio.h> #include "lua.h" diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua index b42689a34ab..fca1cb20ffd 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua @@ -2,7 +2,6 @@ -- LTN12 - Filters, sources, sinks and pumps. -- LuaSocket toolkit. -- Author: Diego Nehab --- RCS ID: $Id: ltn12.lua,v 1.31 2006/04/03 04:45:42 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -20,7 +19,7 @@ pump = {} -- 2048 seems to be better in windows... BLOCKSIZE = 2048 -_VERSION = "LTN12 1.0.1" +_VERSION = "LTN12 1.0.2" ----------------------------------------------------------------------------- -- Filter stuff @@ -38,7 +37,8 @@ end -- chains a bunch of filters together -- (thanks to Wim Couwenberg) function filter.chain(...) - local n = table.getn(arg) + local arg = {...} + local n = #arg local top, index = 1, 1 local retry = "" return function(chunk) @@ -186,6 +186,7 @@ end -- other, as if they were concatenated -- (thanks to Wim Couwenberg) function source.cat(...) + local arg = {...} local src = table.remove(arg, 1) return function() while src do diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c index 308bc31f0df..c8a6fb54d1d 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c @@ -1,5 +1,5 @@ /* - * This file is auto-generated by "./lua2c ltn12.lua ltn12_lua" + * This file is auto-generated by "lua2c ltn12.lua ltn12_lua" */ #include "lua.h" @@ -15,245 +15,207 @@ int luatex_ltn12_lua_open (lua_State *L) { 117,114, 99,101,115, 44, 32,115,105,110,107,115, 32, 97,110,100, 32,112,117,109, 112,115, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111, 108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101, -103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, - 36, 73,100, 58, 32,108,116,110, 49, 50, 46,108,117, 97, 44,118, 32, 49, 46, 51, - 49, 32, 50, 48, 48, 54, 47, 48, 52, 47, 48, 51, 32, 48, 52, 58, 52, 53, 58, 52, - 50, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114, -101, 32,109,111,100,117,108,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, - 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10, -108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,114, -101, 40, 34,116, 97, 98,108,101, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115, -101, 32, 61, 32, 95, 71, 10,109,111,100,117,108,101, 40, 34,108,116,110, 49, 50, - 34, 41, 10, 10,102,105,108,116,101,114, 32, 61, 32,123,125, 10,115,111,117,114, - 99,101, 32, 61, 32,123,125, 10,115,105,110,107, 32, 61, 32,123,125, 10,112,117, -109,112, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 50, 48, 52, 56, 32,115,101,101, -109,115, 32,116,111, 32, 98,101, 32, 98,101,116,116,101,114, 32,105,110, 32,119, -105,110,100,111,119,115, 46, 46, 46, 10, 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, - 61, 32, 50, 48, 52, 56, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, 61, 32, 34, 76, - 84, 78, 49, 50, 32, 49, 46, 48, 46, 49, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 70,105,108,116,101,114, - 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,104,105, -103,104, 32,108,101,118,101,108, 32,102,105,108,116,101,114, 32,116,104, 97,116, - 32, 99,121, 99,108,101,115, 32, 97, 32,108,111,119, 45,108,101,118,101,108, 32, -102,105,108,116,101,114, 10,102,117,110, 99,116,105,111,110, 32,102,105,108,116, -101,114, 46, 99,121, 99,108,101, 40,108,111,119, 44, 32, 99,116,120, 44, 32,101, -120,116,114, 97, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114, -116, 40,108,111,119, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117, -110, 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, - 32, 32,108,111, 99, 97,108, 32,114,101,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, -114,101,116, 44, 32, 99,116,120, 32, 61, 32,108,111,119, 40, 99,116,120, 44, 32, - 99,104,117,110,107, 44, 32,101,120,116,114, 97, 41, 10, 32, 32, 32, 32, 32, 32, - 32, 32,114,101,116,117,114,110, 32,114,101,116, 10, 32, 32, 32, 32,101,110,100, - 10,101,110,100, 10, 10, 45, 45, 32, 99,104, 97,105,110,115, 32, 97, 32, 98,117, -110, 99,104, 32,111,102, 32,102,105,108,116,101,114,115, 32,116,111,103,101,116, -104,101,114, 10, 45, 45, 32, 40,116,104, 97,110,107,115, 32,116,111, 32, 87,105, -109, 32, 67,111,117,119,101,110, 98,101,114,103, 41, 10,102,117,110, 99,116,105, -111,110, 32,102,105,108,116,101,114, 46, 99,104, 97,105,110, 40, 46, 46, 46, 41, - 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110, 32, 61, 32,116, 97, 98,108,101, - 46,103,101,116,110, 40, 97,114,103, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, - 32,116,111,112, 44, 32,105,110,100,101,120, 32, 61, 32, 49, 44, 32, 49, 10, 32, - 32, 32, 32,108,111, 99, 97,108, 32,114,101,116,114,121, 32, 61, 32, 34, 34, 10, - 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, - 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,114,121, - 32, 61, 32, 99,104,117,110,107, 32, 97,110,100, 32,114,101,116,114,121, 10, 32, - 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,105,110,100,101, -120, 32, 61, 61, 32,116,111,112, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61, 32, 97,114, -103, 91,105,110,100,101,120, 93, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, - 32, 61, 61, 32, 34, 34, 32,111,114, 32,116,111,112, 32, 61, 61, 32,110, 32,116, -104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32, - 99,104,117,110,107, 32,116,104,101,110, 32,105,110,100,101,120, 32, 61, 32,105, -110,100,101,120, 32, 43, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,111,112, 32, 61, 32,116,111,112, 43, - 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,105,110,100,101,120, 32, 61, 32,116,111,112, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61, 32, 97,114,103, 91,105, -110,100,101,120, 93, 40, 99,104,117,110,107, 32,111,114, 32, 34, 34, 41, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104, -117,110,107, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,110,100,101,120, - 32, 61, 32,105,110,100,101,120, 32, 45, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, +103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100, +117,108,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113, +117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, + 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, + 98,108,101, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, + 71, 10,109,111,100,117,108,101, 40, 34,108,116,110, 49, 50, 34, 41, 10, 10,102, +105,108,116,101,114, 32, 61, 32,123,125, 10,115,111,117,114, 99,101, 32, 61, 32, +123,125, 10,115,105,110,107, 32, 61, 32,123,125, 10,112,117,109,112, 32, 61, 32, +123,125, 10, 10, 45, 45, 32, 50, 48, 52, 56, 32,115,101,101,109,115, 32,116,111, + 32, 98,101, 32, 98,101,116,116,101,114, 32,105,110, 32,119,105,110,100,111,119, +115, 46, 46, 46, 10, 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, 61, 32, 50, 48, 52, + 56, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, 61, 32, 34, 76, 84, 78, 49, 50, 32, + 49, 46, 48, 46, 50, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 10, 45, 45, 32, 70,105,108,116,101,114, 32,115,116,117,102, +102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, + 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,104,105,103,104, 32,108,101, +118,101,108, 32,102,105,108,116,101,114, 32,116,104, 97,116, 32, 99,121, 99,108, +101,115, 32, 97, 32,108,111,119, 45,108,101,118,101,108, 32,102,105,108,116,101, +114, 10,102,117,110, 99,116,105,111,110, 32,102,105,108,116,101,114, 46, 99,121, + 99,108,101, 40,108,111,119, 44, 32, 99,116,120, 44, 32,101,120,116,114, 97, 41, + 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,108,111,119, + 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111, +110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, + 97,108, 32,114,101,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116, 44, 32, + 99,116,120, 32, 61, 32,108,111,119, 40, 99,116,120, 44, 32, 99,104,117,110,107, + 44, 32,101,120,116,114, 97, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116, +117,114,110, 32,114,101,116, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, + 10, 45, 45, 32, 99,104, 97,105,110,115, 32, 97, 32, 98,117,110, 99,104, 32,111, +102, 32,102,105,108,116,101,114,115, 32,116,111,103,101,116,104,101,114, 10, 45, + 45, 32, 40,116,104, 97,110,107,115, 32,116,111, 32, 87,105,109, 32, 67,111,117, +119,101,110, 98,101,114,103, 41, 10,102,117,110, 99,116,105,111,110, 32,102,105, +108,116,101,114, 46, 99,104, 97,105,110, 40, 46, 46, 46, 41, 10, 32, 32, 32, 32, +108,111, 99, 97,108, 32, 97,114,103, 32, 61, 32,123, 46, 46, 46,125, 10, 32, 32, + 32, 32,108,111, 99, 97,108, 32,110, 32, 61, 32, 35, 97,114,103, 10, 32, 32, 32, + 32,108,111, 99, 97,108, 32,116,111,112, 44, 32,105,110,100,101,120, 32, 61, 32, + 49, 44, 32, 49, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116,114,121, + 32, 61, 32, 34, 34, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, + 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, + 32,114,101,116,114,121, 32, 61, 32, 99,104,117,110,107, 32, 97,110,100, 32,114, +101,116,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116, +114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, +102, 32,105,110,100,101,120, 32, 61, 61, 32,116,111,112, 32,116,104,101,110, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110, +107, 32, 61, 32, 97,114,103, 91,105,110,100,101,120, 93, 40, 99,104,117,110,107, + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, + 32, 99,104,117,110,107, 32, 61, 61, 32, 34, 34, 32,111,114, 32,116,111,112, 32, + 61, 61, 32,110, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117, +110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101, +108,115,101,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,105,110,100, +101,120, 32, 61, 32,105,110,100,101,120, 32, 43, 32, 49, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,111,112, 32, + 61, 32,116,111,112, 43, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32,105,110,100,101,120, 32, 61, 32,116,111,112, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61, - 32,114,101,116,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,101,108,115,101,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, + 32, 97,114,103, 91,105,110,100,101,120, 93, 40, 99,104,117,110,107, 32,111,114, + 32, 34, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32,105,102, 32, 99,104,117,110,107, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32,105,102, 32,105,110,100,101,120, 32, 61, 61, 32,110, 32,116,104,101,110, 32, -114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,105,110, -100,101,120, 32, 61, 32,105,110,100,101,120, 32, 43, 32, 49, 32,101,110,100, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, - 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 34,102,105,108,116,101,114, 32, -114,101,116,117,114,110,101,100, 32,105,110, 97,112,112,114,111,112,114,105, 97, -116,101, 32,110,105,108, 34, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, - 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 83,111,117,114, 99, -101, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101, 32, 97,110, 32,101, -109,112,116,121, 32,115,111,117,114, 99,101, 10,108,111, 99, 97,108, 32,102,117, -110, 99,116,105,111,110, 32,101,109,112,116,121, 40, 41, 10, 32, 32, 32, 32,114, -101,116,117,114,110, 32,110,105,108, 10,101,110,100, 10, 10,102,117,110, 99,116, -105,111,110, 32,115,111,117,114, 99,101, 46,101,109,112,116,121, 40, 41, 10, 32, - 32, 32, 32,114,101,116,117,114,110, 32,101,109,112,116,121, 10,101,110,100, 10, - 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,115,111,117,114, 99,101, - 32,116,104, 97,116, 32,106,117,115,116, 32,111,117,116,112,117,116,115, 32, 97, -110, 32,101,114,114,111,114, 10,102,117,110, 99,116,105,111,110, 32,115,111,117, -114, 99,101, 46,101,114,114,111,114, 40,101,114,114, 41, 10, 32, 32, 32, 32,114, -101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, - 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, - 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, - 97,116,101,115, 32, 97, 32,102,105,108,101, 32,115,111,117,114, 99,101, 10,102, -117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,102,105,108,101, 40, -104, 97,110,100,108,101, 44, 32,105,111, 95,101,114,114, 41, 10, 32, 32, 32, 32, -105,102, 32,104, 97,110,100,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, - 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, -104,117,110,107, 32, 61, 32,104, 97,110,100,108,101, 58,114,101, 97,100, 40, 66, - 76, 79, 67, 75, 83, 73, 90, 69, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32, -104, 97,110,100,108,101, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,104, -117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, -101,108,115,101, 32,114,101,116,117,114,110, 32,115,111,117,114, 99,101, 46,101, -114,114,111,114, 40,105,111, 95,101,114,114, 32,111,114, 32, 34,117,110, 97, 98, -108,101, 32,116,111, 32,111,112,101,110, 32,102,105,108,101, 34, 41, 32,101,110, -100, 10,101,110,100, 10, 10, 45, 45, 32,116,117,114,110,115, 32, 97, 32,102, 97, -110, 99,121, 32,115,111,117,114, 99,101, 32,105,110,116,111, 32, 97, 32,115,105, -109,112,108,101, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, - 32,115,111,117,114, 99,101, 46,115,105,109,112,108,105,102,121, 40,115,114, 99, - 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, - 99, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105, -111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, -104,117,110,107, 44, 32,101,114,114, 95,111,114, 95,110,101,119, 32, 61, 32,115, -114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,114, 99, 32, 61, 32,101, -114,114, 95,111,114, 95,110,101,119, 32,111,114, 32,115,114, 99, 10, 32, 32, 32, - 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104, -101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 95,111, -114, 95,110,101,119, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114, -101,116,117,114,110, 32, 99,104,117,110,107, 32,101,110,100, 10, 32, 32, 32, 32, -101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, -115,116,114,105,110,103, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105, -111,110, 32,115,111,117,114, 99,101, 46,115,116,114,105,110,103, 40,115, 41, 10, - 32, 32, 32, 32,105,102, 32,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, - 32, 32,108,111, 99, 97,108, 32,105, 32, 61, 32, 49, 10, 32, 32, 32, 32, 32, 32, - 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104, -117,110,107, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,115, 44, 32, -105, 44, 32,105, 43, 66, 76, 79, 67, 75, 83, 73, 90, 69, 45, 49, 41, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, 32, 61, 32,105, 32, 43, 32, 66, 76, - 79, 67, 75, 83, 73, 90, 69, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -105,102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32, -114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, - 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, - 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111,117,114, 99,101, 46, -101,109,112,116,121, 40, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, - 99,114,101, 97,116,101,115, 32,114,101,119,105,110,100, 97, 98,108,101, 32,115, -111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99, -101, 46,114,101,119,105,110,100, 40,115,114, 99, 41, 10, 32, 32, 32, 32, 98, 97, -115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, 41, 10, 32, 32, 32, 32,108, -111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,114,101,116,117, -114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32, - 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32, -116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117, -110,107, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,111,118,101, 40,116, 41, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, - 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,114, - 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, - 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32,101,110,100, 10, 32, 32, - 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,116, 44, 32, 99, -104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, - 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, -115,111,117,114, 99,101, 46, 99,104, 97,105,110, 40,115,114, 99, 44, 32,102, 41, - 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, - 32, 97,110,100, 32,102, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108, 97, -115,116, 95,105,110, 44, 32,108, 97,115,116, 95,111,117,116, 32, 61, 32, 34, 34, - 44, 32, 34, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116, 97,116,101, - 32, 61, 32, 34,102,101,101,100,105,110,103, 34, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,101,114,114, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117, -110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, -110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104,101,110, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, - 40, 39,115,111,117,114, 99,101, 32,105,115, 32,101,109,112,116,121, 33, 39, 44, - 32, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, - 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116, 97,116,101, 32, 61, - 61, 32, 34,102,101,101,100,105,110,103, 34, 32,116,104,101,110, 10, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,116, 95,105,110, - 44, 32,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101, -110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110, -100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97, -115,116, 95,111,117,116, 32, 61, 32,102, 40,108, 97,115,116, 95,105,110, 41, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110, -111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104,101,110, 10, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, -108, 97,115,116, 95,105,110, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115, -101, 46,101,114,114,111,114, 40, 39,102,105,108,116,101,114, 32,114,101,116,117, -114,110,101,100, 32,105,110, 97,112,112,114,111,112,114,105, 97,116,101, 32,110, -105,108, 39, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, - 32,110,105,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,101,108,115,101,105,102, 32,108, 97,115,116, 95,111,117,116, - 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97,116,101, 32, 61, 32, - 34,101, 97,116,105,110,103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,105,110, 32, -116,104,101,110, 32,108, 97,115,116, 95,105,110, 32, 61, 32, 34, 34, 32,101,110, -100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,114,101,116,117,114,110, 32,108, 97,115,116, 95,111,117,116, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,116, 95,111,117,116, 32, - 61, 32,102, 40,108, 97,115,116, 95,105,110, 41, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,111,117,116, - 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95, -105,110, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, - 97,116,101, 32, 61, 32, 34,102,101,101,100,105,110,103, 34, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 39,102,105,108, -116,101,114, 32,114,101,116,117,114,110,101,100, 32, 34, 34, 39, 41, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110, -100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108, -115,101,105,102, 32,110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104, + 32,105,110,100,101,120, 32, 61, 32,105,110,100,101,120, 32, 45, 32, 49, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, +104,117,110,107, 32, 61, 32,114,101,116,114,121, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32, 99,104,117,110, +107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32,105,102, 32,105,110,100,101,120, 32, 61, 61, 32,110, + 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101, +108,115,101, 32,105,110,100,101,120, 32, 61, 32,105,110,100,101,120, 32, 43, 32, + 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,101,108,115,101, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 34,102, +105,108,116,101,114, 32,114,101,116,117,114,110,101,100, 32,105,110, 97,112,112, +114,111,112,114,105, 97,116,101, 32,110,105,108, 34, 41, 32,101,110,100, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, + 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, + 32, 83,111,117,114, 99,101, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116, +101, 32, 97,110, 32,101,109,112,116,121, 32,115,111,117,114, 99,101, 10,108,111, + 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,101,109,112,116,121, 40, 41, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 10,101,110,100, 10, + 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,101,109,112, +116,121, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,101,109,112,116, +121, 10,101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32, +115,111,117,114, 99,101, 32,116,104, 97,116, 32,106,117,115,116, 32,111,117,116, +112,117,116,115, 32, 97,110, 32,101,114,114,111,114, 10,102,117,110, 99,116,105, +111,110, 32,115,111,117,114, 99,101, 46,101,114,114,111,114, 40,101,114,114, 41, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, + 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105, +108, 44, 32,101,114,114, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, + 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,105,108,101, 32,115,111, +117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, + 46,102,105,108,101, 40,104, 97,110,100,108,101, 44, 32,105,111, 95,101,114,114, + 41, 10, 32, 32, 32, 32,105,102, 32,104, 97,110,100,108,101, 32,116,104,101,110, + 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99, +116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, +111, 99, 97,108, 32, 99,104,117,110,107, 32, 61, 32,104, 97,110,100,108,101, 58, +114,101, 97,100, 40, 66, 76, 79, 67, 75, 83, 73, 90, 69, 41, 10, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, + 32,116,104,101,110, 32,104, 97,110,100,108,101, 58, 99,108,111,115,101, 40, 41, + 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116, +117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110, +100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111, +117,114, 99,101, 46,101,114,114,111,114, 40,105,111, 95,101,114,114, 32,111,114, + 32, 34,117,110, 97, 98,108,101, 32,116,111, 32,111,112,101,110, 32,102,105,108, +101, 34, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,116,117,114,110, +115, 32, 97, 32,102, 97,110, 99,121, 32,115,111,117,114, 99,101, 32,105,110,116, +111, 32, 97, 32,115,105,109,112,108,101, 32,115,111,117,114, 99,101, 10,102,117, +110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,115,105,109,112,108,105, +102,121, 40,115,114, 99, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115, +101,114,116, 40,115,114, 99, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, +102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108, +111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 95,111,114, 95,110, +101,119, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115, +114, 99, 32, 61, 32,101,114,114, 95,111,114, 95,110,101,119, 32,111,114, 32,115, +114, 99, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104, +117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, + 32,101,114,114, 95,111,114, 95,110,101,119, 10, 32, 32, 32, 32, 32, 32, 32, 32, +101,108,115,101, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32,101,110, +100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114, +101, 97,116,101,115, 32,115,116,114,105,110,103, 32,115,111,117,114, 99,101, 10, +102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,115,116,114,105, +110,103, 40,115, 41, 10, 32, 32, 32, 32,105,102, 32,115, 32,116,104,101,110, 10, + 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,105, 32, 61, 32, 49, 10, + 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116, +105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, + 99, 97,108, 32, 99,104,117,110,107, 32, 61, 32,115,116,114,105,110,103, 46,115, +117, 98, 40,115, 44, 32,105, 44, 32,105, 43, 66, 76, 79, 67, 75, 83, 73, 90, 69, + 45, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, 32, 61, 32, +105, 32, 43, 32, 66, 76, 79, 67, 75, 83, 73, 90, 69, 10, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, 34, + 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117, +114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, +110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115, +111,117,114, 99,101, 46,101,109,112,116,121, 40, 41, 32,101,110,100, 10,101,110, +100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32,114,101,119,105,110,100, + 97, 98,108,101, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, + 32,115,111,117,114, 99,101, 46,114,101,119,105,110,100, 40,115,114, 99, 41, 10, + 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, 41, + 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, + 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104, +117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, + 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 99,104,117,110,107, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109, +111,118,101, 40,116, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, +102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116, +117,114,110, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32, +101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32,116, 97, 98,108,101, 46,105,110,115,101,114, +116, 40,116, 44, 32, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, +101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, + 99,116,105,111,110, 32,115,111,117,114, 99,101, 46, 99,104, 97,105,110, 40,115, +114, 99, 44, 32,102, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101, +114,116, 40,115,114, 99, 32, 97,110,100, 32,102, 41, 10, 32, 32, 32, 32,108,111, + 99, 97,108, 32,108, 97,115,116, 95,105,110, 44, 32,108, 97,115,116, 95,111,117, +116, 32, 61, 32, 34, 34, 44, 32, 34, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, + 32,115,116, 97,116,101, 32, 61, 32, 34,102,101,101,100,105,110,103, 34, 10, 32, + 32, 32, 32,108,111, 99, 97,108, 32,101,114,114, 10, 32, 32, 32, 32,114,101,116, +117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, + 32, 32, 32,105,102, 32,110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116, +104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, + 46,101,114,114,111,114, 40, 39,115,111,117,114, 99,101, 32,105,115, 32,101,109, +112,116,121, 33, 39, 44, 32, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110, +100, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, + 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115, +116, 97,116,101, 32, 61, 61, 32, 34,102,101,101,100,105,110,103, 34, 32,116,104, +101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, + 97,115,116, 95,105,110, 44, 32,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101, +114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, +101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,108, 97,115,116, 95,111,117,116, 32, 61, 32,102, 40,108, 97,115, +116, 95,105,110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,105,102, 32,110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104, 101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,105,110, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, @@ -264,158 +226,195 @@ int luatex_ltn12_lua_open (lua_State *L) { 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114,101,116,117,114,110, 32,110,105,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117, -114,110, 32,108, 97,115,116, 95,111,117,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, - 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97, -116,101,115, 32, 97, 32,115,111,117,114, 99,101, 32,116,104, 97,116, 32,112,114, -111,100,117, 99,101,115, 32, 99,111,110,116,101,110,116,115, 32,111,102, 32,115, -101,118,101,114, 97,108, 32,115,111,117,114, 99,101,115, 44, 32,111,110,101, 32, - 97,102,116,101,114, 32,116,104,101, 10, 45, 45, 32,111,116,104,101,114, 44, 32, - 97,115, 32,105,102, 32,116,104,101,121, 32,119,101,114,101, 32, 99,111,110, 99, - 97,116,101,110, 97,116,101,100, 10, 45, 45, 32, 40,116,104, 97,110,107,115, 32, -116,111, 32, 87,105,109, 32, 67,111,117,119,101,110, 98,101,114,103, 41, 10,102, -117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46, 99, 97,116, 40, 46, - 46, 46, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,114, 99, 32, 61, 32, -116, 97, 98,108,101, 46,114,101,109,111,118,101, 40, 97,114,103, 44, 32, 49, 41, - 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, - 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,115,114, 99, - 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97, -108, 32, 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32,115,114, 99, 40, 41, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110, -107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32, -101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101, -114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, -101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -115,114, 99, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,111,118,101, 40, 97, -114,103, 44, 32, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, - 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 83,105,110,107, 32,115,116, -117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32,108, 97, +115,116, 95,111,117,116, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, + 97,116,101, 32, 61, 32, 34,101, 97,116,105,110,103, 34, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97, +115,116, 95,105,110, 32,116,104,101,110, 32,108, 97,115,116, 95,105,110, 32, 61, + 32, 34, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,108, 97,115,116, 95, +111,117,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115, +116, 95,111,117,116, 32, 61, 32,102, 40,108, 97,115,116, 95,105,110, 41, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97, +115,116, 95,111,117,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, + 32,108, 97,115,116, 95,105,110, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,115,116, 97,116,101, 32, 61, 32, 34,102,101,101,100,105,110,103, + 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111, +114, 40, 39,102,105,108,116,101,114, 32,114,101,116,117,114,110,101,100, 32, 34, + 34, 39, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,101,108,115,101,105,102, 32,110,111,116, 32,108, 97,115,116, 95, +111,117,116, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,105,110, 32, +116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, + 39,102,105,108,116,101,114, 32,114,101,116,117,114,110,101,100, 32,105,110, 97, +112,112,114,111,112,114,105, 97,116,101, 32,110,105,108, 39, 41, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115, +101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115, +101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,114,101,116,117,114,110, 32,108, 97,115,116, 95,111,117,116, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, + 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, + 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,111,117,114, 99,101, 32,116, +104, 97,116, 32,112,114,111,100,117, 99,101,115, 32, 99,111,110,116,101,110,116, +115, 32,111,102, 32,115,101,118,101,114, 97,108, 32,115,111,117,114, 99,101,115, + 44, 32,111,110,101, 32, 97,102,116,101,114, 32,116,104,101, 10, 45, 45, 32,111, +116,104,101,114, 44, 32, 97,115, 32,105,102, 32,116,104,101,121, 32,119,101,114, +101, 32, 99,111,110, 99, 97,116,101,110, 97,116,101,100, 10, 45, 45, 32, 40,116, +104, 97,110,107,115, 32,116,111, 32, 87,105,109, 32, 67,111,117,119,101,110, 98, +101,114,103, 41, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, + 46, 99, 97,116, 40, 46, 46, 46, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, + 97,114,103, 32, 61, 32,123, 46, 46, 46,125, 10, 32, 32, 32, 32,108,111, 99, 97, +108, 32,115,114, 99, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,111,118,101, + 40, 97,114,103, 44, 32, 49, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, +102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,119, +104,105,108,101, 32,115,114, 99, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, + 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114, +110, 32, 99,104,117,110,107, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117, +114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32,115,114, 99, 32, 61, 32,116, 97, 98,108,101, 46, +114,101,109,111,118,101, 40, 97,114,103, 44, 32, 49, 41, 10, 32, 32, 32, 32, 32, + 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105,110,107, 32, -116,104, 97,116, 32,115,116,111,114,101,115, 32,105,110,116,111, 32, 97, 32,116, - 97, 98,108,101, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,116, - 97, 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,116, 32, 61, 32,116, 32,111,114, - 32,123,125, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,102,117, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, + 32, 83,105,110,107, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101,115, + 32, 97, 32,115,105,110,107, 32,116,104, 97,116, 32,115,116,111,114,101,115, 32, +105,110,116,111, 32, 97, 32,116, 97, 98,108,101, 10,102,117,110, 99,116,105,111, +110, 32,115,105,110,107, 46,116, 97, 98,108,101, 40,116, 41, 10, 32, 32, 32, 32, +116, 32, 61, 32,116, 32,111,114, 32,123,125, 10, 32, 32, 32, 32,108,111, 99, 97, +108, 32,102, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 99,104,117,110,107, + 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104, +117,110,107, 32,116,104,101,110, 32,116, 97, 98,108,101, 46,105,110,115,101,114, +116, 40,116, 44, 32, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32, + 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32,101,110,100, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 44, 32,116, 10,101,110,100, + 10, 10, 45, 45, 32,116,117,114,110,115, 32, 97, 32,102, 97,110, 99,121, 32,115, +105,110,107, 32,105,110,116,111, 32, 97, 32,115,105,109,112,108,101, 32,115,105, +110,107, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,115,105,109, +112,108,105,102,121, 40,115,110,107, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, + 97,115,115,101,114,116, 40,115,110,107, 41, 10, 32, 32, 32, 32,114,101,116,117, +114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104,117,110,107, 44, 32,101, +114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101, +116, 44, 32,101,114,114, 95,111,114, 95,110,101,119, 32, 61, 32,115,110,107, 40, + 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, +105,102, 32,110,111,116, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117, +114,110, 32,110,105,108, 44, 32,101,114,114, 95,111,114, 95,110,101,119, 32,101, +110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,110,107, 32, 61, 32,101,114,114, + 95,111,114, 95,110,101,119, 32,111,114, 32,115,110,107, 10, 32, 32, 32, 32, 32, + 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32,101,110,100, 10, +101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,105, +108,101, 32,115,105,110,107, 10,102,117,110, 99,116,105,111,110, 32,115,105,110, +107, 46,102,105,108,101, 40,104, 97,110,100,108,101, 44, 32,105,111, 95,101,114, +114, 41, 10, 32, 32, 32, 32,105,102, 32,104, 97,110,100,108,101, 32,116,104,101, +110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, + 99,116,105,111,110, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117, +110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,104, 97,110,100,108,101, 58, 99,108,111,115,101, 40, 41, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114, +110, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, + 32,114,101,116,117,114,110, 32,104, 97,110,100,108,101, 58,119,114,105,116,101, + 40, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, +101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, +115,105,110,107, 46,101,114,114,111,114, 40,105,111, 95,101,114,114, 32,111,114, + 32, 34,117,110, 97, 98,108,101, 32,116,111, 32,111,112,101,110, 32,102,105,108, +101, 34, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97, +116,101,115, 32, 97, 32,115,105,110,107, 32,116,104, 97,116, 32,100,105,115, 99, + 97,114,100,115, 32,100, 97,116, 97, 10,108,111, 99, 97,108, 32,102,117,110, 99, +116,105,111,110, 32,110,117,108,108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117, +114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,115, +105,110,107, 46,110,117,108,108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114, +110, 32,110,117,108,108, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116, +101,115, 32, 97, 32,115,105,110,107, 32,116,104, 97,116, 32,106,117,115,116, 32, +114,101,116,117,114,110,115, 32, 97,110, 32,101,114,114,111,114, 10,102,117,110, + 99,116,105,111,110, 32,115,105,110,107, 46,101,114,114,111,114, 40,101,114,114, + 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111, +110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110, +105,108, 44, 32,101,114,114, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, + 10, 45, 45, 32, 99,104, 97,105,110,115, 32, 97, 32,115,105,110,107, 32,119,105, +116,104, 32, 97, 32,102,105,108,116,101,114, 10,102,117,110, 99,116,105,111,110, + 32,115,105,110,107, 46, 99,104, 97,105,110, 40,102, 44, 32,115,110,107, 41, 10, + 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,102, 32, 97,110, +100, 32,115,110,107, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117, 110, 99,116,105,111,110, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, - 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, - 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,116, 44, 32, 99,104,117, -110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117, -114,110, 32, 49, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116, -117,114,110, 32,102, 44, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,116,117,114, -110,115, 32, 97, 32,102, 97,110, 99,121, 32,115,105,110,107, 32,105,110,116,111, - 32, 97, 32,115,105,109,112,108,101, 32,115,105,110,107, 10,102,117,110, 99,116, -105,111,110, 32,115,105,110,107, 46,115,105,109,112,108,105,102,121, 40,115,110, -107, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115, -110,107, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116, -105,111,110, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, - 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114, 95,111, -114, 95,110,101,119, 32, 61, 32,115,110,107, 40, 99,104,117,110,107, 44, 32,101, -114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114, -101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, -101,114,114, 95,111,114, 95,110,101,119, 32,101,110,100, 10, 32, 32, 32, 32, 32, - 32, 32, 32,115,110,107, 32, 61, 32,101,114,114, 95,111,114, 95,110,101,119, 32, -111,114, 32,115,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114, -110, 32, 49, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, - 99,114,101, 97,116,101,115, 32, 97, 32,102,105,108,101, 32,115,105,110,107, 10, -102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,102,105,108,101, 40,104, - 97,110,100,108,101, 44, 32,105,111, 95,101,114,114, 41, 10, 32, 32, 32, 32,105, -102, 32,104, 97,110,100,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, - 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104, -117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,104, 97,110,100, -108,101, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, -104, 97,110,100,108,101, 58,119,114,105,116,101, 40, 99,104,117,110,107, 41, 32, -101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, -101,108,115,101, 32,114,101,116,117,114,110, 32,115,105,110,107, 46,101,114,114, -111,114, 40,105,111, 95,101,114,114, 32,111,114, 32, 34,117,110, 97, 98,108,101, - 32,116,111, 32,111,112,101,110, 32,102,105,108,101, 34, 41, 32,101,110,100, 10, -101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105, -110,107, 32,116,104, 97,116, 32,100,105,115, 99, 97,114,100,115, 32,100, 97,116, - 97, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,110,117,108, -108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, - 10, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,110,117,108,108, - 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,117,108,108, 10,101, -110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105,110, -107, 32,116,104, 97,116, 32,106,117,115,116, 32,114,101,116,117,114,110,115, 32, - 97,110, 32,101,114,114,111,114, 10,102,117,110, 99,116,105,111,110, 32,115,105, -110,107, 46,101,114,114,111,114, 40,101,114,114, 41, 10, 32, 32, 32, 32,114,101, -116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, - 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 10, - 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,104, 97,105, -110,115, 32, 97, 32,115,105,110,107, 32,119,105,116,104, 32, 97, 32,102,105,108, -116,101,114, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46, 99,104, - 97,105,110, 40,102, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32, 98, 97,115,101, - 46, 97,115,115,101,114,116, 40,102, 32, 97,110,100, 32,115,110,107, 41, 10, 32, - 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99, -104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, -102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,102,105,108, -116,101,114,101,100, 32, 61, 32,102, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,100,111,110,101, 32, - 61, 32, 99,104,117,110,107, 32, 97,110,100, 32, 34, 34, 10, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, - 97,108, 32,114,101,116, 44, 32,115,110,107,101,114,114, 32, 61, 32,115,110,107, - 40,102,105,108,116,101,114,101,100, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114, -101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, -115,110,107,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,105,102, 32,102,105,108,116,101,114,101,100, 32, 61, - 61, 32,100,111,110,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 49, - 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32,102,105,108,116,101,114,101,100, 32, 61, 32,102, 40,100,111,110,101, 41, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, - 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,101,110, -100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,117,109,112, - 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 10, 45, 45, 32,112,117,109,112,115, 32,111,110,101, 32, 99,104, -117,110,107, 32,102,114,111,109, 32,116,104,101, 32,115,111,117,114, 99,101, 32, -116,111, 32,116,104,101, 32,115,105,110,107, 10,102,117,110, 99,116,105,111,110, - 32,112,117,109,112, 46,115,116,101,112, 40,115,114, 99, 44, 32,115,110,107, 41, - 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,115,114, - 99, 95,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32,108,111, - 99, 97,108, 32,114,101,116, 44, 32,115,110,107, 95,101,114,114, 32, 61, 32,115, -110,107, 40, 99,104,117,110,107, 44, 32,115,114, 99, 95,101,114,114, 41, 10, 32, - 32, 32, 32,105,102, 32, 99,104,117,110,107, 32, 97,110,100, 32,114,101,116, 32, -116,104,101,110, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32,101,108, -115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,115,114, 99, 95,101, -114,114, 32,111,114, 32,115,110,107, 95,101,114,114, 32,101,110,100, 10,101,110, -100, 10, 10, 45, 45, 32,112,117,109,112,115, 32, 97,108,108, 32,100, 97,116, 97, - 32,102,114,111,109, 32, 97, 32,115,111,117,114, 99,101, 32,116,111, 32, 97, 32, -115,105,110,107, 44, 32,117,115,105,110,103, 32, 97, 32,115,116,101,112, 32,102, -117,110, 99,116,105,111,110, 10,102,117,110, 99,116,105,111,110, 32,112,117,109, -112, 46, 97,108,108, 40,115,114, 99, 44, 32,115,110,107, 44, 32,115,116,101,112, - 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, - 99, 32, 97,110,100, 32,115,110,107, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, - 61, 32,115,116,101,112, 32,111,114, 32,112,117,109,112, 46,115,116,101,112, 10, - 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32, - 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114, - 32, 61, 32,115,116,101,112, 40,115,114, 99, 44, 32,115,110,107, 41, 10, 32, 32, - 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,116, 32,116,104,101, -110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, - 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114, -114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114, -101,116,117,114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, -101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, + 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, + 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, +111, 99, 97,108, 32,102,105,108,116,101,114,101,100, 32, 61, 32,102, 40, 99,104, +117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, + 97,108, 32,100,111,110,101, 32, 61, 32, 99,104,117,110,107, 32, 97,110,100, 32, + 34, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, + 32,116,114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,115,110,107,101, +114,114, 32, 61, 32,115,110,107, 40,102,105,108,116,101,114,101,100, 44, 32,101, +114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +105,102, 32,110,111,116, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117, +114,110, 32,110,105,108, 44, 32,115,110,107,101,114,114, 32,101,110,100, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,102,105, +108,116,101,114,101,100, 32, 61, 61, 32,100,111,110,101, 32,116,104,101,110, 32, +114,101,116,117,114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32,102,105,108,116,101,114,101,100, 32, 61, 32, +102, 40,100,111,110,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116, +117,114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110, +100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 10, 45, 45, 32, 80,117,109,112, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,112,117,109,112, +115, 32,111,110,101, 32, 99,104,117,110,107, 32,102,114,111,109, 32,116,104,101, + 32,115,111,117,114, 99,101, 32,116,111, 32,116,104,101, 32,115,105,110,107, 10, +102,117,110, 99,116,105,111,110, 32,112,117,109,112, 46,115,116,101,112, 40,115, +114, 99, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, +104,117,110,107, 44, 32,115,114, 99, 95,101,114,114, 32, 61, 32,115,114, 99, 40, + 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,115,110,107, + 95,101,114,114, 32, 61, 32,115,110,107, 40, 99,104,117,110,107, 44, 32,115,114, + 99, 95,101,114,114, 41, 10, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32, + 97,110,100, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, + 49, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,110,105, +108, 44, 32,115,114, 99, 95,101,114,114, 32,111,114, 32,115,110,107, 95,101,114, +114, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,112,117,109,112,115, 32, + 97,108,108, 32,100, 97,116, 97, 32,102,114,111,109, 32, 97, 32,115,111,117,114, + 99,101, 32,116,111, 32, 97, 32,115,105,110,107, 44, 32,117,115,105,110,103, 32, + 97, 32,115,116,101,112, 32,102,117,110, 99,116,105,111,110, 10,102,117,110, 99, +116,105,111,110, 32,112,117,109,112, 46, 97,108,108, 40,115,114, 99, 44, 32,115, +110,107, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97, +115,115,101,114,116, 40,115,114, 99, 32, 97,110,100, 32,115,110,107, 41, 10, 32, + 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111,114, 32,112,117, +109,112, 46,115,116,101,112, 10, 32, 32, 32, 32,119,104,105,108,101, 32,116,114, +117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, +114,101,116, 44, 32,101,114,114, 32, 61, 32,115,116,101,112, 40,115,114, 99, 44, + 32,115,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, + 32,114,101,116, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, + 32,110,105,108, 44, 32,101,114,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,101,110,100, 10, + 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10, +101,110,100, 10, 10, 0 }; return luaL_dostring(L, (const char*)B); } /* end of embedded lua code */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c b/Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c index ddb26d476ee..10b39407c80 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c @@ -3,6 +3,8 @@ #include "lua.h" #include "lauxlib.h" +#include "headers_lua.c" +#include "mbox_lua.c" #include "socket_lua.c" #include "ftp_lua.c" #include "http_lua.c" @@ -12,18 +14,22 @@ #include "ltn12_lua.c" #include "mime_lua.c" +#define TEST(A) do { if (A) { \ + fprintf(stderr,"FATAL error while preloading lua module " #A); \ + exit(1); \ + } \ +} while (0) void luatex_socketlua_open (lua_State *L) { - if(luatex_socket_lua_open(L) || - luatex_ltn12_lua_open(L) || - luatex_mime_lua_open(L) || - luatex_url_lua_open(L) || - luatex_tp_lua_open(L) || - luatex_smtp_lua_open(L) || - luatex_http_lua_open(L) || - luatex_ftp_lua_open(L)) { - fprintf(stderr,"FATAL error while preloading lua modules"); - exit(1); - } + TEST(luatex_mbox_lua_open(L)); + TEST(luatex_headers_lua_open(L)); + TEST(luatex_socket_lua_open(L)); + TEST(luatex_ltn12_lua_open(L)); + TEST(luatex_mime_lua_open(L)); + TEST(luatex_url_lua_open(L)); + TEST(luatex_tp_lua_open(L)); + TEST(luatex_smtp_lua_open(L)); + TEST(luatex_http_lua_open(L)); + TEST(luatex_ftp_lua_open(L)); } diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c b/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c index 11ffee94c46..b43114e50f7 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c @@ -10,8 +10,6 @@ * involved in setting up both client and server connections. The provided * IO routines, however, follow the Lua style, being very similar to the * standard Lua read and write functions. -* -* RCS ID: $Id: luasocket.c,v 1.53 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ /*=========================================================================*\ @@ -47,7 +45,7 @@ static int base_open(lua_State *L); /*-------------------------------------------------------------------------*\ * Modules and functions \*-------------------------------------------------------------------------*/ -static const luaL_reg mod[] = { +static const luaL_Reg mod[] = { {"auxiliar", auxiliar_open}, {"except", except_open}, {"timeout", timeout_open}, @@ -59,7 +57,7 @@ static const luaL_reg mod[] = { {NULL, NULL} }; -static luaL_reg func[] = { +static luaL_Reg func[] = { {"skip", global_skip}, {"__unload", global_unload}, {NULL, NULL} diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h b/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h index 67270abb937..f2ca3c159e9 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h @@ -5,16 +5,14 @@ * Networking support for the Lua language * Diego Nehab * 9/11/1999 -* -* RCS ID: $Id: luasocket.h,v 1.25 2007/06/11 23:44:54 diego Exp $ \*=========================================================================*/ #include "lua.h" /*-------------------------------------------------------------------------*\ * Current socket library version \*-------------------------------------------------------------------------*/ -#define LUASOCKET_VERSION "LuaSocket 2.0.2" -#define LUASOCKET_COPYRIGHT "Copyright (C) 2004-2007 Diego Nehab" +#define LUASOCKET_VERSION "LuaSocket 2.1-rc1" +#define LUASOCKET_COPYRIGHT "Copyright (C) 1999-2012 Diego Nehab" #define LUASOCKET_AUTHORS "Diego Nehab" /*-------------------------------------------------------------------------*\ @@ -24,6 +22,10 @@ #define LUASOCKET_API extern #endif +#if LUA_VERSION_NUM > 501 & !( defined LUA_COMPAT_MODULE) +# error Lua 5.2 requires LUA_COMPAT_MODULE defined for luaL_openlib +#endif + /*-------------------------------------------------------------------------*\ * Initializes the library. \*-------------------------------------------------------------------------*/ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mbox.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/mbox.lua new file mode 100644 index 00000000000..35adf4ea70a --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mbox.lua @@ -0,0 +1,88 @@ +local Public = {} + +mbox = Public + +function Public.split_message(message_s) + local message = {} + message_s = string.gsub(message_s, "\r\n", "\n") + string.gsub(message_s, "^(.-\n)\n", function (h) message.headers = h end) + string.gsub(message_s, "^.-\n\n(.*)", function (b) message.body = b end) + if not message.body then + string.gsub(message_s, "^\n(.*)", function (b) message.body = b end) + end + if not message.headers and not message.body then + message.headers = message_s + end + return message.headers or "", message.body or "" +end + +function Public.split_headers(headers_s) + local headers = {} + headers_s = string.gsub(headers_s, "\r\n", "\n") + headers_s = string.gsub(headers_s, "\n[ ]+", " ") + string.gsub("\n" .. headers_s, "\n([^\n]+)", function (h) table.insert(headers, h) end) + return headers +end + +function Public.parse_header(header_s) + header_s = string.gsub(header_s, "\n[ ]+", " ") + header_s = string.gsub(header_s, "\n+", "") + local _, __, name, value = string.find(header_s, "([^%s:]-):%s*(.*)") + return name, value +end + +function Public.parse_headers(headers_s) + local headers_t = Public.split_headers(headers_s) + local headers = {} + for i = 1, #headers_t do + local name, value = Public.parse_header(headers_t[i]) + if name then + name = string.lower(name) + if headers[name] then + headers[name] = headers[name] .. ", " .. value + else headers[name] = value end + end + end + return headers +end + +function Public.parse_from(from) + local _, __, name, address = string.find(from, "^%s*(.-)%s*%<(.-)%>") + if not address then + _, __, address = string.find(from, "%s*(.+)%s*") + end + name = name or "" + address = address or "" + if name == "" then name = address end + name = string.gsub(name, '"', "") + return name, address +end + +function Public.split_mbox(mbox_s) + mbox = {} + mbox_s = string.gsub(mbox_s, "\r\n", "\n") .."\n\nFrom \n" + local nj, i, j = 1, 1, 1 + while 1 do + i, nj = string.find(mbox_s, "\n\nFrom .-\n", j) + if not i then break end + local message = string.sub(mbox_s, j, i-1) + table.insert(mbox, message) + j = nj+1 + end + return mbox +end + +function Public.parse(mbox_s) + local mbox = Public.split_mbox(mbox_s) + for i = 1, #mbox do + mbox[i] = Public.parse_message(mbox[i]) + end + return mbox +end + +function Public.parse_message(message_s) + local message = {} + message.headers, message.body = Public.split_message(message_s) + message.headers = Public.parse_headers(message.headers) + return message +end diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mbox_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/mbox_lua.c new file mode 100644 index 00000000000..bbe4d504b67 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mbox_lua.c @@ -0,0 +1,147 @@ +/* + * This file is auto-generated by "lua2c mbox.lua mbox_lua" + */ + +#include "lua.h" +#include "lauxlib.h" + +int luatex_mbox_lua_open (lua_State *L) { + static unsigned char B[] = { + 108,111, 99, 97,108, 32, 80,117, 98,108,105, 99, 32, 61, 32,123,125, 10, 10,109, + 98,111,120, 32, 61, 32, 80,117, 98,108,105, 99, 10, 10,102,117,110, 99,116,105, +111,110, 32, 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,109,101,115,115, + 97,103,101, 40,109,101,115,115, 97,103,101, 95,115, 41, 10, 32, 32, 32, 32,108, +111, 99, 97,108, 32,109,101,115,115, 97,103,101, 32, 61, 32,123,125, 10, 32, 32, + 32, 32,109,101,115,115, 97,103,101, 95,115, 32, 61, 32,115,116,114,105,110,103, + 46,103,115,117, 98, 40,109,101,115,115, 97,103,101, 95,115, 44, 32, 34, 92,114, + 92,110, 34, 44, 32, 34, 92,110, 34, 41, 10, 32, 32, 32, 32,115,116,114,105,110, +103, 46,103,115,117, 98, 40,109,101,115,115, 97,103,101, 95,115, 44, 32, 34, 94, + 40, 46, 45, 92,110, 41, 92,110, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, + 40,104, 41, 32,109,101,115,115, 97,103,101, 46,104,101, 97,100,101,114,115, 32, + 61, 32,104, 32,101,110,100, 41, 10, 32, 32, 32, 32,115,116,114,105,110,103, 46, +103,115,117, 98, 40,109,101,115,115, 97,103,101, 95,115, 44, 32, 34, 94, 46, 45, + 92,110, 92,110, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, + 40, 98, 41, 32,109,101,115,115, 97,103,101, 46, 98,111,100,121, 32, 61, 32, 98, + 32,101,110,100, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,109,101,115, +115, 97,103,101, 46, 98,111,100,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, + 32, 32, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,109,101,115,115, 97, +103,101, 95,115, 44, 32, 34, 94, 92,110, 40, 46, 42, 41, 34, 44, 32,102,117,110, + 99,116,105,111,110, 32, 40, 98, 41, 32,109,101,115,115, 97,103,101, 46, 98,111, +100,121, 32, 61, 32, 98, 32,101,110,100, 41, 10, 32, 32, 32, 32,101,110,100, 10, + 32, 32, 32, 32,105,102, 32,110,111,116, 32,109,101,115,115, 97,103,101, 46,104, +101, 97,100,101,114,115, 32, 97,110,100, 32,110,111,116, 32,109,101,115,115, 97, +103,101, 46, 98,111,100,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, + 32,109,101,115,115, 97,103,101, 46,104,101, 97,100,101,114,115, 32, 61, 32,109, +101,115,115, 97,103,101, 95,115, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, + 32,114,101,116,117,114,110, 32,109,101,115,115, 97,103,101, 46,104,101, 97,100, +101,114,115, 32,111,114, 32, 34, 34, 44, 32,109,101,115,115, 97,103,101, 46, 98, +111,100,121, 32,111,114, 32, 34, 34, 10,101,110,100, 10, 10,102,117,110, 99,116, +105,111,110, 32, 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,104,101, 97, +100,101,114,115, 40,104,101, 97,100,101,114,115, 95,115, 41, 10, 32, 32, 32, 32, +108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,123,125, 10, 32, + 32, 32, 32,104,101, 97,100,101,114,115, 95,115, 32, 61, 32,115,116,114,105,110, +103, 46,103,115,117, 98, 40,104,101, 97,100,101,114,115, 95,115, 44, 32, 34, 92, +114, 92,110, 34, 44, 32, 34, 92,110, 34, 41, 10, 32, 32, 32, 32,104,101, 97,100, +101,114,115, 95,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, +104,101, 97,100,101,114,115, 95,115, 44, 32, 34, 92,110, 91, 32, 93, 43, 34, 44, + 32, 34, 32, 34, 41, 10, 32, 32, 32, 32,115,116,114,105,110,103, 46,103,115,117, + 98, 40, 34, 92,110, 34, 32, 46, 46, 32,104,101, 97,100,101,114,115, 95,115, 44, + 32, 34, 92,110, 40, 91, 94, 92,110, 93, 43, 41, 34, 44, 32,102,117,110, 99,116, +105,111,110, 32, 40,104, 41, 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, + 40,104,101, 97,100,101,114,115, 44, 32,104, 41, 32,101,110,100, 41, 10, 32, 32, + 32, 32,114,101,116,117,114,110, 32,104,101, 97,100,101,114,115, 10,101,110,100, + 10, 10,102,117,110, 99,116,105,111,110, 32, 80,117, 98,108,105, 99, 46,112, 97, +114,115,101, 95,104,101, 97,100,101,114, 40,104,101, 97,100,101,114, 95,115, 41, + 10, 32, 32, 32, 32,104,101, 97,100,101,114, 95,115, 32, 61, 32,115,116,114,105, +110,103, 46,103,115,117, 98, 40,104,101, 97,100,101,114, 95,115, 44, 32, 34, 92, +110, 91, 32, 93, 43, 34, 44, 32, 34, 32, 34, 41, 10, 32, 32, 32, 32,104,101, 97, +100,101,114, 95,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, +104,101, 97,100,101,114, 95,115, 44, 32, 34, 92,110, 43, 34, 44, 32, 34, 34, 41, + 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 95, 44, 32, 95, 95, 44, 32,110, 97, +109,101, 44, 32,118, 97,108,117,101, 32, 61, 32,115,116,114,105,110,103, 46,102, +105,110,100, 40,104,101, 97,100,101,114, 95,115, 44, 32, 34, 40, 91, 94, 37,115, + 58, 93, 45, 41, 58, 37,115, 42, 40, 46, 42, 41, 34, 41, 10, 32, 32, 32, 32,114, +101,116,117,114,110, 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 10,101,110, +100, 10, 10,102,117,110, 99,116,105,111,110, 32, 80,117, 98,108,105, 99, 46,112, + 97,114,115,101, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, + 95,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114, +115, 95,116, 32, 61, 32, 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,104, +101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, 95,115, 41, 10, 32, 32, + 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,123,125, + 10, 32, 32, 32, 32,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,104,101, 97, +100,101,114,115, 95,116, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, + 99, 97,108, 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 32, 61, 32, 80,117, + 98,108,105, 99, 46,112, 97,114,115,101, 95,104,101, 97,100,101,114, 40,104,101, + 97,100,101,114,115, 95,116, 91,105, 93, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, +105,102, 32,110, 97,109,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,108, +111,119,101,114, 40,110, 97,109,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32,105,102, 32,104,101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32, +116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32,104,101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,104,101, 97, +100,101,114,115, 91,110, 97,109,101, 93, 32, 46, 46, 32, 34, 44, 32, 34, 32, 46, + 46, 32,118, 97,108,117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +101,108,115,101, 32,104,101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, + 32,118, 97,108,117,101, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, +110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114, +110, 32,104,101, 97,100,101,114,115, 10,101,110,100, 10, 10,102,117,110, 99,116, +105,111,110, 32, 80,117, 98,108,105, 99, 46,112, 97,114,115,101, 95,102,114,111, +109, 40,102,114,111,109, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 95, 44, + 32, 95, 95, 44, 32,110, 97,109,101, 44, 32, 97,100,100,114,101,115,115, 32, 61, + 32,115,116,114,105,110,103, 46,102,105,110,100, 40,102,114,111,109, 44, 32, 34, + 94, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 37, 60, 40, 46, 45, 41, 37, 62, 34, + 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 97,100,100,114,101,115,115, + 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 44, 32, 95, 95, 44, + 32, 97,100,100,114,101,115,115, 32, 61, 32,115,116,114,105,110,103, 46,102,105, +110,100, 40,102,114,111,109, 44, 32, 34, 37,115, 42, 40, 46, 43, 41, 37,115, 42, + 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,110, 97,109,101, 32, + 61, 32,110, 97,109,101, 32,111,114, 32, 34, 34, 10, 32, 32, 32, 32, 97,100,100, +114,101,115,115, 32, 61, 32, 97,100,100,114,101,115,115, 32,111,114, 32, 34, 34, + 10, 32, 32, 32, 32,105,102, 32,110, 97,109,101, 32, 61, 61, 32, 34, 34, 32,116, +104,101,110, 32,110, 97,109,101, 32, 61, 32, 97,100,100,114,101,115,115, 32,101, +110,100, 10, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, + 46,103,115,117, 98, 40,110, 97,109,101, 44, 32, 39, 34, 39, 44, 32, 34, 34, 41, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110, 97,109,101, 44, 32, 97,100, +100,114,101,115,115, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, + 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,109, 98,111,120, 40,109, 98, +111,120, 95,115, 41, 10, 32, 32, 32, 32,109, 98,111,120, 32, 61, 32,123,125, 10, + 32, 32, 32, 32,109, 98,111,120, 95,115, 32, 61, 32,115,116,114,105,110,103, 46, +103,115,117, 98, 40,109, 98,111,120, 95,115, 44, 32, 34, 92,114, 92,110, 34, 44, + 32, 34, 92,110, 34, 41, 32, 46, 46, 34, 92,110, 92,110, 70,114,111,109, 32, 92, +110, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110,106, 44, 32,105, 44, 32, +106, 32, 61, 32, 49, 44, 32, 49, 44, 32, 49, 10, 32, 32, 32, 32,119,104,105,108, +101, 32, 49, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, 44, 32,110,106, + 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,109, 98,111,120, 95, +115, 44, 32, 34, 92,110, 92,110, 70,114,111,109, 32, 46, 45, 92,110, 34, 44, 32, +106, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,105, 32, +116,104,101,110, 32, 98,114,101, 97,107, 32,101,110,100, 10, 32, 32, 32, 32, 32, + 32, 32, 32,108,111, 99, 97,108, 32,109,101,115,115, 97,103,101, 32, 61, 32,115, +116,114,105,110,103, 46,115,117, 98, 40,109, 98,111,120, 95,115, 44, 32,106, 44, + 32,105, 45, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,116, 97, 98,108,101, 46, +105,110,115,101,114,116, 40,109, 98,111,120, 44, 32,109,101,115,115, 97,103,101, + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,106, 32, 61, 32,110,106, 43, 49, 10, 32, + 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,109, 98, +111,120, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 80,117, 98, +108,105, 99, 46,112, 97,114,115,101, 40,109, 98,111,120, 95,115, 41, 10, 32, 32, + 32, 32,108,111, 99, 97,108, 32,109, 98,111,120, 32, 61, 32, 80,117, 98,108,105, + 99, 46,115,112,108,105,116, 95,109, 98,111,120, 40,109, 98,111,120, 95,115, 41, + 10, 32, 32, 32, 32,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,109, 98,111, +120, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,109, 98,111,120, 91,105, 93, + 32, 61, 32, 80,117, 98,108,105, 99, 46,112, 97,114,115,101, 95,109,101,115,115, + 97,103,101, 40,109, 98,111,120, 91,105, 93, 41, 10, 32, 32, 32, 32,101,110,100, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,109, 98,111,120, 10,101,110,100, + 10, 10,102,117,110, 99,116,105,111,110, 32, 80,117, 98,108,105, 99, 46,112, 97, +114,115,101, 95,109,101,115,115, 97,103,101, 40,109,101,115,115, 97,103,101, 95, +115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,109,101,115,115, 97,103,101, + 32, 61, 32,123,125, 10, 32, 32, 32, 32,109,101,115,115, 97,103,101, 46,104,101, + 97,100,101,114,115, 44, 32,109,101,115,115, 97,103,101, 46, 98,111,100,121, 32, + 61, 32, 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,109,101,115,115, 97, +103,101, 40,109,101,115,115, 97,103,101, 95,115, 41, 10, 32, 32, 32, 32,109,101, +115,115, 97,103,101, 46,104,101, 97,100,101,114,115, 32, 61, 32, 80,117, 98,108, +105, 99, 46,112, 97,114,115,101, 95,104,101, 97,100,101,114,115, 40,109,101,115, +115, 97,103,101, 46,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114,101, +116,117,114,110, 32,109,101,115,115, 97,103,101, 10,101,110,100, 10, + 0 }; + return luaL_dostring(L, (const char*)B); +} /* end of embedded lua code */ + diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.c b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.c index 700fa05e930..dddd3d66ea0 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * MIME support functions * LuaSocket toolkit -* -* RCS ID: $Id: mime.c,v 1.28 2005/11/20 07:20:23 diego Exp $ \*=========================================================================*/ #include <string.h> @@ -35,12 +33,12 @@ static int mime_global_eol(lua_State *L); static int mime_global_dot(lua_State *L); static size_t dot(int c, size_t state, luaL_Buffer *buffer); -static void b64setup(UC *b64unbase); +static void b64setup(UC *base); static size_t b64encode(UC c, UC *input, size_t size, luaL_Buffer *buffer); static size_t b64pad(const UC *input, size_t size, luaL_Buffer *buffer); static size_t b64decode(UC c, UC *input, size_t size, luaL_Buffer *buffer); -static void qpsetup(UC *qpclass, UC *qpunbase); +static void qpsetup(UC *class, UC *unbase); static void qpquote(UC c, luaL_Buffer *buffer); static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer); static size_t qpencode(UC c, UC *input, size_t size, @@ -48,7 +46,7 @@ static size_t qpencode(UC c, UC *input, size_t size, static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer); /* code support functions */ -static luaL_reg func[] = { +static luaL_Reg func[] = { { "dot", mime_global_dot }, { "b64", mime_global_b64 }, { "eol", mime_global_eol }, @@ -135,7 +133,7 @@ static int mime_global_wrp(lua_State *L) left = length; luaL_addstring(&buffer, CRLF); } - luaL_putchar(&buffer, *input); + luaL_addchar(&buffer, *input); left--; break; } @@ -149,12 +147,12 @@ static int mime_global_wrp(lua_State *L) /*-------------------------------------------------------------------------*\ * Fill base64 decode map. \*-------------------------------------------------------------------------*/ -static void b64setup(UC *b64unbase) +static void b64setup(UC *unbase) { int i; - for (i = 0; i <= 255; i++) b64unbase[i] = (UC) 255; - for (i = 0; i < 64; i++) b64unbase[b64base[i]] = (UC) i; - b64unbase['='] = 0; + for (i = 0; i <= 255; i++) unbase[i] = (UC) 255; + for (i = 0; i < 64; i++) unbase[b64base[i]] = (UC) i; + unbase['='] = 0; } /*-------------------------------------------------------------------------*\ @@ -265,6 +263,8 @@ static int mime_global_b64(lua_State *L) lua_pushnil(L); return 2; } + /* make sure we don't confuse buffer stuff with arguments */ + lua_settop(L, 2); /* process first part of the input */ luaL_buffinit(L, &buffer); while (input < last) @@ -272,9 +272,12 @@ static int mime_global_b64(lua_State *L) input = (UC *) luaL_optlstring(L, 2, NULL, &isize); /* if second part is nil, we are done */ if (!input) { + size_t osize = 0; asize = b64pad(atom, asize, &buffer); luaL_pushresult(&buffer); - if (!(*lua_tostring(L, -1))) lua_pushnil(L); + /* if the output is empty and the input is nil, return nil */ + lua_tolstring(L, -1, &osize); + if (osize == 0) lua_pushnil(L); lua_pushnil(L); return 2; } @@ -306,6 +309,8 @@ static int mime_global_unb64(lua_State *L) lua_pushnil(L); return 2; } + /* make sure we don't confuse buffer stuff with arguments */ + lua_settop(L, 2); /* process first part of the input */ luaL_buffinit(L, &buffer); while (input < last) @@ -313,8 +318,11 @@ static int mime_global_unb64(lua_State *L) input = (UC *) luaL_optlstring(L, 2, NULL, &isize); /* if second is nil, we are done */ if (!input) { + size_t osize = 0; luaL_pushresult(&buffer); - if (!(*lua_tostring(L, -1))) lua_pushnil(L); + /* if the output is empty and the input is nil, return nil */ + lua_tolstring(L, -1, &osize); + if (osize == 0) lua_pushnil(L); lua_pushnil(L); return 2; } @@ -343,24 +351,24 @@ static int mime_global_unb64(lua_State *L) * Split quoted-printable characters into classes * Precompute reverse map for encoding \*-------------------------------------------------------------------------*/ -static void qpsetup(UC *qpclass, UC *qpunbase) +static void qpsetup(UC *cl, UC *unbase) { int i; - for (i = 0; i < 256; i++) qpclass[i] = QP_QUOTED; - for (i = 33; i <= 60; i++) qpclass[i] = QP_PLAIN; - for (i = 62; i <= 126; i++) qpclass[i] = QP_PLAIN; - qpclass['\t'] = QP_IF_LAST; - qpclass[' '] = QP_IF_LAST; - qpclass['\r'] = QP_CR; - for (i = 0; i < 256; i++) qpunbase[i] = 255; - qpunbase['0'] = 0; qpunbase['1'] = 1; qpunbase['2'] = 2; - qpunbase['3'] = 3; qpunbase['4'] = 4; qpunbase['5'] = 5; - qpunbase['6'] = 6; qpunbase['7'] = 7; qpunbase['8'] = 8; - qpunbase['9'] = 9; qpunbase['A'] = 10; qpunbase['a'] = 10; - qpunbase['B'] = 11; qpunbase['b'] = 11; qpunbase['C'] = 12; - qpunbase['c'] = 12; qpunbase['D'] = 13; qpunbase['d'] = 13; - qpunbase['E'] = 14; qpunbase['e'] = 14; qpunbase['F'] = 15; - qpunbase['f'] = 15; + for (i = 0; i < 256; i++) cl[i] = QP_QUOTED; + for (i = 33; i <= 60; i++) cl[i] = QP_PLAIN; + for (i = 62; i <= 126; i++) cl[i] = QP_PLAIN; + cl['\t'] = QP_IF_LAST; + cl[' '] = QP_IF_LAST; + cl['\r'] = QP_CR; + for (i = 0; i < 256; i++) unbase[i] = 255; + unbase['0'] = 0; unbase['1'] = 1; unbase['2'] = 2; + unbase['3'] = 3; unbase['4'] = 4; unbase['5'] = 5; + unbase['6'] = 6; unbase['7'] = 7; unbase['8'] = 8; + unbase['9'] = 9; unbase['A'] = 10; unbase['a'] = 10; + unbase['B'] = 11; unbase['b'] = 11; unbase['C'] = 12; + unbase['c'] = 12; unbase['D'] = 13; unbase['d'] = 13; + unbase['E'] = 14; unbase['e'] = 14; unbase['F'] = 15; + unbase['f'] = 15; } /*-------------------------------------------------------------------------*\ @@ -368,9 +376,9 @@ static void qpsetup(UC *qpclass, UC *qpunbase) \*-------------------------------------------------------------------------*/ static void qpquote(UC c, luaL_Buffer *buffer) { - luaL_putchar(buffer, '='); - luaL_putchar(buffer, qpbase[c >> 4]); - luaL_putchar(buffer, qpbase[c & 0x0F]); + luaL_addchar(buffer, '='); + luaL_addchar(buffer, qpbase[c >> 4]); + luaL_addchar(buffer, qpbase[c & 0x0F]); } /*-------------------------------------------------------------------------*\ @@ -400,7 +408,7 @@ static size_t qpencode(UC c, UC *input, size_t size, qpquote(input[0], buffer); luaL_addstring(buffer, marker); return 0; - } else luaL_putchar(buffer, input[0]); + } else luaL_addchar(buffer, input[0]); break; /* might have to be quoted always */ case QP_QUOTED: @@ -408,7 +416,7 @@ static size_t qpencode(UC c, UC *input, size_t size, break; /* might never have to be quoted */ default: - luaL_putchar(buffer, input[0]); + luaL_addchar(buffer, input[0]); break; } input[0] = input[1]; input[1] = input[2]; @@ -424,7 +432,7 @@ static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer) { size_t i; for (i = 0; i < size; i++) { - if (qpclass[input[i]] == QP_PLAIN) luaL_putchar(buffer, input[i]); + if (qpclass[input[i]] == QP_PLAIN) luaL_addchar(buffer, input[i]); else qpquote(input[i], buffer); } if (size > 0) luaL_addstring(buffer, EQCRLF); @@ -454,6 +462,8 @@ static int mime_global_qp(lua_State *L) lua_pushnil(L); return 2; } + /* make sure we don't confuse buffer stuff with arguments */ + lua_settop(L, 3); /* process first part of input */ luaL_buffinit(L, &buffer); while (input < last) @@ -494,7 +504,7 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) { c = qpunbase[input[1]]; d = qpunbase[input[2]]; /* if it is an invalid, do not decode */ if (c > 15 || d > 15) luaL_addlstring(buffer, (char *)input, 3); - else luaL_putchar(buffer, (c << 4) + d); + else luaL_addchar(buffer, (char) ((c << 4) + d)); return 0; case '\r': if (size < 2) return size; @@ -502,7 +512,7 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) { return 0; default: if (input[0] == '\t' || (input[0] > 31 && input[0] < 127)) - luaL_putchar(buffer, input[0]); + luaL_addchar(buffer, input[0]); return 0; } } @@ -527,6 +537,8 @@ static int mime_global_unqp(lua_State *L) lua_pushnil(L); return 2; } + /* make sure we don't confuse buffer stuff with arguments */ + lua_settop(L, 2); /* process first part of input */ luaL_buffinit(L, &buffer); while (input < last) @@ -587,7 +599,7 @@ static int mime_global_qpwrp(lua_State *L) left = length; luaL_addstring(&buffer, EQCRLF); } - luaL_putchar(&buffer, *input); + luaL_addchar(&buffer, *input); left--; break; default: @@ -595,7 +607,7 @@ static int mime_global_qpwrp(lua_State *L) left = length; luaL_addstring(&buffer, EQCRLF); } - luaL_putchar(&buffer, *input); + luaL_addchar(&buffer, *input); left--; break; } @@ -630,7 +642,7 @@ static int eolprocess(int c, int last, const char *marker, return c; } } else { - luaL_putchar(buffer, c); + luaL_addchar(buffer, (char) c); return 0; } } @@ -670,7 +682,7 @@ static int mime_global_eol(lua_State *L) \*-------------------------------------------------------------------------*/ static size_t dot(int c, size_t state, luaL_Buffer *buffer) { - luaL_putchar(buffer, c); + luaL_addchar(buffer, (char) c); switch (c) { case '\r': return 1; @@ -678,7 +690,7 @@ static size_t dot(int c, size_t state, luaL_Buffer *buffer) return (state == 1)? 2: 0; case '.': if (state == 2) - luaL_putchar(buffer, '.'); + luaL_addchar(buffer, '.'); default: return 0; } @@ -705,7 +717,7 @@ static int mime_global_dot(lua_State *L) while (input < last) state = dot(*input++, state, &buffer); luaL_pushresult(&buffer); - lua_pushnumber(L, state); + lua_pushnumber(L, (lua_Number) state); return 2; } diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.h b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.h index 85ee2a39856..150e7adf912 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.h @@ -7,16 +7,14 @@ * This module provides functions to implement transfer content encodings * and formatting conforming to RFC 2045. It is used by mime.lua, which * provide a higher level interface to this functionality. -* -* RCS ID: $Id: mime.h,v 1.15 2007/06/11 23:44:54 diego Exp $ \*=========================================================================*/ #include "lua.h" /*-------------------------------------------------------------------------*\ * Current MIME library version \*-------------------------------------------------------------------------*/ -#define MIME_VERSION "MIME 1.0.2" -#define MIME_COPYRIGHT "Copyright (C) 2004-2007 Diego Nehab" +#define MIME_VERSION "MIME 1.0.3-rc1" +#define MIME_COPYRIGHT "Copyright (C) 2004-2012 Diego Nehab" #define MIME_AUTHORS "Diego Nehab" /*-------------------------------------------------------------------------*\ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua index 169eda29a94..4aaccc8ea47 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua @@ -2,7 +2,6 @@ -- MIME support for the Lua language. -- Author: Diego Nehab -- Conforming to RFCs 2045-2049 --- RCS ID: $Id: mime.lua,v 1.29 2007/06/11 23:44:54 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -11,7 +10,6 @@ local base = _G local ltn12 = require("ltn12") local mime = require("mime.core") -local io = require("io") local string = require("string") module("mime") diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c index e131536a8b4..64e259f629c 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c @@ -1,5 +1,5 @@ /* - * This file is auto-generated by "./lua2c mime.lua mime_lua" + * This file is auto-generated by "lua2c mime.lua mime_lua" */ #include "lua.h" @@ -15,120 +15,116 @@ int luatex_mime_lua_open (lua_State *L) { 101, 32, 76,117, 97, 32,108, 97,110,103,117, 97,103,101, 46, 10, 45, 45, 32, 65, 117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 67,111,110,102,111,114,109,105,110,103, 32,116,111, 32, 82, 70, 67,115, - 32, 50, 48, 52, 53, 45, 50, 48, 52, 57, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, - 58, 32, 36, 73,100, 58, 32,109,105,109,101, 46,108,117, 97, 44,118, 32, 49, 46, - 50, 57, 32, 50, 48, 48, 55, 47, 48, 54, 47, 49, 49, 32, 50, 51, 58, 52, 52, 58, - 53, 52, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, + 32, 50, 48, 52, 53, 45, 50, 48, 52, 57, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97, -114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, - 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109, +111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112, +101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97, -115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, - 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,108, -111, 99, 97,108, 32,109,105,109,101, 32, 61, 32,114,101,113,117,105,114,101, 40, - 34,109,105,109,101, 46, 99,111,114,101, 34, 41, 10,108,111, 99, 97,108, 32,105, -111, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,105,111, 34, 41, 10,108,111, - 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, - 40, 34,115,116,114,105,110,103, 34, 41, 10,109,111,100,117,108,101, 40, 34,109, -105,109,101, 34, 41, 10, 10, 45, 45, 32,101,110, 99,111,100,101, 44, 32,100,101, - 99,111,100,101, 32, 97,110,100, 32,119,114, 97,112, 32, 97,108,103,111,114,105, -116,104,109, 32,116, 97, 98,108,101,115, 10,101,110, 99,111,100,101,116, 32, 61, - 32,123,125, 10,100,101, 99,111,100,101,116, 32, 61, 32,123,125, 10,119,114, 97, -112,116, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, - 97, 32,102,117,110, 99,116,105,111,110, 32,116,104, 97,116, 32, 99,104,111,111, -115,101,115, 32, 97, 32,102,105,108,116,101,114, 32, 98,121, 32,110, 97,109,101, - 32,102,114,111,109, 32, 97, 32,103,105,118,101,110, 32,116, 97, 98,108,101, 10, -108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 99,104,111,111,115, -101, 40,116, 97, 98,108,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, -102,117,110, 99,116,105,111,110, 40,110, 97,109,101, 44, 32,111,112,116, 49, 44, - 32,111,112,116, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97, -115,101, 46,116,121,112,101, 40,110, 97,109,101, 41, 32,126, 61, 32, 34,115,116, -114,105,110,103, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 32, - 61, 32, 34,100,101,102, 97,117,108,116, 34, 44, 32,110, 97,109,101, 44, 32,111, -112,116, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, - 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,116, 97, 98,108,101, 91, -110, 97,109,101, 32,111,114, 32, 34,110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, - 32, 32, 32,105,102, 32,110,111,116, 32,102, 32,116,104,101,110, 32, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, - 40, 34,117,110,107,110,111,119,110, 32,107,101,121, 32, 40, 34, 32, 46, 46, 32, - 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110, 97,109,101, 41, 32, - 46, 46, 32, 34, 41, 34, 44, 32, 51, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, -108,115,101, 32,114,101,116,117,114,110, 32,102, 40,111,112,116, 49, 44, 32,111, -112,116, 50, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, - 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,101,110, 99,111, -100,105,110,103, 32,102,105,108,116,101,114,115, 10,101,110, 99,111,100,101,116, - 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111, -110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, - 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40, 98, 54, 52, 44, 32, 34, - 34, 41, 10,101,110,100, 10, 10,101,110, 99,111,100,101,116, 91, 39,113,117,111, -116,101,100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117, -110, 99,116,105,111,110, 40,109,111,100,101, 41, 10, 32, 32, 32, 32,114,101,116, -117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99, -108,101, 40,113,112, 44, 32, 34, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 40, -109,111,100,101, 32, 61, 61, 32, 34, 98,105,110, 97,114,121, 34, 41, 32, 97,110, -100, 32, 34, 61, 48, 68, 61, 48, 65, 34, 32,111,114, 32, 34, 92,114, 92,110, 34, - 41, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, - 32,100,101, 99,111,100,105,110,103, 32,102,105,108,116,101,114,115, 10,100,101, - 99,111,100,101,116, 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,102,117, -110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, -108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,117, -110, 98, 54, 52, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,100,101, 99,111,100, -101,116, 91, 39,113,117,111,116,101,100, 45,112,114,105,110,116, 97, 98,108,101, - 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, -114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, - 99,121, 99,108,101, 40,117,110,113,112, 44, 32, 34, 34, 41, 10,101,110,100, 10, - 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,102,111,114,109, - 97,116, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32,105,102, 32, 99,104,117, -110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99, -104,117,110,107, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32,114,101,116,117, -114,110, 32, 34, 39, 39, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, - 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,108,101,110, 40, 99, -104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114, -101,116,117,114,110, 32, 34,110,105,108, 34, 32,101,110,100, 10,101,110,100, 10, - 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,108,105,110,101, 45, -119,114, 97,112, 32,102,105,108,116,101,114,115, 10,119,114, 97,112,116, 91, 39, -116,101,120,116, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,108,101, -110,103,116,104, 41, 10, 32, 32, 32, 32,108,101,110,103,116,104, 32, 61, 32,108, -101,110,103,116,104, 32,111,114, 32, 55, 54, 10, 32, 32, 32, 32,114,101,116,117, -114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108, -101, 40,119,114,112, 44, 32,108,101,110,103,116,104, 44, 32,108,101,110,103,116, -104, 41, 10,101,110,100, 10,119,114, 97,112,116, 91, 39, 98, 97,115,101, 54, 52, - 39, 93, 32, 61, 32,119,114, 97,112,116, 91, 39,116,101,120,116, 39, 93, 10,119, -114, 97,112,116, 91, 39,100,101,102, 97,117,108,116, 39, 93, 32, 61, 32,119,114, - 97,112,116, 91, 39,116,101,120,116, 39, 93, 10, 10,119,114, 97,112,116, 91, 39, -113,117,111,116,101,100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61, - 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117, -114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108, -101, 40,113,112,119,114,112, 44, 32, 55, 54, 44, 32, 55, 54, 41, 10,101,110,100, - 10, 10, 45, 45, 32,102,117,110, 99,116,105,111,110, 32,116,104, 97,116, 32, 99, -104,111,111,115,101, 32,116,104,101, 32,101,110, 99,111,100,105,110,103, 44, 32, -100,101, 99,111,100,105,110,103, 32,111,114, 32,119,114, 97,112, 32, 97,108,103, -111,114,105,116,104,109, 10,101,110, 99,111,100,101, 32, 61, 32, 99,104,111,111, -115,101, 40,101,110, 99,111,100,101,116, 41, 10,100,101, 99,111,100,101, 32, 61, - 32, 99,104,111,111,115,101, 40,100,101, 99,111,100,101,116, 41, 10,119,114, 97, -112, 32, 61, 32, 99,104,111,111,115,101, 40,119,114, 97,112,116, 41, 10, 10, 45, - 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,101,110,100, 45,111,102, 45, -108,105,110,101, 32,110,111,114,109, 97,108,105,122, 97,116,105,111,110, 32,102, -105,108,116,101,114, 10,102,117,110, 99,116,105,111,110, 32,110,111,114,109, 97, -108,105,122,101, 40,109, 97,114,107,101,114, 41, 10, 32, 32, 32, 32,114,101,116, -117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99, -108,101, 40,101,111,108, 44, 32, 48, 44, 32,109, 97,114,107,101,114, 41, 10,101, -110,100, 10, 10, 45, 45, 32,104,105,103,104, 32,108,101,118,101,108, 32,115,116, -117,102,102,105,110,103, 32,102,105,108,116,101,114, 10,102,117,110, 99,116,105, -111,110, 32,115,116,117,102,102, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114, -110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, - 40,100,111,116, 44, 32, 50, 41, 10,101,110,100, 10, + 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, + 32, 95, 71, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101, +113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, + 32,109,105,109,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109,105,109, +101, 46, 99,111,114,101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110, +103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, + 41, 10,109,111,100,117,108,101, 40, 34,109,105,109,101, 34, 41, 10, 10, 45, 45, + 32,101,110, 99,111,100,101, 44, 32,100,101, 99,111,100,101, 32, 97,110,100, 32, +119,114, 97,112, 32, 97,108,103,111,114,105,116,104,109, 32,116, 97, 98,108,101, +115, 10,101,110, 99,111,100,101,116, 32, 61, 32,123,125, 10,100,101, 99,111,100, +101,116, 32, 61, 32,123,125, 10,119,114, 97,112,116, 32, 61, 32,123,125, 10, 10, + 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,117,110, 99,116,105,111, +110, 32,116,104, 97,116, 32, 99,104,111,111,115,101,115, 32, 97, 32,102,105,108, +116,101,114, 32, 98,121, 32,110, 97,109,101, 32,102,114,111,109, 32, 97, 32,103, +105,118,101,110, 32,116, 97, 98,108,101, 10,108,111, 99, 97,108, 32,102,117,110, + 99,116,105,111,110, 32, 99,104,111,111,115,101, 40,116, 97, 98,108,101, 41, 10, + 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, +110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 41, 10, 32, 32, + 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,110, + 97,109,101, 41, 32,126, 61, 32, 34,115,116,114,105,110,103, 34, 32,116,104,101, +110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 44, 32, +111,112,116, 49, 44, 32,111,112,116, 50, 32, 61, 32, 34,100,101,102, 97,117,108, +116, 34, 44, 32,110, 97,109,101, 44, 32,111,112,116, 49, 10, 32, 32, 32, 32, 32, + 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, + 32,102, 32, 61, 32,116, 97, 98,108,101, 91,110, 97,109,101, 32,111,114, 32, 34, +110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, + 32,102, 32,116,104,101,110, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 34,117,110,107,110,111,119,110, + 32,107,101,121, 32, 40, 34, 32, 46, 46, 32, 98, 97,115,101, 46,116,111,115,116, +114,105,110,103, 40,110, 97,109,101, 41, 32, 46, 46, 32, 34, 41, 34, 44, 32, 51, + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114, +110, 32,102, 40,111,112,116, 49, 44, 32,111,112,116, 50, 41, 32,101,110,100, 10, + 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105, +110,101, 32,116,104,101, 32,101,110, 99,111,100,105,110,103, 32,102,105,108,116, +101,114,115, 10,101,110, 99,111,100,101,116, 91, 39, 98, 97,115,101, 54, 52, 39, + 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114, +101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99, +121, 99,108,101, 40, 98, 54, 52, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,101, +110, 99,111,100,101,116, 91, 39,113,117,111,116,101,100, 45,112,114,105,110,116, + 97, 98,108,101, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,109,111, +100,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, + 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,113,112, 44, 32, 34, 34, + 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 40,109,111,100,101, 32, 61, 61, 32, 34, + 98,105,110, 97,114,121, 34, 41, 32, 97,110,100, 32, 34, 61, 48, 68, 61, 48, 65, + 34, 32,111,114, 32, 34, 92,114, 92,110, 34, 41, 10,101,110,100, 10, 10, 45, 45, + 32,100,101,102,105,110,101, 32,116,104,101, 32,100,101, 99,111,100,105,110,103, + 32,102,105,108,116,101,114,115, 10,100,101, 99,111,100,101,116, 91, 39, 98, 97, +115,101, 54, 52, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, + 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,105,108, +116,101,114, 46, 99,121, 99,108,101, 40,117,110, 98, 54, 52, 44, 32, 34, 34, 41, + 10,101,110,100, 10, 10,100,101, 99,111,100,101,116, 91, 39,113,117,111,116,101, +100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117,110, 99, +116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116, +110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,117,110,113, +112, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117, +110, 99,116,105,111,110, 32,102,111,114,109, 97,116, 40, 99,104,117,110,107, 41, + 10, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32, + 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32, 61, 61, 32, 34, + 34, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 34, 39, 39, 34, 10, 32, + 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115, +116,114,105,110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 32,101,110,100, + 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 34,110,105, +108, 34, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105,110, +101, 32,116,104,101, 32,108,105,110,101, 45,119,114, 97,112, 32,102,105,108,116, +101,114,115, 10,119,114, 97,112,116, 91, 39,116,101,120,116, 39, 93, 32, 61, 32, +102,117,110, 99,116,105,111,110, 40,108,101,110,103,116,104, 41, 10, 32, 32, 32, + 32,108,101,110,103,116,104, 32, 61, 32,108,101,110,103,116,104, 32,111,114, 32, + 55, 54, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46, +102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,119,114,112, 44, 32,108,101, +110,103,116,104, 44, 32,108,101,110,103,116,104, 41, 10,101,110,100, 10,119,114, + 97,112,116, 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,119,114, 97,112, +116, 91, 39,116,101,120,116, 39, 93, 10,119,114, 97,112,116, 91, 39,100,101,102, + 97,117,108,116, 39, 93, 32, 61, 32,119,114, 97,112,116, 91, 39,116,101,120,116, + 39, 93, 10, 10,119,114, 97,112,116, 91, 39,113,117,111,116,101,100, 45,112,114, +105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, + 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46, +102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,113,112,119,114,112, 44, 32, + 55, 54, 44, 32, 55, 54, 41, 10,101,110,100, 10, 10, 45, 45, 32,102,117,110, 99, +116,105,111,110, 32,116,104, 97,116, 32, 99,104,111,111,115,101, 32,116,104,101, + 32,101,110, 99,111,100,105,110,103, 44, 32,100,101, 99,111,100,105,110,103, 32, +111,114, 32,119,114, 97,112, 32, 97,108,103,111,114,105,116,104,109, 10,101,110, + 99,111,100,101, 32, 61, 32, 99,104,111,111,115,101, 40,101,110, 99,111,100,101, +116, 41, 10,100,101, 99,111,100,101, 32, 61, 32, 99,104,111,111,115,101, 40,100, +101, 99,111,100,101,116, 41, 10,119,114, 97,112, 32, 61, 32, 99,104,111,111,115, +101, 40,119,114, 97,112,116, 41, 10, 10, 45, 45, 32,100,101,102,105,110,101, 32, +116,104,101, 32,101,110,100, 45,111,102, 45,108,105,110,101, 32,110,111,114,109, + 97,108,105,122, 97,116,105,111,110, 32,102,105,108,116,101,114, 10,102,117,110, + 99,116,105,111,110, 32,110,111,114,109, 97,108,105,122,101, 40,109, 97,114,107, +101,114, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, + 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,101,111,108, 44, 32, 48, + 44, 32,109, 97,114,107,101,114, 41, 10,101,110,100, 10, 10, 45, 45, 32,104,105, +103,104, 32,108,101,118,101,108, 32,115,116,117,102,102,105,110,103, 32,102,105, +108,116,101,114, 10,102,117,110, 99,116,105,111,110, 32,115,116,117,102,102, 40, + 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,102, +105,108,116,101,114, 46, 99,121, 99,108,101, 40,100,111,116, 44, 32, 50, 41, 10, +101,110,100, 10, 0 }; return luaL_dostring(L, (const char*)B); } /* end of embedded lua code */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/options.c b/Build/source/texk/web2c/luatexdir/luasocket/src/options.c index 1eaae8d6939..6cae7eeb924 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/options.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/options.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * Common option interface * LuaSocket toolkit -* -* RCS ID: $Id: options.c,v 1.6 2005/11/20 07:20:23 diego Exp $ \*=========================================================================*/ #include <string.h> @@ -12,14 +10,16 @@ #include "options.h" #include "inet.h" - /*=========================================================================*\ * Internal functions prototypes \*=========================================================================*/ static int opt_setmembership(lua_State *L, p_socket ps, int level, int name); static int opt_setboolean(lua_State *L, p_socket ps, int level, int name); +static int opt_getboolean(lua_State *L, p_socket ps, int level, int name); static int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len); +static int opt_get(lua_State *L, p_socket ps, int level, int name, + void *val, int* len); /*=========================================================================*\ * Exported functions @@ -33,7 +33,20 @@ int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps) while (opt->name && strcmp(name, opt->name)) opt++; if (!opt->func) { - char msg[60]; + char msg[45]; + sprintf(msg, "unsupported option `%.35s'", name); + luaL_argerror(L, 2, msg); + } + return opt->func(L, ps); +} + +int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps) +{ + const char *name = luaL_checkstring(L, 2); /* obj, name, ... */ + while (opt->name && strcmp(name, opt->name)) + opt++; + if (!opt->func) { + char msg[45]; sprintf(msg, "unsupported option `%.35s'", name); luaL_argerror(L, 2, msg); } @@ -41,41 +54,72 @@ int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps) } /* enables reuse of local address */ -int opt_reuseaddr(lua_State *L, p_socket ps) +int opt_set_reuseaddr(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR); } +int opt_get_reuseaddr(lua_State *L, p_socket ps) +{ + return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEADDR); +} + +/* enables reuse of local port */ +int opt_set_reuseport(lua_State *L, p_socket ps) +{ + return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEPORT); +} + +int opt_get_reuseport(lua_State *L, p_socket ps) +{ + return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEPORT); +} + /* disables the Naggle algorithm */ -int opt_tcp_nodelay(lua_State *L, p_socket ps) +int opt_set_tcp_nodelay(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); } -int opt_keepalive(lua_State *L, p_socket ps) +int opt_get_tcp_nodelay(lua_State *L, p_socket ps) +{ + return opt_getboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); +} + +int opt_set_keepalive(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); } -int opt_dontroute(lua_State *L, p_socket ps) +int opt_get_keepalive(lua_State *L, p_socket ps) +{ + return opt_getboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); +} + +int opt_set_dontroute(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE); } -int opt_broadcast(lua_State *L, p_socket ps) +int opt_set_broadcast(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST); } -int opt_ip_multicast_loop(lua_State *L, p_socket ps) +int opt_set_ip_multicast_loop(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP); } -int opt_linger(lua_State *L, p_socket ps) +int opt_get_ip_multicast_loop(lua_State *L, p_socket ps) +{ + return opt_getboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP); +} + +int opt_set_linger(lua_State *L, p_socket ps) { struct linger li; /* obj, name, table */ - if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE)); + if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE)); lua_pushstring(L, "on"); lua_gettable(L, 3); if (!lua_isboolean(L, -1)) @@ -89,29 +133,74 @@ int opt_linger(lua_State *L, p_socket ps) return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li)); } -int opt_ip_multicast_ttl(lua_State *L, p_socket ps) +int opt_get_linger(lua_State *L, p_socket ps) +{ + struct linger li; /* obj, name */ + int len = sizeof(li); + int err = opt_get(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, &len); + if (err) + return err; + lua_newtable(L); + lua_pushboolean(L, li.l_onoff); + lua_setfield(L, -2, "on"); + lua_pushinteger(L, li.l_linger); + lua_setfield(L, -2, "timeout"); + return 1; +} + +int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps) { int val = (int) luaL_checknumber(L, 3); /* obj, name, int */ - return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &val, sizeof(val)); + return opt_set(L, ps, IPPROTO_IP, IP_MULTICAST_TTL, + (char *) &val, sizeof(val)); +} + +int opt_set_ip_multicast_if(lua_State *L, p_socket ps) +{ + const char *address = luaL_checkstring(L, 3); /* obj, name, ip */ + struct in_addr val; + val.s_addr = htonl(INADDR_ANY); + if (strcmp(address, "*") && !inet_aton(address, &val)) + luaL_argerror(L, 3, "ip expected"); + return opt_set(L, ps, IPPROTO_IP, IP_MULTICAST_IF, + (char *) &val, sizeof(val)); +} + +int opt_get_ip_multicast_if(lua_State *L, p_socket ps) +{ + struct in_addr val; + socklen_t len = sizeof(val); + if (getsockopt(*ps, IPPROTO_IP, IP_MULTICAST_IF, (char *) &val, &len) < 0) { + lua_pushnil(L); + lua_pushstring(L, "getsockopt failed"); + return 2; + } + lua_pushstring(L, inet_ntoa(val)); + return 1; } -int opt_ip_add_membership(lua_State *L, p_socket ps) +int opt_set_ip_add_membership(lua_State *L, p_socket ps) { return opt_setmembership(L, ps, IPPROTO_IP, IP_ADD_MEMBERSHIP); } -int opt_ip_drop_membersip(lua_State *L, p_socket ps) +int opt_set_ip_drop_membersip(lua_State *L, p_socket ps) { return opt_setmembership(L, ps, IPPROTO_IP, IP_DROP_MEMBERSHIP); } +int opt_set_ip6_v6only(lua_State *L, p_socket ps) +{ + return opt_setboolean(L, ps, IPPROTO_IPV6, IPV6_V6ONLY); +} + /*=========================================================================*\ * Auxiliar functions \*=========================================================================*/ static int opt_setmembership(lua_State *L, p_socket ps, int level, int name) { struct ip_mreq val; /* obj, name, table */ - if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE)); + if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE)); lua_pushstring(L, "multiaddr"); lua_gettable(L, 3); if (!lua_isstring(L, -1)) @@ -130,6 +219,19 @@ static int opt_setmembership(lua_State *L, p_socket ps, int level, int name) } static +int opt_get(lua_State *L, p_socket ps, int level, int name, void *val, int* len) +{ + socklen_t socklen = *len; + if (getsockopt(*ps, level, name, (char *) val, &socklen) < 0) { + lua_pushnil(L); + lua_pushstring(L, "getsockopt failed"); + return 2; + } + *len = socklen; + return 0; +} + +static int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len) { if (setsockopt(*ps, level, name, (char *) val, len) < 0) { @@ -141,6 +243,17 @@ int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len) return 1; } +static int opt_getboolean(lua_State *L, p_socket ps, int level, int name) +{ + int val = 0; + int len = sizeof(val); + int err = opt_get(L, ps, level, name, (char *) &val, &len); + if (err) + return err; + lua_pushboolean(L, val); + return 1; +} + static int opt_setboolean(lua_State *L, p_socket ps, int level, int name) { int val = auxiliar_checkboolean(L, 3); /* obj, name, bool */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/options.h b/Build/source/texk/web2c/luatexdir/luasocket/src/options.h index 4981cf2a0ef..33825c8d25c 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/options.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/options.h @@ -6,8 +6,6 @@ * * This module provides a common interface to socket options, used mainly by * modules UDP and TCP. -* -* RCS ID: $Id: options.h,v 1.4 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" @@ -20,20 +18,37 @@ typedef struct t_opt { } t_opt; typedef t_opt *p_opt; -/* supported options */ -int opt_dontroute(lua_State *L, p_socket ps); -int opt_broadcast(lua_State *L, p_socket ps); -int opt_reuseaddr(lua_State *L, p_socket ps); -int opt_tcp_nodelay(lua_State *L, p_socket ps); -int opt_keepalive(lua_State *L, p_socket ps); -int opt_linger(lua_State *L, p_socket ps); -int opt_reuseaddr(lua_State *L, p_socket ps); -int opt_ip_multicast_ttl(lua_State *L, p_socket ps); -int opt_ip_multicast_loop(lua_State *L, p_socket ps); -int opt_ip_add_membership(lua_State *L, p_socket ps); -int opt_ip_drop_membersip(lua_State *L, p_socket ps); +#ifndef IPV6_V6ONLY +#define IPV6_V6ONLY 27 +#endif + +/* supported options for setoption */ +int opt_set_dontroute(lua_State *L, p_socket ps); +int opt_set_broadcast(lua_State *L, p_socket ps); +int opt_set_reuseaddr(lua_State *L, p_socket ps); +int opt_set_tcp_nodelay(lua_State *L, p_socket ps); +int opt_set_keepalive(lua_State *L, p_socket ps); +int opt_set_linger(lua_State *L, p_socket ps); +int opt_set_reuseaddr(lua_State *L, p_socket ps); +int opt_set_reuseport(lua_State *L, p_socket ps); +int opt_set_ip_multicast_if(lua_State *L, p_socket ps); +int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps); +int opt_set_ip_multicast_loop(lua_State *L, p_socket ps); +int opt_set_ip_add_membership(lua_State *L, p_socket ps); +int opt_set_ip_drop_membersip(lua_State *L, p_socket ps); +int opt_set_ip6_v6only(lua_State *L, p_socket ps); + +/* supported options for getoption */ +int opt_get_reuseaddr(lua_State *L, p_socket ps); +int opt_get_tcp_nodelay(lua_State *L, p_socket ps); +int opt_get_keepalive(lua_State *L, p_socket ps); +int opt_get_linger(lua_State *L, p_socket ps); +int opt_get_reuseaddr(lua_State *L, p_socket ps); +int opt_get_ip_multicast_loop(lua_State *L, p_socket ps); +int opt_get_ip_multicast_if(lua_State *L, p_socket ps); /* invokes the appropriate option handler */ int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps); +int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps); #endif diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/select.c b/Build/source/texk/web2c/luatexdir/luasocket/src/select.c index d70f662713a..51fb198611a 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/select.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/select.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * Select implementation * LuaSocket toolkit -* -* RCS ID: $Id: select.c,v 1.22 2005/11/20 07:20:23 diego Exp $ \*=========================================================================*/ #include <string.h> @@ -18,8 +16,8 @@ \*=========================================================================*/ static t_socket getfd(lua_State *L); static int dirty(lua_State *L); -static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd, - int itab, fd_set *set); +static void collect_fd(lua_State *L, int tab, int itab, + fd_set *set, t_socket *max_fd); static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set); static void return_fd(lua_State *L, fd_set *set, t_socket max_fd, int itab, int tab, int start); @@ -27,7 +25,7 @@ static void make_assoc(lua_State *L, int tab); static int global_select(lua_State *L); /* functions in library namespace */ -static luaL_reg func[] = { +static luaL_Reg func[] = { {"select", global_select}, {NULL, NULL} }; @@ -39,6 +37,9 @@ static luaL_reg func[] = { * Initializes module \*-------------------------------------------------------------------------*/ int select_open(lua_State *L) { + lua_pushstring(L, "_SETSIZE"); + lua_pushnumber(L, FD_SETSIZE); + lua_rawset(L, -3); luaL_openlib(L, NULL, func, 0); return 0; } @@ -51,7 +52,7 @@ int select_open(lua_State *L) { \*-------------------------------------------------------------------------*/ static int global_select(lua_State *L) { int rtab, wtab, itab, ret, ndirty; - t_socket max_fd; + t_socket max_fd = SOCKET_INVALID; fd_set rset, wset; t_timeout tm; double t = luaL_optnumber(L, 3, -1); @@ -60,12 +61,12 @@ static int global_select(lua_State *L) { lua_newtable(L); itab = lua_gettop(L); lua_newtable(L); rtab = lua_gettop(L); lua_newtable(L); wtab = lua_gettop(L); - max_fd = collect_fd(L, 1, SOCKET_INVALID, itab, &rset); + collect_fd(L, 1, itab, &rset, &max_fd); + collect_fd(L, 2, itab, &wset, &max_fd); ndirty = check_dirty(L, 1, rtab, &rset); t = ndirty > 0? 0.0: t; timeout_init(&tm, t, -1); timeout_markstart(&tm); - max_fd = collect_fd(L, 2, max_fd, itab, &wset); ret = socket_select(max_fd+1, &rset, &wset, NULL, &tm); if (ret > 0 || ndirty > 0) { return_fd(L, &rset, max_fd+1, itab, rtab, ndirty); @@ -77,7 +78,7 @@ static int global_select(lua_State *L) { lua_pushstring(L, "timeout"); return 3; } else { - lua_pushstring(L, "error"); + luaL_error(L, "select failed"); return 3; } } @@ -92,8 +93,10 @@ static t_socket getfd(lua_State *L) { if (!lua_isnil(L, -1)) { lua_pushvalue(L, -2); lua_call(L, 1, 1); - if (lua_isnumber(L, -1)) - fd = (t_socket) lua_tonumber(L, -1); + if (lua_isnumber(L, -1)) { + double numfd = lua_tonumber(L, -1); + fd = (numfd >= 0.0)? (t_socket) numfd: SOCKET_INVALID; + } } lua_pop(L, 1); return fd; @@ -112,12 +115,14 @@ static int dirty(lua_State *L) { return is; } -static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd, - int itab, fd_set *set) { - int i = 1; - if (lua_isnil(L, tab)) - return max_fd; - while (1) { +static void collect_fd(lua_State *L, int tab, int itab, + fd_set *set, t_socket *max_fd) { + int i = 1, n = 0; + /* nil is the same as an empty table */ + if (lua_isnil(L, tab)) return; + /* otherwise we need it to be a table */ + luaL_checktype(L, tab, LUA_TTABLE); + for ( ;; ) { t_socket fd; lua_pushnumber(L, i); lua_gettable(L, tab); @@ -125,26 +130,37 @@ static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd, lua_pop(L, 1); break; } + /* getfd figures out if this is a socket */ fd = getfd(L); if (fd != SOCKET_INVALID) { + /* make sure we don't overflow the fd_set */ +#ifdef _WIN32 + if (n >= FD_SETSIZE) + luaL_argerror(L, tab, "too many sockets"); +#else + if (fd >= FD_SETSIZE) + luaL_argerror(L, tab, "descriptor too large for set size"); +#endif FD_SET(fd, set); - if (max_fd == SOCKET_INVALID || max_fd < fd) - max_fd = fd; - lua_pushnumber(L, fd); + n++; + /* keep track of the largest descriptor so far */ + if (*max_fd == SOCKET_INVALID || *max_fd < fd) + *max_fd = fd; + /* make sure we can map back from descriptor to the object */ + lua_pushnumber(L, (lua_Number) fd); lua_pushvalue(L, -2); lua_settable(L, itab); } lua_pop(L, 1); i = i + 1; } - return max_fd; } static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) { int ndirty = 0, i = 1; if (lua_isnil(L, tab)) return 0; - while (1) { + for ( ;; ) { t_socket fd; lua_pushnumber(L, i); lua_gettable(L, tab); @@ -171,7 +187,7 @@ static void return_fd(lua_State *L, fd_set *set, t_socket max_fd, for (fd = 0; fd < max_fd; fd++) { if (FD_ISSET(fd, set)) { lua_pushnumber(L, ++start); - lua_pushnumber(L, fd); + lua_pushnumber(L, (lua_Number) fd); lua_gettable(L, itab); lua_settable(L, tab); } @@ -181,7 +197,7 @@ static void return_fd(lua_State *L, fd_set *set, t_socket max_fd, static void make_assoc(lua_State *L, int tab) { int i = 1, atab; lua_newtable(L); atab = lua_gettop(L); - while (1) { + for ( ;; ) { lua_pushnumber(L, i); lua_gettable(L, tab); if (!lua_isnil(L, -1)) { diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/select.h b/Build/source/texk/web2c/luatexdir/luasocket/src/select.h index aa3db4adf3b..8750200395a 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/select.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/select.h @@ -8,8 +8,6 @@ * method getfd() which returns the descriptor to be passed to the * underlying select function. Another method, dirty(), should return * true if there is data ready for reading (required for buffered input). -* -* RCS ID: $Id: select.h,v 1.7 2004/06/16 01:02:07 diego Exp $ \*=========================================================================*/ int select_open(lua_State *L); diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/serial.c b/Build/source/texk/web2c/luatexdir/luasocket/src/serial.c new file mode 100644 index 00000000000..acee67181dd --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/serial.c @@ -0,0 +1,191 @@ +/*=========================================================================*\ +* Serial stream +* LuaSocket toolkit +\*=========================================================================*/ +#include <string.h> + +#include "lua.h" +#include "lauxlib.h" + +#include "auxiliar.h" +#include "socket.h" +#include "options.h" +#include "unix.h" +#ifndef _WIN32 +#include <sys/un.h> +#endif +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +/* +Reuses userdata definition from unix.h, since it is useful for all +stream-like objects. + +If we stored the serial path for use in error messages or userdata +printing, we might need our own userdata definition. + +Group usage is semi-inherited from unix.c, but unnecessary since we +have only one object type. +*/ + +/*=========================================================================*\ +* Internal function prototypes +\*=========================================================================*/ +static int global_create(lua_State *L); +static int meth_send(lua_State *L); +static int meth_receive(lua_State *L); +static int meth_close(lua_State *L); +static int meth_settimeout(lua_State *L); +static int meth_getfd(lua_State *L); +static int meth_setfd(lua_State *L); +static int meth_dirty(lua_State *L); +static int meth_getstats(lua_State *L); +static int meth_setstats(lua_State *L); + +/* serial object methods */ +static luaL_Reg serial_methods[] = { + {"__gc", meth_close}, + {"__tostring", auxiliar_tostring}, + {"close", meth_close}, + {"dirty", meth_dirty}, + {"getfd", meth_getfd}, + {"getstats", meth_getstats}, + {"setstats", meth_setstats}, + {"receive", meth_receive}, + {"send", meth_send}, + {"setfd", meth_setfd}, + {"settimeout", meth_settimeout}, + {NULL, NULL} +}; + +/* our socket creation function */ +static luaL_Reg func[] = { + {"serial", global_create}, + {NULL, NULL} +}; + + +/*-------------------------------------------------------------------------*\ +* Initializes module +\*-------------------------------------------------------------------------*/ +LUASOCKET_API int luaopen_socket_serial(lua_State *L) { + /* create classes */ + auxiliar_newclass(L, "serial{client}", serial_methods); + /* create class groups */ + auxiliar_add2group(L, "serial{client}", "serial{any}"); + /* make sure the function ends up in the package table */ + luaL_openlib(L, "socket", func, 0); + /* return the function instead of the 'socket' table */ + lua_pushstring(L, "serial"); + lua_gettable(L, -2); + return 1; +} + +/*=========================================================================*\ +* Lua methods +\*=========================================================================*/ +/*-------------------------------------------------------------------------*\ +* Just call buffered IO methods +\*-------------------------------------------------------------------------*/ +static int meth_send(lua_State *L) { + p_unix un = (p_unix) auxiliar_checkclass(L, "serial{client}", 1); + return buffer_meth_send(L, &un->buf); +} + +static int meth_receive(lua_State *L) { + p_unix un = (p_unix) auxiliar_checkclass(L, "serial{client}", 1); + return buffer_meth_receive(L, &un->buf); +} + +static int meth_getstats(lua_State *L) { + p_unix un = (p_unix) auxiliar_checkclass(L, "serial{client}", 1); + return buffer_meth_getstats(L, &un->buf); +} + +static int meth_setstats(lua_State *L) { + p_unix un = (p_unix) auxiliar_checkclass(L, "serial{client}", 1); + return buffer_meth_setstats(L, &un->buf); +} + +/*-------------------------------------------------------------------------*\ +* Select support methods +\*-------------------------------------------------------------------------*/ +static int meth_getfd(lua_State *L) { + p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1); + lua_pushnumber(L, (int) un->sock); + return 1; +} + +/* this is very dangerous, but can be handy for those that are brave enough */ +static int meth_setfd(lua_State *L) { + p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1); + un->sock = (t_socket) luaL_checknumber(L, 2); + return 0; +} + +static int meth_dirty(lua_State *L) { + p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1); + lua_pushboolean(L, !buffer_isempty(&un->buf)); + return 1; +} + +/*-------------------------------------------------------------------------*\ +* Closes socket used by object +\*-------------------------------------------------------------------------*/ +static int meth_close(lua_State *L) +{ + p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1); + socket_destroy(&un->sock); + lua_pushnumber(L, 1); + return 1; +} + + +/*-------------------------------------------------------------------------*\ +* Just call tm methods +\*-------------------------------------------------------------------------*/ +static int meth_settimeout(lua_State *L) { + p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1); + return timeout_meth_settimeout(L, &un->tm); +} + +/*=========================================================================*\ +* Library functions +\*=========================================================================*/ + + +/*-------------------------------------------------------------------------*\ +* Creates a serial object +\*-------------------------------------------------------------------------*/ +static int global_create(lua_State *L) { + const char* path = luaL_checkstring(L, 1); + + /* allocate unix object */ + p_unix un = (p_unix) lua_newuserdata(L, sizeof(t_unix)); + + /* open serial device */ +#ifdef __MINGW32__ + t_socket sock = open(path, O_RDWR); +#else + t_socket sock = open(path, O_NOCTTY|O_RDWR); +#endif + + /*printf("open %s on %d\n", path, sock);*/ + + if (sock < 0) { + lua_pushnil(L); + lua_pushstring(L, socket_strerror(errno)); + lua_pushnumber(L, errno); + return 3; + } + /* set its type as client object */ + auxiliar_setclass(L, "serial{client}", -1); + /* initialize remaining structure fields */ + socket_setnonblocking(&sock); + un->sock = sock; + io_init(&un->io, (p_send) socket_write, (p_recv) socket_read, + (p_error) socket_ioerror, &un->sock); + timeout_init(&un->tm, -1, -1); + buffer_init(&un->buf, &un->io, &un->tm); + return 1; +} diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua index 8f3cfcff6e4..7e7487cc612 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua @@ -2,20 +2,20 @@ -- SMTP client support for the Lua language. -- LuaSocket toolkit. -- Author: Diego Nehab --- RCS ID: $Id: smtp.lua,v 1.46 2007/03/12 04:08:40 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- -- Declare module and import dependencies ----------------------------------------------------------------------------- local base = _G -local coroutine = require("coroutine") +--local coroutine = require("coroutine") local string = require("string") local math = require("math") local os = require("os") local socket = require("socket") local tp = require("socket.tp") local ltn12 = require("ltn12") +local headers = require("socket.headers") local mime = require("mime") module("socket.smtp") @@ -75,9 +75,9 @@ end function metat.__index:login(user, password) self.try(self.tp:command("AUTH", "LOGIN")) self.try(self.tp:check("3..")) - self.try(self.tp:command(mime.b64(user))) + self.try(self.tp:send(mime.b64(user) .. "\r\n")) self.try(self.tp:check("3..")) - self.try(self.tp:command(mime.b64(password))) + self.try(self.tp:send(mime.b64(password) .. "\r\n")) return self.try(self.tp:check("2..")) end @@ -146,10 +146,11 @@ end local send_message -- yield the headers all at once, it's faster -local function send_headers(headers) +local function send_headers(tosend) + local canonic = headers.canonic local h = "\r\n" - for i,v in base.pairs(headers) do - h = i .. ': ' .. v .. "\r\n" .. h + for f,v in base.pairs(tosend) do + h = (canonic[f] or f) .. ': ' .. v .. "\r\n" .. h end coroutine.yield(h) end diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c index 8743ff557eb..cc3a9316280 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c @@ -1,5 +1,5 @@ /* - * This file is auto-generated by "./lua2c smtp.lua smtp_lua" + * This file is auto-generated by "lua2c smtp.lua smtp_lua" */ #include "lua.h" @@ -15,36 +15,35 @@ int luatex_smtp_lua_open (lua_State *L) { 32,102,111,114, 32,116,104,101, 32, 76,117, 97, 32,108, 97,110,103,117, 97,103, 101, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108, 107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103, -111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, - 73,100, 58, 32,115,109,116,112, 46,108,117, 97, 44,118, 32, 49, 46, 52, 54, 32, - 50, 48, 48, 55, 47, 48, 51, 47, 49, 50, 32, 48, 52, 58, 48, 56, 58, 52, 48, 32, -100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, +111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32, -109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101, -112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117, +108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112,101,110,100, +101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, - 61, 32, 95, 71, 10,108,111, 99, 97,108, 32, 99,111,114,111,117,116,105,110,101, - 32, 61, 32,114,101,113,117,105,114,101, 40, 34, 99,111,114,111,117,116,105,110, -101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114, -101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, - 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, - 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,111,115, 32, 61, 32,114,101,113, -117,105,114,101, 40, 34,111,115, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99, -107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101, -116, 34, 41, 10,108,111, 99, 97,108, 32,116,112, 32, 61, 32,114,101,113,117,105, -114,101, 40, 34,115,111, 99,107,101,116, 46,116,112, 34, 41, 10,108,111, 99, 97, -108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108, -116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,109,105,109,101, 32, 61, 32, + 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, + 10, 45, 45,108,111, 99, 97,108, 32, 99,111,114,111,117,116,105,110,101, 32, 61, + 32,114,101,113,117,105,114,101, 40, 34, 99,111,114,111,117,116,105,110,101, 34, + 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113, +117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, + 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97,116, +104, 34, 41, 10,108,111, 99, 97,108, 32,111,115, 32, 61, 32,114,101,113,117,105, +114,101, 40, 34,111,115, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101, +116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 34, + 41, 10,108,111, 99, 97,108, 32,116,112, 32, 61, 32,114,101,113,117,105,114,101, + 40, 34,115,111, 99,107,101,116, 46,116,112, 34, 41, 10,108,111, 99, 97,108, 32, +108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, + 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, + 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,104,101, 97, +100,101,114,115, 34, 41, 10,108,111, 99, 97,108, 32,109,105,109,101, 32, 61, 32, 114,101,113,117,105,114,101, 40, 34,109,105,109,101, 34, 41, 10,109,111,100,117, 108,101, 40, 34,115,111, 99,107,101,116, 46,115,109,116,112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -134,278 +133,281 @@ int luatex_smtp_lua_open (lua_State *L) { 76, 79, 71, 73, 78, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114, 121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 51, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, -102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40,109,105,109,101, 46, 98, 54, - 52, 40,117,115,101,114, 41, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116, -114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 51, 46, - 46, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101, -108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40,109,105,109,101, 46, 98, - 54, 52, 40,112, 97,115,115,119,111,114,100, 41, 41, 41, 10, 32, 32, 32, 32,114, -101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, -116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, - 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105, -110,100,101,120, 58,112,108, 97,105,110, 40,117,115,101,114, 44, 32,112, 97,115, -115,119,111,114,100, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,117,116, -104, 32, 61, 32, 34, 80, 76, 65, 73, 78, 32, 34, 32, 46, 46, 32,109,105,109,101, - 46, 98, 54, 52, 40, 34, 92, 48, 34, 32, 46, 46, 32,117,115,101,114, 32, 46, 46, - 32, 34, 92, 48, 34, 32, 46, 46, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, - 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, - 99,111,109,109, 97,110,100, 40, 34, 65, 85, 84, 72, 34, 44, 32, 97,117,116,104, - 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116, -114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, - 46, 34, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, -101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 97,117,116,104, 40,117,115, -101,114, 44, 32,112, 97,115,115,119,111,114,100, 44, 32,101,120,116, 41, 10, 32, - 32, 32, 32,105,102, 32,110,111,116, 32,117,115,101,114, 32,111,114, 32,110,111, -116, 32,112, 97,115,115,119,111,114,100, 32,116,104,101,110, 32,114,101,116,117, -114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105, -110,103, 46,102,105,110,100, 40,101,120,116, 44, 32, 34, 65, 85, 84, 72, 91, 94, - 92,110, 93, 43, 76, 79, 71, 73, 78, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, - 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 58,108,111,103, -105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, - 32, 32, 32,101,108,115,101,105,102, 32,115,116,114,105,110,103, 46,102,105,110, -100, 40,101,120,116, 44, 32, 34, 65, 85, 84, 72, 91, 94, 92,110, 93, 43, 80, 76, - 65, 73, 78, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114, -101,116,117,114,110, 32,115,101,108,102, 58,112,108, 97,105,110, 40,117,115,101, +102, 46,116,112, 58,115,101,110,100, 40,109,105,109,101, 46, 98, 54, 52, 40,117, +115,101,114, 41, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 41, 10, 32, 32, 32, + 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104, +101, 99,107, 40, 34, 51, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, + 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,115,101,110,100, 40,109,105, +109,101, 46, 98, 54, 52, 40,112, 97,115,115,119,111,114,100, 41, 32, 46, 46, 32, + 34, 92,114, 92,110, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, +115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, + 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99, +116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112, +108, 97,105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 41, + 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,117,116,104, 32, 61, 32, 34, 80, + 76, 65, 73, 78, 32, 34, 32, 46, 46, 32,109,105,109,101, 46, 98, 54, 52, 40, 34, + 92, 48, 34, 32, 46, 46, 32,117,115,101,114, 32, 46, 46, 32, 34, 92, 48, 34, 32, + 46, 46, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,115,101,108, +102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110, +100, 40, 34, 65, 85, 84, 72, 34, 44, 32, 97,117,116,104, 41, 41, 10, 32, 32, 32, + 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, +102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101, +110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, + 95,105,110,100,101,120, 58, 97,117,116,104, 40,117,115,101,114, 44, 32,112, 97, +115,115,119,111,114,100, 44, 32,101,120,116, 41, 10, 32, 32, 32, 32,105,102, 32, +110,111,116, 32,117,115,101,114, 32,111,114, 32,110,111,116, 32,112, 97,115,115, +119,111,114,100, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 49, 32,101, +110,100, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110, +100, 40,101,120,116, 44, 32, 34, 65, 85, 84, 72, 91, 94, 92,110, 93, 43, 76, 79, + 71, 73, 78, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114, +101,116,117,114,110, 32,115,101,108,102, 58,108,111,103,105,110, 40,117,115,101, 114, 44, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,101,108,115, -101, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,110, -105,108, 44, 32, 34, 97,117,116,104,101,110,116,105, 99, 97,116,105,111,110, 32, -110,111,116, 32,115,117,112,112,111,114,116,101,100, 34, 41, 10, 32, 32, 32, 32, -101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,115,101,110,100, 32,109,101,115, -115, 97,103,101, 32,111,114, 32,116,104,114,111,119, 32, 97,110, 32,101,120, 99, -101,112,116,105,111,110, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97, -116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,109, 97,105,108,116, - 41, 10, 32, 32, 32, 32,115,101,108,102, 58,109, 97,105,108, 40,109, 97,105,108, -116, 46,102,114,111,109, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46, -116,121,112,101, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 32, 61, 61, 32, - 34,116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, - 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,105,112, 97, -105,114,115, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 32,100,111, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99,112,116, - 40,118, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, -101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99, -112,116, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 10, 32, 32, 32, 32,101, -110,100, 10, 32, 32, 32, 32,115,101,108,102, 58,100, 97,116, 97, 40,108,116,110, - 49, 50, 46,115,111,117,114, 99,101, 46, 99,104, 97,105,110, 40,109, 97,105,108, -116, 46,115,111,117,114, 99,101, 44, 32,109,105,109,101, 46,115,116,117,102,102, - 40, 41, 41, 44, 32,109, 97,105,108,116, 46,115,116,101,112, 41, 10,101,110,100, - 10, 10,102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,115,101,114,118, -101,114, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, - 32, 32,108,111, 99, 97,108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46, -116,114,121, 40,116,112, 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101, -114, 32,111,114, 32, 83, 69, 82, 86, 69, 82, 44, 32,112,111,114,116, 32,111,114, - 32, 80, 79, 82, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 84, 73, 77, 69, 79, - 85, 84, 44, 32, 99,114,101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,115, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, - 97, 98,108,101, 40,123,116,112, 32, 61, 32,116,112,125, 44, 32,109,101,116, 97, -116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32, -116,112, 32,105,115, 32, 99,108,111,115,101,100, 32,105,102, 32,119,101, 32,103, -101,116, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110, 10, 32, 32, 32, 32, -115, 46,116,114,121, 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114, -121, 40,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, - 32,115, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10, - 32, 32, 32, 32,114,101,116,117,114,110, 32,115, 10,101,110,100, 10, 10, 45, 45, - 32, 99,111,110,118,101,114,116, 32,104,101, 97,100,101,114,115, 32,116,111, 32, -108,111,119,101,114, 99, 97,115,101, 10,108,111, 99, 97,108, 32,102,117,110, 99, -116,105,111,110, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,104, -101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,111, -119,101,114, 32, 61, 32,123,125, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, - 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101, -114,115, 32,111,114, 32,108,111,119,101,114, 41, 32,100,111, 10, 32, 32, 32, 32, - 32, 32, 32, 32,108,111,119,101,114, 91,115,116,114,105,110,103, 46,108,111,119, -101,114, 40,105, 41, 93, 32, 61, 32,118, 10, 32, 32, 32, 32,101,110,100, 10, 32, - 32, 32, 32,114,101,116,117,114,110, 32,108,111,119,101,114, 10,101,110,100, 10, - 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, +101,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,101,120,116, 44, + 32, 34, 65, 85, 84, 72, 91, 94, 92,110, 93, 43, 80, 76, 65, 73, 78, 34, 41, 32, +116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, +115,101,108,102, 58,112,108, 97,105,110, 40,117,115,101,114, 44, 32,112, 97,115, +115,119,111,114,100, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, + 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,110,105,108, 44, 32, 34, 97, +117,116,104,101,110,116,105, 99, 97,116,105,111,110, 32,110,111,116, 32,115,117, +112,112,111,114,116,101,100, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110, +100, 10, 10, 45, 45, 32,115,101,110,100, 32,109,101,115,115, 97,103,101, 32,111, +114, 32,116,104,114,111,119, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110, + 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110, +100,101,120, 58,115,101,110,100, 40,109, 97,105,108,116, 41, 10, 32, 32, 32, 32, +115,101,108,102, 58,109, 97,105,108, 40,109, 97,105,108,116, 46,102,114,111,109, + 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,109, + 97,105,108,116, 46,114, 99,112,116, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, + 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,111,114, 32,105, + 44,118, 32,105,110, 32, 98, 97,115,101, 46,105,112, 97,105,114,115, 40,109, 97, +105,108,116, 46,114, 99,112,116, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99,112,116, 40,118, 41, 10, 32, 32, + 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, + 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99,112,116, 40,109, 97,105, +108,116, 46,114, 99,112,116, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, + 32,115,101,108,102, 58,100, 97,116, 97, 40,108,116,110, 49, 50, 46,115,111,117, +114, 99,101, 46, 99,104, 97,105,110, 40,109, 97,105,108,116, 46,115,111,117,114, + 99,101, 44, 32,109,105,109,101, 46,115,116,117,102,102, 40, 41, 41, 44, 32,109, + 97,105,108,116, 46,115,116,101,112, 41, 10,101,110,100, 10, 10,102,117,110, 99, +116,105,111,110, 32,111,112,101,110, 40,115,101,114,118,101,114, 44, 32,112,111, +114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97, +108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116,112, + 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101,114, 32,111,114, 32, 83, + 69, 82, 86, 69, 82, 44, 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 44, + 10, 32, 32, 32, 32, 32, 32, 32, 32, 84, 73, 77, 69, 79, 85, 84, 44, 32, 99,114, +101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, 61, + 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123, +116,112, 32, 61, 32,116,112,125, 44, 32,109,101,116, 97,116, 41, 10, 32, 32, 32, + 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,116,112, 32,105,115, 32, + 99,108,111,115,101,100, 32,105,102, 32,119,101, 32,103,101,116, 32, 97,110, 32, +101,120, 99,101,112,116,105,111,110, 10, 32, 32, 32, 32,115, 46,116,114,121, 32, + 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114,121, 40,102,117,110, 99, +116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115, 58, 99,108,111, +115,101, 40, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101, +116,117,114,110, 32,115, 10,101,110,100, 10, 10, 45, 45, 32, 99,111,110,118,101, +114,116, 32,104,101, 97,100,101,114,115, 32,116,111, 32,108,111,119,101,114, 99, + 97,115,101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,108, +111,119,101,114, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, + 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,111,119,101,114, 32, 61, 32, +123,125, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97, +115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,114,115, 32,111,114, 32, +108,111,119,101,114, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, +119,101,114, 91,115,116,114,105,110,103, 46,108,111,119,101,114, 40,105, 41, 93, + 32, 61, 32,118, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116, +117,114,110, 32,108,111,119,101,114, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77,117,108,116,105,112, + 97,114,116, 32,109,101,115,115, 97,103,101, 32,115,111,117,114, 99,101, 10, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, - 77,117,108,116,105,112, 97,114,116, 32,109,101,115,115, 97,103,101, 32,115,111, -117,114, 99,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,104,111,112,101, -102,117,108,108,121, 32,117,110,105,113,117,101, 32,109,105,109,101, 32, 98,111, -117,110,100, 97,114,121, 10,108,111, 99, 97,108, 32,115,101,113,110,111, 32, 61, - 32, 48, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,110,101, -119, 98,111,117,110,100, 97,114,121, 40, 41, 10, 32, 32, 32, 32,115,101,113,110, -111, 32, 61, 32,115,101,113,110,111, 32, 43, 32, 49, 10, 32, 32, 32, 32,114,101, -116,117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 39, - 37,115, 37, 48, 53,100, 61, 61, 37, 48, 53,117, 39, 44, 32,111,115, 46,100, 97, -116,101, 40, 39, 37,100, 37,109, 37, 89, 37, 72, 37, 77, 37, 83, 39, 41, 44, 10, - 32, 32, 32, 32, 32, 32, 32, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40, - 48, 44, 32, 57, 57, 57, 57, 57, 41, 44, 32,115,101,113,110,111, 41, 10,101,110, -100, 10, 10, 45, 45, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 32,102, -111,114,119, 97,114,100, 32,100,101, 99,108, 97,114, 97,116,105,111,110, 10,108, -111, 99, 97,108, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 10, 10, 45, - 45, 32,121,105,101,108,100, 32,116,104,101, 32,104,101, 97,100,101,114,115, 32, - 97,108,108, 32, 97,116, 32,111,110, 99,101, 44, 32,105,116, 39,115, 32,102, 97, -115,116,101,114, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, -115,101,110,100, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, - 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, 34, 92,114, 92, -110, 34, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97, -115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,114,115, 41, 32,100,111, - 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 32, 61, 32,105, 32, 46, 46, 32, 39, 58, - 32, 39, 32, 46, 46, 32,118, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 32, 46, 46, - 32,104, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 99,111,114,111,117, -116,105,110,101, 46,121,105,101,108,100, 40,104, 41, 10,101,110,100, 10, 10, 45, - 45, 32,121,105,101,108,100, 32,109,117,108,116,105,112, 97,114,116, 32,109,101, -115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97, 32,109,117, -108,116,105,112, 97,114,116, 32,109,101,115,115, 97,103,101, 32,116, 97, 98,108, -101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,110, -100, 95,109,117,108,116,105,112, 97,114,116, 40,109,101,115,103,116, 41, 10, 32, - 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,119,101, 32,104, - 97,118,101, 32,111,117,114, 32, 98,111,117,110,100, 97,114,121, 32, 97,110,100, - 32,115,101,110,100, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,108,111, - 99, 97,108, 32, 98,100, 32, 61, 32,110,101,119, 98,111,117,110,100, 97,114,121, - 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, - 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,109,101,115, -103,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32, - 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116, -121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110, -116,101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 32, 39,109,117,108,116, -105,112, 97,114,116, 47,109,105,120,101,100, 39, 10, 32, 32, 32, 32,104,101, 97, -100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, - 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45, -116,121,112,101, 39, 93, 32, 46, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39, 59, - 32, 98,111,117,110,100, 97,114,121, 61, 34, 39, 32, 46, 46, 32, 32, 98,100, 32, - 46, 46, 32, 39, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97,100, -101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45, 32, -115,101,110,100, 32,112,114,101, 97,109, 98,108,101, 10, 32, 32, 32, 32,105,102, - 32,109,101,115,103,116, 46, 98,111,100,121, 46,112,114,101, 97,109, 98,108,101, - 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116, -105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,116, 46, 98,111,100,121, - 46,112,114,101, 97,109, 98,108,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, -111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, - 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,115,101, -110,100, 32,101, 97, 99,104, 32,112, 97,114,116, 32,115,101,112, 97,114, 97,116, -101,100, 32, 98,121, 32, 97, 32, 98,111,117,110,100, 97,114,121, 10, 32, 32, 32, - 32,102,111,114, 32,105, 44, 32,109, 32,105,110, 32, 98, 97,115,101, 46,105,112, - 97,105,114,115, 40,109,101,115,103,116, 46, 98,111,100,121, 41, 32,100,111, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105, -101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, 32, 46, 46, 32, 98,100, 32, 46, - 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101, -110,100, 95,109,101,115,115, 97,103,101, 40,109, 41, 10, 32, 32, 32, 32,101,110, -100, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,108, 97,115,116, 32, 98, -111,117,110,100, 97,114,121, 10, 32, 32, 32, 32, 99,111,114,111,117,116,105,110, -101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, 32, 46, 46, 32, - 98,100, 32, 46, 46, 32, 34, 45, 45, 92,114, 92,110, 92,114, 92,110, 34, 41, 10, - 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,101,112,105,108,111,103,117,101, - 10, 32, 32, 32, 32,105,102, 32,109,101,115,103,116, 46, 98,111,100,121, 46,101, -112,105,108,111,103,117,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115, -103,116, 46, 98,111,100,121, 46,101,112,105,108,111,103,117,101, 41, 10, 32, 32, - 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108, -100, 40, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110, -100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,101,115,115, 97,103,101, 32, - 98,111,100,121, 32,102,114,111,109, 32, 97, 32,115,111,117,114, 99,101, 10,108, -111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,110,100, 95,115, -111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, -109, 97,107,101, 32,115,117,114,101, 32,119,101, 32,104, 97,118,101, 32, 97, 32, - 99,111,110,116,101,110,116, 45,116,121,112,101, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,108,111,119,101,114, 95,104, -101, 97,100,101,114,115, 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, - 32,111,114, 32,123,125, 41, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, - 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32, 61, 32,104,101, - 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, - 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39,116,101,120,116, 47,112, -108, 97,105,110, 59, 32, 99,104, 97,114,115,101,116, 61, 34,105,115,111, 45, 56, - 56, 53, 57, 45, 49, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97, -100,101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45, - 32,115,101,110,100, 32, 98,111,100,121, 32,102,114,111,109, 32,115,111,117,114, - 99,101, 10, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, - 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, - 44, 32,101,114,114, 32, 61, 32,109,101,115,103,116, 46, 98,111,100,121, 40, 41, - 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, - 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,110,105,108, - 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105, -102, 32, 99,104,117,110,107, 32,116,104,101,110, 32, 99,111,114,111,117,116,105, -110,101, 46,121,105,101,108,100, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, - 32, 32, 32, 32,101,108,115,101, 32, 98,114,101, 97,107, 32,101,110,100, 10, 32, - 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,121,105,101,108,100, - 32,109,101,115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97, - 32,115,116,114,105,110,103, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105, -111,110, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109,101,115,103,116, - 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,119, -101, 32,104, 97,118,101, 32, 97, 32, 99,111,110,116,101,110,116, 45,116,121,112, -101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, - 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,109,101,115,103, -116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32, 32, +114,101,116,117,114,110,115, 32, 97, 32,104,111,112,101,102,117,108,108,121, 32, +117,110,105,113,117,101, 32,109,105,109,101, 32, 98,111,117,110,100, 97,114,121, + 10,108,111, 99, 97,108, 32,115,101,113,110,111, 32, 61, 32, 48, 10,108,111, 99, + 97,108, 32,102,117,110, 99,116,105,111,110, 32,110,101,119, 98,111,117,110,100, + 97,114,121, 40, 41, 10, 32, 32, 32, 32,115,101,113,110,111, 32, 61, 32,115,101, +113,110,111, 32, 43, 32, 49, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, +116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 39, 37,115, 37, 48, 53,100, + 61, 61, 37, 48, 53,117, 39, 44, 32,111,115, 46,100, 97,116,101, 40, 39, 37,100, + 37,109, 37, 89, 37, 72, 37, 77, 37, 83, 39, 41, 44, 10, 32, 32, 32, 32, 32, 32, + 32, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40, 48, 44, 32, 57, 57, 57, + 57, 57, 41, 44, 32,115,101,113,110,111, 41, 10,101,110,100, 10, 10, 45, 45, 32, +115,101,110,100, 95,109,101,115,115, 97,103,101, 32,102,111,114,119, 97,114,100, + 32,100,101, 99,108, 97,114, 97,116,105,111,110, 10,108,111, 99, 97,108, 32,115, +101,110,100, 95,109,101,115,115, 97,103,101, 10, 10, 45, 45, 32,121,105,101,108, +100, 32,116,104,101, 32,104,101, 97,100,101,114,115, 32, 97,108,108, 32, 97,116, + 32,111,110, 99,101, 44, 32,105,116, 39,115, 32,102, 97,115,116,101,114, 10,108, +111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,110,100, 95,104, +101, 97,100,101,114,115, 40,116,111,115,101,110,100, 41, 10, 32, 32, 32, 32,108, +111, 99, 97,108, 32, 99, 97,110,111,110,105, 99, 32, 61, 32,104,101, 97,100,101, +114,115, 46, 99, 97,110,111,110,105, 99, 10, 32, 32, 32, 32,108,111, 99, 97,108, + 32,104, 32, 61, 32, 34, 92,114, 92,110, 34, 10, 32, 32, 32, 32,102,111,114, 32, +102, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,116,111, +115,101,110,100, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 32, 61, + 32, 40, 99, 97,110,111,110,105, 99, 91,102, 93, 32,111,114, 32,102, 41, 32, 46, + 46, 32, 39, 58, 32, 39, 32, 46, 46, 32,118, 32, 46, 46, 32, 34, 92,114, 92,110, + 34, 32, 46, 46, 32,104, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 99, +111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,104, 41, 10,101,110, +100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,117,108,116,105,112, 97,114, +116, 32,109,101,115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, + 97, 32,109,117,108,116,105,112, 97,114,116, 32,109,101,115,115, 97,103,101, 32, +116, 97, 98,108,101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, + 32,115,101,110,100, 95,109,117,108,116,105,112, 97,114,116, 40,109,101,115,103, +116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32, +119,101, 32,104, 97,118,101, 32,111,117,114, 32, 98,111,117,110,100, 97,114,121, + 32, 97,110,100, 32,115,101,110,100, 32,104,101, 97,100,101,114,115, 10, 32, 32, + 32, 32,108,111, 99, 97,108, 32, 98,100, 32, 61, 32,110,101,119, 98,111,117,110, +100, 97,114,121, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97, +100,101,114,115, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, + 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, + 41, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101, +110,116, 45,116,121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, + 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 32, 39, +109,117,108,116,105,112, 97,114,116, 47,109,105,120,101,100, 39, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121, 112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116, -101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 39,116,101,120,116, 47,112,108, 97,105,110, 59, 32, 99,104, 97,114,115, -101,116, 61, 34,105,115,111, 45, 56, 56, 53, 57, 45, 49, 34, 39, 10, 32, 32, 32, - 32,115,101,110,100, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114, -115, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32, 98,111,100,121, 32, -102,114,111,109, 32,115,116,114,105,110,103, 10, 32, 32, 32, 32, 99,111,114,111, -117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,116, 46, 98,111, -100,121, 41, 10,101,110,100, 10, 10, 45, 45, 32,109,101,115,115, 97,103,101, 32, -115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,101,110,100, - 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, -105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,109,101,115,103,116, 46, 98, -111,100,121, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32,116,104,101,110, - 32,115,101,110,100, 95,109,117,108,116,105,112, 97,114,116, 40,109,101,115,103, -116, 41, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32, 98, 97,115,101, 46,116, -121,112,101, 40,109,101,115,103,116, 46, 98,111,100,121, 41, 32, 61, 61, 32, 34, -102,117,110, 99,116,105,111,110, 34, 32,116,104,101,110, 32,115,101,110,100, 95, -115,111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,101,108, -115,101, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109,101,115,103,116, - 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,115,101,116, 32,100,101, -102, 97,117,108, 32,104,101, 97,100,101,114,115, 10,108,111, 99, 97,108, 32,102, -117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116, 95,104,101, 97,100,101, -114,115, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, -108,111,119,101,114, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114, -115, 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, - 32,108,111,119,101,114, 91, 34,100, 97,116,101, 34, 93, 32, 61, 32,108,111,119, -101,114, 91, 34,100, 97,116,101, 34, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, - 32, 32,111,115, 46,100, 97,116,101, 40, 34, 33, 37, 97, 44, 32, 37,100, 32, 37, - 98, 32, 37, 89, 32, 37, 72, 58, 37, 77, 58, 37, 83, 32, 34, 41, 32, 46, 46, 32, - 40,109,101,115,103,116, 46,122,111,110,101, 32,111,114, 32, 90, 79, 78, 69, 41, - 10, 32, 32, 32, 32,108,111,119,101,114, 91, 34,120, 45,109, 97,105,108,101,114, - 34, 93, 32, 61, 32,108,111,119,101,114, 91, 34,120, 45,109, 97,105,108,101,114, - 34, 93, 32,111,114, 32,115,111, 99,107,101,116, 46, 95, 86, 69, 82, 83, 73, 79, - 78, 10, 32, 32, 32, 32, 45, 45, 32,116,104,105,115, 32, 99, 97,110, 39,116, 32, - 98,101, 32,111,118,101,114,114,105,100,101,110, 10, 32, 32, 32, 32,108,111,119, -101,114, 91, 34,109,105,109,101, 45,118,101,114,115,105,111,110, 34, 93, 32, 61, - 32, 34, 49, 46, 48, 34, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,111, -119,101,114, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, -115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,109,101,115, -103,116, 46,104,101, 97,100,101,114,115, 32, 61, 32, 97,100,106,117,115,116, 95, -104,101, 97,100,101,114,115, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 45, - 45, 32, 99,114,101, 97,116,101, 32, 97,110,100, 32,114,101,116,117,114,110, 32, -109,101,115,115, 97,103,101, 32,115,111,117,114, 99,101, 10, 32, 32, 32, 32,108, -111, 99, 97,108, 32, 99,111, 32, 61, 32, 99,111,114,111,117,116,105,110,101, 46, - 99,114,101, 97,116,101, 40,102,117,110, 99,116,105,111,110, 40, 41, 32,115,101, -110,100, 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 32,101,110, -100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105, -111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114, -101,116, 44, 32, 97, 44, 32, 98, 32, 61, 32, 99,111,114,111,117,116,105,110,101, - 46,114,101,115,117,109,101, 40, 99,111, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, -105,102, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 97, - 44, 32, 98, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116, -117,114,110, 32,110,105,108, 44, 32, 97, 32,101,110,100, 10, 32, 32, 32, 32,101, -110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118,101,108, 32, 83, 77, - 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 10,115,101,110,100, 32, 61, 32,115,111, 99,107,101,116, 46,112, -114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,109, 97,105,108, -116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, 61, 32,111,112,101, -110, 40,109, 97,105,108,116, 46,115,101,114,118,101,114, 44, 32,109, 97,105,108, -116, 46,112,111,114,116, 44, 32,109, 97,105,108,116, 46, 99,114,101, 97,116,101, - 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,101,120,116, 32, 61, 32,115, 58, -103,114,101,101,116, 40,109, 97,105,108,116, 46,100,111,109, 97,105,110, 41, 10, - 32, 32, 32, 32,115, 58, 97,117,116,104, 40,109, 97,105,108,116, 46,117,115,101, -114, 44, 32,109, 97,105,108,116, 46,112, 97,115,115,119,111,114,100, 44, 32,101, -120,116, 41, 10, 32, 32, 32, 32,115, 58,115,101,110,100, 40,109, 97,105,108,116, - 41, 10, 32, 32, 32, 32,115, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,114, -101,116,117,114,110, 32,115, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 41, - 10, +101,110,116, 45,116,121,112,101, 39, 93, 32, 46, 46, 10, 32, 32, 32, 32, 32, 32, + 32, 32, 39, 59, 32, 98,111,117,110,100, 97,114,121, 61, 34, 39, 32, 46, 46, 32, + 32, 98,100, 32, 46, 46, 32, 39, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95, +104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, + 32, 45, 45, 32,115,101,110,100, 32,112,114,101, 97,109, 98,108,101, 10, 32, 32, + 32, 32,105,102, 32,109,101,115,103,116, 46, 98,111,100,121, 46,112,114,101, 97, +109, 98,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111, +114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,116, 46, + 98,111,100,121, 46,112,114,101, 97,109, 98,108,101, 41, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40, 34, + 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, + 45, 32,115,101,110,100, 32,101, 97, 99,104, 32,112, 97,114,116, 32,115,101,112, + 97,114, 97,116,101,100, 32, 98,121, 32, 97, 32, 98,111,117,110,100, 97,114,121, + 10, 32, 32, 32, 32,102,111,114, 32,105, 44, 32,109, 32,105,110, 32, 98, 97,115, +101, 46,105,112, 97,105,114,115, 40,109,101,115,103,116, 46, 98,111,100,121, 41, + 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110, +101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, 32, 46, 46, 32, + 98,100, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, + 32, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 40,109, 41, 10, 32, 32, + 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,108, 97, +115,116, 32, 98,111,117,110,100, 97,114,121, 10, 32, 32, 32, 32, 99,111,114,111, +117,116,105,110,101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, + 32, 46, 46, 32, 98,100, 32, 46, 46, 32, 34, 45, 45, 92,114, 92,110, 92,114, 92, +110, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,101,112,105,108, +111,103,117,101, 10, 32, 32, 32, 32,105,102, 32,109,101,115,103,116, 46, 98,111, +100,121, 46,101,112,105,108,111,103,117,101, 32,116,104,101,110, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, + 40,109,101,115,103,116, 46, 98,111,100,121, 46,101,112,105,108,111,103,117,101, + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46, +121,105,101,108,100, 40, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110, +100, 10,101,110,100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,101,115,115, + 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97, 32,115,111,117,114, + 99,101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101, +110,100, 95,115,111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, + 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,119,101, 32,104, 97,118, +101, 32, 97, 32, 99,111,110,116,101,110,116, 45,116,121,112,101, 10, 32, 32, 32, + 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,108,111,119, +101,114, 95,104,101, 97,100,101,114,115, 40,109,101,115,103,116, 46,104,101, 97, +100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32, 32, 32,104,101, 97,100, +101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32, + 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116, +121,112,101, 39, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39,116,101, +120,116, 47,112,108, 97,105,110, 59, 32, 99,104, 97,114,115,101,116, 61, 34,105, +115,111, 45, 56, 56, 53, 57, 45, 49, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, + 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, + 32, 32, 45, 45, 32,115,101,110,100, 32, 98,111,100,121, 32,102,114,111,109, 32, +115,111,117,114, 99,101, 10, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117, +101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, +104,117,110,107, 44, 32,101,114,114, 32, 61, 32,109,101,115,103,116, 46, 98,111, +100,121, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32, +116,104,101,110, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, + 40,110,105,108, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, +108,115,101,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32, 99,111,114, +111,117,116,105,110,101, 46,121,105,101,108,100, 40, 99,104,117,110,107, 41, 10, + 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 98,114,101, 97,107, 32,101, +110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,121, +105,101,108,100, 32,109,101,115,115, 97,103,101, 32, 98,111,100,121, 32,102,114, +111,109, 32, 97, 32,115,116,114,105,110,103, 10,108,111, 99, 97,108, 32,102,117, +110, 99,116,105,111,110, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109, +101,115,103,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117, +114,101, 32,119,101, 32,104, 97,118,101, 32, 97, 32, 99,111,110,116,101,110,116, + 45,116,121,112,101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100, +101,114,115, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40, +109,101,115,103,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41, + 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110, +116, 45,116,121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, + 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 39,116,101,120,116, 47,112,108, 97,105,110, 59, 32, 99, +104, 97,114,115,101,116, 61, 34,105,115,111, 45, 56, 56, 53, 57, 45, 49, 34, 39, + 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97,100,101,114,115, 40,104,101, + 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32, 98, +111,100,121, 32,102,114,111,109, 32,115,116,114,105,110,103, 10, 32, 32, 32, 32, + 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115,103, +116, 46, 98,111,100,121, 41, 10,101,110,100, 10, 10, 45, 45, 32,109,101,115,115, + 97,103,101, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32, +115,101,110,100, 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, + 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,109,101,115, +103,116, 46, 98,111,100,121, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32, +116,104,101,110, 32,115,101,110,100, 95,109,117,108,116,105,112, 97,114,116, 40, +109,101,115,103,116, 41, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32, 98, 97, +115,101, 46,116,121,112,101, 40,109,101,115,103,116, 46, 98,111,100,121, 41, 32, + 61, 61, 32, 34,102,117,110, 99,116,105,111,110, 34, 32,116,104,101,110, 32,115, +101,110,100, 95,115,111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, + 32, 32,101,108,115,101, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109, +101,115,103,116, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,115,101, +116, 32,100,101,102, 97,117,108, 32,104,101, 97,100,101,114,115, 10,108,111, 99, + 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116, 95,104, +101, 97,100,101,114,115, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,108,111, + 99, 97,108, 32,108,111,119,101,114, 32, 61, 32,108,111,119,101,114, 95,104,101, + 97,100,101,114,115, 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 41, + 10, 32, 32, 32, 32,108,111,119,101,114, 91, 34,100, 97,116,101, 34, 93, 32, 61, + 32,108,111,119,101,114, 91, 34,100, 97,116,101, 34, 93, 32,111,114, 10, 32, 32, + 32, 32, 32, 32, 32, 32,111,115, 46,100, 97,116,101, 40, 34, 33, 37, 97, 44, 32, + 37,100, 32, 37, 98, 32, 37, 89, 32, 37, 72, 58, 37, 77, 58, 37, 83, 32, 34, 41, + 32, 46, 46, 32, 40,109,101,115,103,116, 46,122,111,110,101, 32,111,114, 32, 90, + 79, 78, 69, 41, 10, 32, 32, 32, 32,108,111,119,101,114, 91, 34,120, 45,109, 97, +105,108,101,114, 34, 93, 32, 61, 32,108,111,119,101,114, 91, 34,120, 45,109, 97, +105,108,101,114, 34, 93, 32,111,114, 32,115,111, 99,107,101,116, 46, 95, 86, 69, + 82, 83, 73, 79, 78, 10, 32, 32, 32, 32, 45, 45, 32,116,104,105,115, 32, 99, 97, +110, 39,116, 32, 98,101, 32,111,118,101,114,114,105,100,101,110, 10, 32, 32, 32, + 32,108,111,119,101,114, 91, 34,109,105,109,101, 45,118,101,114,115,105,111,110, + 34, 93, 32, 61, 32, 34, 49, 46, 48, 34, 10, 32, 32, 32, 32,114,101,116,117,114, +110, 32,108,111,119,101,114, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111, +110, 32,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, + 32,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 32, 61, 32, 97,100,106, +117,115,116, 95,104,101, 97,100,101,114,115, 40,109,101,115,103,116, 41, 10, 32, + 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32, 97,110,100, 32,114,101,116, +117,114,110, 32,109,101,115,115, 97,103,101, 32,115,111,117,114, 99,101, 10, 32, + 32, 32, 32,108,111, 99, 97,108, 32, 99,111, 32, 61, 32, 99,111,114,111,117,116, +105,110,101, 46, 99,114,101, 97,116,101, 40,102,117,110, 99,116,105,111,110, 40, + 41, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, + 41, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117, +110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, + 97,108, 32,114,101,116, 44, 32, 97, 44, 32, 98, 32, 61, 32, 99,111,114,111,117, +116,105,110,101, 46,114,101,115,117,109,101, 40, 99,111, 41, 10, 32, 32, 32, 32, + 32, 32, 32, 32,105,102, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117, +114,110, 32, 97, 44, 32, 98, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, + 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 97, 32,101,110,100, 10, 32, + 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118,101, +108, 32, 83, 77, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 10,115,101,110,100, 32, 61, 32,115,111, 99,107, +101,116, 46,112,114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40, +109, 97,105,108,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, 61, + 32,111,112,101,110, 40,109, 97,105,108,116, 46,115,101,114,118,101,114, 44, 32, +109, 97,105,108,116, 46,112,111,114,116, 44, 32,109, 97,105,108,116, 46, 99,114, +101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,101,120,116, 32, + 61, 32,115, 58,103,114,101,101,116, 40,109, 97,105,108,116, 46,100,111,109, 97, +105,110, 41, 10, 32, 32, 32, 32,115, 58, 97,117,116,104, 40,109, 97,105,108,116, + 46,117,115,101,114, 44, 32,109, 97,105,108,116, 46,112, 97,115,115,119,111,114, +100, 44, 32,101,120,116, 41, 10, 32, 32, 32, 32,115, 58,115,101,110,100, 40,109, + 97,105,108,116, 41, 10, 32, 32, 32, 32,115, 58,113,117,105,116, 40, 41, 10, 32, + 32, 32, 32,114,101,116,117,114,110, 32,115, 58, 99,108,111,115,101, 40, 41, 10, +101,110,100, 41, 10, 0 }; return luaL_dostring(L, (const char*)B); } /* end of embedded lua code */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.h b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.h index 656c7f5d5ce..63573de5da1 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.h @@ -8,8 +8,6 @@ * differences. Also, not all *nix platforms behave the same. This module * (and the associated usocket.h and wsocket.h) factor these differences and * creates a interface compatible with the io.h module. -* -* RCS ID: $Id: socket.h,v 1.20 2005/11/20 07:20:23 diego Exp $ \*=========================================================================*/ #include "io.h" @@ -61,6 +59,7 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *addr_len, p_timeout tm); const char *socket_hoststrerror(int err); +const char *socket_gaistrerror(int err); const char *socket_strerror(int err); /* these are perfect to use with the io abstraction module @@ -68,6 +67,9 @@ const char *socket_strerror(int err); int socket_send(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm); int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm); +int socket_write(p_socket ps, const char *data, size_t count, + size_t *sent, p_timeout tm); +int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm); const char *socket_ioerror(p_socket ps, int err); int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp); diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua index 211adcd1d98..e8def759f47 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua @@ -1,7 +1,6 @@ ----------------------------------------------------------------------------- -- LuaSocket helper module -- Author: Diego Nehab --- RCS ID: $Id: socket.lua,v 1.22 2005/11/22 08:33:29 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -16,27 +15,41 @@ module("socket") ----------------------------------------------------------------------------- -- Exported auxiliar functions ----------------------------------------------------------------------------- -function connect(address, port, laddress, lport) - local sock, err = socket.tcp() - if not sock then return nil, err end - if laddress then - local res, err = sock:bind(laddress, lport, -1) - if not res then return nil, err end - end - local res, err = sock:connect(address, port) - if not res then return nil, err end - return sock +function connect4(address, port, laddress, lport) + return socket.connect(address, port, laddress, lport, "inet") +end + +function connect6(address, port, laddress, lport) + return socket.connect(address, port, laddress, lport, "inet6") end function bind(host, port, backlog) - local sock, err = socket.tcp() - if not sock then return nil, err end - sock:setoption("reuseaddr", true) - local res, err = sock:bind(host, port) - if not res then return nil, err end - res, err = sock:listen(backlog) - if not res then return nil, err end - return sock + if host == "*" then host = "0.0.0.0" end + local addrinfo, err = socket.dns.getaddrinfo(host); + if not addrinfo then return nil, err end + local sock, res + err = "no info on address" + for i, alt in base.ipairs(addrinfo) do + if alt.family == "inet" then + sock, err = socket.tcp() + else + sock, err = socket.tcp6() + end + if not sock then return nil, err end + sock:setoption("reuseaddr", true) + res, err = sock:bind(alt.addr, port) + if not res then + sock:close() + else + res, err = sock:listen(backlog) + if not res then + sock:close() + else + return sock + end + end + end + return nil, err end try = newtry() diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c index 4f3709e0d0e..bf645579cc7 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c @@ -1,5 +1,5 @@ /* - * This file is auto-generated by "./lua2c socket.lua socket_lua" + * This file is auto-generated by "lua2c socket.lua socket_lua" */ #include "lua.h" @@ -13,109 +13,189 @@ int luatex_socket_lua_open (lua_State *L) { 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,104,101,108,112,101,114, 32,109,111, 100,117,108,101, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103, -111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, - 73,100, 58, 32,115,111, 99,107,101,116, 46,108,117, 97, 44,118, 32, 49, 46, 50, - 50, 32, 50, 48, 48, 53, 47, 49, 49, 47, 50, 50, 32, 48, 56, 58, 51, 51, 58, 50, - 57, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114, -101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32, -100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115, -101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, - 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10, -108,111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, - 40, 34,109, 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101, -116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46, - 99,111,114,101, 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101, -116, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 10, 45, 45, 32, 69,120,112,111,114,116,101,100, 32, 97,117,120,105,108, -105, 97,114, 32,102,117,110, 99,116,105,111,110,115, 10, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, - 32, 99,111,110,110,101, 99,116, 40, 97,100,100,114,101,115,115, 44, 32,112,111, -114,116, 44, 32,108, 97,100,100,114,101,115,115, 44, 32,108,112,111,114,116, 41, - 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,111, 99,107, 44, 32,101,114,114, - 32, 61, 32,115,111, 99,107,101,116, 46,116, 99,112, 40, 41, 10, 32, 32, 32, 32, -105,102, 32,110,111,116, 32,115,111, 99,107, 32,116,104,101,110, 32,114,101,116, -117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, - 32,105,102, 32,108, 97,100,100,114,101,115,115, 32,116,104,101,110, 10, 32, 32, - 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44, 32,101,114,114, - 32, 61, 32,115,111, 99,107, 58, 98,105,110,100, 40,108, 97,100,100,114,101,115, -115, 44, 32,108,112,111,114,116, 44, 32, 45, 49, 41, 10, 32, 32, 32, 32, 32, 32, - 32, 32,105,102, 32,110,111,116, 32,114,101,115, 32,116,104,101,110, 32,114,101, -116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, - 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44, - 32,101,114,114, 32, 61, 32,115,111, 99,107, 58, 99,111,110,110,101, 99,116, 40, - 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105, -102, 32,110,111,116, 32,114,101,115, 32,116,104,101,110, 32,114,101,116,117,114, -110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,114, -101,116,117,114,110, 32,115,111, 99,107, 10,101,110,100, 10, 10,102,117,110, 99, -116,105,111,110, 32, 98,105,110,100, 40,104,111,115,116, 44, 32,112,111,114,116, - 44, 32, 98, 97, 99,107,108,111,103, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, - 32,115,111, 99,107, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107,101,116, 46, -116, 99,112, 40, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,111, 99, -107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101, -114,114, 32,101,110,100, 10, 32, 32, 32, 32,115,111, 99,107, 58,115,101,116,111, -112,116,105,111,110, 40, 34,114,101,117,115,101, 97,100,100,114, 34, 44, 32,116, -114,117,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44, 32, -101,114,114, 32, 61, 32,115,111, 99,107, 58, 98,105,110,100, 40,104,111,115,116, - 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114, -101,115, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, -101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,114,101,115, 44, 32,101,114,114, - 32, 61, 32,115,111, 99,107, 58,108,105,115,116,101,110, 40, 98, 97, 99,107,108, -111,103, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,115, 32,116, -104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32, -101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,111, 99,107, 10, -101,110,100, 10, 10,116,114,121, 32, 61, 32,110,101,119,116,114,121, 40, 41, 10, - 10,102,117,110, 99,116,105,111,110, 32, 99,104,111,111,115,101, 40,116, 97, 98, -108,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116, -105,111,110, 40,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, - 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121, -112,101, 40,110, 97,109,101, 41, 32,126, 61, 32, 34,115,116,114,105,110,103, 34, - 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110, 97, -109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 32, 61, 32, 34,100,101, -102, 97,117,108,116, 34, 44, 32,110, 97,109,101, 44, 32,111,112,116, 49, 10, 32, - 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,108, -111, 99, 97,108, 32,102, 32, 61, 32,116, 97, 98,108,101, 91,110, 97,109,101, 32, -111,114, 32, 34,110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, - 32,110,111,116, 32,102, 32,116,104,101,110, 32, 98, 97,115,101, 46,101,114,114, -111,114, 40, 34,117,110,107,110,111,119,110, 32,107,101,121, 32, 40, 34, 46, 46, - 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110, 97,109,101, 41, - 32, 46, 46, 34, 41, 34, 44, 32, 51, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, -108,115,101, 32,114,101,116,117,114,110, 32,102, 40,111,112,116, 49, 44, 32,111, -112,116, 50, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, - 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, - 45, 45, 32, 83,111, 99,107,101,116, 32,115,111,117,114, 99,101,115, 32, 97,110, -100, 32,115,105,110,107,115, 44, 32, 99,111,110,102,111,114,109,105,110,103, 32, -116,111, 32, 76, 84, 78, 49, 50, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101, 32,110, 97,109, -101,115,112, 97, 99,101,115, 32,105,110,115,105,100,101, 32, 76,117, 97, 83,111, - 99,107,101,116, 32,110, 97,109,101,115,112, 97, 99,101, 10,115,111,117,114, 99, -101,116, 32, 61, 32,123,125, 10,115,105,110,107,116, 32, 61, 32,123,125, 10, 10, - 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, 61, 32, 50, 48, 52, 56, 10, 10,115,105, -110,107,116, 91, 34, 99,108,111,115,101, 45,119,104,101,110, 45,100,111,110,101, - 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, +111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117, +108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112,101,110,100, +101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, + 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117, +105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32, +109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97,116,104, + 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101, +113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46, 99,111,114,101, 34, 41, + 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 34, 41, 10, 10, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, + 69,120,112,111,114,116,101,100, 32, 97,117,120,105,108,105, 97,114, 32,102,117, +110, 99,116,105,111,110,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 99,111,110,110,101, + 99,116, 52, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 44, 32,108, + 97,100,100,114,101,115,115, 44, 32,108,112,111,114,116, 41, 10, 32, 32, 32, 32, +114,101,116,117,114,110, 32,115,111, 99,107,101,116, 46, 99,111,110,110,101, 99, +116, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 44, 32,108, 97,100, +100,114,101,115,115, 44, 32,108,112,111,114,116, 44, 32, 34,105,110,101,116, 34, + 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,111,110,110, +101, 99,116, 54, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 44, 32, +108, 97,100,100,114,101,115,115, 44, 32,108,112,111,114,116, 41, 10, 32, 32, 32, + 32,114,101,116,117,114,110, 32,115,111, 99,107,101,116, 46, 99,111,110,110,101, + 99,116, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 44, 32,108, 97, +100,100,114,101,115,115, 44, 32,108,112,111,114,116, 44, 32, 34,105,110,101,116, + 54, 34, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 98,105, +110,100, 40,104,111,115,116, 44, 32,112,111,114,116, 44, 32, 98, 97, 99,107,108, +111,103, 41, 10, 32, 32, 32, 32,105,102, 32,104,111,115,116, 32, 61, 61, 32, 34, + 42, 34, 32,116,104,101,110, 32,104,111,115,116, 32, 61, 32, 34, 48, 46, 48, 46, + 48, 46, 48, 34, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97, +100,100,114,105,110,102,111, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107,101, +116, 46,100,110,115, 46,103,101,116, 97,100,100,114,105,110,102,111, 40,104,111, +115,116, 41, 59, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 97,100,100,114, +105,110,102,111, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, + 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, +115,111, 99,107, 44, 32,114,101,115, 10, 32, 32, 32, 32,101,114,114, 32, 61, 32, + 34,110,111, 32,105,110,102,111, 32,111,110, 32, 97,100,100,114,101,115,115, 34, + 10, 32, 32, 32, 32,102,111,114, 32,105, 44, 32, 97,108,116, 32,105,110, 32, 98, + 97,115,101, 46,105,112, 97,105,114,115, 40, 97,100,100,114,105,110,102,111, 41, + 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 97,108,116, 46,102, + 97,109,105,108,121, 32, 61, 61, 32, 34,105,110,101,116, 34, 32,116,104,101,110, + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 44, 32,101, +114,114, 32, 61, 32,115,111, 99,107,101,116, 46,116, 99,112, 40, 41, 10, 32, 32, + 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32,115,111, 99,107, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107,101, +116, 46,116, 99,112, 54, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, + 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,111, 99,107, + 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114, +114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58,115, +101,116,111,112,116,105,111,110, 40, 34,114,101,117,115,101, 97,100,100,114, 34, + 44, 32,116,114,117,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,115, 44, + 32,101,114,114, 32, 61, 32,115,111, 99,107, 58, 98,105,110,100, 40, 97,108,116, + 46, 97,100,100,114, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32, 32, 32, 32, + 32,105,102, 32,110,111,116, 32,114,101,115, 32,116,104,101,110, 32, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,108,111,115,101, + 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,115, 44, 32,101,114,114, 32, 61, 32, +115,111, 99,107, 58,108,105,115,116,101,110, 40, 98, 97, 99,107,108,111,103, 41, + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, +114,101,115, 32,116,104,101,110, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,108,111,115,101, 40, 41, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, +111, 99,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, + 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 32, 10, 32, 32, 32, 32,101,110,100, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, + 10,101,110,100, 10, 10,116,114,121, 32, 61, 32,110,101,119,116,114,121, 40, 41, + 10, 10,102,117,110, 99,116,105,111,110, 32, 99,104,111,111,115,101, 40,116, 97, + 98,108,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99, +116,105,111,110, 40,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, + 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116, +121,112,101, 40,110, 97,109,101, 41, 32,126, 61, 32, 34,115,116,114,105,110,103, + 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110, + 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 32, 61, 32, 34,100, +101,102, 97,117,108,116, 34, 44, 32,110, 97,109,101, 44, 32,111,112,116, 49, 10, + 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, +108,111, 99, 97,108, 32,102, 32, 61, 32,116, 97, 98,108,101, 91,110, 97,109,101, + 32,111,114, 32, 34,110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, +102, 32,110,111,116, 32,102, 32,116,104,101,110, 32, 98, 97,115,101, 46,101,114, +114,111,114, 40, 34,117,110,107,110,111,119,110, 32,107,101,121, 32, 40, 34, 46, + 46, 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110, 97,109,101, + 41, 32, 46, 46, 34, 41, 34, 44, 32, 51, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, +101,108,115,101, 32,114,101,116,117,114,110, 32,102, 40,111,112,116, 49, 44, 32, +111,112,116, 50, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110, +100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 10, 45, 45, 32, 83,111, 99,107,101,116, 32,115,111,117,114, 99,101,115, 32, 97, +110,100, 32,115,105,110,107,115, 44, 32, 99,111,110,102,111,114,109,105,110,103, + 32,116,111, 32, 76, 84, 78, 49, 50, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101, 32,110, 97, +109,101,115,112, 97, 99,101,115, 32,105,110,115,105,100,101, 32, 76,117, 97, 83, +111, 99,107,101,116, 32,110, 97,109,101,115,112, 97, 99,101, 10,115,111,117,114, + 99,101,116, 32, 61, 32,123,125, 10,115,105,110,107,116, 32, 61, 32,123,125, 10, + 10, 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, 61, 32, 50, 48, 52, 56, 10, 10,115, +105,110,107,116, 91, 34, 99,108,111,115,101, 45,119,104,101,110, 45,100,111,110, +101, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116, +109,101,116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, +103,101,116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114, +101,116,117,114,110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101, +110,100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32, +102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, + 99,107, 58,100,105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, + 44, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, + 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110, +107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99, +108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111, 99,107, + 58,115,101,110,100, 40, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, + 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, + 10,115,105,110,107,116, 91, 34,107,101,101,112, 45,111,112,101,110, 34, 93, 32, + 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, + 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97, +116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102, +100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114, +110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, + 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99, +116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100, +105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, + 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101, +114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99, +104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,111, 99, +107, 58,115,101,110,100, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32, +101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, +125, 41, 10,101,110,100, 10, 10,115,105,110,107,116, 91, 34,100,101,102, 97,117, +108,116, 34, 93, 32, 61, 32,115,105,110,107,116, 91, 34,107,101,101,112, 45,111, +112,101,110, 34, 93, 10, 10,115,105,110,107, 32, 61, 32, 99,104,111,111,115,101, + 40,115,105,110,107,116, 41, 10, 10,115,111,117,114, 99,101,116, 91, 34, 98,121, + 45,108,101,110,103,116,104, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, + 40,115,111, 99,107, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32,114, +101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, + 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, + 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32, +115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, + 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105, +111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114, +116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116, +105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, + 32,108,101,110,103,116,104, 32, 60, 61, 32, 48, 32,116,104,101,110, 32,114,101, +116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,122,101, 32, 61, 32,109, 97, +116,104, 46,109,105,110, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, + 73, 90, 69, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114, +114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40,115,105,122, +101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114, +114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101, +114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, +101,110,103,116,104, 32, 61, 32,108,101,110,103,116,104, 32, 45, 32,115,116,114, +105,110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, + 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101, +110,100, 10, 10,115,111,117,114, 99,101,116, 91, 34,117,110,116,105,108, 45, 99, +108,111,115,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115, +111, 99,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,100,111,110,101, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109, 101,116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103, 101,116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101, @@ -124,93 +204,28 @@ int luatex_socket_lua_open (lua_State *L) { 117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99, 107, 58,100,105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32, -102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, - 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, -102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,108, -111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58, -115,101,110,100, 40, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32, - 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10, -115,105,110,107,116, 91, 34,107,101,101,112, 45,111,112,101,110, 34, 93, 32, 61, - 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, 32, -114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, - 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, - 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, - 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, - 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116, -105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105, -114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, - 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99, -116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101,114, -114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104, -117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,111, 99,107, - 58,115,101,110,100, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,101, -110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, - 41, 10,101,110,100, 10, 10,115,105,110,107,116, 91, 34,100,101,102, 97,117,108, -116, 34, 93, 32, 61, 32,115,105,110,107,116, 91, 34,107,101,101,112, 45,111,112, -101,110, 34, 93, 10, 10,115,105,110,107, 32, 61, 32, 99,104,111,111,115,101, 40, -115,105,110,107,116, 41, 10, 10,115,111,117,114, 99,101,116, 91, 34, 98,121, 45, -108,101,110,103,116,104, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, -115,111, 99,107, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32,114,101, -116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98, -108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, 61, - 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115, -111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32, - 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105,111, -110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114,116, -121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32, - 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116,105, -111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, -108,101,110,103,116,104, 32, 60, 61, 32, 48, 32,116,104,101,110, 32,114,101,116, -117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,122,101, 32, 61, 32,109, 97,116, -104, 46,109,105,110, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, 73, - 90, 69, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, - 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40,115,105,122,101, - 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, - 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114, -114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,101, -110,103,116,104, 32, 61, 32,108,101,110,103,116,104, 32, 45, 32,115,116,114,105, -110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, - 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110, -100, 10, 10,115,111,117,114, 99,101,116, 91, 34,117,110,116,105,108, 45, 99,108, -111,115,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, - 99,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,100,111,110,101, 10, 32, - 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101, -116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101, -116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116, -117,114,110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, - 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117, -110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, - 58,100,105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32, -123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102, -117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,105,102, 32,100,111,110,101, 32,116,104,101,110, 32,114,101,116,117,114, -110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 44, 32, -112, 97,114,116,105, 97,108, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105, -118,101, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, 73, 90, 69, 41, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, -101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110, -107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, - 32,101,114,114, 32, 61, 61, 32, 34, 99,108,111,115,101,100, 34, 32,116,104,101, -110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, - 99,107, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,100,111,110,101, 32, 61, 32, 49, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,112, - 97,114,116,105, 97,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101, -108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32, -101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, -125, 41, 10,101,110,100, 10, 10, 10,115,111,117,114, 99,101,116, 91, 34,100,101, -102, 97,117,108,116, 34, 93, 32, 61, 32,115,111,117,114, 99,101,116, 91, 34,117, -110,116,105,108, 45, 99,108,111,115,101,100, 34, 93, 10, 10,115,111,117,114, 99, -101, 32, 61, 32, 99,104,111,111,115,101, 40,115,111,117,114, 99,101,116, 41, 10, - 10, +102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32,105,102, 32,100,111,110,101, 32,116,104,101,110, 32,114,101,116,117, +114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 44, + 32,112, 97,114,116,105, 97,108, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101, +105,118,101, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, 73, 90, 69, + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, + 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117, +110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105, +102, 32,101,114,114, 32, 61, 61, 32, 34, 99,108,111,115,101,100, 34, 32,116,104, +101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115, +111, 99,107, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32,100,111,110,101, 32, 61, 32, 49, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, +112, 97,114,116,105, 97,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, + 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, + 32,125, 41, 10,101,110,100, 10, 10, 10,115,111,117,114, 99,101,116, 91, 34,100, +101,102, 97,117,108,116, 34, 93, 32, 61, 32,115,111,117,114, 99,101,116, 91, 34, +117,110,116,105,108, 45, 99,108,111,115,101,100, 34, 93, 10, 10,115,111,117,114, + 99,101, 32, 61, 32, 99,104,111,111,115,101, 40,115,111,117,114, 99,101,116, 41, + 10, 10, 0 }; return luaL_dostring(L, (const char*)B); } /* end of embedded lua code */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c b/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c index 6b8a79b4bc5..6734dc0b497 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c @@ -1,10 +1,8 @@ /*=========================================================================*\ -* TCP object +* TCP object * LuaSocket toolkit -* -* RCS ID: $Id: tcp.c,v 1.41 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ -#include <string.h> +#include <string.h> #include "lua.h" #include "lauxlib.h" @@ -19,8 +17,11 @@ * Internal function prototypes \*=========================================================================*/ static int global_create(lua_State *L); +static int global_create6(lua_State *L); +static int global_connect(lua_State *L); static int meth_connect(lua_State *L); static int meth_listen(lua_State *L); +static int meth_getfamily(lua_State *L); static int meth_bind(lua_State *L); static int meth_send(lua_State *L); static int meth_getstats(lua_State *L); @@ -31,6 +32,7 @@ static int meth_shutdown(lua_State *L); static int meth_receive(lua_State *L); static int meth_accept(lua_State *L); static int meth_close(lua_State *L); +static int meth_getoption(lua_State *L); static int meth_setoption(lua_State *L); static int meth_settimeout(lua_State *L); static int meth_getfd(lua_State *L); @@ -38,7 +40,7 @@ static int meth_setfd(lua_State *L); static int meth_dirty(lua_State *L); /* tcp object methods */ -static luaL_reg tcp[] = { +static luaL_Reg tcp_methods[] = { {"__gc", meth_close}, {"__tostring", auxiliar_tostring}, {"accept", meth_accept}, @@ -46,7 +48,9 @@ static luaL_reg tcp[] = { {"close", meth_close}, {"connect", meth_connect}, {"dirty", meth_dirty}, + {"getfamily", meth_getfamily}, {"getfd", meth_getfd}, + {"getoption", meth_getoption}, {"getpeername", meth_getpeername}, {"getsockname", meth_getsockname}, {"getstats", meth_getstats}, @@ -64,17 +68,28 @@ static luaL_reg tcp[] = { }; /* socket option handlers */ -static t_opt opt[] = { - {"keepalive", opt_keepalive}, - {"reuseaddr", opt_reuseaddr}, - {"tcp-nodelay", opt_tcp_nodelay}, - {"linger", opt_linger}, +static t_opt optget[] = { + {"keepalive", opt_get_keepalive}, + {"reuseaddr", opt_get_reuseaddr}, + {"tcp-nodelay", opt_get_tcp_nodelay}, + {"linger", opt_get_linger}, + {NULL, NULL} +}; + +static t_opt optset[] = { + {"keepalive", opt_set_keepalive}, + {"reuseaddr", opt_set_reuseaddr}, + {"tcp-nodelay", opt_set_tcp_nodelay}, + {"ipv6-v6only", opt_set_ip6_v6only}, + {"linger", opt_set_linger}, {NULL, NULL} }; /* functions in library namespace */ -static luaL_reg func[] = { +static luaL_Reg func[] = { {"tcp", global_create}, + {"tcp6", global_create6}, + {"connect", global_connect}, {NULL, NULL} }; @@ -84,15 +99,15 @@ static luaL_reg func[] = { int tcp_open(lua_State *L) { /* create classes */ - auxiliar_newclass(L, "tcp{master}", tcp); - auxiliar_newclass(L, "tcp{client}", tcp); - auxiliar_newclass(L, "tcp{server}", tcp); + auxiliar_newclass(L, "tcp{master}", tcp_methods); + auxiliar_newclass(L, "tcp{client}", tcp_methods); + auxiliar_newclass(L, "tcp{server}", tcp_methods); /* create class groups */ auxiliar_add2group(L, "tcp{master}", "tcp{any}"); auxiliar_add2group(L, "tcp{client}", "tcp{any}"); auxiliar_add2group(L, "tcp{server}", "tcp{any}"); /* define library functions */ - luaL_openlib(L, NULL, func, 0); + luaL_openlib(L, NULL, func, 0); return 0; } @@ -125,10 +140,16 @@ static int meth_setstats(lua_State *L) { /*-------------------------------------------------------------------------*\ * Just call option handler \*-------------------------------------------------------------------------*/ +static int meth_getoption(lua_State *L) +{ + p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); + return opt_meth_getoption(L, optget, &tcp->sock); +} + static int meth_setoption(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); - return opt_meth_setoption(L, opt, &tcp->sock); + return opt_meth_setoption(L, optset, &tcp->sock); } /*-------------------------------------------------------------------------*\ @@ -145,7 +166,7 @@ static int meth_getfd(lua_State *L) static int meth_setfd(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); - tcp->sock = (t_socket) luaL_checknumber(L, 2); + tcp->sock = (t_socket) luaL_checknumber(L, 2); return 0; } @@ -157,43 +178,52 @@ static int meth_dirty(lua_State *L) } /*-------------------------------------------------------------------------*\ -* Waits for and returns a client object attempting connection to the -* server object +* Waits for and returns a client object attempting connection to the +* server object \*-------------------------------------------------------------------------*/ static int meth_accept(lua_State *L) { p_tcp server = (p_tcp) auxiliar_checkclass(L, "tcp{server}", 1); p_timeout tm = timeout_markstart(&server->tm); t_socket sock; - int err = socket_accept(&server->sock, &sock, NULL, NULL, tm); + const char *err = inet_tryaccept(&server->sock, server->family, &sock, tm); /* if successful, push client socket */ - if (err == IO_DONE) { + if (err == NULL) { p_tcp clnt = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); auxiliar_setclass(L, "tcp{client}", -1); /* initialize structure fields */ + memset(clnt, 0, sizeof(t_tcp)); socket_setnonblocking(&sock); clnt->sock = sock; - io_init(&clnt->io, (p_send) socket_send, (p_recv) socket_recv, + io_init(&clnt->io, (p_send) socket_send, (p_recv) socket_recv, (p_error) socket_ioerror, &clnt->sock); timeout_init(&clnt->tm, -1, -1); buffer_init(&clnt->buf, &clnt->io, &clnt->tm); + clnt->family = server->family; return 1; } else { - lua_pushnil(L); - lua_pushstring(L, socket_strerror(err)); + lua_pushnil(L); + lua_pushstring(L, err); return 2; } } /*-------------------------------------------------------------------------*\ -* Binds an object to an address +* Binds an object to an address \*-------------------------------------------------------------------------*/ static int meth_bind(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{master}", 1); const char *address = luaL_checkstring(L, 2); - unsigned short port = (unsigned short) luaL_checknumber(L, 3); - const char *err = inet_trybind(&tcp->sock, address, port); + const char *port = luaL_checkstring(L, 3); + const char *err; + struct addrinfo bindhints; + memset(&bindhints, 0, sizeof(bindhints)); + bindhints.ai_socktype = SOCK_STREAM; + bindhints.ai_family = tcp->family; + bindhints.ai_flags = AI_PASSIVE; + address = strcmp(address, "*")? address: NULL; + err = inet_trybind(&tcp->sock, address, port, &bindhints); if (err) { lua_pushnil(L); lua_pushstring(L, err); @@ -210,9 +240,15 @@ static int meth_connect(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); const char *address = luaL_checkstring(L, 2); - unsigned short port = (unsigned short) luaL_checknumber(L, 3); - p_timeout tm = timeout_markstart(&tcp->tm); - const char *err = inet_tryconnect(&tcp->sock, address, port, tm); + const char *port = luaL_checkstring(L, 3); + struct addrinfo connecthints; + const char *err; + memset(&connecthints, 0, sizeof(connecthints)); + connecthints.ai_socktype = SOCK_STREAM; + /* make sure we try to connect only to the same family */ + connecthints.ai_family = tcp->family; + timeout_markstart(&tcp->tm); + err = inet_tryconnect(&tcp->sock, address, port, &tcp->tm, &connecthints); /* have to set the class even if it failed due to non-blocking connects */ auxiliar_setclass(L, "tcp{client}", 1); if (err) { @@ -220,13 +256,12 @@ static int meth_connect(lua_State *L) lua_pushstring(L, err); return 2; } - /* turn master object into a client object */ lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ -* Closes socket used by object +* Closes socket used by object \*-------------------------------------------------------------------------*/ static int meth_close(lua_State *L) { @@ -237,6 +272,21 @@ static int meth_close(lua_State *L) } /*-------------------------------------------------------------------------*\ +* Returns family as string +\*-------------------------------------------------------------------------*/ +static int meth_getfamily(lua_State *L) +{ + p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); + if (tcp->family == PF_INET6) { + lua_pushliteral(L, "inet6"); + return 1; + } else { + lua_pushliteral(L, "inet4"); + return 1; + } +} + +/*-------------------------------------------------------------------------*\ * Puts the sockt in listen mode \*-------------------------------------------------------------------------*/ static int meth_listen(lua_State *L) @@ -260,27 +310,13 @@ static int meth_listen(lua_State *L) \*-------------------------------------------------------------------------*/ static int meth_shutdown(lua_State *L) { + /* SHUT_RD, SHUT_WR, SHUT_RDWR have the value 0, 1, 2, so we can use method index directly */ + static const char* methods[] = { "receive", "send", "both", NULL }; p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); - const char *how = luaL_optstring(L, 2, "both"); - switch (how[0]) { - case 'b': - if (strcmp(how, "both")) goto error; - socket_shutdown(&tcp->sock, 2); - break; - case 's': - if (strcmp(how, "send")) goto error; - socket_shutdown(&tcp->sock, 1); - break; - case 'r': - if (strcmp(how, "receive")) goto error; - socket_shutdown(&tcp->sock, 0); - break; - } + int how = luaL_checkoption(L, 2, "both", methods); + socket_shutdown(&tcp->sock, how); lua_pushnumber(L, 1); return 1; -error: - luaL_argerror(L, 2, "invalid shutdown method"); - return 0; } /*-------------------------------------------------------------------------*\ @@ -289,13 +325,13 @@ error: static int meth_getpeername(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); - return inet_meth_getpeername(L, &tcp->sock); + return inet_meth_getpeername(L, &tcp->sock, tcp->family); } static int meth_getsockname(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); - return inet_meth_getsockname(L, &tcp->sock); + return inet_meth_getsockname(L, &tcp->sock, tcp->family); } /*-------------------------------------------------------------------------*\ @@ -311,25 +347,31 @@ static int meth_settimeout(lua_State *L) * Library functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ -* Creates a master tcp object +* Creates a master tcp object \*-------------------------------------------------------------------------*/ -static int global_create(lua_State *L) -{ +static int tcp_create(lua_State *L, int family) { t_socket sock; - const char *err = inet_trycreate(&sock, SOCK_STREAM); + const char *err = inet_trycreate(&sock, family, SOCK_STREAM); /* try to allocate a system socket */ - if (!err) { + if (!err) { /* allocate tcp object */ p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); + memset(tcp, 0, sizeof(t_tcp)); /* set its type as master object */ auxiliar_setclass(L, "tcp{master}", -1); /* initialize remaining structure fields */ socket_setnonblocking(&sock); + if (family == PF_INET6) { + int yes = 1; + setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, + (void *)&yes, sizeof(yes)); + } tcp->sock = sock; - io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv, + io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv, (p_error) socket_ioerror, &tcp->sock); timeout_init(&tcp->tm, -1, -1); buffer_init(&tcp->buf, &tcp->io, &tcp->tm); + tcp->family = family; return 1; } else { lua_pushnil(L); @@ -337,3 +379,97 @@ static int global_create(lua_State *L) return 2; } } + +static int global_create(lua_State *L) { + return tcp_create(L, AF_INET); +} + +static int global_create6(lua_State *L) { + return tcp_create(L, AF_INET6); +} + +static const char *tryconnect6(const char *remoteaddr, const char *remoteserv, + struct addrinfo *connecthints, p_tcp tcp) { + struct addrinfo *iterator = NULL, *resolved = NULL; + const char *err = NULL; + /* try resolving */ + err = socket_gaistrerror(getaddrinfo(remoteaddr, remoteserv, + connecthints, &resolved)); + if (err != NULL) { + if (resolved) freeaddrinfo(resolved); + return err; + } + /* iterate over all returned addresses trying to connect */ + for (iterator = resolved; iterator; iterator = iterator->ai_next) { + p_timeout tm = timeout_markstart(&tcp->tm); + /* create new socket if one wasn't created by the bind stage */ + if (tcp->sock == SOCKET_INVALID) { + err = socket_strerror(socket_create(&tcp->sock, + iterator->ai_family, iterator->ai_socktype, + iterator->ai_protocol)); + if (err != NULL) { + freeaddrinfo(resolved); + return err; + } + tcp->family = iterator->ai_family; + /* all sockets initially non-blocking */ + socket_setnonblocking(&tcp->sock); + } + /* finally try connecting to remote address */ + err = socket_strerror(socket_connect(&tcp->sock, + (SA *) iterator->ai_addr, + (socklen_t) iterator->ai_addrlen, tm)); + /* if success, break out of loop */ + if (err == NULL) break; + } + + freeaddrinfo(resolved); + /* here, if err is set, we failed */ + return err; +} + +static int global_connect(lua_State *L) { + const char *remoteaddr = luaL_checkstring(L, 1); + const char *remoteserv = luaL_checkstring(L, 2); + const char *localaddr = luaL_optstring(L, 3, NULL); + const char *localserv = luaL_optstring(L, 4, "0"); + int family = inet_optfamily(L, 5, "unspec"); + p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); + struct addrinfo bindhints, connecthints; + const char *err = NULL; + /* initialize tcp structure */ + memset(tcp, 0, sizeof(t_tcp)); + io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv, + (p_error) socket_ioerror, &tcp->sock); + timeout_init(&tcp->tm, -1, -1); + buffer_init(&tcp->buf, &tcp->io, &tcp->tm); + tcp->sock = SOCKET_INVALID; + /* allow user to pick local address and port */ + memset(&bindhints, 0, sizeof(bindhints)); + bindhints.ai_socktype = SOCK_STREAM; + bindhints.ai_family = family; + bindhints.ai_flags = AI_PASSIVE; + if (localaddr) { + err = inet_trybind(&tcp->sock, localaddr, localserv, &bindhints); + if (err) { + lua_pushnil(L); + lua_pushstring(L, err); + return 2; + } + tcp->family = bindhints.ai_family; + } + /* try to connect to remote address and port */ + memset(&connecthints, 0, sizeof(connecthints)); + connecthints.ai_socktype = SOCK_STREAM; + /* make sure we try to connect only to the same family */ + connecthints.ai_family = bindhints.ai_family; + err = tryconnect6(remoteaddr, remoteserv, &connecthints, tcp); + if (err) { + socket_destroy(&tcp->sock); + lua_pushnil(L); + lua_pushstring(L, err); + return 2; + } + auxiliar_setclass(L, "tcp{client}", -1); + return 1; +} diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h b/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h index 511357f371a..eded620324d 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h @@ -13,8 +13,6 @@ * objects are tcp objects bound to some local address. Client objects are * tcp objects either connected to some address or returned by the accept * method of a server object. -* -* RCS ID: $Id: tcp.h,v 1.7 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" @@ -27,6 +25,7 @@ typedef struct t_tcp_ { t_io io; t_buffer buf; t_timeout tm; + int family; } t_tcp; typedef t_tcp *p_tcp; diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c b/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c index c1df1021811..c7354b52f38 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c @@ -1,10 +1,10 @@ /*=========================================================================*\ * Timeout management functions * LuaSocket toolkit -* -* RCS ID: $Id: timeout.c,v 1.30 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include <stdio.h> +#include <limits.h> +#include <float.h> #include "lua.h" #include "lauxlib.h" @@ -33,7 +33,7 @@ static int timeout_lua_gettime(lua_State *L); static int timeout_lua_sleep(lua_State *L); -static luaL_reg func[] = { +static luaL_Reg func[] = { { "gettime", timeout_lua_gettime }, { "sleep", timeout_lua_sleep }, { NULL, NULL } @@ -187,13 +187,23 @@ static int timeout_lua_gettime(lua_State *L) /*-------------------------------------------------------------------------*\ * Sleep for n seconds. \*-------------------------------------------------------------------------*/ +#ifdef _WIN32 int timeout_lua_sleep(lua_State *L) { double n = luaL_checknumber(L, 1); -#ifdef _WIN32 - Sleep((int)(n*1000)); + if (n < 0.0) n = 0.0; + if (n < DBL_MAX/1000.0) n *= 1000.0; + if (n > INT_MAX) n = INT_MAX; + Sleep((int)n); + return 0; +} #else +int timeout_lua_sleep(lua_State *L) +{ + double n = luaL_checknumber(L, 1); struct timespec t, r; + if (n < 0.0) n = 0.0; + if (n > INT_MAX) n = INT_MAX; t.tv_sec = (int) n; n -= t.tv_sec; t.tv_nsec = (int) (n * 1000000000); @@ -202,6 +212,6 @@ int timeout_lua_sleep(lua_State *L) t.tv_sec = r.tv_sec; t.tv_nsec = r.tv_nsec; } -#endif return 0; } +#endif diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h b/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h index d2d8964100f..6715ca70a1b 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h @@ -3,8 +3,6 @@ /*=========================================================================*\ * Timeout management functions * LuaSocket toolkit -* -* RCS ID: $Id: timeout.h,v 1.14 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua index 0683869499f..2ffe9a45818 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua @@ -2,7 +2,6 @@ -- Unified SMTP/FTP subsystem -- LuaSocket toolkit. -- Author: Diego Nehab --- RCS ID: $Id: tp.lua,v 1.22 2006/03/14 09:04:15 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -64,6 +63,7 @@ function metat.__index:check(ok) end function metat.__index:command(cmd, arg) + cmd = string.upper(cmd) if arg then return self.c:send(cmd .. " " .. arg.. "\r\n") else @@ -105,7 +105,7 @@ end -- closes the underlying c function metat.__index:close() self.c:close() - return 1 + return 1 end -- connect with server and return c object diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c index 897579d53ef..78ae2111e02 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c @@ -1,5 +1,5 @@ /* - * This file is auto-generated by "./lua2c tp.lua tp_lua" + * This file is auto-generated by "lua2c tp.lua tp_lua" */ #include "lua.h" @@ -14,180 +14,178 @@ int luatex_tp_lua_open (lua_State *L) { 32, 85,110,105,102,105,101,100, 32, 83, 77, 84, 80, 47, 70, 84, 80, 32,115,117, 98,115,121,115,116,101,109, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, - 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, - 73, 68, 58, 32, 36, 73,100, 58, 32,116,112, 46,108,117, 97, 44,118, 32, 49, 46, - 50, 50, 32, 50, 48, 48, 54, 47, 48, 51, 47, 49, 52, 32, 48, 57, 58, 48, 52, 58, - 49, 53, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, + 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97, -114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, - 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, + 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100, +101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97, -115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, - 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, - 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117, -105,114,101, 40, 34,115,111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32, -108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, - 49, 50, 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46, -116,112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, + 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, + 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108, +111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117,105,114, +101, 40, 34,115,111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32,108,116, +110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50, + 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,116,112, + 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, - 97,110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110, +116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 10, 45, 45, 45, + 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 73,109, -112,108,101,109,101,110,116, 97,116,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 73,109,112,108, +101,109,101,110,116, 97,116,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,103,101,116,115, 32,115, -101,114,118,101,114, 32,114,101,112,108,121, 32, 40,119,111,114,107,115, 32,102, -111,114, 32, 83, 77, 84, 80, 32, 97,110,100, 32, 70, 84, 80, 41, 10,108,111, 99, - 97,108, 32,102,117,110, 99,116,105,111,110, 32,103,101,116, 95,114,101,112,108, -121, 40, 99, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, - 32, 99,117,114,114,101,110,116, 44, 32,115,101,112, 10, 32, 32, 32, 32,108,111, - 99, 97,108, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101, - 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101, -112,108,121, 32, 61, 32,108,105,110,101, 10, 32, 32, 32, 32,105,102, 32,101,114, -114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101, -114,114, 32,101,110,100, 10, 32, 32, 32, 32, 99,111,100,101, 44, 32,115,101,112, - 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116, -114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 37, -100, 37,100, 37,100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32,105,102, - 32,110,111,116, 32, 99,111,100,101, 32,116,104,101,110, 32,114,101,116,117,114, -110, 32,110,105,108, 44, 32, 34,105,110,118, 97,108,105,100, 32,115,101,114,118, -101,114, 32,114,101,112,108,121, 34, 32,101,110,100, 10, 32, 32, 32, 32,105,102, - 32,115,101,112, 32, 61, 61, 32, 34, 45, 34, 32,116,104,101,110, 32, 45, 45, 32, -114,101,112,108,121, 32,105,115, 32,109,117,108,116,105,108,105,110,101, 10, 32, - 32, 32, 32, 32, 32, 32, 32,114,101,112,101, 97,116, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58, -114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, - 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 99,117,114,114,101,110,116, 44, 32,115,101,112, 32, 61, + 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,103,101,116,115, 32,115,101,114, +118,101,114, 32,114,101,112,108,121, 32, 40,119,111,114,107,115, 32,102,111,114, + 32, 83, 77, 84, 80, 32, 97,110,100, 32, 70, 84, 80, 41, 10,108,111, 99, 97,108, + 32,102,117,110, 99,116,105,111,110, 32,103,101,116, 95,114,101,112,108,121, 40, + 99, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32, 99, +117,114,114,101,110,116, 44, 32,115,101,112, 10, 32, 32, 32, 32,108,111, 99, 97, +108, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101, 99,101, +105,118,101, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,112,108, +121, 32, 61, 32,108,105,110,101, 10, 32, 32, 32, 32,105,102, 32,101,114,114, 32, +116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, + 32,101,110,100, 10, 32, 32, 32, 32, 99,111,100,101, 44, 32,115,101,112, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,114,105, 110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 37,100, 37, -100, 37,100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32,114,101,112,108,121, 32, 61, 32,114,101,112,108,121, 32, 46, 46, - 32, 34, 92,110, 34, 32, 46, 46, 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 45, 45, 32,114,101,112,108,121, 32,101,110,100,115, 32,119,105,116,104, - 32,115, 97,109,101, 32, 99,111,100,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,117, -110,116,105,108, 32, 99,111,100,101, 32, 61, 61, 32, 99,117,114,114,101,110,116, - 32, 97,110,100, 32,115,101,112, 32, 61, 61, 32, 34, 32, 34, 10, 32, 32, 32, 32, -101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,111,100,101, 44, - 32,114,101,112,108,121, 10,101,110,100, 10, 10, 45, 45, 32,109,101,116, 97,116, - 97, 98,108,101, 32,102,111,114, 32,115,111, 99,107, 32,111, 98,106,101, 99,116, - 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105, -110,100,101,120, 32, 61, 32,123,125, 32,125, 10, 10,102,117,110, 99,116,105,111, -110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,104,101, 99, -107, 40,111,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, - 44, 32,114,101,112,108,121, 32, 61, 32,103,101,116, 95,114,101,112,108,121, 40, -115,101,108,102, 46, 99, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99, -111,100,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, - 32,114,101,112,108,121, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 98, 97, -115,101, 46,116,121,112,101, 40,111,107, 41, 32,126, 61, 32, 34,102,117,110, 99, -116,105,111,110, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, -102, 32, 98, 97,115,101, 46,116,121,112,101, 40,111,107, 41, 32, 61, 61, 32, 34, -116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32,102,111,114, 32,105, 44, 32,118, 32,105,110, 32, 98, 97,115,101, - 46,105,112, 97,105,114,115, 40,111,107, 41, 32,100,111, 10, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, - 46,102,105,110,100, 40, 99,111,100,101, 44, 32,118, 41, 32,116,104,101,110, 10, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -114,101,116,117,114,110, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, - 40, 99,111,100,101, 41, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,112,108,121, 10, - 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, - 99,111,100,101, 44, 32,111,107, 41, 32,116,104,101,110, 32,114,101,116,117,114, -110, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, - 41, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32,101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101, -112,108,121, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, - 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,111,107, 40, 98, - 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32, -114,101,112,108,121, 41, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99, -116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99, -111,109,109, 97,110,100, 40, 99,109,100, 44, 32, 97,114,103, 41, 10, 32, 32, 32, - 32,105,102, 32, 97,114,103, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, - 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,101,110,100, 40, - 99,109,100, 32, 46, 46, 32, 34, 32, 34, 32, 46, 46, 32, 97,114,103, 46, 46, 32, - 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, - 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,115, -101,110,100, 40, 99,109,100, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, - 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, - 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,105,110,107, 40, -115,110,107, 44, 32,112, 97,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, - 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101, 99,101,105, -118,101, 40,112, 97,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, -110,107, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10,101,110,100, 10, 10, -102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100, -101,120, 58,115,101,110,100, 40,100, 97,116, 97, 41, 10, 32, 32, 32, 32,114,101, -116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,101,110,100, 40,100, 97,116, - 97, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, - 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101, 40,112, - 97,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, - 99, 58,114,101, 99,101,105,118,101, 40,112, 97,116, 41, 10,101,110,100, 10, 10, -102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100, -101,120, 58,103,101,116,102,100, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114, -110, 32,115,101,108,102, 46, 99, 58,103,101,116,102,100, 40, 41, 10,101,110,100, - 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105, -110,100,101,120, 58,100,105,114,116,121, 40, 41, 10, 32, 32, 32, 32,114,101,116, -117,114,110, 32,115,101,108,102, 46, 99, 58,100,105,114,116,121, 40, 41, 10,101, -110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, - 95,105,110,100,101,120, 58,103,101,116, 99,111,110,116,114,111,108, 40, 41, 10, - 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 10,101,110, -100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95, -105,110,100,101,120, 58,115,111,117,114, 99,101, 40,115,111,117,114, 99,101, 44, - 32,115,116,101,112, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,110, -107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,107, 40, 34,107,101,101, -112, 45,111,112,101,110, 34, 44, 32,115,101,108,102, 46, 99, 41, 10, 32, 32, 32, - 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114, 32, 61, 32,108,116, -110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, - 32,115,105,110,107, 44, 32,115,116,101,112, 32,111,114, 32,108,116,110, 49, 50, - 46,112,117,109,112, 46,115,116,101,112, 41, 10, 32, 32, 32, 32,114,101,116,117, -114,110, 32,114,101,116, 44, 32,101,114,114, 10,101,110,100, 10, 10, 45, 45, 32, - 99,108,111,115,101,115, 32,116,104,101, 32,117,110,100,101,114,108,121,105,110, -103, 32, 99, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, - 95,105,110,100,101,120, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,115, -101,108,102, 46, 99, 58, 99,108,111,115,101, 40, 41, 10, 9,114,101,116,117,114, -110, 32, 49, 10,101,110,100, 10, 10, 45, 45, 32, 99,111,110,110,101, 99,116, 32, -119,105,116,104, 32,115,101,114,118,101,114, 32, 97,110,100, 32,114,101,116,117, -114,110, 32, 99, 32,111, 98,106,101, 99,116, 10,102,117,110, 99,116,105,111,110, - 32, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, 32,112,111,114,116, 44, - 32,116,105,109,101,111,117,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, - 32, 32,108,111, 99, 97,108, 32, 99, 44, 32,101, 32, 61, 32, 40, 99,114,101, 97, -116,101, 32,111,114, 32,115,111, 99,107,101,116, 46,116, 99,112, 41, 40, 41, 10, - 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99, 32,116,104,101,110, 32,114,101, -116,117,114,110, 32,110,105,108, 44, 32,101, 32,101,110,100, 10, 32, 32, 32, 32, - 99, 58,115,101,116,116,105,109,101,111,117,116, 40,116,105,109,101,111,117,116, - 32,111,114, 32, 84, 73, 77, 69, 79, 85, 84, 41, 10, 32, 32, 32, 32,108,111, 99, - 97,108, 32,114, 44, 32,101, 32, 61, 32, 99, 58, 99,111,110,110,101, 99,116, 40, -104,111,115,116, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105,102, 32,110, -111,116, 32,114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 58, - 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117, -114,110, 32,110,105,108, 44, 32,101, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, - 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, - 97,116, 97, 98,108,101, 40,123, 99, 32, 61, 32, 99,125, 44, 32,109,101,116, 97, -116, 41, 10,101,110,100, 10, 10, +100, 37,100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32,110, +111,116, 32, 99,111,100,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, +110,105,108, 44, 32, 34,105,110,118, 97,108,105,100, 32,115,101,114,118,101,114, + 32,114,101,112,108,121, 34, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,115, +101,112, 32, 61, 61, 32, 34, 45, 34, 32,116,104,101,110, 32, 45, 45, 32,114,101, +112,108,121, 32,105,115, 32,109,117,108,116,105,108,105,110,101, 10, 32, 32, 32, + 32, 32, 32, 32, 32,114,101,112,101, 97,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101, + 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110, +105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 99,117,114,114,101,110,116, 44, 32,115,101,112, 32, 61, 32,115, +111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,114,105,110,103, + 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 37,100, 37,100, 37, +100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,114,101,112,108,121, 32, 61, 32,114,101,112,108,121, 32, 46, 46, 32, 34, + 92,110, 34, 32, 46, 46, 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 45, 45, 32,114,101,112,108,121, 32,101,110,100,115, 32,119,105,116,104, 32,115, + 97,109,101, 32, 99,111,100,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,110,116, +105,108, 32, 99,111,100,101, 32, 61, 61, 32, 99,117,114,114,101,110,116, 32, 97, +110,100, 32,115,101,112, 32, 61, 61, 32, 34, 32, 34, 10, 32, 32, 32, 32,101,110, +100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,111,100,101, 44, 32,114, +101,112,108,121, 10,101,110,100, 10, 10, 45, 45, 32,109,101,116, 97,116, 97, 98, +108,101, 32,102,111,114, 32,115,111, 99,107, 32,111, 98,106,101, 99,116, 10,108, +111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100, +101,120, 32, 61, 32,123,125, 32,125, 10, 10,102,117,110, 99,116,105,111,110, 32, +109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,104,101, 99,107, 40, +111,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32, +114,101,112,108,121, 32, 61, 32,103,101,116, 95,114,101,112,108,121, 40,115,101, +108,102, 46, 99, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,111,100, +101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114, +101,112,108,121, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, + 46,116,121,112,101, 40,111,107, 41, 32,126, 61, 32, 34,102,117,110, 99,116,105, +111,110, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, + 98, 97,115,101, 46,116,121,112,101, 40,111,107, 41, 32, 61, 61, 32, 34,116, 97, + 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,102,111,114, 32,105, 44, 32,118, 32,105,110, 32, 98, 97,115,101, 46,105, +112, 97,105,114,115, 40,111,107, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102, +105,110,100, 40, 99,111,100,101, 44, 32,118, 41, 32,116,104,101,110, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101, +116,117,114,110, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99, +111,100,101, 41, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,112,108,121, 10, 32, 32, + 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111, +100,101, 44, 32,111,107, 41, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, + 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, + 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101, +108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,112,108, +121, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, + 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,111,107, 40, 98, 97,115, +101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32,114,101, +112,108,121, 41, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105, +111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,111,109, +109, 97,110,100, 40, 99,109,100, 44, 32, 97,114,103, 41, 10, 32, 32, 32, 32, 99, +109,100, 32, 61, 32,115,116,114,105,110,103, 46,117,112,112,101,114, 40, 99,109, +100, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,103, 32,116,104,101,110, 10, 32, + 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, + 58,115,101,110,100, 40, 99,109,100, 32, 46, 46, 32, 34, 32, 34, 32, 46, 46, 32, + 97,114,103, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,108, +115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101, +108,102, 46, 99, 58,115,101,110,100, 40, 99,109,100, 32, 46, 46, 32, 34, 92,114, + 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117, +110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, + 58,115,105,110,107, 40,115,110,107, 44, 32,112, 97,116, 41, 10, 32, 32, 32, 32, +108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32, 99, + 58,114,101, 99,101,105,118,101, 40,112, 97,116, 41, 10, 32, 32, 32, 32,114,101, +116,117,114,110, 32,115,110,107, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, + 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, + 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,100, 97,116, 97, 41, 10, + 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,101, +110,100, 40,100, 97,116, 97, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105, +111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99, +101,105,118,101, 40,112, 97,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, + 32,115,101,108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40,112, 97,116, 41, + 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, + 46, 95, 95,105,110,100,101,120, 58,103,101,116,102,100, 40, 41, 10, 32, 32, 32, + 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,103,101,116,102,100, + 40, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, + 97,116, 46, 95, 95,105,110,100,101,120, 58,100,105,114,116,121, 40, 41, 10, 32, + 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,100,105,114, +116,121, 40, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, +101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,103,101,116, 99,111,110,116, +114,111,108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108, +102, 46, 99, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, +116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,111,117,114, 99,101, 40,115, +111,117,114, 99,101, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,108,111, 99, + 97,108, 32,115,105,110,107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110, +107, 40, 34,107,101,101,112, 45,111,112,101,110, 34, 44, 32,115,101,108,102, 46, + 99, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114, +114, 32, 61, 32,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115, +111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32,115,116,101,112, 32,111,114, + 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 41, 10, 32, 32, + 32, 32,114,101,116,117,114,110, 32,114,101,116, 44, 32,101,114,114, 10,101,110, +100, 10, 10, 45, 45, 32, 99,108,111,115,101,115, 32,116,104,101, 32,117,110,100, +101,114,108,121,105,110,103, 32, 99, 10,102,117,110, 99,116,105,111,110, 32,109, +101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,108,111,115,101, 40, 41, + 10, 32, 32, 32, 32,115,101,108,102, 46, 99, 58, 99,108,111,115,101, 40, 41, 10, + 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10, 45, 45, + 32, 99,111,110,110,101, 99,116, 32,119,105,116,104, 32,115,101,114,118,101,114, + 32, 97,110,100, 32,114,101,116,117,114,110, 32, 99, 32,111, 98,106,101, 99,116, + 10,102,117,110, 99,116,105,111,110, 32, 99,111,110,110,101, 99,116, 40,104,111, +115,116, 44, 32,112,111,114,116, 44, 32,116,105,109,101,111,117,116, 44, 32, 99, +114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 44, 32, +101, 32, 61, 32, 40, 99,114,101, 97,116,101, 32,111,114, 32,115,111, 99,107,101, +116, 46,116, 99,112, 41, 40, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, + 99, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101, + 32,101,110,100, 10, 32, 32, 32, 32, 99, 58,115,101,116,116,105,109,101,111,117, +116, 40,116,105,109,101,111,117,116, 32,111,114, 32, 84, 73, 77, 69, 79, 85, 84, + 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114, 44, 32,101, 32, 61, 32, 99, + 58, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, 32,112,111,114,116, 41, + 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114, 32,116,104,101,110, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 99, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, + 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101, 10, 32, + 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97, +115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123, 99, 32, 61, + 32, 99,125, 44, 32,109,101,116, 97,116, 41, 10,101,110,100, 10, 10, 0 }; return luaL_dostring(L, (const char*)B); } /* end of embedded lua code */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/udp.c b/Build/source/texk/web2c/luatexdir/luasocket/src/udp.c index fc25aa027dc..8e14fac290f 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/udp.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/udp.c @@ -1,10 +1,8 @@ /*=========================================================================*\ -* UDP object +* UDP object * LuaSocket toolkit -* -* RCS ID: $Id: udp.c,v 1.29 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ -#include <string.h> +#include <string.h> #include "lua.h" #include "lauxlib.h" @@ -18,36 +16,40 @@ /* min and max macros */ #ifndef MIN #define MIN(x, y) ((x) < (y) ? x : y) -#endif +#endif #ifndef MAX #define MAX(x, y) ((x) > (y) ? x : y) -#endif +#endif /*=========================================================================*\ * Internal function prototypes \*=========================================================================*/ static int global_create(lua_State *L); +static int global_create6(lua_State *L); static int meth_send(lua_State *L); static int meth_sendto(lua_State *L); static int meth_receive(lua_State *L); static int meth_receivefrom(lua_State *L); +static int meth_getfamily(lua_State *L); static int meth_getsockname(lua_State *L); static int meth_getpeername(lua_State *L); static int meth_setsockname(lua_State *L); static int meth_setpeername(lua_State *L); static int meth_close(lua_State *L); static int meth_setoption(lua_State *L); +static int meth_getoption(lua_State *L); static int meth_settimeout(lua_State *L); static int meth_getfd(lua_State *L); static int meth_setfd(lua_State *L); static int meth_dirty(lua_State *L); /* udp object methods */ -static luaL_reg udp[] = { +static luaL_Reg udp_methods[] = { {"__gc", meth_close}, {"__tostring", auxiliar_tostring}, {"close", meth_close}, {"dirty", meth_dirty}, + {"getfamily", meth_getfamily}, {"getfd", meth_getfd}, {"getpeername", meth_getpeername}, {"getsockname", meth_getsockname}, @@ -57,27 +59,39 @@ static luaL_reg udp[] = { {"sendto", meth_sendto}, {"setfd", meth_setfd}, {"setoption", meth_setoption}, + {"getoption", meth_getoption}, {"setpeername", meth_setpeername}, {"setsockname", meth_setsockname}, {"settimeout", meth_settimeout}, {NULL, NULL} }; -/* socket options */ -static t_opt opt[] = { - {"dontroute", opt_dontroute}, - {"broadcast", opt_broadcast}, - {"reuseaddr", opt_reuseaddr}, - {"ip-multicast-ttl", opt_ip_multicast_ttl}, - {"ip-multicast-loop", opt_ip_multicast_loop}, - {"ip-add-membership", opt_ip_add_membership}, - {"ip-drop-membership", opt_ip_drop_membersip}, - {NULL, NULL} +/* socket options for setoption */ +static t_opt optset[] = { + {"dontroute", opt_set_dontroute}, + {"broadcast", opt_set_broadcast}, + {"reuseaddr", opt_set_reuseaddr}, + {"reuseport", opt_set_reuseport}, + {"ip-multicast-if", opt_set_ip_multicast_if}, + {"ip-multicast-ttl", opt_set_ip_multicast_ttl}, + {"ip-multicast-loop", opt_set_ip_multicast_loop}, + {"ip-add-membership", opt_set_ip_add_membership}, + {"ip-drop-membership", opt_set_ip_drop_membersip}, + {"ipv6-v6only", opt_set_ip6_v6only}, + {NULL, NULL} +}; + +/* socket options for getoption */ +static t_opt optget[] = { + {"ip-multicast-if", opt_get_ip_multicast_if}, + {"ip-multicast-loop", opt_get_ip_multicast_loop}, + {NULL, NULL} }; /* functions in library namespace */ -static luaL_reg func[] = { +static luaL_Reg func[] = { {"udp", global_create}, + {"udp6", global_create6}, {NULL, NULL} }; @@ -87,15 +101,15 @@ static luaL_reg func[] = { int udp_open(lua_State *L) { /* create classes */ - auxiliar_newclass(L, "udp{connected}", udp); - auxiliar_newclass(L, "udp{unconnected}", udp); + auxiliar_newclass(L, "udp{connected}", udp_methods); + auxiliar_newclass(L, "udp{unconnected}", udp_methods); /* create class groups */ auxiliar_add2group(L, "udp{connected}", "udp{any}"); auxiliar_add2group(L, "udp{unconnected}", "udp{any}"); auxiliar_add2group(L, "udp{connected}", "select{able}"); auxiliar_add2group(L, "udp{unconnected}", "select{able}"); /* define library functions */ - luaL_openlib(L, NULL, func, 0); + luaL_openlib(L, NULL, func, 0); return 0; } @@ -125,7 +139,7 @@ static int meth_send(lua_State *L) { lua_pushstring(L, udp_strerror(err)); return 2; } - lua_pushnumber(L, sent); + lua_pushnumber(L, (lua_Number) sent); return 1; } @@ -139,22 +153,43 @@ static int meth_sendto(lua_State *L) { const char *ip = luaL_checkstring(L, 3); unsigned short port = (unsigned short) luaL_checknumber(L, 4); p_timeout tm = &udp->tm; - struct sockaddr_in addr; int err; - memset(&addr, 0, sizeof(addr)); - if (!inet_aton(ip, &addr.sin_addr)) - luaL_argerror(L, 3, "invalid ip address"); - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - timeout_markstart(tm); - err = socket_sendto(&udp->sock, data, count, &sent, - (SA *) &addr, sizeof(addr), tm); + switch (udp->family) { + case PF_INET: { + struct sockaddr_in addr; + memset(&addr, 0, sizeof(addr)); + if (!inet_pton(AF_INET, ip, &addr.sin_addr)) + luaL_argerror(L, 3, "invalid ip address"); + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + timeout_markstart(tm); + err = socket_sendto(&udp->sock, data, count, &sent, + (SA *) &addr, sizeof(addr), tm); + break; + } + case PF_INET6: { + struct sockaddr_in6 addr; + memset(&addr, 0, sizeof(addr)); + if (!inet_pton(AF_INET6, ip, &addr.sin6_addr)) + luaL_argerror(L, 3, "invalid ip address"); + addr.sin6_family = AF_INET6; + addr.sin6_port = htons(port); + timeout_markstart(tm); + err = socket_sendto(&udp->sock, data, count, &sent, + (SA *) &addr, sizeof(addr), tm); + break; + } + default: + lua_pushnil(L); + lua_pushfstring(L, "unknown family %d", udp->family); + return 2; + } if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, udp_strerror(err)); return 2; } - lua_pushnumber(L, sent); + lua_pushnumber(L, (lua_Number) sent); return 1; } @@ -170,6 +205,9 @@ static int meth_receive(lua_State *L) { count = MIN(count, sizeof(buffer)); timeout_markstart(tm); err = socket_recv(&udp->sock, buffer, count, &got, tm); + /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */ + if (err == IO_CLOSED) + err = IO_DONE; if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, udp_strerror(err)); @@ -184,26 +222,82 @@ static int meth_receive(lua_State *L) { \*-------------------------------------------------------------------------*/ static int meth_receivefrom(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1); - struct sockaddr_in addr; - socklen_t addr_len = sizeof(addr); char buffer[UDP_DATAGRAMSIZE]; size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); int err; p_timeout tm = &udp->tm; timeout_markstart(tm); count = MIN(count, sizeof(buffer)); - err = socket_recvfrom(&udp->sock, buffer, count, &got, - (SA *) &addr, &addr_len, tm); - if (err == IO_DONE) { - lua_pushlstring(L, buffer, got); - lua_pushstring(L, inet_ntoa(addr.sin_addr)); - lua_pushnumber(L, ntohs(addr.sin_port)); - return 3; - } else { + switch (udp->family) { + case PF_INET: { + struct sockaddr_in addr; + socklen_t addr_len = sizeof(addr); + err = socket_recvfrom(&udp->sock, buffer, count, &got, + (SA *) &addr, &addr_len, tm); + /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */ + if (err == IO_CLOSED) + err = IO_DONE; + if (err == IO_DONE) { + char addrstr[INET_ADDRSTRLEN]; + lua_pushlstring(L, buffer, got); + if (!inet_ntop(AF_INET, &addr.sin_addr, + addrstr, sizeof(addrstr))) { + lua_pushnil(L); + lua_pushstring(L, "invalid source address"); + return 2; + } + lua_pushstring(L, addrstr); + lua_pushnumber(L, ntohs(addr.sin_port)); + return 3; + } + break; + } + case PF_INET6: { + struct sockaddr_in6 addr; + socklen_t addr_len = sizeof(addr); + err = socket_recvfrom(&udp->sock, buffer, count, &got, + (SA *) &addr, &addr_len, tm); + /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */ + if (err == IO_CLOSED) + err = IO_DONE; + if (err == IO_DONE) { + char addrstr[INET6_ADDRSTRLEN]; + lua_pushlstring(L, buffer, got); + if (!inet_ntop(AF_INET6, &addr.sin6_addr, + addrstr, sizeof(addrstr))) { + lua_pushnil(L); + lua_pushstring(L, "invalid source address"); + return 2; + } + lua_pushstring(L, addrstr); + lua_pushnumber(L, ntohs(addr.sin6_port)); + return 3; + } + break; + } + default: lua_pushnil(L); - lua_pushstring(L, udp_strerror(err)); + lua_pushfstring(L, "unknown family %d", udp->family); return 2; } + lua_pushnil(L); + lua_pushstring(L, udp_strerror(err)); + return 2; +} + +/*-------------------------------------------------------------------------*\ +* Returns family as string +\*-------------------------------------------------------------------------*/ +static int meth_getfamily(lua_State *L) +{ + p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); + if (udp->family == PF_INET6) { + lua_pushliteral(L, "inet6"); + return 1; + } else { + lua_pushliteral(L, "inet4"); + return 1; + } } /*-------------------------------------------------------------------------*\ @@ -234,12 +328,12 @@ static int meth_dirty(lua_State *L) { \*-------------------------------------------------------------------------*/ static int meth_getpeername(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{connected}", 1); - return inet_meth_getpeername(L, &udp->sock); + return inet_meth_getpeername(L, &udp->sock, udp->family); } static int meth_getsockname(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); - return inet_meth_getsockname(L, &udp->sock); + return inet_meth_getsockname(L, &udp->sock, udp->family); } /*-------------------------------------------------------------------------*\ @@ -247,7 +341,15 @@ static int meth_getsockname(lua_State *L) { \*-------------------------------------------------------------------------*/ static int meth_setoption(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); - return opt_meth_setoption(L, opt, &udp->sock); + return opt_meth_setoption(L, optset, &udp->sock); +} + +/*-------------------------------------------------------------------------*\ +* Just call option handler +\*-------------------------------------------------------------------------*/ +static int meth_getoption(lua_State *L) { + p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); + return opt_meth_getoption(L, optget, &udp->sock); } /*-------------------------------------------------------------------------*\ @@ -264,26 +366,36 @@ static int meth_settimeout(lua_State *L) { static int meth_setpeername(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); p_timeout tm = &udp->tm; - const char *address = luaL_checkstring(L, 2); + const char *address = luaL_checkstring(L, 2); int connecting = strcmp(address, "*"); - unsigned short port = connecting ? - (unsigned short) luaL_checknumber(L, 3) : - (unsigned short) luaL_optnumber(L, 3, 0); - const char *err = inet_tryconnect(&udp->sock, address, port, tm); - if (err) { - lua_pushnil(L); - lua_pushstring(L, err); - return 2; + const char *port = connecting? luaL_checkstring(L, 3): "0"; + struct addrinfo connecthints; + const char *err; + memset(&connecthints, 0, sizeof(connecthints)); + connecthints.ai_socktype = SOCK_DGRAM; + /* make sure we try to connect only to the same family */ + connecthints.ai_family = udp->family; + if (connecting) { + err = inet_tryconnect(&udp->sock, address, port, tm, &connecthints); + if (err) { + lua_pushnil(L); + lua_pushstring(L, err); + return 2; + } + auxiliar_setclass(L, "udp{connected}", 1); + } else { + /* we ignore possible errors because Mac OS X always + * returns EAFNOSUPPORT */ + inet_trydisconnect(&udp->sock, udp->family, tm); + auxiliar_setclass(L, "udp{unconnected}", 1); } /* change class to connected or unconnected depending on address */ - if (connecting) auxiliar_setclass(L, "udp{connected}", 1); - else auxiliar_setclass(L, "udp{unconnected}", 1); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ -* Closes socket used by object +* Closes socket used by object \*-------------------------------------------------------------------------*/ static int meth_close(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); @@ -298,8 +410,14 @@ static int meth_close(lua_State *L) { static int meth_setsockname(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1); const char *address = luaL_checkstring(L, 2); - unsigned short port = (unsigned short) luaL_checknumber(L, 3); - const char *err = inet_trybind(&udp->sock, address, port); + const char *port = luaL_checkstring(L, 3); + const char *err; + struct addrinfo bindhints; + memset(&bindhints, 0, sizeof(bindhints)); + bindhints.ai_socktype = SOCK_DGRAM; + bindhints.ai_family = udp->family; + bindhints.ai_flags = AI_PASSIVE; + err = inet_trybind(&udp->sock, address, port, &bindhints); if (err) { lua_pushnil(L); lua_pushstring(L, err); @@ -313,20 +431,26 @@ static int meth_setsockname(lua_State *L) { * Library functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ -* Creates a master udp object +* Creates a master udp object \*-------------------------------------------------------------------------*/ -static int global_create(lua_State *L) { +static int udp_create(lua_State *L, int family) { t_socket sock; - const char *err = inet_trycreate(&sock, SOCK_DGRAM); + const char *err = inet_trycreate(&sock, family, SOCK_DGRAM); /* try to allocate a system socket */ - if (!err) { - /* allocate tcp object */ + if (!err) { + /* allocate udp object */ p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp)); auxiliar_setclass(L, "udp{unconnected}", -1); /* initialize remaining structure fields */ socket_setnonblocking(&sock); + if (family == PF_INET6) { + int yes = 1; + setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, + (void *)&yes, sizeof(yes)); + } udp->sock = sock; timeout_init(&udp->tm, -1, -1); + udp->family = family; return 1; } else { lua_pushnil(L); @@ -334,3 +458,11 @@ static int global_create(lua_State *L) { return 2; } } + +static int global_create(lua_State *L) { + return udp_create(L, AF_INET); +} + +static int global_create6(lua_State *L) { + return udp_create(L, AF_INET6); +} diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/udp.h b/Build/source/texk/web2c/luatexdir/luasocket/src/udp.h index 28017121714..2b831a53716 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/udp.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/udp.h @@ -11,8 +11,6 @@ * originally unconnected. They can be "connected" to a given address * with a call to the setpeername function. The same function can be used to * break the connection. -* -* RCS ID: $Id: udp.h,v 1.10 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" @@ -25,6 +23,7 @@ typedef struct t_udp_ { t_socket sock; t_timeout tm; + int family; } t_udp; typedef t_udp *p_udp; diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/unix.c b/Build/source/texk/web2c/luatexdir/luasocket/src/unix.c index 158d319a5f2..73e7b69544c 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/unix.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/unix.c @@ -1,8 +1,6 @@ /*=========================================================================*\ * Unix domain socket * LuaSocket toolkit -* -* RCS ID: $Id: unix.c,v 1.13 2006/03/13 07:16:39 diego Exp $ \*=========================================================================*/ #include <string.h> @@ -39,7 +37,7 @@ static const char *unix_tryconnect(p_unix un, const char *path); static const char *unix_trybind(p_unix un, const char *path); /* unix object methods */ -static luaL_reg un[] = { +static luaL_Reg unix_methods[] = { {"__gc", meth_close}, {"__tostring", auxiliar_tostring}, {"accept", meth_accept}, @@ -63,15 +61,15 @@ static luaL_reg un[] = { }; /* socket option handlers */ -static t_opt opt[] = { - {"keepalive", opt_keepalive}, - {"reuseaddr", opt_reuseaddr}, - {"linger", opt_linger}, +static t_opt optset[] = { + {"keepalive", opt_set_keepalive}, + {"reuseaddr", opt_set_reuseaddr}, + {"linger", opt_set_linger}, {NULL, NULL} }; /* our socket creation function */ -static luaL_reg func[] = { +static luaL_Reg func[] = { {"unix", global_create}, {NULL, NULL} }; @@ -82,9 +80,9 @@ static luaL_reg func[] = { \*-------------------------------------------------------------------------*/ int luaopen_socket_unix(lua_State *L) { /* create classes */ - auxiliar_newclass(L, "unix{master}", un); - auxiliar_newclass(L, "unix{client}", un); - auxiliar_newclass(L, "unix{server}", un); + auxiliar_newclass(L, "unix{master}", unix_methods); + auxiliar_newclass(L, "unix{client}", unix_methods); + auxiliar_newclass(L, "unix{server}", unix_methods); /* create class groups */ auxiliar_add2group(L, "unix{master}", "unix{any}"); auxiliar_add2group(L, "unix{client}", "unix{any}"); @@ -128,7 +126,7 @@ static int meth_setstats(lua_State *L) { \*-------------------------------------------------------------------------*/ static int meth_setoption(lua_State *L) { p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1); - return opt_meth_setoption(L, opt, &un->sock); + return opt_meth_setoption(L, optset, &un->sock); } /*-------------------------------------------------------------------------*\ @@ -294,27 +292,13 @@ static int meth_listen(lua_State *L) \*-------------------------------------------------------------------------*/ static int meth_shutdown(lua_State *L) { - p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); - const char *how = luaL_optstring(L, 2, "both"); - switch (how[0]) { - case 'b': - if (strcmp(how, "both")) goto error; - socket_shutdown(&un->sock, 2); - break; - case 's': - if (strcmp(how, "send")) goto error; - socket_shutdown(&un->sock, 1); - break; - case 'r': - if (strcmp(how, "receive")) goto error; - socket_shutdown(&un->sock, 0); - break; - } + /* SHUT_RD, SHUT_WR, SHUT_RDWR have the value 0, 1, 2, so we can use method index directly */ + static const char* methods[] = { "receive", "send", "both", NULL }; + p_unix tcp = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); + int how = luaL_checkoption(L, 2, "both", methods); + socket_shutdown(&tcp->sock, how); lua_pushnumber(L, 1); return 1; -error: - luaL_argerror(L, 2, "invalid shutdown method"); - return 0; } /*-------------------------------------------------------------------------*\ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/unix.h b/Build/source/texk/web2c/luatexdir/luasocket/src/unix.h index 32b7380fffa..ad305079dd7 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/unix.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/unix.h @@ -6,14 +6,13 @@ * * This module is just an example of how to extend LuaSocket with a new * domain. -* -* RCS ID: $Id: unix.h,v 1.9 2006/03/13 07:16:39 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "buffer.h" #include "timeout.h" #include "socket.h" +#include "luasocket.h" typedef struct t_unix_ { t_socket sock; @@ -23,6 +22,6 @@ typedef struct t_unix_ { } t_unix; typedef t_unix *p_unix; -int luaopen_socket_unix(lua_State *L); +LUASOCKET_API int luaopen_socket_unix(lua_State *L); #endif /* UNIX_H */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/url.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/url.lua index 0e31d8af20d..6ca6d684499 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/url.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/url.lua @@ -2,7 +2,6 @@ -- URI parsing, composition and relative URL resolution -- LuaSocket toolkit. -- Author: Diego Nehab --- RCS ID: $Id: url.lua,v 1.38 2006/04/03 04:45:42 diego Exp $ ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- @@ -16,7 +15,7 @@ module("socket.url") ----------------------------------------------------------------------------- -- Module version ----------------------------------------------------------------------------- -_VERSION = "URL 1.0.1" +_VERSION = "URL 1.0.2" ----------------------------------------------------------------------------- -- Encodes a string into its escaped hexadecimal representation @@ -26,9 +25,9 @@ _VERSION = "URL 1.0.1" -- escaped representation of string binary ----------------------------------------------------------------------------- function escape(s) - return string.gsub(s, "([^A-Za-z0-9_])", function(c) + return (string.gsub(s, "([^A-Za-z0-9_])", function(c) return string.format("%%%02x", string.byte(c)) - end) + end)) end ----------------------------------------------------------------------------- @@ -40,25 +39,25 @@ end -- escaped representation of string binary ----------------------------------------------------------------------------- local function make_set(t) - local s = {} - for i,v in base.ipairs(t) do - s[t[i]] = 1 - end - return s + local s = {} + for i,v in base.ipairs(t) do + s[t[i]] = 1 + end + return s end -- these are allowed withing a path segment, along with alphanum -- other characters must be escaped local segment_set = make_set { "-", "_", ".", "!", "~", "*", "'", "(", - ")", ":", "@", "&", "=", "+", "$", ",", + ")", ":", "@", "&", "=", "+", "$", ",", } local function protect_segment(s) - return string.gsub(s, "([^A-Za-z0-9_])", function (c) - if segment_set[c] then return c - else return string.format("%%%02x", string.byte(c)) end - end) + return string.gsub(s, "([^A-Za-z0-9_])", function (c) + if segment_set[c] then return c + else return string.format("%%%02x", string.byte(c)) end + end) end ----------------------------------------------------------------------------- @@ -69,9 +68,9 @@ end -- escaped representation of string binary ----------------------------------------------------------------------------- function unescape(s) - return string.gsub(s, "%%(%x%x)", function(hex) + return (string.gsub(s, "%%(%x%x)", function(hex) return string.char(base.tonumber(hex, 16)) - end) + end)) end ----------------------------------------------------------------------------- @@ -142,7 +141,7 @@ function parse(url, default) parsed.authority = n return "" end) - -- get query stringing + -- get query string url = string.gsub(url, "%?(.*)", function(q) parsed.query = q return "" @@ -158,9 +157,12 @@ function parse(url, default) if not authority then return parsed end authority = string.gsub(authority,"^([^@]*)@", function(u) parsed.userinfo = u; return "" end) - authority = string.gsub(authority, ":([^:]*)$", + authority = string.gsub(authority, ":([^:%]]*)$", function(p) parsed.port = p; return "" end) - if authority ~= "" then parsed.host = authority end + if authority ~= "" then + -- IPv6? + parsed.host = string.match(authority, "^%[(.+)%]$") or authority + end local userinfo = parsed.userinfo if not userinfo then return parsed end userinfo = string.gsub(userinfo, ":([^:]*)$", @@ -182,19 +184,22 @@ function build(parsed) local url = build_path(ppath) if parsed.params then url = url .. ";" .. parsed.params end if parsed.query then url = url .. "?" .. parsed.query end - local authority = parsed.authority - if parsed.host then - authority = parsed.host - if parsed.port then authority = authority .. ":" .. parsed.port end - local userinfo = parsed.userinfo - if parsed.user then - userinfo = parsed.user - if parsed.password then - userinfo = userinfo .. ":" .. parsed.password - end - end - if userinfo then authority = userinfo .. "@" .. authority end - end + local authority = parsed.authority + if parsed.host then + authority = parsed.host + if string.find(authority, ":") then -- IPv6? + authority = "[" .. authority .. "]" + end + if parsed.port then authority = authority .. ":" .. parsed.port end + local userinfo = parsed.userinfo + if parsed.user then + userinfo = parsed.user + if parsed.password then + userinfo = userinfo .. ":" .. parsed.password + end + end + if userinfo then authority = userinfo .. "@" .. authority end + end if authority then url = "//" .. authority .. url end if parsed.scheme then url = parsed.scheme .. ":" .. url end if parsed.fragment then url = url .. "#" .. parsed.fragment end @@ -250,16 +255,16 @@ end -- segment: a table with one entry per segment ----------------------------------------------------------------------------- function parse_path(path) - local parsed = {} - path = path or "" - --path = string.gsub(path, "%s", "") - string.gsub(path, "([^/]+)", function (s) table.insert(parsed, s) end) - for i = 1, table.getn(parsed) do - parsed[i] = unescape(parsed[i]) - end - if string.sub(path, 1, 1) == "/" then parsed.is_absolute = 1 end - if string.sub(path, -1, -1) == "/" then parsed.is_directory = 1 end - return parsed + local parsed = {} + path = path or "" + --path = string.gsub(path, "%s", "") + string.gsub(path, "([^/]+)", function (s) table.insert(parsed, s) end) + for i = 1, #parsed do + parsed[i] = unescape(parsed[i]) + end + if string.sub(path, 1, 1) == "/" then parsed.is_absolute = 1 end + if string.sub(path, -1, -1) == "/" then parsed.is_directory = 1 end + return parsed end ----------------------------------------------------------------------------- @@ -271,27 +276,27 @@ end -- path: corresponding path stringing ----------------------------------------------------------------------------- function build_path(parsed, unsafe) - local path = "" - local n = table.getn(parsed) - if unsafe then - for i = 1, n-1 do - path = path .. parsed[i] - path = path .. "/" - end - if n > 0 then - path = path .. parsed[n] - if parsed.is_directory then path = path .. "/" end - end - else - for i = 1, n-1 do - path = path .. protect_segment(parsed[i]) - path = path .. "/" - end - if n > 0 then - path = path .. protect_segment(parsed[n]) - if parsed.is_directory then path = path .. "/" end - end - end - if parsed.is_absolute then path = "/" .. path end - return path + local path = "" + local n = #parsed + if unsafe then + for i = 1, n-1 do + path = path .. parsed[i] + path = path .. "/" + end + if n > 0 then + path = path .. parsed[n] + if parsed.is_directory then path = path .. "/" end + end + else + for i = 1, n-1 do + path = path .. protect_segment(parsed[i]) + path = path .. "/" + end + if n > 0 then + path = path .. protect_segment(parsed[n]) + if parsed.is_directory then path = path .. "/" end + end + end + if parsed.is_absolute then path = "/" .. path end + return path end diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c index 7b4a6e799c0..803d365444e 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c @@ -1,5 +1,5 @@ /* - * This file is auto-generated by "./lua2c url.lua url_lua" + * This file is auto-generated by "lua2c url.lua url_lua" */ #include "lua.h" @@ -16,126 +16,125 @@ int luatex_url_lua_open (lua_State *L) { 82, 76, 32,114,101,115,111,108,117,116,105,111,110, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65, 117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, - 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,117,114,108, 46,108, -117, 97, 44,118, 32, 49, 46, 51, 56, 32, 50, 48, 48, 54, 47, 48, 52, 47, 48, 51, - 32, 48, 52, 58, 52, 53, 58, 52, 50, 32,100,105,101,103,111, 32, 69,120,112, 32, - 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, - 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, - 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68, +101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, - 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115, -116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, - 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101, -113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10,109,111,100,117,108, -101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,116, +114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105, +110,103, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, + 10,108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105, +114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10,109,111,100,117,108,101, 40, 34, +115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77,111, -100,117,108,101, 32,118,101,114,115,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77,111,100,117,108, +101, 32,118,101,114,115,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, - 61, 32, 34, 85, 82, 76, 32, 49, 46, 48, 46, 49, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, 61, 32, 34, + 85, 82, 76, 32, 49, 46, 48, 46, 50, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,110, 99,111, -100,101,115, 32, 97, 32,115,116,114,105,110,103, 32,105,110,116,111, 32,105,116, -115, 32,101,115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, 99,105,109, 97, -108, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 10, 45, 45, 32, - 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,110, 97,114,121, - 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, 99,111,100,101, -100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,101,115, - 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, - 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,110, 99,111,100,101,115, + 32, 97, 32,115,116,114,105,110,103, 32,105,110,116,111, 32,105,116,115, 32,101, +115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, 99,105,109, 97,108, 32,114, +101,112,114,101,115,101,110,116, 97,116,105,111,110, 10, 45, 45, 32, 73,110,112, +117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,110, 97,114,121, 32,115,116, +114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, 99,111,100,101,100, 10, 45, + 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,101,115, 99, 97,112, +101,100, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 32,111,102, + 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,121, 10, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99, -116,105,111,110, 32,101,115, 99, 97,112,101, 40,115, 41, 10, 32, 32, 32, 32,114, -101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, - 32, 34, 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 41, 34, 44, 32, -102,117,110, 99,116,105,111,110, 40, 99, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, -114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, - 40, 34, 37, 37, 37, 48, 50,120, 34, 44, 32,115,116,114,105,110,103, 46, 98,121, -116,101, 40, 99, 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10,101,110,100, 10, - 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111, +110, 32,101,115, 99, 97,112,101, 40,115, 41, 10, 32, 32, 32, 32,114,101,116,117, +114,110, 32, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32, 34, + 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 41, 34, 44, 32,102,117, +110, 99,116,105,111,110, 40, 99, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101, +116,117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, + 37, 37, 37, 48, 50,120, 34, 44, 32,115,116,114,105,110,103, 46, 98,121,116,101, + 40, 99, 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, - 45, 32, 80,114,111,116,101, 99,116,115, 32, 97, 32,112, 97,116,104, 32,115,101, -103,109,101,110,116, 44, 32,116,111, 32,112,114,101,118,101,110,116, 32,105,116, - 32,102,114,111,109, 32,105,110,116,101,114,102,101,114,105,110,103, 32,119,105, -116,104, 32,116,104,101, 10, 45, 45, 32,117,114,108, 32,112, 97,114,115,105,110, -103, 46, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, - 98,105,110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32, -101,110, 99,111,100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, - 45, 32, 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110, -116, 97,116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, - 97,114,121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,109, 97,107, -101, 95,115,101,116, 40,116, 41, 10, 9,108,111, 99, 97,108, 32,115, 32, 61, 32, -123,125, 10, 9,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46, -105,112, 97,105,114,115, 40,116, 41, 32,100,111, 10, 9, 9,115, 91,116, 91,105, - 93, 93, 32, 61, 32, 49, 10, 9,101,110,100, 10, 9,114,101,116,117,114,110, 32, -115, 10,101,110,100, 10, 10, 45, 45, 32,116,104,101,115,101, 32, 97,114,101, 32, - 97,108,108,111,119,101,100, 32,119,105,116,104,105,110,103, 32, 97, 32,112, 97, -116,104, 32,115,101,103,109,101,110,116, 44, 32, 97,108,111,110,103, 32,119,105, -116,104, 32, 97,108,112,104, 97,110,117,109, 10, 45, 45, 32,111,116,104,101,114, - 32, 99,104, 97,114, 97, 99,116,101,114,115, 32,109,117,115,116, 32, 98,101, 32, -101,115, 99, 97,112,101,100, 10,108,111, 99, 97,108, 32,115,101,103,109,101,110, -116, 95,115,101,116, 32, 61, 32,109, 97,107,101, 95,115,101,116, 32,123, 10, 32, - 32, 32, 32, 34, 45, 34, 44, 32, 34, 95, 34, 44, 32, 34, 46, 34, 44, 32, 34, 33, - 34, 44, 32, 34,126, 34, 44, 32, 34, 42, 34, 44, 32, 34, 39, 34, 44, 32, 34, 40, - 34, 44, 10, 9, 34, 41, 34, 44, 32, 34, 58, 34, 44, 32, 34, 64, 34, 44, 32, 34, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, + 32, 80,114,111,116,101, 99,116,115, 32, 97, 32,112, 97,116,104, 32,115,101,103, +109,101,110,116, 44, 32,116,111, 32,112,114,101,118,101,110,116, 32,105,116, 32, +102,114,111,109, 32,105,110,116,101,114,102,101,114,105,110,103, 32,119,105,116, +104, 32,116,104,101, 10, 45, 45, 32,117,114,108, 32,112, 97,114,115,105,110,103, + 46, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98, +105,110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101, +110, 99,111,100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, + 32, 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, + 97,116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97, +114,121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,109, 97,107,101, + 95,115,101,116, 40,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, + 61, 32,123,125, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, + 98, 97,115,101, 46,105,112, 97,105,114,115, 40,116, 41, 32,100,111, 10, 32, 32, + 32, 32, 32, 32, 32, 32,115, 91,116, 91,105, 93, 93, 32, 61, 32, 49, 10, 32, 32, + 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, 10,101, +110,100, 10, 10, 45, 45, 32,116,104,101,115,101, 32, 97,114,101, 32, 97,108,108, +111,119,101,100, 32,119,105,116,104,105,110,103, 32, 97, 32,112, 97,116,104, 32, +115,101,103,109,101,110,116, 44, 32, 97,108,111,110,103, 32,119,105,116,104, 32, + 97,108,112,104, 97,110,117,109, 10, 45, 45, 32,111,116,104,101,114, 32, 99,104, + 97,114, 97, 99,116,101,114,115, 32,109,117,115,116, 32, 98,101, 32,101,115, 99, + 97,112,101,100, 10,108,111, 99, 97,108, 32,115,101,103,109,101,110,116, 95,115, +101,116, 32, 61, 32,109, 97,107,101, 95,115,101,116, 32,123, 10, 32, 32, 32, 32, + 34, 45, 34, 44, 32, 34, 95, 34, 44, 32, 34, 46, 34, 44, 32, 34, 33, 34, 44, 32, + 34,126, 34, 44, 32, 34, 42, 34, 44, 32, 34, 39, 34, 44, 32, 34, 40, 34, 44, 10, + 32, 32, 32, 32, 34, 41, 34, 44, 32, 34, 58, 34, 44, 32, 34, 64, 34, 44, 32, 34, 38, 34, 44, 32, 34, 61, 34, 44, 32, 34, 43, 34, 44, 32, 34, 36, 34, 44, 32, 34, 44, 34, 44, 10,125, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111, 110, 32,112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,116, 40,115, 41, - 10, 9,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,115,117, 98, - 40,115, 44, 32, 34, 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 41, - 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 9, 9,105,102, - 32,115,101,103,109,101,110,116, 95,115,101,116, 91, 99, 93, 32,116,104,101,110, - 32,114,101,116,117,114,110, 32, 99, 10, 9, 9,101,108,115,101, 32,114,101,116, -117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37, - 37, 37, 48, 50,120, 34, 44, 32,115,116,114,105,110,103, 46, 98,121,116,101, 40, - 99, 41, 41, 32,101,110,100, 10, 9,101,110,100, 41, 10,101,110,100, 10, 10, 45, + 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103, +115,117, 98, 40,115, 44, 32, 34, 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, + 95, 93, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32, + 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,101,103,109,101,110,116, 95,115,101, +116, 91, 99, 93, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99, 10, 32, + 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115, +116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37, 37, 37, 48, 50,120, + 34, 44, 32,115,116,114,105,110,103, 46, 98,121,116,101, 40, 99, 41, 41, 32,101, +110,100, 10, 32, 32, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, - 69,110, 99,111,100,101,115, 32, 97, 32,115,116,114,105,110,103, 32,105,110,116, -111, 32,105,116,115, 32,101,115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, - 99,105,109, 97,108, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, - 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105, -110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, - 99,111,100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, - 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, 97, -116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114, -121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,110, + 99,111,100,101,115, 32, 97, 32,115,116,114,105,110,103, 32,105,110,116,111, 32, +105,116,115, 32,101,115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, 99,105, +109, 97,108, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 10, 45, + 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,110, 97, +114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, 99,111, +100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32, +101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, 97,116,105, +111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, -102,117,110, 99,116,105,111,110, 32,117,110,101,115, 99, 97,112,101, 40,115, 41, - 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103, -115,117, 98, 40,115, 44, 32, 34, 37, 37, 40, 37,120, 37,120, 41, 34, 44, 32,102, -117,110, 99,116,105,111,110, 40,104,101,120, 41, 10, 32, 32, 32, 32, 32, 32, 32, - 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46, 99,104, 97,114, 40, - 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,104,101,120, 44, 32, 49, - 54, 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117, +110, 99,116,105,111,110, 32,117,110,101,115, 99, 97,112,101, 40,115, 41, 10, 32, + 32, 32, 32,114,101,116,117,114,110, 32, 40,115,116,114,105,110,103, 46,103,115, +117, 98, 40,115, 44, 32, 34, 37, 37, 40, 37,120, 37,120, 41, 34, 44, 32,102,117, +110, 99,116,105,111,110, 40,104,101,120, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, +114,101,116,117,114,110, 32,115,116,114,105,110,103, 46, 99,104, 97,114, 40, 98, + 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,104,101,120, 44, 32, 49, 54, + 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, @@ -267,272 +266,293 @@ int luatex_url_lua_open (lua_State *L) { 32, 32, 32, 32,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 32, 61, 32,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,103, -101,116, 32,113,117,101,114,121, 32,115,116,114,105,110,103,105,110,103, 10, 32, - 32, 32, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, - 40,117,114,108, 44, 32, 34, 37, 63, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99, -116,105,111,110, 40,113, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115, -101,100, 46,113,117,101,114,121, 32, 61, 32,113, 10, 32, 32, 32, 32, 32, 32, 32, - 32,114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, - 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,112, 97,114, 97,109,115, 10, 32, 32, - 32, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, -117,114,108, 44, 32, 34, 37, 59, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116, -105,111,110, 40,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101, -100, 46,112, 97,114, 97,109,115, 32, 61, 32,112, 10, 32, 32, 32, 32, 32, 32, 32, - 32,114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, - 32, 32, 32, 32, 45, 45, 32,112, 97,116,104, 32,105,115, 32,119,104, 97,116,101, -118,101,114, 32,119, 97,115, 32,108,101,102,116, 10, 32, 32, 32, 32,105,102, 32, -117,114,108, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,112, 97,114,115,101, -100, 46,112, 97,116,104, 32, 61, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32, - 32,108,111, 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, - 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32, -105,102, 32,110,111,116, 32, 97,117,116,104,111,114,105,116,121, 32,116,104,101, -110, 32,114,101,116,117,114,110, 32,112, 97,114,115,101,100, 32,101,110,100, 10, - 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,115,116,114,105, -110,103, 46,103,115,117, 98, 40, 97,117,116,104,111,114,105,116,121, 44, 34, 94, - 40, 91, 94, 64, 93, 42, 41, 64, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102, -117,110, 99,116,105,111,110, 40,117, 41, 32,112, 97,114,115,101,100, 46,117,115, -101,114,105,110,102,111, 32, 61, 32,117, 59, 32,114,101,116,117,114,110, 32, 34, - 34, 32,101,110,100, 41, 10, 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, - 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, 97,117,116,104,111, -114,105,116,121, 44, 32, 34, 58, 40, 91, 94, 58, 93, 42, 41, 36, 34, 44, 10, 32, - 32, 32, 32, 32, 32, 32, 32,102,117,110, 99,116,105,111,110, 40,112, 41, 32,112, - 97,114,115,101,100, 46,112,111,114,116, 32, 61, 32,112, 59, 32,114,101,116,117, -114,110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32,105,102, 32, 97,117, -116,104,111,114,105,116,121, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,112, - 97,114,115,101,100, 46,104,111,115,116, 32, 61, 32, 97,117,116,104,111,114,105, -116,121, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,115,101, -114,105,110,102,111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,101,114,105, -110,102,111, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,117,115,101,114,105, -110,102,111, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,112, 97,114,115, -101,100, 32,101,110,100, 10, 32, 32, 32, 32,117,115,101,114,105,110,102,111, 32, - 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,115,101,114,105,110, -102,111, 44, 32, 34, 58, 40, 91, 94, 58, 93, 42, 41, 36, 34, 44, 10, 32, 32, 32, - 32, 32, 32, 32, 32,102,117,110, 99,116,105,111,110, 40,112, 41, 32,112, 97,114, -115,101,100, 46,112, 97,115,115,119,111,114,100, 32, 61, 32,112, 59, 32,114,101, -116,117,114,110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32,112, 97,114, -115,101,100, 46,117,115,101,114, 32, 61, 32,117,115,101,114,105,110,102,111, 10, - 32, 32, 32, 32,114,101,116,117,114,110, 32,112, 97,114,115,101,100, 10,101,110, -100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 10, 45, 45, 32, 82,101, 98,117,105,108,100,115, 32, 97, 32,112, 97,114,115,101, -100, 32, 85, 82, 76, 32,102,114,111,109, 32,105,116,115, 32, 99,111,109,112,111, -110,101,110,116,115, 46, 10, 45, 45, 32, 67,111,109,112,111,110,101,110,116,115, - 32, 97,114,101, 32,112,114,111,116,101, 99,116,101,100, 32,105,102, 32, 97,110, -121, 32,114,101,115,101,114,118,101,100, 32,111,114, 32,117,110, 97,108,108,111, -119,101,100, 32, 99,104, 97,114, 97, 99,116,101,114,115, 32, 97,114,101, 32,102, -111,117,110,100, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,112, - 97,114,115,101,100, 58, 32,112, 97,114,115,101,100, 32, 85, 82, 76, 44, 32, 97, -115, 32,114,101,116,117,114,110,101,100, 32, 98,121, 32,112, 97,114,115,101, 10, - 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32, 97, 32,115,116, -114,105,110,103,105,110,103, 32,119,105,116,104, 32,116,104,101, 32, 99,111,114, -114,101,115,112,111,110,100,105,110,103, 32, 85, 82, 76, 10, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111, -110, 32, 98,117,105,108,100, 40,112, 97,114,115,101,100, 41, 10, 32, 32, 32, 32, -108,111, 99, 97,108, 32,112,112, 97,116,104, 32, 61, 32,112, 97,114,115,101, 95, -112, 97,116,104, 40,112, 97,114,115,101,100, 46,112, 97,116,104, 32,111,114, 32, - 34, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32, - 98,117,105,108,100, 95,112, 97,116,104, 40,112,112, 97,116,104, 41, 10, 32, 32, - 32, 32,105,102, 32,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,116, -104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46, 32, 34, 59, 34, - 32, 46, 46, 32,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,101,110, -100, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,113,117,101,114, -121, 32,116,104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46, 32, - 34, 63, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,113,117,101,114,121, 32, -101,110,100, 10, 9,108,111, 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, - 32, 61, 32,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, - 9,105,102, 32,112, 97,114,115,101,100, 46,104,111,115,116, 32,116,104,101,110, - 10, 9, 9, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114,115,101, -100, 46,104,111,115,116, 10, 9, 9,105,102, 32,112, 97,114,115,101,100, 46,112, -111,114,116, 32,116,104,101,110, 32, 97,117,116,104,111,114,105,116,121, 32, 61, - 32, 97,117,116,104,111,114,105,116,121, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, - 32,112, 97,114,115,101,100, 46,112,111,114,116, 32,101,110,100, 10, 9, 9,108, -111, 99, 97,108, 32,117,115,101,114,105,110,102,111, 32, 61, 32,112, 97,114,115, -101,100, 46,117,115,101,114,105,110,102,111, 10, 9, 9,105,102, 32,112, 97,114, -115,101,100, 46,117,115,101,114, 32,116,104,101,110, 10, 9, 9, 9,117,115,101, -114,105,110,102,111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,101,114, 10, - 9, 9, 9,105,102, 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,111,114, -100, 32,116,104,101,110, 10, 9, 9, 9, 9,117,115,101,114,105,110,102,111, 32, - 61, 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, - 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,111,114,100, 10, 9, 9, 9, -101,110,100, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32,117,115,101,114,105, -110,102,111, 32,116,104,101,110, 32, 97,117,116,104,111,114,105,116,121, 32, 61, - 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 64, 34, 32, 46, 46, 32, - 97,117,116,104,111,114,105,116,121, 32,101,110,100, 10, 9,101,110,100, 10, 32, - 32, 32, 32,105,102, 32, 97,117,116,104,111,114,105,116,121, 32,116,104,101,110, - 32,117,114,108, 32, 61, 32, 34, 47, 47, 34, 32, 46, 46, 32, 97,117,116,104,111, -114,105,116,121, 32, 46, 46, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32, 32, -105,102, 32,112, 97,114,115,101,100, 46,115, 99,104,101,109,101, 32,116,104,101, -110, 32,117,114,108, 32, 61, 32,112, 97,114,115,101,100, 46,115, 99,104,101,109, -101, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,117,114,108, 32,101,110,100, 10, - 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,102,114, 97,103,109,101, -110,116, 32,116,104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46, - 32, 34, 35, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,102,114, 97,103,109, -101,110,116, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,117,114,108, 32, 61, - 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114,108, 44, 32, 34, 37, -115, 34, 44, 32, 34, 34, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,117, -114,108, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,117,105,108,100,115, 32, 97, 32, 97, 98, -115,111,108,117,116,101, 32, 85, 82, 76, 32,102,114,111,109, 32, 97, 32, 98, 97, -115,101, 32, 97,110,100, 32, 97, 32,114,101,108, 97,116,105,118,101, 32, 85, 82, - 76, 32, 97, 99, 99,111,114,100,105,110,103, 32,116,111, 32, 82, 70, 67, 32, 50, - 51, 57, 54, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32, 98, 97, -115,101, 95,117,114,108, 10, 45, 45, 32, 32, 32,114,101,108, 97,116,105,118,101, - 95,117,114,108, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, - 32, 99,111,114,114,101,115,112,111,110,100,105,110,103, 32, 97, 98,115,111,108, -117,116,101, 32,117,114,108, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 97, 98,115,111,108, -117,116,101, 40, 98, 97,115,101, 95,117,114,108, 44, 32,114,101,108, 97,116,105, -118,101, 95,117,114,108, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46, -116,121,112,101, 40, 98, 97,115,101, 95,117,114,108, 41, 32, 61, 61, 32, 34,116, - 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, - 97,115,101, 95,112, 97,114,115,101,100, 32, 61, 32, 98, 97,115,101, 95,117,114, -108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 95,117,114,108, 32, 61, - 32, 98,117,105,108,100, 40, 98, 97,115,101, 95,112, 97,114,115,101,100, 41, 10, - 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115, -101, 95,112, 97,114,115,101,100, 32, 61, 32,112, 97,114,115,101, 40, 98, 97,115, -101, 95,117,114,108, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108, -111, 99, 97,108, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, - 32, 61, 32,112, 97,114,115,101, 40,114,101,108, 97,116,105,118,101, 95,117,114, -108, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 98, 97,115,101, 95,112, - 97,114,115,101,100, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,114,101, -108, 97,116,105,118,101, 95,117,114,108, 10, 32, 32, 32, 32,101,108,115,101,105, +101,116, 32,113,117,101,114,121, 32,115,116,114,105,110,103, 10, 32, 32, 32, 32, +117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114, +108, 44, 32, 34, 37, 63, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116,105,111, +110, 40,113, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,100, 46, +113,117,101,114,121, 32, 61, 32,113, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101, +116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, + 32, 45, 45, 32,103,101,116, 32,112, 97,114, 97,109,115, 10, 32, 32, 32, 32,117, +114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114,108, + 44, 32, 34, 37, 59, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, + 40,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,100, 46,112, + 97,114, 97,109,115, 32, 61, 32,112, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101, +116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, + 32, 45, 45, 32,112, 97,116,104, 32,105,115, 32,119,104, 97,116,101,118,101,114, + 32,119, 97,115, 32,108,101,102,116, 10, 32, 32, 32, 32,105,102, 32,117,114,108, + 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,112, + 97,116,104, 32, 61, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111, + 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114,115, +101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32,105,102, 32, +110,111,116, 32, 97,117,116,104,111,114,105,116,121, 32,116,104,101,110, 32,114, +101,116,117,114,110, 32,112, 97,114,115,101,100, 32,101,110,100, 10, 32, 32, 32, + 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,115,116,114,105,110,103, 46, +103,115,117, 98, 40, 97,117,116,104,111,114,105,116,121, 44, 34, 94, 40, 91, 94, + 64, 93, 42, 41, 64, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,117,110, 99, +116,105,111,110, 40,117, 41, 32,112, 97,114,115,101,100, 46,117,115,101,114,105, +110,102,111, 32, 61, 32,117, 59, 32,114,101,116,117,114,110, 32, 34, 34, 32,101, +110,100, 41, 10, 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32, +115,116,114,105,110,103, 46,103,115,117, 98, 40, 97,117,116,104,111,114,105,116, +121, 44, 32, 34, 58, 40, 91, 94, 58, 37, 93, 93, 42, 41, 36, 34, 44, 10, 32, 32, + 32, 32, 32, 32, 32, 32,102,117,110, 99,116,105,111,110, 40,112, 41, 32,112, 97, +114,115,101,100, 46,112,111,114,116, 32, 61, 32,112, 59, 32,114,101,116,117,114, +110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32,105,102, 32, 97,117,116, +104,111,114,105,116,121, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, 73, 80,118, 54, 63, 10, 32, 32, 32, 32, + 32, 32, 32, 32,112, 97,114,115,101,100, 46,104,111,115,116, 32, 61, 32,115,116, +114,105,110,103, 46,109, 97,116, 99,104, 40, 97,117,116,104,111,114,105,116,121, + 44, 32, 34, 94, 37, 91, 40, 46, 43, 41, 37, 93, 36, 34, 41, 32,111,114, 32, 97, +117,116,104,111,114,105,116,121, 32, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, + 32, 32,108,111, 99, 97,108, 32,117,115,101,114,105,110,102,111, 32, 61, 32,112, + 97,114,115,101,100, 46,117,115,101,114,105,110,102,111, 10, 32, 32, 32, 32,105, +102, 32,110,111,116, 32,117,115,101,114,105,110,102,111, 32,116,104,101,110, 32, +114,101,116,117,114,110, 32,112, 97,114,115,101,100, 32,101,110,100, 10, 32, 32, + 32, 32,117,115,101,114,105,110,102,111, 32, 61, 32,115,116,114,105,110,103, 46, +103,115,117, 98, 40,117,115,101,114,105,110,102,111, 44, 32, 34, 58, 40, 91, 94, + 58, 93, 42, 41, 36, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,117,110, 99, +116,105,111,110, 40,112, 41, 32,112, 97,114,115,101,100, 46,112, 97,115,115,119, +111,114,100, 32, 61, 32,112, 59, 32,114,101,116,117,114,110, 32, 34, 34, 32,101, +110,100, 41, 10, 32, 32, 32, 32,112, 97,114,115,101,100, 46,117,115,101,114, 32, + 61, 32,117,115,101,114,105,110,102,111, 10, 32, 32, 32, 32,114,101,116,117,114, +110, 32,112, 97,114,115,101,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 82,101, 98,117,105, +108,100,115, 32, 97, 32,112, 97,114,115,101,100, 32, 85, 82, 76, 32,102,114,111, +109, 32,105,116,115, 32, 99,111,109,112,111,110,101,110,116,115, 46, 10, 45, 45, + 32, 67,111,109,112,111,110,101,110,116,115, 32, 97,114,101, 32,112,114,111,116, +101, 99,116,101,100, 32,105,102, 32, 97,110,121, 32,114,101,115,101,114,118,101, +100, 32,111,114, 32,117,110, 97,108,108,111,119,101,100, 32, 99,104, 97,114, 97, + 99,116,101,114,115, 32, 97,114,101, 32,102,111,117,110,100, 10, 45, 45, 32, 73, +110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,114,115,101,100, 58, 32,112, 97, +114,115,101,100, 32, 85, 82, 76, 44, 32, 97,115, 32,114,101,116,117,114,110,101, +100, 32, 98,121, 32,112, 97,114,115,101, 10, 45, 45, 32, 82,101,116,117,114,110, +115, 10, 45, 45, 32, 32, 32, 97, 32,115,116,114,105,110,103,105,110,103, 32,119, +105,116,104, 32,116,104,101, 32, 99,111,114,114,101,115,112,111,110,100,105,110, +103, 32, 85, 82, 76, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 98,117,105,108,100, 40,112, + 97,114,115,101,100, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,112, 97, +116,104, 32, 61, 32,112, 97,114,115,101, 95,112, 97,116,104, 40,112, 97,114,115, +101,100, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 41, 10, 32, 32, 32, 32,108, +111, 99, 97,108, 32,117,114,108, 32, 61, 32, 98,117,105,108,100, 95,112, 97,116, +104, 40,112,112, 97,116,104, 41, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115, +101,100, 46,112, 97,114, 97,109,115, 32,116,104,101,110, 32,117,114,108, 32, 61, + 32,117,114,108, 32, 46, 46, 32, 34, 59, 34, 32, 46, 46, 32,112, 97,114,115,101, +100, 46,112, 97,114, 97,109,115, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, +112, 97,114,115,101,100, 46,113,117,101,114,121, 32,116,104,101,110, 32,117,114, +108, 32, 61, 32,117,114,108, 32, 46, 46, 32, 34, 63, 34, 32, 46, 46, 32,112, 97, +114,115,101,100, 46,113,117,101,114,121, 32,101,110,100, 10, 32, 32, 32, 32,108, +111, 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114, +115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32,105,102, + 32,112, 97,114,115,101,100, 46,104,111,115,116, 32,116,104,101,110, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97, +114,115,101,100, 46,104,111,115,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, + 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 97,117,116,104,111,114,105, +116,121, 44, 32, 34, 58, 34, 41, 32,116,104,101,110, 32, 45, 45, 32, 73, 80,118, + 54, 63, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,117,116,104,111, +114,105,116,121, 32, 61, 32, 34, 91, 34, 32, 46, 46, 32, 97,117,116,104,111,114, +105,116,121, 32, 46, 46, 32, 34, 93, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, +110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, + 46,112,111,114,116, 32,116,104,101,110, 32, 97,117,116,104,111,114,105,116,121, + 32, 61, 32, 97,117,116,104,111,114,105,116,121, 32, 46, 46, 32, 34, 58, 34, 32, + 46, 46, 32,112, 97,114,115,101,100, 46,112,111,114,116, 32,101,110,100, 10, 32, + 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,115,101,114,105,110,102, +111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,101,114,105,110,102,111, 10, + 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,117,115, +101,114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +117,115,101,114,105,110,102,111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115, +101,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,112, 97, +114,115,101,100, 46,112, 97,115,115,119,111,114,100, 32,116,104,101,110, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,117,115,101,114,105, +110,102,111, 32, 61, 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 58, + 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,111,114,100, + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, + 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, +117,115,101,114,105,110,102,111, 32,116,104,101,110, 32, 97,117,116,104,111,114, +105,116,121, 32, 61, 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 64, + 34, 32, 46, 46, 32, 97,117,116,104,111,114,105,116,121, 32,101,110,100, 10, 32, + 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 97,117,116,104,111,114, +105,116,121, 32,116,104,101,110, 32,117,114,108, 32, 61, 32, 34, 47, 47, 34, 32, + 46, 46, 32, 97,117,116,104,111,114,105,116,121, 32, 46, 46, 32,117,114,108, 32, +101,110,100, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,115, 99, +104,101,109,101, 32,116,104,101,110, 32,117,114,108, 32, 61, 32,112, 97,114,115, +101,100, 46,115, 99,104,101,109,101, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32, +117,114,108, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101, +100, 46,102,114, 97,103,109,101,110,116, 32,116,104,101,110, 32,117,114,108, 32, + 61, 32,117,114,108, 32, 46, 46, 32, 34, 35, 34, 32, 46, 46, 32,112, 97,114,115, +101,100, 46,102,114, 97,103,109,101,110,116, 32,101,110,100, 10, 32, 32, 32, 32, + 45, 45, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, + 40,117,114,108, 44, 32, 34, 37,115, 34, 44, 32, 34, 34, 41, 10, 32, 32, 32, 32, +114,101,116,117,114,110, 32,117,114,108, 10,101,110,100, 10, 10, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,117,105, +108,100,115, 32, 97, 32, 97, 98,115,111,108,117,116,101, 32, 85, 82, 76, 32,102, +114,111,109, 32, 97, 32, 98, 97,115,101, 32, 97,110,100, 32, 97, 32,114,101,108, + 97,116,105,118,101, 32, 85, 82, 76, 32, 97, 99, 99,111,114,100,105,110,103, 32, +116,111, 32, 82, 70, 67, 32, 50, 51, 57, 54, 10, 45, 45, 32, 73,110,112,117,116, + 10, 45, 45, 32, 32, 32, 98, 97,115,101, 95,117,114,108, 10, 45, 45, 32, 32, 32, +114,101,108, 97,116,105,118,101, 95,117,114,108, 10, 45, 45, 32, 82,101,116,117, +114,110,115, 10, 45, 45, 32, 32, 32, 99,111,114,114,101,115,112,111,110,100,105, +110,103, 32, 97, 98,115,111,108,117,116,101, 32,117,114,108, 10, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105, +111,110, 32, 97, 98,115,111,108,117,116,101, 40, 98, 97,115,101, 95,117,114,108, + 44, 32,114,101,108, 97,116,105,118,101, 95,117,114,108, 41, 10, 32, 32, 32, 32, +105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40, 98, 97,115,101, 95,117,114, +108, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 32, 61, + 32, 98, 97,115,101, 95,117,114,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97, +115,101, 95,117,114,108, 32, 61, 32, 98,117,105,108,100, 40, 98, 97,115,101, 95, +112, 97,114,115,101,100, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 32, 61, 32,112, + 97,114,115,101, 40, 98, 97,115,101, 95,117,114,108, 41, 10, 32, 32, 32, 32,101, +110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,108, 97,116,105,118, +101, 95,112, 97,114,115,101,100, 32, 61, 32,112, 97,114,115,101, 40,114,101,108, + 97,116,105,118,101, 95,117,114,108, 41, 10, 32, 32, 32, 32,105,102, 32,110,111, +116, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 32,116,104,101,110, 32,114, +101,116,117,114,110, 32,114,101,108, 97,116,105,118,101, 95,117,114,108, 10, 32, + 32, 32, 32,101,108,115,101,105,102, 32,110,111,116, 32,114,101,108, 97,116,105, +118,101, 95,112, 97,114,115,101,100, 32,116,104,101,110, 32,114,101,116,117,114, +110, 32, 98, 97,115,101, 95,117,114,108, 10, 32, 32, 32, 32,101,108,115,101,105, +102, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,115, 99, +104,101,109,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,114,101,108, + 97,116,105,118,101, 95,117,114,108, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, + 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115, +101,100, 46,115, 99,104,101,109,101, 32, 61, 32, 98, 97,115,101, 95,112, 97,114, +115,101,100, 46,115, 99,104,101,109,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, 102, 32,110,111,116, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101, -100, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 95,117, -114,108, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32,114,101,108, 97,116,105, -118,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101,109,101, 32,116,104,101, -110, 32,114,101,116,117,114,110, 32,114,101,108, 97,116,105,118,101, 95,117,114, -108, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114, -101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101,109, -101, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101, -109,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101, -108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46, 97,117,116,104,111,114, -105,116,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46, 97,117,116, -104,111,114,105,116,121, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, - 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116,105,118,101, 95,112, - 97,114,115,101,100, 46,112, 97,116,104, 32,116,104,101,110, 10, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, - 95,112, 97,114,115,101,100, 46,112, 97,116,104, 32, 61, 32, 98, 97,115,101, 95, -112, 97,114,115,101,100, 46,112, 97,116,104, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116, -105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,116,104, -101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, - 97,114, 97,109,115, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46, -112, 97,114, 97,109,115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116,105, -118,101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 32,116,104,101,110, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, - 46,113,117,101,114,121, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, - 46,113,117,101,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,101,108,115,101, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114, -115,101,100, 46,112, 97,116,104, 32, 61, 32, 97, 98,115,111,108,117,116,101, 95, -112, 97,116,104, 40, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,112, 97,116, -104, 32,111,114, 32, 34, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +100, 46, 97,117,116,104,111,114,105,116,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97, -114,115,101,100, 46,112, 97,116,104, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, - 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98,117,105,108,100, 40, -114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 41, 10, 32, 32, 32, - 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, +114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 32, 61, 32, 98, 97,115, +101, 95,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101, +108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 32,116, +104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, + 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110, +111,116, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, + 97,114, 97,109,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95, +112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32, 61, 32, 98, 97,115,101, + 95,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111, +116, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,113,117, +101,114,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118, +101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 32, 61, 32, 98, 97,115, +101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 10, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 32, 32, 32, 10, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97, +116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 32, 61, 32, 97, + 98,115,111,108,117,116,101, 95,112, 97,116,104, 40, 98, 97,115,101, 95,112, 97, +114,115,101,100, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 44, 10, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, + 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 41, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, + 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114, +110, 32, 98,117,105,108,100, 40,114,101,108, 97,116,105,118,101, 95,112, 97,114, +115,101,100, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,114,101, 97,107,115, 32, 97, 32, -112, 97,116,104, 32,105,110,116,111, 32,105,116,115, 32,115,101,103,109,101,110, -116,115, 44, 32,117,110,101,115, 99, 97,112,105,110,103, 32,116,104,101, 32,115, -101,103,109,101,110,116,115, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, - 32, 32,112, 97,116,104, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, - 32, 32, 32,115,101,103,109,101,110,116, 58, 32, 97, 32,116, 97, 98,108,101, 32, -119,105,116,104, 32,111,110,101, 32,101,110,116,114,121, 32,112,101,114, 32,115, -101,103,109,101,110,116, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66, +114,101, 97,107,115, 32, 97, 32,112, 97,116,104, 32,105,110,116,111, 32,105,116, +115, 32,115,101,103,109,101,110,116,115, 44, 32,117,110,101,115, 99, 97,112,105, +110,103, 32,116,104,101, 32,115,101,103,109,101,110,116,115, 10, 45, 45, 32, 73, +110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,116,104, 10, 45, 45, 32, 82,101, +116,117,114,110,115, 10, 45, 45, 32, 32, 32,115,101,103,109,101,110,116, 58, 32, + 97, 32,116, 97, 98,108,101, 32,119,105,116,104, 32,111,110,101, 32,101,110,116, +114,121, 32,112,101,114, 32,115,101,103,109,101,110,116, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 95, -112, 97,116,104, 40,112, 97,116,104, 41, 10, 9,108,111, 99, 97,108, 32,112, 97, -114,115,101,100, 32, 61, 32,123,125, 10, 9,112, 97,116,104, 32, 61, 32,112, 97, -116,104, 32,111,114, 32, 34, 34, 10, 9, 45, 45,112, 97,116,104, 32, 61, 32,115, -116,114,105,110,103, 46,103,115,117, 98, 40,112, 97,116,104, 44, 32, 34, 37,115, - 34, 44, 32, 34, 34, 41, 10, 9,115,116,114,105,110,103, 46,103,115,117, 98, 40, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111, +110, 32,112, 97,114,115,101, 95,112, 97,116,104, 40,112, 97,116,104, 41, 10, 32, + 32, 32, 32,108,111, 99, 97,108, 32,112, 97,114,115,101,100, 32, 61, 32,123,125, + 10, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32,111,114, 32, + 34, 34, 10, 32, 32, 32, 32, 45, 45,112, 97,116,104, 32, 61, 32,115,116,114,105, +110,103, 46,103,115,117, 98, 40,112, 97,116,104, 44, 32, 34, 37,115, 34, 44, 32, + 34, 34, 41, 10, 32, 32, 32, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, 112, 97,116,104, 44, 32, 34, 40, 91, 94, 47, 93, 43, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40,115, 41, 32,116, 97, 98,108,101, 46,105,110,115,101, -114,116, 40,112, 97,114,115,101,100, 44, 32,115, 41, 32,101,110,100, 41, 10, 9, -102,111,114, 32,105, 32, 61, 32, 49, 44, 32,116, 97, 98,108,101, 46,103,101,116, -110, 40,112, 97,114,115,101,100, 41, 32,100,111, 10, 9, 9,112, 97,114,115,101, -100, 91,105, 93, 32, 61, 32,117,110,101,115, 99, 97,112,101, 40,112, 97,114,115, -101,100, 91,105, 93, 41, 10, 9,101,110,100, 10, 9,105,102, 32,115,116,114,105, -110,103, 46,115,117, 98, 40,112, 97,116,104, 44, 32, 49, 44, 32, 49, 41, 32, 61, - 61, 32, 34, 47, 34, 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,105,115, - 95, 97, 98,115,111,108,117,116,101, 32, 61, 32, 49, 32,101,110,100, 10, 9,105, -102, 32,115,116,114,105,110,103, 46,115,117, 98, 40,112, 97,116,104, 44, 32, 45, - 49, 44, 32, 45, 49, 41, 32, 61, 61, 32, 34, 47, 34, 32,116,104,101,110, 32,112, - 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114,121, 32, 61, - 32, 49, 32,101,110,100, 10, 9,114,101,116,117,114,110, 32,112, 97,114,115,101, -100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 10, 45, 45, 32, 66,117,105,108,100,115, 32, 97, 32,112, 97,116, -104, 32, 99,111,109,112,111,110,101,110,116, 32,102,114,111,109, 32,105,116,115, - 32,115,101,103,109,101,110,116,115, 44, 32,101,115, 99, 97,112,105,110,103, 32, -112,114,111,116,101, 99,116,101,100, 32, 99,104, 97,114, 97, 99,116,101,114,115, - 46, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,114,115, -101,100, 58, 32,112, 97,116,104, 32,115,101,103,109,101,110,116,115, 10, 45, 45, - 32, 32, 32,117,110,115, 97,102,101, 58, 32,105,102, 32,116,114,117,101, 44, 32, -115,101,103,109,101,110,116,115, 32, 97,114,101, 32,110,111,116, 32,112,114,111, -116,101, 99,116,101,100, 32, 98,101,102,111,114,101, 32,112, 97,116,104, 32,105, -115, 32, 98,117,105,108,116, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, - 45, 32, 32, 32,112, 97,116,104, 58, 32, 99,111,114,114,101,115,112,111,110,100, -105,110,103, 32,112, 97,116,104, 32,115,116,114,105,110,103,105,110,103, 10, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, - 99,116,105,111,110, 32, 98,117,105,108,100, 95,112, 97,116,104, 40,112, 97,114, -115,101,100, 44, 32,117,110,115, 97,102,101, 41, 10, 9,108,111, 99, 97,108, 32, -112, 97,116,104, 32, 61, 32, 34, 34, 10, 9,108,111, 99, 97,108, 32,110, 32, 61, - 32,116, 97, 98,108,101, 46,103,101,116,110, 40,112, 97,114,115,101,100, 41, 10, - 9,105,102, 32,117,110,115, 97,102,101, 32,116,104,101,110, 10, 9, 9,102,111, -114, 32,105, 32, 61, 32, 49, 44, 32,110, 45, 49, 32,100,111, 10, 9, 9, 9,112, - 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,112, 97,114,115,101,100, - 91,105, 93, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, - 46, 32, 34, 47, 34, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32,110, 32, 62, - 32, 48, 32,116,104,101,110, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97, -116,104, 32, 46, 46, 32,112, 97,114,115,101,100, 91,110, 93, 10, 9, 9, 9,105, -102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114, -121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, - 46, 32, 34, 47, 34, 32,101,110,100, 10, 9, 9,101,110,100, 10, 9,101,108,115, -101, 10, 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32,110, 45, 49, 32,100, -111, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32, -112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,116, 40,112, 97,114,115, -101,100, 91,105, 93, 41, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116, -104, 32, 46, 46, 32, 34, 47, 34, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32, -110, 32, 62, 32, 48, 32,116,104,101,110, 10, 9, 9, 9,112, 97,116,104, 32, 61, - 32,112, 97,116,104, 32, 46, 46, 32,112,114,111,116,101, 99,116, 95,115,101,103, -109,101,110,116, 40,112, 97,114,115,101,100, 91,110, 93, 41, 10, 9, 9, 9,105, -102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114, -121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, - 46, 32, 34, 47, 34, 32,101,110,100, 10, 9, 9,101,110,100, 10, 9,101,110,100, - 10, 9,105,102, 32,112, 97,114,115,101,100, 46,105,115, 95, 97, 98,115,111,108, -117,116,101, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32, 34, 47, 34, 32, - 46, 46, 32,112, 97,116,104, 32,101,110,100, 10, 9,114,101,116,117,114,110, 32, +114,116, 40,112, 97,114,115,101,100, 44, 32,115, 41, 32,101,110,100, 41, 10, 32, + 32, 32, 32,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,112, 97,114,115,101, +100, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,100, 91, +105, 93, 32, 61, 32,117,110,101,115, 99, 97,112,101, 40,112, 97,114,115,101,100, + 91,105, 93, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, +115,116,114,105,110,103, 46,115,117, 98, 40,112, 97,116,104, 44, 32, 49, 44, 32, + 49, 41, 32, 61, 61, 32, 34, 47, 34, 32,116,104,101,110, 32,112, 97,114,115,101, +100, 46,105,115, 95, 97, 98,115,111,108,117,116,101, 32, 61, 32, 49, 32,101,110, +100, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,115,117, 98, 40, +112, 97,116,104, 44, 32, 45, 49, 44, 32, 45, 49, 41, 32, 61, 61, 32, 34, 47, 34, + 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, + 99,116,111,114,121, 32, 61, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32,114,101, +116,117,114,110, 32,112, 97,114,115,101,100, 10,101,110,100, 10, 10, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,117, +105,108,100,115, 32, 97, 32,112, 97,116,104, 32, 99,111,109,112,111,110,101,110, +116, 32,102,114,111,109, 32,105,116,115, 32,115,101,103,109,101,110,116,115, 44, + 32,101,115, 99, 97,112,105,110,103, 32,112,114,111,116,101, 99,116,101,100, 32, + 99,104, 97,114, 97, 99,116,101,114,115, 46, 10, 45, 45, 32, 73,110,112,117,116, + 10, 45, 45, 32, 32, 32,112, 97,114,115,101,100, 58, 32,112, 97,116,104, 32,115, +101,103,109,101,110,116,115, 10, 45, 45, 32, 32, 32,117,110,115, 97,102,101, 58, + 32,105,102, 32,116,114,117,101, 44, 32,115,101,103,109,101,110,116,115, 32, 97, +114,101, 32,110,111,116, 32,112,114,111,116,101, 99,116,101,100, 32, 98,101,102, +111,114,101, 32,112, 97,116,104, 32,105,115, 32, 98,117,105,108,116, 10, 45, 45, + 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,112, 97,116,104, 58, 32, + 99,111,114,114,101,115,112,111,110,100,105,110,103, 32,112, 97,116,104, 32,115, +116,114,105,110,103,105,110,103, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 98,117,105,108, +100, 95,112, 97,116,104, 40,112, 97,114,115,101,100, 44, 32,117,110,115, 97,102, +101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,116,104, 32, 61, 32, + 34, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110, 32, 61, 32, 35,112, 97, +114,115,101,100, 10, 32, 32, 32, 32,105,102, 32,117,110,115, 97,102,101, 32,116, +104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,111,114, 32,105, 32, 61, 32, + 49, 44, 32,110, 45, 49, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,112, 97,114, +115,101,100, 91,105, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112, + 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32, 34, 47, 34, 10, 32, 32, + 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, + 32,110, 32, 62, 32, 48, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,112, + 97,114,115,101,100, 91,110, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32,105,102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116, +111,114,121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, + 32, 46, 46, 32, 34, 47, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, +101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, + 32,102,111,114, 32,105, 32, 61, 32, 49, 44, 32,110, 45, 49, 32,100,111, 10, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97, +116,104, 32, 46, 46, 32,112,114,111,116,101, 99,116, 95,115,101,103,109,101,110, +116, 40,112, 97,114,115,101,100, 91,105, 93, 41, 10, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32, + 34, 47, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, + 32, 32, 32, 32,105,102, 32,110, 32, 62, 32, 48, 32,116,104,101,110, 10, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116, +104, 32, 46, 46, 32,112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,116, + 40,112, 97,114,115,101,100, 91,110, 93, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114, +101, 99,116,111,114,121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, + 97,116,104, 32, 46, 46, 32, 34, 47, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32, + 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,105, +102, 32,112, 97,114,115,101,100, 46,105,115, 95, 97, 98,115,111,108,117,116,101, + 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32, 34, 47, 34, 32, 46, 46, 32, +112, 97,116,104, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 112, 97,116,104, 10,101,110,100, 10, 0 }; return luaL_dostring(L, (const char*)B); diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c b/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c index 40d7596227c..a2a2c3ec23c 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c @@ -5,25 +5,16 @@ * The code is now interrupt-safe. * The penalty of calling select to avoid busy-wait is only paid when * the I/O call fail in the first place. -* -* RCS ID: $Id: usocket.c,v 1.38 2007/10/13 23:55:20 diego Exp $ \*=========================================================================*/ #include <string.h> #include <signal.h> #include "socket.h" -#if defined(__sun__) -#define HSTRERROR(A) "unknown host error" -#else -#define HSTRERROR(A) hstrerror(A) -#endif - - /*-------------------------------------------------------------------------*\ * Wait for readable/writable/connected socket with timeout \*-------------------------------------------------------------------------*/ -#ifdef SOCKET_POLL +#ifndef SOCKET_SELECT #include <sys/poll.h> #define WAITFD_R POLLIN @@ -37,9 +28,9 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) { pfd.revents = 0; if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ do { - int t = (int)(timeout_getretry(tm)*1e3); - ret = poll(&pfd, 1, t >= 0? t: -1); - } while (ret == -1 && errno == EINTR); + int t = (int)(timeout_getretry(tm)*1e3); + ret = poll(&pfd, 1, t >= 0? t: -1); + } while (ret == -1 && errno == EINTR); if (ret == -1) return errno; if (ret == 0) return IO_TIMEOUT; if (sw == WAITFD_C && (pfd.revents & (POLLIN|POLLERR))) return IO_CLOSED; @@ -56,6 +47,7 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) { fd_set rfds, wfds, *rp, *wp; struct timeval tv, *tp; double t; + if (*ps >= FD_SETSIZE) return EINVAL; if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ do { /* must set bits within loop, because select may have modifed them */ @@ -189,11 +181,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) { * Accept with timeout \*-------------------------------------------------------------------------*/ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) { - SA daddr; - socklen_t dlen = sizeof(daddr); if (*ps == SOCKET_INVALID) return IO_CLOSED; - if (!addr) addr = &daddr; - if (!len) len = &dlen; for ( ;; ) { int err; if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE; @@ -220,14 +208,13 @@ int socket_send(p_socket ps, const char *data, size_t count, for ( ;; ) { long put = (long) send(*ps, data, count, 0); /* if we sent anything, we are done */ - if (put > 0) { + if (put >= 0) { *sent = put; return IO_DONE; } err = errno; - /* send can't really return 0, but EPIPE means the connection was - closed */ - if (put == 0 || err == EPIPE) return IO_CLOSED; + /* EPIPE means the connection was closed */ + if (err == EPIPE) return IO_CLOSED; /* we call was interrupted, just try again */ if (err == EINTR) continue; /* if failed fatal reason, report error */ @@ -250,12 +237,12 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, if (*ps == SOCKET_INVALID) return IO_CLOSED; for ( ;; ) { long put = (long) sendto(*ps, data, count, 0, addr, len); - if (put > 0) { + if (put >= 0) { *sent = put; return IO_DONE; } err = errno; - if (put == 0 || err == EPIPE) return IO_CLOSED; + if (err == EPIPE) return IO_CLOSED; if (err == EINTR) continue; if (err != EAGAIN) return err; if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; @@ -308,6 +295,66 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, return IO_UNKNOWN; } + +/*-------------------------------------------------------------------------*\ +* Write with timeout +* +* socket_read and socket_write are cut-n-paste of socket_send and socket_recv, +* with send/recv replaced with write/read. We can't just use write/read +* in the socket version, because behaviour when size is zero is different. +\*-------------------------------------------------------------------------*/ +int socket_write(p_socket ps, const char *data, size_t count, + size_t *sent, p_timeout tm) +{ + int err; + *sent = 0; + /* avoid making system calls on closed sockets */ + if (*ps == SOCKET_INVALID) return IO_CLOSED; + /* loop until we send something or we give up on error */ + for ( ;; ) { + long put = (long) write(*ps, data, count); + /* if we sent anything, we are done */ + if (put >= 0) { + *sent = put; + return IO_DONE; + } + err = errno; + /* EPIPE means the connection was closed */ + if (err == EPIPE) return IO_CLOSED; + /* we call was interrupted, just try again */ + if (err == EINTR) continue; + /* if failed fatal reason, report error */ + if (err != EAGAIN) return err; + /* wait until we can send something or we timeout */ + if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; + } + /* can't reach here */ + return IO_UNKNOWN; +} + +/*-------------------------------------------------------------------------*\ +* Read with timeout +* See note for socket_write +\*-------------------------------------------------------------------------*/ +int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) { + int err; + *got = 0; + if (*ps == SOCKET_INVALID) return IO_CLOSED; + for ( ;; ) { + long taken = (long) read(*ps, data, count); + if (taken > 0) { + *got = taken; + return IO_DONE; + } + err = errno; + if (taken == 0) return IO_CLOSED; + if (err == EINTR) continue; + if (err != EAGAIN) return err; + if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; + } + return IO_UNKNOWN; +} + /*-------------------------------------------------------------------------*\ * Put socket into blocking mode \*-------------------------------------------------------------------------*/ @@ -353,7 +400,7 @@ const char *socket_hoststrerror(int err) { if (err <= 0) return io_strerror(err); switch (err) { case HOST_NOT_FOUND: return "host not found"; - default: return HSTRERROR(err); + default: return hstrerror(err); } } @@ -367,7 +414,7 @@ const char *socket_strerror(int err) { case ECONNABORTED: return "closed"; case ECONNRESET: return "closed"; case ETIMEDOUT: return "timeout"; - default: return strerror(errno); + default: return strerror(err); } } @@ -375,3 +422,30 @@ const char *socket_ioerror(p_socket ps, int err) { (void) ps; return socket_strerror(err); } + +const char *socket_gaistrerror(int err) { + if (err == 0) return NULL; + switch (err) { + case EAI_AGAIN: return "temporary failure in name resolution"; + case EAI_BADFLAGS: return "invalid value for ai_flags"; +#ifdef EAI_BADHINTS + case EAI_BADHINTS: return "invalid value for hints"; +#endif + case EAI_FAIL: return "non-recoverable failure in name resolution"; + case EAI_FAMILY: return "ai_family not supported"; + case EAI_MEMORY: return "memory allocation failure"; + case EAI_NONAME: + return "host or service not provided, or not known"; +#ifdef EAI_OVERFLOW + case EAI_OVERFLOW: return "argument buffer overflow"; +#endif +#ifdef EAI_PROTOCOL + case EAI_PROTOCOL: return "resolved protocol is unknown"; +#endif + case EAI_SERVICE: return "service not supported for socket type"; + case EAI_SOCKTYPE: return "ai_socktype not supported"; + case EAI_SYSTEM: return strerror(errno); + default: return gai_strerror(err); + } +} + diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h b/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h index f2a89aa0d21..8b3241bf3c2 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h @@ -3,8 +3,6 @@ /*=========================================================================*\ * Socket compatibilization module for Unix * LuaSocket toolkit -* -* RCS ID: $Id: usocket.h,v 1.7 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ /*=========================================================================*\ @@ -32,8 +30,13 @@ /* TCP options (nagle algorithm disable) */ #include <netinet/tcp.h> +#ifndef SO_REUSEPORT +#define SO_REUSEPORT SO_REUSEADDR +#endif + typedef int t_socket; typedef t_socket *p_socket; +typedef struct sockaddr_storage t_sockaddr_storage; #define SOCKET_INVALID (-1) diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c b/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c index 6022565188a..d6dd004e7e2 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c @@ -4,8 +4,6 @@ * * The penalty of calling select to avoid busy-wait is only paid when * the I/O call fail in the first place. -* -* RCS ID: $Id: wsocket.c,v 1.36 2007/06/11 23:44:54 diego Exp $ \*=========================================================================*/ #include <string.h> @@ -54,7 +52,7 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) { if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ if (sw & WAITFD_R) { FD_ZERO(&rfds); - FD_SET(*ps, &rfds); + FD_SET(*ps, &rfds); rp = &rfds; } if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; } @@ -171,11 +169,7 @@ int socket_listen(p_socket ps, int backlog) { \*-------------------------------------------------------------------------*/ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) { - SA daddr; - socklen_t dlen = sizeof(daddr); if (*ps == SOCKET_INVALID) return IO_CLOSED; - if (!addr) addr = &daddr; - if (!len) len = &dlen; for ( ;; ) { int err; /* try to get client socket */ @@ -187,8 +181,6 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, /* call select to avoid busy wait */ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; } - /* can't reach here */ - return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ @@ -207,7 +199,7 @@ int socket_send(p_socket ps, const char *data, size_t count, /* loop until we send something or we give up on error */ for ( ;; ) { /* try to send something */ - int put = send(*ps, data, (int) count, 0); + int put = send(*ps, data, (int) count, 0); /* if we sent something, we are done */ if (put > 0) { *sent = put; @@ -220,8 +212,6 @@ int socket_send(p_socket ps, const char *data, size_t count, /* avoid busy wait */ if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; } - /* can't reach here */ - return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ @@ -243,7 +233,6 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, if (err != WSAEWOULDBLOCK) return err; if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; } - return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ @@ -264,7 +253,6 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm if (err != WSAEWOULDBLOCK) return err; if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; } - return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ @@ -286,7 +274,6 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, if (err != WSAEWOULDBLOCK) return err; if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; } - return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ @@ -346,8 +333,8 @@ const char *socket_strerror(int err) { } const char *socket_ioerror(p_socket ps, int err) { - (void) ps; - return socket_strerror(err); + (void) ps; + return socket_strerror(err); } static const char *wstrerror(int err) { @@ -399,3 +386,28 @@ static const char *wstrerror(int err) { default: return "Unknown error"; } } + +const char *socket_gaistrerror(int err) { + if (err == 0) return NULL; + switch (err) { + case EAI_AGAIN: return "temporary failure in name resolution"; + case EAI_BADFLAGS: return "invalid value for ai_flags"; +#ifdef EAI_BADHINTS + case EAI_BADHINTS: return "invalid value for hints"; +#endif + case EAI_FAIL: return "non-recoverable failure in name resolution"; + case EAI_FAMILY: return "ai_family not supported"; + case EAI_MEMORY: return "memory allocation failure"; + case EAI_NONAME: + return "host or service not provided, or not known"; +// case EAI_OVERFLOW: return "argument buffer overflow"; +#ifdef EAI_PROTOCOL + case EAI_PROTOCOL: return "resolved protocol is unknown"; +#endif + case EAI_SERVICE: return "service not supported for socket type"; + case EAI_SOCKTYPE: return "ai_socktype not supported"; +// case EAI_SYSTEM: return strerror(errno); + default: return gai_strerror(err); + } +} + diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h b/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h index b536683685c..2a1db71a80e 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h +++ b/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h @@ -3,19 +3,26 @@ /*=========================================================================*\ * Socket compatibilization module for Win32 * LuaSocket toolkit -* -* RCS ID: $Id: wsocket.h,v 1.4 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ /*=========================================================================*\ * WinSock include files \*=========================================================================*/ -#include <winsock.h> +#if defined(__MINGW32__) +#define _WIN32_WINNT 0x0501 +#endif +#include <winsock2.h> +#include <ws2tcpip.h> typedef int socklen_t; +typedef SOCKADDR_STORAGE t_sockaddr_storage; typedef SOCKET t_socket; typedef t_socket *p_socket; #define SOCKET_INVALID (INVALID_SOCKET) +#ifndef SO_REUSEPORT +#define SO_REUSEPORT SO_REUSEADDR +#endif + #endif /* WSOCKET_H */ diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/README b/Build/source/texk/web2c/luatexdir/luasocket/test/README index 180fa277ca7..27837e04d90 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/test/README +++ b/Build/source/texk/web2c/luatexdir/luasocket/test/README @@ -8,5 +8,7 @@ The files provided are: To run these tests, just run lua on the server and then on the client. + hello.lua -- run to verify if installation worked + Good luck, Diego. diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua b/Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua index a7ca1ba6768..8acb3d04bac 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua @@ -3,25 +3,29 @@ local socket = require"socket" host = host or "localhost" port = port or "8383" +function printf(...) + io.stderr:write(string.format(...)) +end + function pass(...) - local s = string.format(unpack(arg)) - io.stderr:write(s, "\n") + printf(...) + io.stderr:write("\n") end function fail(...) - local s = string.format(unpack(arg)) - io.stderr:write("ERROR: ", s, "!\n") -socket.sleep(3) + io.stderr:write("ERROR: ") + printf(...) + io.stderr:write("!\n") os.exit() end function warn(...) - local s = string.format(unpack(arg)) + local s = string.format(...) io.stderr:write("WARNING: ", s, "\n") end function remote(...) - local s = string.format(unpack(arg)) + local s = string.format(...) s = string.gsub(s, "\n", ";") s = string.gsub(s, "%s+", " ") s = string.gsub(s, "^%s*", "") @@ -80,7 +84,6 @@ io.stderr:write("----------------------------------------------\n", start = socket.gettime() function reconnect() - io.stderr:write("attempting data connection... ") if data then data:close() end remote [[ if data then data:close() data = nil end @@ -88,12 +91,11 @@ function reconnect() data:setoption("tcp-nodelay", true) ]] data, err = socket.connect(host, port) - if not data then fail(err) - else pass("connected!") end + if not data then fail(err) end data:setoption("tcp-nodelay", true) end -pass("attempting control connection...") +printf("attempting control connection...") control, err = socket.connect(host, port) if err then fail(err) else pass("connected!") end @@ -112,6 +114,7 @@ end ------------------------------------------------------------------------ function test_mixed(len) reconnect() + io.stderr:write("length " .. len .. ": ") local inter = math.ceil(len/4) local p1 = "unix " .. string.rep("x", inter) .. "line\n" local p2 = "dos " .. string.rep("y", inter) .. "line\r\n" @@ -137,8 +140,12 @@ remote "data:send(str); data:close()" end ------------------------------------------------------------------------ +if not math.mod then + math.mod = math.fmod +end function test_asciiline(len) reconnect() + io.stderr:write("length " .. len .. ": ") local str, str10, back, err str = string.rep("x", math.mod(len, 10)) str10 = string.rep("aZb.c#dAe?", math.floor(len/10)) @@ -156,6 +163,7 @@ end ------------------------------------------------------------------------ function test_rawline(len) reconnect() + io.stderr:write("length " .. len .. ": ") local str, str10, back, err str = string.rep(string.char(47), math.mod(len, 10)) str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100), @@ -174,6 +182,7 @@ end ------------------------------------------------------------------------ function test_raw(len) reconnect() + io.stderr:write("length " .. len .. ": ") local half = math.floor(len/2) local s1, s2, back, err s1 = string.rep("x", half) @@ -194,7 +203,7 @@ end function test_totaltimeoutreceive(len, tm, sl) reconnect() local str, err, partial - pass("%d bytes, %ds total timeout, %ds pause", len, tm, sl) + printf("%d bytes, %ds total timeout, %ds pause: ", len, tm, sl) remote (string.format ([[ data:settimeout(%d) str = string.rep('a', %d) @@ -215,7 +224,7 @@ end function test_totaltimeoutsend(len, tm, sl) reconnect() local str, err, total - pass("%d bytes, %ds total timeout, %ds pause", len, tm, sl) + printf("%d bytes, %ds total timeout, %ds pause: ", len, tm, sl) remote (string.format ([[ data:settimeout(%d) str = data:receive(%d) @@ -235,7 +244,7 @@ end function test_blockingtimeoutreceive(len, tm, sl) reconnect() local str, err, partial - pass("%d bytes, %ds blocking timeout, %ds pause", len, tm, sl) + printf("%d bytes, %ds blocking timeout, %ds pause: ", len, tm, sl) remote (string.format ([[ data:settimeout(%d) str = string.rep('a', %d) @@ -255,7 +264,7 @@ end function test_blockingtimeoutsend(len, tm, sl) reconnect() local str, err, total - pass("%d bytes, %ds blocking timeout, %ds pause", len, tm, sl) + printf("%d bytes, %ds blocking timeout, %ds pause: ", len, tm, sl) remote (string.format ([[ data:settimeout(%d) str = data:receive(%d) @@ -273,6 +282,7 @@ end ------------------------------------------------------------------------ function empty_connect() + printf("empty connect: ") reconnect() if data then data:close() data = nil end remote [[ @@ -284,7 +294,7 @@ function empty_connect() pass("ok") data = socket.connect(host, port) else - pass("gethostbyname returns localhost on empty string...") + pass("gethostbyname returns localhost on empty string...") end end @@ -311,7 +321,7 @@ function test_closed() local back, partial, err local str = 'little string' reconnect() - pass("trying read detection") + printf("trying read detection: ") remote (string.format ([[ data:send('%s') data:close() @@ -324,7 +334,7 @@ function test_closed() elseif str ~= partial then fail("didn't receive partial result.") else pass("graceful 'closed' received") end reconnect() - pass("trying write detection") + printf("trying write detection: ") remote [[ data:close() data = nil @@ -352,15 +362,28 @@ function test_selectbugs() (e == "timeout" or e == "error")) pass("closed sockets: ok") e = pcall(socket.select, "wrong", 1, 0.1) - assert(e == false) + assert(e == false, tostring(e)) e = pcall(socket.select, {}, 1, 0.1) - assert(e == false) + assert(e == false, tostring(e)) pass("invalid input: ok") + local toomany = {} + for i = 1, socket._SETSIZE+1 do + toomany[#toomany+1] = socket.udp() + end + if #toomany > socket._SETSIZE then + local e = pcall(socket.select, toomany, nil, 0.1) + assert(e == false, tostring(e)) + pass("too many sockets (" .. #toomany .. "): ok") + else + pass("unable to create enough sockets (max was "..#toomany..")") + pass("try using ulimit") + end + for _, c in ipairs(toomany) do c:close() end end ------------------------------------------------------------------------ function accept_timeout() - io.stderr:write("accept with timeout (if it hangs, it failed): ") + printf("accept with timeout (if it hangs, it failed): ") local s, e = socket.bind("*", 0, 0) assert(s, e) local t = socket.gettime() @@ -376,23 +399,22 @@ end ------------------------------------------------------------------------ function connect_timeout() - io.stderr:write("connect with timeout (if it hangs, it failed!): ") + printf("connect with timeout (if it hangs, it failed!): ") local t = socket.gettime() local c, e = socket.tcp() assert(c, e) c:settimeout(0.1) local t = socket.gettime() local r, e = c:connect("10.0.0.1", 81) -print(r, e) assert(not r, "should not connect") assert(socket.gettime() - t < 2, "took too long to give up.") c:close() - print("ok") + pass("ok") end ------------------------------------------------------------------------ function accept_errors() - io.stderr:write("not listening: ") + printf("not listening: ") local d, e = socket.bind("*", 0) assert(d, e); local c, e = socket.tcp(); @@ -401,31 +423,35 @@ function accept_errors() d:settimeout(2) local r, e = d:accept() assert(not r and e) - print("ok: ", e) - io.stderr:write("not supported: ") + pass("ok") + printf("not supported: ") local c, e = socket.udp() assert(c, e); d:setfd(c:getfd()) local r, e = d:accept() assert(not r and e) - print("ok: ", e) + pass("ok") end ------------------------------------------------------------------------ function connect_errors() - io.stderr:write("connection refused: ") + printf("connection refused: ") local c, e = socket.connect("localhost", 1); assert(not c and e) - print("ok: ", e) - io.stderr:write("host not found: ") + pass("ok") + printf("host not found: ") local c, e = socket.connect("host.is.invalid", 1); assert(not c and e, e) - print("ok: ", e) + pass("ok") end ------------------------------------------------------------------------ function rebind_test() - local c = socket.bind("localhost", 0) + --local c ,c1 = socket.bind("localhost", 0) + local c ,c1 = socket.bind("127.0.0.1", 0) + if not c then pass ("failed to bind! " .. tostring(c) .. ' ' .. tostring(c1)) return end + assert(c,c1) + local i, p = c:getsockname() local s, e = socket.tcp() assert(s, e) @@ -433,7 +459,7 @@ function rebind_test() r, e = s:bind("localhost", p) assert(not r, "managed to rebind!") assert(e) - print("ok: ", e) + pass("ok") end ------------------------------------------------------------------------ @@ -455,14 +481,14 @@ function getstats_test() assert(s == t, "sent count failed" .. tostring(s) .. "/" .. tostring(t)) end - print("ok") + pass("ok") end ------------------------------------------------------------------------ function test_nonblocking(size) reconnect() -print("Testing " .. 2*size .. " bytes") + printf("testing " .. 2*size .. " bytes: ") remote(string.format([[ data:send(string.rep("a", %d)) socket.sleep(0.5) @@ -494,7 +520,7 @@ remote(string.format([[ data:settimeout(-1) local back = data:receive(2*size) assert(back == str, "'" .. back .. "' vs '" .. str .. "'") - print("ok") + pass("ok") end ------------------------------------------------------------------------ @@ -502,7 +528,7 @@ function test_readafterclose() local back, partial, err local str = 'little string' reconnect() - pass("trying repeated '*a' pattern") + printf("trying repeated '*a' pattern") remote (string.format ([[ data:send('%s') data:close() @@ -512,9 +538,9 @@ function test_readafterclose() assert(back == str, "unexpected data read") back, err, partial = data:receive("*a") assert(back == nil and err == "closed", "should have returned 'closed'") - print("ok") + pass("ok") reconnect() - pass("trying active close before '*a'") + printf("trying active close before '*a'") remote (string.format ([[ data:close() data = nil @@ -522,9 +548,9 @@ function test_readafterclose() data:close() back, err, partial = data:receive("*a") assert(back == nil and err == "closed", "should have returned 'closed'") - print("ok") + pass("ok") reconnect() - pass("trying active close before '*l'") + printf("trying active close before '*l'") remote (string.format ([[ data:close() data = nil @@ -532,9 +558,9 @@ function test_readafterclose() data:close() back, err, partial = data:receive() assert(back == nil and err == "closed", "should have returned 'closed'") - print("ok") + pass("ok") reconnect() - pass("trying active close before raw 1") + printf("trying active close before raw 1") remote (string.format ([[ data:close() data = nil @@ -542,9 +568,9 @@ function test_readafterclose() data:close() back, err, partial = data:receive(1) assert(back == nil and err == "closed", "should have returned 'closed'") - print("ok") + pass("ok") reconnect() - pass("trying active close before raw 0") + printf("trying active close before raw 0") remote (string.format ([[ data:close() data = nil @@ -552,17 +578,55 @@ function test_readafterclose() data:close() back, err, partial = data:receive(0) assert(back == nil and err == "closed", "should have returned 'closed'") - print("ok") + pass("ok") end +------------------------------------------------------------------------ +function test_writeafterclose() + local str = 'little string' + reconnect() + remote (string.format ([[ + data:close() + data = nil + ]])) + local sent, err, errsent + while not err do + sent, err, errsent, time = data:send(str) + end + assert(err == "closed", "should have returned 'closed'") + pass("ok") +end + +------------------------------------------------------------------------ + +function test_partialrecv() + local str = 'little string' + reconnect() +remote([[ + data:send("7890") +]]) + data:settimeout(1) + back, err = data:receive(10, "123456") + assert(back == "1234567890", "failed on exact mixed length") + back, err = data:receive(8, "87654321") + assert(back == "87654321", "failed on exact length") + back, err = data:receive(4, "87654321") + assert(back == "87654321", "failed on smaller length") + pass("ok") +end + +------------------------------------------------------------------------ test("method registration") -test_methods(socket.tcp(), { + +local tcp_methods = { "accept", "bind", "close", "connect", "dirty", + "getfamily", "getfd", + "getoption", "getpeername", "getsockname", "getstats", @@ -576,13 +640,16 @@ test_methods(socket.tcp(), { "setsockname", "settimeout", "shutdown", -}) +} +test_methods(socket.tcp(), tcp_methods) +test_methods(socket.tcp6(), tcp_methods) -test_methods(socket.udp(), { +local udp_methods = { "close", - "getpeername", "dirty", + "getfamily", "getfd", + "getoption", "getpeername", "getsockname", "receive", @@ -594,14 +661,25 @@ test_methods(socket.udp(), { "setpeername", "setsockname", "settimeout" -}) +} -test("testing read after close") -test_readafterclose() + +------------------------------------------------------------------------ +test_methods(socket.udp(), udp_methods) +test_methods(socket.udp6(), udp_methods) + +test("partial receive") +test_partialrecv() test("select function") test_selectbugs() +test("read after close") +test_readafterclose() + +test("write after close") +test_writeafterclose() + test("connect function") connect_timeout() empty_connect() @@ -710,4 +788,8 @@ test_blockingtimeoutreceive(800091, 2, 3) test_blockingtimeoutreceive(800091, 3, 2) test_blockingtimeoutreceive(800091, 3, 1) +test("shutting server down") +reconnect() +remote("os.exit()") + test(string.format("done in %.2fs", socket.gettime() - start)) diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua b/Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua index f1972c2273c..72b93abe66e 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua @@ -7,9 +7,14 @@ while 1 do print("server: waiting for client connection..."); control = assert(server:accept()); while 1 do - command = assert(control:receive()); + command, emsg = control:receive(); + if emsg == "closed" then + control:close() + break + end + assert(command, emsg) assert(control:send(ack)); print(command); - (loadstring(command))(); + ((loadstring or load)(command))(); end end diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua b/Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua index acad8f5bce6..b9860882c2f 100644 --- a/Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua +++ b/Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua @@ -1,13 +1,13 @@ function readfile(name) - local f = io.open(name, "rb") - if not f then return nil end - local s = f:read("*a") - f:close() - return s + local f = io.open(name, "rb") + if not f then return nil end + local s = f:read("*a") + f:close() + return s end function similar(s1, s2) - return string.lower(string.gsub(s1 or "", "%s", "")) == + return string.lower(string.gsub(s1 or "", "%s", "")) == string.lower(string.gsub(s2 or "", "%s", "")) end @@ -28,7 +28,7 @@ local set = rawset local warn = print local setglobal = function(table, key, value) - warn("changed " .. key) + warn("changed " .. key) set(table, key, value) end |