-IPv4 name resolution functions
-dns.toip
-and
-dns.tohostname
-return all information obtained from
-the resolver in a table of the form:
-
-
-
-resolved4 = {
- name = canonic-name,
- alias = alias-list,
- ip = ip-address-list
-}
-
-
-
-Note that the alias list can be empty.
-
-
-
-The more general name resolution function
-dns.getaddrinfo, which
-supports both IPv6 and IPv4,
-returns all information obtained from
-the resolver in a table of the form:
-
-Here, family contains the string "inet" for IPv4
-addresses, and "inet6" for IPv6 addresses.
-
-
-
-
-
-socket.dns.getaddrinfo(address)
-
-
-
-Converts from host name to address.
-
-
-
-Address can be an IPv4 or IPv6 address or host name.
-
-
-
-The function returns a table with all information returned by
-the resolver. In case of error, the function returns nil
-followed by an error message.
-
-
-
-
-
-socket.dns.gethostname()
-
-
-
-Returns the standard host name for the machine as a string.
-
-
-
-
-
-socket.dns.tohostname(address)
-
-
-
-Converts from IPv4 address to host name.
-
-
-
-Address can be an IP address or host name.
-
-
-
-The function returns a string with the canonic host name of the given
-address, followed by a table with all information returned by
-the resolver. In case of error, the function returns nil
-followed by an error message.
-
-
-
-
-
-socket.dns.toip(address)
-
-
-
-Converts from host name to IPv4 address.
-
-
-
-Address can be an IP address or host name.
-
-
-
-Returns a string with the first IP address found for address,
-followed by a table with all information returned by the resolver.
-In case of error, the function returns nil followed by an error
-message.
-
-FTP (File Transfer Protocol) is a protocol used to transfer files
-between hosts. The ftp namespace offers thorough support
-to FTP, under a simple interface. The implementation conforms to
-RFC 959.
-
-
-
-High level functions are provided supporting the most common operations.
-These high level functions are implemented on top of a lower level
-interface. Using the low-level interface, users can easily create their
-own functions to access any operation supported by the FTP
-protocol. For that, check the implementation.
-
-The get function has two forms. The simple form has fixed
-functionality: it downloads the contents of a URL and returns it as a
-string. The generic form allows a lot more control, as explained
-below.
-
-
-
-If the argument of the get function is a table, the function
-expects at least the fields host, sink, and one of
-argument or path (argument takes
-precedence). Host is the server to connect to. Sink is
-the simple
-LTN12
-sink that will receive the downloaded data. Argument or
-path give the target path to the resource in the server. The
-optional arguments are the following:
-
-
-
user, password: User name and password used for
-authentication. Defaults to "ftp:anonymous@anonymous.org";
-
command: The FTP command used to obtain data. Defaults to
-"retr", but see example below;
-
port: The port to used for the control connection. Defaults to 21;
-
type: The transfer mode. Can take values "i" or
-"a". Defaults to whatever is the server default;
-
step:
-LTN12
-pump step function used to pass data from the
-server to the sink. Defaults to the LTN12 pump.step function;
-
create: An optional function to be used instead of
-socket.tcp when the communications socket is created.
-
-
-
-If successful, the simple version returns the URL contents as a
-string, and the generic function returns 1. In case of error, both
-functions return nil and an error message describing the
-error.
-
-
-
--- load the ftp support
-local ftp = require("socket.ftp")
-
--- Log as user "anonymous" on server "ftp.tecgraf.puc-rio.br",
--- and get file "lua.tar.gz" from directory "pub/lua" as binary.
-f, e = ftp.get("ftp://ftp.tecgraf.puc-rio.br/pub/lua/lua.tar.gz;type=i")
-
-
-
--- load needed modules
-local ftp = require("socket.ftp")
-local ltn12 = require("ltn12")
-local url = require("socket.url")
-
--- a function that returns a directory listing
-function nlst(u)
- local t = {}
- local p = url.parse(u)
- p.command = "nlst"
- p.sink = ltn12.sink.table(t)
- local r, e = ftp.get(p)
- return r and table.concat(t), e
-end
-
-The put function has two forms. The simple form has fixed
-functionality: it uploads a string of content into a URL. The generic form
-allows a lot more control, as explained below.
-
-
-
-If the argument of the put function is a table, the function
-expects at least the fields host, source, and one of
-argument or path (argument takes
-precedence). Host is the server to connect to. Source is
-the simple
-LTN12
-source that will provide the contents to be uploaded.
-Argument or
-path give the target path to the resource in the server. The
-optional arguments are the following:
-
-
-
user, password: User name and password used for
-authentication. Defaults to "ftp:anonymous@anonymous.org";
-
command: The FTP command used to send data. Defaults to
-"stor", but see example below;
-
port: The port to used for the control connection. Defaults to 21;
-
type: The transfer mode. Can take values "i" or
-"a". Defaults to whatever is the server default;
-
step:
-LTN12
-pump step function used to pass data from the
-server to the sink. Defaults to the LTN12 pump.step function;
-
create: An optional function to be used instead of
-socket.tcp when the communications socket is created.
-
-
-
-Both functions return 1 if successful, or nil and an error
-message describing the reason for failure.
-
-
-
--- load the ftp support
-local ftp = require("socket.ftp")
-
--- Log as user "fulano" on server "ftp.example.com",
--- using password "silva", and store a file "README" with contents
--- "wrong password, of course"
-f, e = ftp.put("ftp://fulano:silva@ftp.example.com/README",
- "wrong password, of course")
-
-
-
--- load the ftp support
-local ftp = require("socket.ftp")
-local ltn12 = require("ltn12")
-
--- Log as user "fulano" on server "ftp.example.com",
--- using password "silva", and append to the remote file "LOG", sending the
--- contents of the local file "LOCAL-LOG"
-f, e = ftp.put{
- host = "ftp.example.com",
- user = "fulano",
- password = "silva",
- command = "appe",
- argument = "LOG",
- source = ltn12.source.file(io.open("LOCAL-LOG", "r"))
-}
-
-HTTP (Hyper Text Transfer Protocol) is the protocol used to exchange
-information between web-browsers and servers. The http
-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,
-RFC 2616.
-
-
-
-The module exports functions that provide HTTP functionality in different
-levels of abstraction. From the simple
-string oriented requests, through generic
-LTN12 based, down to even lower-level if you bother to look through the source code.
-
-
-
-To obtain the http namespace, run:
-
-
-
--- loads the HTTP module and any libraries it requires
-local http = require("socket.http")
-
-
-
-URLs must conform to
-RFC 1738,
-that is, an URL is a string in the form:
-
-Field names are case insensitive (as specified by the standard) and all
-functions work with lowercase field names (but see
-socket.headers.canonic).
-Field values are left unmodified.
-
-
-
-Note: MIME headers are independent of order. Therefore, there is no problem
-in representing them in a Lua table.
-
-
-
-The following constants can be set to control the default behavior of
-the HTTP module:
-
-
-
-
PROXY: default proxy used for connections;
-
TIMEOUT: sets the timeout for all I/O operations;
-
USERAGENT: default user agent reported to server.
-
-
-
-Note: These constants are global. Changing them will also
-change the behavior other code that might be using LuaSocket.
-
-The request function has two forms. The simple form downloads
-a URL using the GET or POST method and is based
-on strings. The generic form performs any HTTP method and is
-LTN12 based.
-
-
-
-If the first argument of the request function is a string, it
-should be an url. In that case, if a body
-is provided as a string, the function will perform a POST method
-in the url. Otherwise, it performs a GET in the
-url
-
-
-
-If the first argument is instead a table, the most important fields are
-the url and the simple
-LTN12
-sink that will receive the downloaded content.
-Any part of the url can be overridden by including
-the appropriate field in the request table.
-If authentication information is provided, the function
-uses the Basic Authentication Scheme (see note)
-to retrieve the document. If sink is nil, the
-function discards the downloaded data. The optional parameters are the
-following:
-
-
-
method: The HTTP request method. Defaults to "GET";
-
headers: Any additional HTTP headers to send with the request;
-
source: simple
-LTN12
-source to provide the request body. If there
-is a body, you need to provide an appropriate "content-length"
-request header field, or the function will attempt to send the body as
-"chunked" (something few servers support). Defaults to the empty source;
-
step:
-LTN12
-pump step function used to move data.
-Defaults to the LTN12 pump.step function.
-
proxy: The URL of a proxy server to use. Defaults to no proxy;
-
redirect: Set to false to prevent the
-function from automatically following 301 or 302 server redirect messages;
-
create: An optional function to be used instead of
-socket.tcp when the communications socket is created.
-
maxredirects: An optional number specifying the maximum number of
- redirects to follow. Defaults to 5 if not specified. A boolean
- false value means no maximum (unlimited).
-
-
-
-In case of failure, the function returns nil followed by an
-error message. If successful, the simple form returns the response
-body as a string, followed by the response status code, the response
-headers and the response status line. The generic function returns the same
-information, except the first return value is just the number 1 (the body
-goes to the sink).
-
-
-
-Even when the server fails to provide the contents of the requested URL (URL not found, for example),
-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 code. For
-a list of the possible values and their meanings, refer to RFC 2616.
-
-
-
-Here are a few examples with the simple interface:
-
-
-
--- load the http module
-local io = require("io")
-local http = require("socket.http")
-local ltn12 = require("ltn12")
-
--- connect to server "www.cs.princeton.edu" and retrieves this manual
--- file from "~diego/professional/luasocket/http.html" and print it to stdout
-http.request{
- url = "http://www.cs.princeton.edu/~diego/professional/luasocket/http.html",
- sink = ltn12.sink.file(io.stdout)
-}
-
--- connect to server "www.example.com" and tries to retrieve
--- "/private/index.html". Fails because authentication is needed.
-b, c, h = http.request("http://www.example.com/private/index.html")
--- b returns some useless page telling about the denied access,
--- h returns authentication information
--- and c returns with value 401 (Authentication Required)
-
--- tries to connect to server "wrong.host" to retrieve "/"
--- and fails because the host does not exist.
-r, e = http.request("http://wrong.host/")
--- r is nil, and e returns with value "host not found"
-
-
-
-And here is an example using the generic interface:
-
-
-
--- load the http module
-http = require("socket.http")
-
--- Requests information about a document, without downloading it.
--- Useful, for example, if you want to display a download gauge and need
--- to know the size of the document in advance
-r, c, h = http.request {
- method = "HEAD",
- url = "http://www.tecgraf.puc-rio.br/~diego"
-}
--- r is 1, c is 200, and h would return the following headers:
--- h = {
--- date = "Tue, 18 Sep 2001 20:42:21 GMT",
--- server = "Apache/1.3.12 (Unix) (Red Hat/Linux)",
--- ["last-modified"] = "Wed, 05 Sep 2001 06:11:20 GMT",
--- ["content-length"] = 15652,
--- ["connection"] = "close",
--- ["content-Type"] = "text/html"
--- }
-
-
-
-Note: When sending a POST request, simple interface adds a
-"Content-type: application/x-www-form-urlencoded"
-header to the request. This is the type used by
-HTML forms. If you need another type, use the generic
-interface.
-
-
-
-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
-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
-RFC 2068.
-
-
-
The Basic Authentication Scheme sends
-<user> and
-<password> unencrypted to the server and is therefore
-considered unsafe. Unfortunately, by the time of this implementation,
-the wide majority of servers and browsers support the Basic Scheme only.
-Therefore, this is the method used by the toolkit whenever
-authentication is required.
-
-
-
--- load required modules
-http = require("socket.http")
-mime = require("mime")
-
--- Connect to server "www.example.com" and tries to retrieve
--- "/private/index.html", using the provided name and password to
--- authenticate the request
-b, c, h = http.request("http://fulano:silva@www.example.com/private/index.html")
-
--- Alternatively, one could fill the appropriate header and authenticate
--- the request directly.
-r, c = http.request {
- url = "http://www.example.com/private/index.html",
- headers = { authorization = "Basic " .. (mime.b64("fulano:silva")) }
-}
-
-
-
-
-
-
-
-
diff --git a/src/deps/src/luasocket/docs/index.html b/src/deps/src/luasocket/docs/index.html
deleted file mode 100644
index ad926870f..000000000
--- a/src/deps/src/luasocket/docs/index.html
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
-
-
-
-LuaSocket: Network support for the Lua language
-
-
-
-
-
-
-
-
-LuaSocket is a Lua extension library
-that is composed by two parts: a C core that provides support for the TCP
-and UDP transport layers, and a set of Lua modules that add support for
-functionality commonly needed by applications that deal with the Internet.
-
-
-
-The core support has been implemented so that it is both efficient and
-simple to use. It is available to any Lua application once it has been
-properly initialized by the interpreter in use. The code has been tested
-and runs well on several Windows and UNIX platforms.
-
-
-Among the support modules, the most commonly used implement the
-SMTP
-(sending e-mails),
-HTTP
-(WWW access) and
-FTP
-(uploading and downloading files) client
-protocols. These provide a very natural and generic interface to the
-functionality defined by each protocol.
-In addition, you will find that the
-MIME (common encodings),
-URL
-(anything you could possible want to do with one) and
-LTN12
-(filters, sinks, sources and pumps) modules can be very handy.
-
-
-
-The library is available under the same
-
-terms and conditions as the Lua language, the MIT license. The idea is
-that if you can use Lua in a project, you should also be able to use
-LuaSocket.
-
-LuaSocket version 3.1.0 is now available for download!
-It is compatible with Lua 5.1 through 5.4.
-Chances are it works well on most UNIX distributions and Windows flavors.
-
-
-
-The current version of the library can be found at
-the LuaSocket
-project page on 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.
-
-
-
Take a look at the installation section of the
-manual to find out how to properly install the library.
-
-
-
-
-
Special thanks
-
-
-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. It was more work than we anticipated.
-Special thanks to Sam Roberts, Florian Zeitz, and Paul
-Aurich, Liam Devine, Alexey Melnichuk, and everybody else
-that has helped bring this library back to life.
-
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.
-
-
Directory structure
-
-
On Unix systems, the standard distribution uses two base
-directories, one for system dependent files, and another for system
-independent files. Let's call these directories <CDIR>
-and <LDIR>, respectively.
-For example, in my laptp, Lua 5.1 is configured to
-use '/usr/local/lib/lua/5.1' for
-<CDIR> and '/usr/local/share/lua/5.1' for
-<LDIR>. On Windows, <CDIR>
-usually points to the directory where the Lua executable is
-found, and <LDIR> points to a
-lua/ directory inside <CDIR>. (These
-settings can be overridden by environment variables
-LUA_PATH and LUA_CPATH. See the Lua
-documentation for details.) Here is the standard LuaSocket
-distribution directory structure:
Naturally, on Unix systems, core.dll
-would be replaced by core.so.
-
-
-
Using LuaSocket
-
-
With the above setup, and an interpreter with shared library support,
-it should be easy to use LuaSocket. Just fire the interpreter and use the
-require function to gain access to whatever module you need:
-LuaSocket is a Lua extension library
-that is composed by two parts: a C core that provides support for the TCP
-and UDP transport layers, and a set of Lua modules that add support for
-the SMTP (sending e-mails), HTTP (WWW access) and FTP (uploading and
-downloading files) protocols and other functionality commonly needed by
-applications that deal with the Internet. This introduction is about the C
-core.
-
-
-
-Communication in LuaSocket is performed via I/O objects. These can
-represent different network domains. Currently, support is provided for TCP
-and UDP, but nothing prevents other developers from implementing SSL, Local
-Domain, Pipes, File Descriptors etc. I/O objects provide a standard
-interface to I/O across different domains and operating systems.
-
-
-
-The API design had two goals in mind. First, users
-experienced with the C API to sockets should feel comfortable using LuaSocket.
-Second, the simplicity and the feel of the Lua language should be
-preserved. To achieve these goals, the LuaSocket API keeps the function names and semantics the C API whenever possible, but their usage in Lua has been greatly simplified.
-
-
-
-
-One of the simplifications is the receive pattern capability.
-Applications can read data from stream domains (such as TCP)
-line by line, block by block, or until the connection is closed.
-All I/O reads are buffered and the performance differences between
-different receive patterns are negligible.
-
-
-
-Another advantage is the flexible timeout control
-mechanism. As in C, all I/O operations are blocking by default. For
-example, the send,
-receive and
-accept methods
-of the TCP domain will block the caller application until
-the operation is completed (if ever!). However, with a call to the
-settimeout
-method, an application can specify upper limits on
-the time it can be blocked by LuaSocket (the "total" timeout), on
-the time LuaSocket can internally be blocked by any OS call (the
-"block" timeout) or a combination of the two. Each LuaSocket
-call might perform several OS calls, so that the two timeout values are
-not equivalent.
-
-
-
-Finally, the host name resolution is transparent, meaning that most
-functions and methods accept both IP addresses and host names. In case a
-host name is given, the library queries the system's resolver and
-tries the main IP address returned. Note that direct use of IP addresses
-is more efficient, of course. The
-toip
-and tohostname
-functions from the DNS module are provided to convert between host names and IP addresses.
-
-
-
-Together, these changes make network programming in LuaSocket much simpler
-than it is in C, as the following sections will show.
-
-
-
-
-
TCP
-
-
-TCP (Transfer Control Protocol) is reliable stream protocol. In other
-words, applications communicating through TCP can send and receive data as
-an error free stream of bytes. Data is split in one end and
-reassembled transparently on the other end. There are no boundaries in
-the data transfers. The library allows users to read data from the
-sockets in several different granularities: patterns are available for
-lines, arbitrary sized blocks or "read up to connection closed", all with
-good performance.
-
-
-
-The library distinguishes three types of TCP sockets: master,
-client and server sockets.
-
-
-
-Master sockets are newly created TCP sockets returned by the function
-socket.tcp. A master socket is
-transformed into a server socket
-after it is associated with a local address by a call to the
-bind method followed by a call to the
-listen. Conversely, a master socket
-can be changed into a client socket with the method
-connect,
-which associates it with a remote address.
-
-
-
-On server sockets, applications can use the
-accept method
-to wait for a client connection. Once a connection is established, a
-client socket object is returned representing this connection. The
-other methods available for server socket objects are
-getsockname,
-setoption,
-settimeout, and
-close.
-
-
-
-Client sockets are used to exchange data between two applications over
-the Internet. Applications can call the methods
-send and
-receive
-to send and receive data. The other methods
-available for client socket objects are
-getsockname,
-getpeername,
-setoption,
-settimeout,
-shutdown, and
-close.
-
-
-
-Example:
-
-
-
-A simple echo server, using LuaSocket. The program binds to an ephemeral
-port (one that is chosen by the operating system) on the local host and
-awaits client connections on that port. When a connection is established,
-the program reads a line from the remote end and sends it back, closing
-the connection immediately. You can test it using the telnet
-program.
-
-
-
--- load namespace
-local socket = require("socket")
--- create a TCP socket and bind it to the local host, at any port
-local server = assert(socket.bind("*", 0))
--- find out which port the OS chose for us
-local ip, port = server:getsockname()
--- print a message informing what's up
-print("Please telnet to localhost on port " .. port)
-print("After connecting, you have 10s to enter a line to be echoed")
--- loop forever waiting for clients
-while 1 do
- -- wait for a connection from any client
- local client = server:accept()
- -- make sure we don't block waiting for this client's line
- client:settimeout(10)
- -- receive the line
- local line, err = client:receive()
- -- if there was no error, send it back to the client
- if not err then client:send(line .. "\n") end
- -- done with client, close the object
- client:close()
-end
-
-
-
-
-
-
UDP
-
-
-UDP (User Datagram Protocol) is a non-reliable datagram protocol. In
-other words, applications communicating through UDP send and receive
-data as independent blocks, which are not guaranteed to reach the other
-end. Even when they do reach the other end, they are not guaranteed to be
-error free. Data transfers are atomic, one datagram at a time. Reading
-only part of a datagram discards the rest, so that the following read
-operation will act on the next datagram. The advantages are in
-simplicity (no connection setup) and performance (no error checking or
-error correction).
-
-
-
-Note that although no guarantees are made, these days
-networks are so good that, under normal circumstances, few errors
-happen in practice.
-
-
-
-An UDP socket object is created by the
-socket.udp function. UDP
-sockets do not need to be connected before use. The method
-sendto
-can be used immediately after creation to
-send a datagram to IP address and port. Host names are not allowed
-because performing name resolution for each packet would be forbiddingly
-slow. Methods
-receive and
-receivefrom
-can be used to retrieve datagrams, the latter returning the IP and port of
-the sender as extra return values (thus being slightly less
-efficient).
-
-
-
-When communication is performed repeatedly with a single peer, an
-application should call the
-setpeername method to specify a
-permanent partner. Methods
-sendto and
-receivefrom
-can no longer be used, but the method
-send can be used to send data
-directly to the peer, and the method
-receive
-will only return datagrams originating
-from that peer. There is about 30% performance gain due to this practice.
-
-
-
-To associate an UDP socket with a local address, an application calls the
-setsockname
-method before sending any datagrams. Otherwise, the socket is
-automatically bound to an ephemeral address before the first data
-transmission and once bound the local address cannot be changed.
-The other methods available for UDP sockets are
-getpeername,
-getsockname,
-settimeout,
-setoption and
-close.
-
-
-
-Example:
-
-
-
-A simple daytime client, using LuaSocket. The program connects to a remote
-server and tries to retrieve the daytime, printing the answer it got or an
-error message.
-
-
-
--- change here to the host an port you want to contact
-local host, port = "localhost", 13
--- load namespace
-local socket = require("socket")
--- convert host name to ip address
-local ip = assert(socket.dns.toip(host))
--- create a new UDP object
-local udp = assert(socket.udp())
--- contact daytime host
-assert(udp:sendto("anything", ip, port))
--- retrieve the answer and print results
-io.write(assert(udp:receive()))
-
-
-
-
-
-
Support modules
-
-
Although not covered in the introduction, LuaSocket offers
-much more than TCP and UDP functionality. As the library
-evolved, support for HTTP, FTP,
-and SMTP were built on top of these. These modules
-and many others are covered by the reference manual.
-
The ltn12 namespace implements the ideas described in
-
-LTN012, Filters sources and sinks. This manual simply describes the
-functions. Please refer to the LTN for a deeper explanation of the
-functionality provided by this module.
-
-
-
-To obtain the ltn12 namespace, run:
-
-
-
--- loads the LTN21 module
-local ltn12 = require("ltn12")
-
-Returns a filter that passes all data it receives through each of a
-series of given filters.
-
-
-
-Filter1 to filterN are simple
-filters.
-
-
-
-The function returns the chained filter.
-
-
-
-The nesting of filters can be arbitrary. For instance, the useless filter
-below doesn't do anything but return the data that was passed to it,
-unaltered.
-
-If successful, the function returns a value that evaluates to
-true. In case
-of error, the function returns a false value, followed by an error message.
-
-
-
-
-
-ltn12.pump.step(source, sink)
-
-
-
-Pumps one chunk of data from a source to a sink.
-
-
-
-If successful, the function returns a value that evaluates to
-true. In case
-of error, the function returns a false value, followed by an error message.
-
-
-
-
-
Sinks
-
-
-
-
-ltn12.sink.chain(filter, sink)
-
-
-
-Creates and returns a new sink that passes data through a filter before sending it to a given sink.
-
-
-
-
-
-ltn12.sink.error(message)
-
-
-
-Creates and returns a sink that aborts transmission with the error
-message.
-
-
-
-
-
-ltn12.sink.file(handle, message)
-
-
-
-Creates a sink that sends data to a file.
-
-
-
-Handle is a file handle. If handle is nil,
-message should give the reason for failure.
-
-
-
-The function returns a sink that sends all data to the given handle
-and closes the file when done, or a sink that aborts the transmission with
-the error message
-
-
-
-In the following example, notice how the prototype is designed to
-fit nicely with the io.open function.
-
-Creates a new source that produces the concatenation of the data produced
-by a number of sources.
-
-
-
-Source1 to sourceN are the original
-sources.
-
-
-
-The function returns the new source.
-
-
-
-
-
-ltn12.source.chain(source, filter)
-
-
-
-Creates a new source that passes data through a filter
-before returning it.
-
-
-
-The function returns the new source.
-
-
-
-
-
-ltn12.source.empty()
-
-
-
-Creates and returns an empty source.
-
-
-
-
-
-ltn12.source.error(message)
-
-
-
-Creates and returns a source that aborts transmission with the error
-message.
-
-
-
-
-
-ltn12.source.file(handle, message)
-
-
-
-Creates a source that produces the contents of a file.
-
-
-
-Handle is a file handle. If handle is nil,
-message should give the reason for failure.
-
-
-
-The function returns a source that reads chunks of data from
-given handle and returns it to the user,
-closing the file when done, or a source that aborts the transmission with
-the error message
-
-
-
-In the following example, notice how the prototype is designed to
-fit nicely with the io.open function.
-
-Creates and returns a simple source given a fancy source.
-
-
-
-
-
-ltn12.source.string(string)
-
-
-
-Creates and returns a source that produces the contents of a
-string, chunk by chunk.
-
-
-
-
-
-ltn12.source.table(table)
-
-
-
-Creates and returns a source that produces the numerically-indexed values of a table successively beginning at 1. The source returns nil (end-of-stream) whenever a nil value is produced by the current index, which proceeds forward regardless.
-
-The mime namespace offers filters that apply and remove common
-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
-RFC 2045,
-2046,
-2047,
-2048, and
-2049.
-
-Returns a filter that encodes data according to a given transfer content
-encoding.
-
-
-
-In the Quoted-Printable case, the user can specify whether the data is
-textual or binary, by passing the mode strings "text" or
-"binary". Mode defaults to "text".
-
-
-
-Although both transfer content encodings specify a limit for the line
-length, the encoding filters do not break text into lines (for
-added flexibility).
-Below is a filter that converts binary data to the Base64 transfer content
-encoding and breaks it into lines of the correct size.
-
-Converts most common end-of-line markers to a specific given marker.
-
-
-
-Marker is the new marker. It defaults to CRLF, the canonic
-end-of-line marker defined by the MIME standard.
-
-
-
-The function returns a filter that performs the conversion.
-
-
-
-Note: There is no perfect solution to this problem. Different end-of-line
-markers are an evil that will probably plague developers forever.
-This function, however, will work perfectly for text created with any of
-the most common end-of-line markers, i.e. the Mac OS (CR), the Unix (LF),
-or the DOS (CRLF) conventions. Even if the data has mixed end-of-line
-markers, the function will still work well, although it doesn't
-guarantee that the number of empty lines will be correct.
-
-
-
-
-
-mime.stuff()
-
-
-
-Creates and returns a filter that performs stuffing of SMTP messages.
-
-
-
-Note: The smtp.send function
-uses this filter automatically. You don't need to chain it with your
-source, or apply it to your message body.
-
-The "text" line-wrap filter simply breaks text into lines by
-inserting CRLF end-of-line markers at appropriate positions.
-Length defaults 76.
-The "base64" line-wrap filter works just like the default
-"text" line-wrap filter with default length.
-The function can also wrap "quoted-printable" lines, taking care
-not to break lines in the middle of an escaped character. In that case, the
-line length is fixed at 76.
-
-
-
-For example, to create an encoding filter for the Quoted-Printable transfer content encoding of text data, do the following:
-
-Note: To break into lines with a different end-of-line convention, apply
-a normalization filter after the line break filter.
-
-
-
-
-
Low-level filters
-
-
-
-
-A, B = mime.b64(C [, D])
-
-
-
-Low-level filter to perform Base64 encoding.
-
-
-
-A is the encoded version of the largest prefix of
-C..D
-that can be encoded unambiguously. B has the remaining bytes of
-C..D, before encoding.
-If D is nil, A is padded with
-the encoding of the remaining bytes of C.
-
-
-
-Note: The simplest use of this function is to encode a string into it's
-Base64 transfer content encoding. Notice the extra parenthesis around the
-call to mime.b64, to discard the second return value.
-
-Low-level filter to perform SMTP stuffing and enable transmission of
-messages containing the sequence "CRLF.CRLF".
-
-
-
-A is the stuffed version of B. 'n' gives the
-number of characters from the sequence CRLF seen in the end of B.
-'m' should tell the same, but for the previous chunk.
-
-
-
Note: The message body is defined to begin with
-an implicit CRLF. Therefore, to stuff a message correctly, the
-first m should have the value 2.
-
-
-
-print((string.gsub(mime.dot(2, ".\r\nStuffing the message.\r\n.\r\n."), "\r\n", "\\n")))
---> ..\nStuffing the message.\n..\n..
-
-
-
-Note: The smtp.send function
-uses this filter automatically. You don't need to
-apply it again.
-
-
-
-
-
-A, B = mime.eol(C [, D, marker])
-
-
-
-Low-level filter to perform end-of-line marker translation.
-For each chunk, the function needs to know if the last character of the
-previous chunk could be part of an end-of-line marker or not. This is the
-context the function receives besides the chunk. An updated version of
-the context is returned after each new chunk.
-
-
-
-A is the translated version of D. C is the
-ASCII value of the last character of the previous chunk, if it was a
-candidate for line break, or 0 otherwise.
-B is the same as C, but for the current
-chunk. Marker gives the new end-of-line marker and defaults to CRLF.
-
-
-
--- translates the end-of-line marker to UNIX
-unix = mime.eol(0, dos, "\n")
-
-
-
-
-
-A, B = mime.qp(C [, D, marker])
-
-
-
-Low-level filter to perform Quoted-Printable encoding.
-
-
-
-A is the encoded version of the largest prefix of
-C..D
-that can be encoded unambiguously. B has the remaining bytes of
-C..D, before encoding.
-If D is nil, A is padded with
-the encoding of the remaining bytes of C.
-Throughout encoding, occurrences of CRLF are replaced by the
-marker, which itself defaults to CRLF.
-
-
-
-Note: The simplest use of this function is to encode a string into it's
-Quoted-Printable transfer content encoding.
-Notice the extra parenthesis around the call to mime.qp, to discard the second return value.
-
-
-
-print((mime.qp("ma��")))
---> ma=E7=E3=
-
-
-
-
-
-A, m = mime.qpwrp(n [, B, length])
-
-
-
-Low-level filter to break Quoted-Printable text into lines.
-
-
-
-A is a copy of B, broken into lines of at most
-length bytes (defaults to 76).
-'n' should tell how many bytes are left for the first
-line of B and 'm' returns the number of bytes
-left in the last line of A.
-
-
-
-Note: Besides breaking text into lines, this function makes sure the line
-breaks don't fall in the middle of an escaped character combination. Also,
-this function only breaks lines that are bigger than length bytes.
-
-
-
-
-
-A, B = mime.unb64(C [, D])
-
-
-
-Low-level filter to perform Base64 decoding.
-
-
-
-A is the decoded version of the largest prefix of
-C..D
-that can be decoded unambiguously. B has the remaining bytes of
-C..D, before decoding.
-If D is nil, A is the empty string
-and B returns whatever couldn't be decoded.
-
-
-
-Note: The simplest use of this function is to decode a string from it's
-Base64 transfer content encoding.
-Notice the extra parenthesis around the call to mime.unqp, to discard the second return value.
-
-Low-level filter to remove the Quoted-Printable transfer content encoding
-from data.
-
-
-
-A is the decoded version of the largest prefix of
-C..D
-that can be decoded unambiguously. B has the remaining bytes of
-C..D, before decoding.
-If D is nil, A is augmented with
-the encoding of the remaining bytes of C.
-
-
-
-Note: The simplest use of this function is to decode a string from it's
-Quoted-Printable transfer content encoding.
-Notice the extra parenthesis around the call to mime.unqp, to discard the second return value.
-
-
-
-print((mime.qp("ma=E7=E3=")))
---> ma��
-
-
-
-
-
-A, m = mime.wrp(n [, B, length])
-
-
-
-Low-level filter to break text into lines with CRLF marker.
-Text is assumed to be in the normalize form.
-
-
-
-A is a copy of B, broken into lines of at most
-length bytes (defaults to 76).
-'n' should tell how many bytes are left for the first
-line of B and 'm' returns the number of bytes
-left in the last line of A.
-
-
-
-Note: This function only breaks lines that are bigger than
-length bytes. The resulting line length does not include the CRLF
-marker.
-
The smtp namespace provides functionality to send e-mail
-messages. The high-level API consists of two functions: one to
-define an e-mail message, and another to actually send the message.
-Although almost all users will find that these functions provide more than
-enough functionality, the underlying implementation allows for even more
-control (if you bother to read the code).
-
-
-
The implementation conforms to the Simple Mail Transfer Protocol,
-RFC 2821.
-Another RFC of interest is RFC 2822,
-which governs the Internet Message Format.
-Multipart messages (those that contain attachments) are part
-of the MIME standard, but described mainly
-in RFC 2046.
-
-
In the description below, good understanding of LTN012, Filters
-sources and sinks and the MIME module is
-assumed. In fact, the SMTP module was the main reason for their
-creation.
-
-
-To obtain the smtp namespace, run:
-
-
-
--- loads the SMTP module and everything it requires
-local smtp = require("socket.smtp")
-
-
-
-MIME headers are represented as a Lua table in the form:
-
-Field names are case insensitive (as specified by the standard) and all
-functions work with lowercase field names (but see
-socket.headers.canonic).
-Field values are left unmodified.
-
-
-
-Note: MIME headers are independent of order. Therefore, there is no problem
-in representing them in a Lua table.
-
-
-
-The following constants can be set to control the default behavior of
-the SMTP module:
-
-
-
-
DOMAIN: domain used to greet the server;
-
PORT: default port used for the connection;
-
SERVER: default server used for the connection;
-
TIMEOUT: default timeout for all I/O operations;
-
ZONE: default time zone.
-
-
-
-
-
-smtp.message(mesgt)
-
-
-
-Returns a simple
-LTN12 source that sends an SMTP message body, possibly multipart (arbitrarily deep).
-
-
-
-The only parameter of the function is a table describing the message.
-Mesgt has the following form (notice the recursive structure):
-
-For a simple message, all that is needed is a set of headers
-and the body. The message body can be given as a string
-or as a simple
-LTN12
-source. For multipart messages, the body is a table that
-recursively defines each part as an independent message, plus an optional
-preamble and epilogue.
-
-
-
-The function returns a simple
-LTN12
-source that produces the
-message contents as defined by mesgt, chunk by chunk.
-Hopefully, the following
-example will make things clear. When in doubt, refer to the appropriate RFC
-as listed in the introduction.
-
-
--- load the smtp support and its friends
-local smtp = require("socket.smtp")
-local mime = require("mime")
-local ltn12 = require("ltn12")
-
--- creates a source to send a message with two parts. The first part is
--- plain text, the second part is a PNG image, encoded as base64.
-source = smtp.message{
- headers = {
- -- Remember that headers are *ignored* by smtp.send.
- from = "Sicrano de Oliveira <sicrano@example.com>",
- to = "Fulano da Silva <fulano@example.com>",
- subject = "Here is a message with attachments"
- },
- body = {
- preamble = "If your client doesn't understand attachments, \r\n" ..
- "it will still display the preamble and the epilogue.\r\n" ..
- "Preamble will probably appear even in a MIME enabled client.",
- -- first part: no headers means plain text, us-ascii.
- -- The mime.eol low-level filter normalizes end-of-line markers.
- [1] = {
- body = mime.eol(0, [[
- Lines in a message body should always end with CRLF.
- The smtp module will *NOT* perform translation. However, the
- send function *DOES* perform SMTP stuffing, whereas the message
- function does *NOT*.
- ]])
- },
- -- second part: headers describe content to be a png image,
- -- sent under the base64 transfer content encoding.
- -- notice that nothing happens until the message is actually sent.
- -- small chunks are loaded into memory right before transmission and
- -- translation happens on the fly.
- [2] = {
- headers = {
- ["content-type"] = 'image/png; name="image.png"',
- ["content-disposition"] = 'attachment; filename="image.png"',
- ["content-description"] = 'a beautiful image',
- ["content-transfer-encoding"] = "BASE64"
- },
- body = ltn12.source.chain(
- ltn12.source.file(io.open("image.png", "rb")),
- ltn12.filter.chain(
- mime.encode("base64"),
- mime.wrap()
- )
- )
- },
- epilogue = "This might also show up, but after the attachments"
- }
-}
-
--- finally send it
-r, e = smtp.send{
- from = "<sicrano@example.com>",
- rcpt = "<fulano@example.com>",
- source = source,
-}
-
-Sends a message to a recipient list. Since sending messages is not as
-simple as downloading an URL from a FTP or HTTP server, this function
-doesn't have a simple interface. However, see the
-message source factory for
-a very powerful way to define the message contents.
-
-
-
-
-The sender is given by the e-mail address in the from field.
-Rcpt is a Lua table with one entry for each recipient e-mail
-address, or a string
-in case there is just one recipient.
-The contents of the message are given by a simple
-LTN12
-source. Several arguments are optional:
-
-
-
user, password: User and password for
-authentication. The function will attempt LOGIN and PLAIN authentication
-methods if supported by the server (both are unsafe);
-
server: Server to connect to. Defaults to "localhost";
-
port: Port to connect to. Defaults to 25;
-
domain: Domain name used to greet the server; Defaults to the
-local machine host name;
-
step:
-LTN12
-pump step function used to pass data from the
-source to the server. Defaults to the LTN12 pump.step function;
-
create: An optional function to be used instead of
-socket.tcp when the communications socket is created.
-
-
-
-If successful, the function returns 1. Otherwise, the function returns
-nil followed by an error message.
-
-
-
-Note: SMTP servers can be very picky with the format of e-mail
-addresses. To be safe, use only addresses of the form
-"<fulano@example.com>" in the from and
-rcpt arguments to the send function. In headers, e-mail
-addresses can take whatever form you like.
-
-
-Big note: There is a good deal of misconception with the use of the
-destination address field headers, i.e., the 'To', 'Cc',
-and, more importantly, the 'Bcc' headers. Do not add a
-'Bcc' header to your messages because it will probably do the
-exact opposite of what you expect.
-
-
-
-Only recipients specified in the rcpt list will receive a copy of the
-message. Each recipient of an SMTP mail message receives a copy of the
-message body along with the headers, and nothing more. The headers
-are part of the message and should be produced by the
-LTN12
-source function. The rcpt list is not
-part of the message and will not be sent to anyone.
-
-
-
-RFC 2822
-has two important and short 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:
-
-
-
-
To: contains the address(es) of the primary recipient(s)
-of the message;
-
Cc: (where the "Cc" means "Carbon Copy" in the sense of
-making a copy on a typewriter using carbon paper) contains the
-addresses of others who are to receive the message, though the
-content of the message may not be directed at them;
-
Bcc: (where the "Bcc" means "Blind Carbon
-Copy") contains addresses of recipients of the message whose addresses are not
-to be revealed to other recipients of the message.
-
-
-
-The LuaSocket send function does not care or interpret the
-headers you send, but it gives you full control over what is sent and
-to whom it is sent:
-
-
-
If someone is to receive the message, the e-mail address has
-to be in the recipient list. This is the only parameter that controls who
-gets a copy of the message;
-
If there are multiple recipients, none of them will automatically
-know that someone else got that message. That is, the default behavior is
-similar to the Bcc field of popular e-mail clients;
-
It is up to you to add the To header with the list of primary
-recipients so that other recipients can see it;
-
It is also up to you to add the Cc header with the
-list of additional recipients so that everyone else sees it;
-
Adding a header Bcc is nonsense, unless it is
-empty. Otherwise, everyone receiving the message will see it and that is
-exactly what you don't want to happen!
-
-
-
-I hope this clarifies the issue. Otherwise, please refer to
-RFC 2821
-and
-RFC 2822.
-
-
-
--- load the smtp support
-local smtp = require("socket.smtp")
-
--- Connects to server "localhost" and sends a message to users
--- "fulano@example.com", "beltrano@example.com",
--- and "sicrano@example.com".
--- Note that "fulano" is the primary recipient, "beltrano" receives a
--- carbon copy and neither of them knows that "sicrano" received a blind
--- carbon copy of the message.
-from = "<luasocket@example.com>"
-
-rcpt = {
- "<fulano@example.com>",
- "<beltrano@example.com>",
- "<sicrano@example.com>"
-}
-
-mesgt = {
- headers = {
- to = "Fulano da Silva <fulano@example.com>",
- cc = '"Beltrano F. Nunes" <beltrano@example.com>',
- subject = "My first message"
- },
- body = "I hope this works. If it does, I can send you another 1000 copies."
-}
-
-r, e = smtp.send{
- from = from,
- rcpt = rcpt,
- source = smtp.message(mesgt)
-}
-
-The socket namespace contains the core functionality of LuaSocket.
-
-
-
-To obtain the socket namespace, run:
-
-
-
--- loads the socket module
-local socket = require("socket")
-
-
-
-
-
-socket.headers.canonic
-
-
The socket.headers.canonic 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.
-
-
-
-You can obtain the headers namespace if case run-time
-modifications are required by running:
-
-
-
--- loads the headers module
-local headers = require("headers")
-
-
-
-
-
-
-socket.bind(address, port [, backlog])
-
-
-
-This function is a shortcut that creates and returns a TCP server object
-bound to a local address and port, ready to
-accept client connections. Optionally,
-user can also specify the backlog argument to the
-listen method (defaults to 32).
-
-
-
-Note: The server object returned will have the option "reuseaddr"
-set to true.
-
-
-
-
-
-socket.connect[46](address, port [, locaddr] [, locport] [, family])
-
-
-
-This function is a shortcut that creates and returns a TCP client object
-connected to a remote address at a given port. Optionally,
-the user can also specify the local address and port to bind
-(locaddr and locport), or restrict the socket family
-to "inet" or "inet6".
-Without specifying family to connect, 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
-family, socket.connect4 and socket.connect6.
-
-
-
-
-
-socket._DEBUG
-
-
-
-This constant is set to true if the library was compiled
-with debug support.
-
-
-
-
-
-socket._DATAGRAMSIZE
-
-
-
-Default datagram size used by calls to
-receive and
-receivefrom.
-(Unless changed in compile time, the value is 8192.)
-
-
-
-
-
-socket.gettime()
-
-
-
-Returns the UNIX time in seconds. You should subtract the values returned by this function
-to get meaningful values.
-
-
-
-t = socket.gettime()
--- do stuff
-print(socket.gettime() - t .. " seconds elapsed")
-
-
-
-
-
-socket.newtry(finalizer)
-
-
-
-Creates and returns a clean
-try
-function that allows for cleanup before the exception
-is raised.
-
-
-
-Finalizer is a function that will be called before
-try throws the exception.
-
-
-
-The function returns your customized try function.
-
-
-
-Note: This idea saved a lot of work with the
-implementation of protocols in LuaSocket:
-
-
-
-foo = socket.protect(function()
- -- connect somewhere
- local c = socket.try(socket.connect("somewhere", 42))
- -- create a try function that closes 'c' on error
- local try = socket.newtry(function() c:close() end)
- -- do everything reassured c will be closed
- try(c:send("hello there?\r\n"))
- local answer = try(c:receive())
- ...
- try(c:send("good bye\r\n"))
- c:close()
-end)
-
-
-
-
-
-
-socket.protect(func)
-
-
-
-Converts a function that throws exceptions into a safe function. This
-function only catches exceptions thrown by the try
-and newtry functions. It does not catch normal
-Lua errors.
-
-
-
-Func is a function that calls
-try (or assert, or error)
-to throw exceptions.
-
-
-
-Returns an equivalent function that instead of throwing exceptions in case of
-a failed try call, returns nil
-followed by an error message.
-
-
-
-
-
-socket.select(recvt, sendt [, timeout])
-
-
-
-Waits for a number of sockets to change status.
-
-
-
-Recvt is an array with the sockets to test for characters
-available for reading. Sockets in the sendt array are watched to
-see if it is OK to immediately write on them. Timeout is the
-maximum amount of time (in seconds) to wait for a change in status. A
-nil, negative or omitted timeout value allows the
-function to block indefinitely. Recvt and sendt can also
-be empty tables or nil. Non-socket values (or values with
-non-numeric indices) in the arrays will be silently ignored.
-
-
-
The function returns a list with the sockets ready for
-reading, a list with the sockets ready for writing and an error message.
-The error message is "timeout" if a timeout
-condition was met, "select failed" if the call
-to select failed, and
-nil otherwise. The returned tables are
-doubly keyed both by integers and also by the sockets
-themselves, to simplify the test if a specific socket has
-changed status.
-
-
-
-Note:select can monitor a limited number
-of sockets, as defined by the constant
-socket._SETSIZE. 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 select with a larger
-number of sockets will raise an error.
-
-
-
-Important note: a known bug in WinSock causes select to fail
-on non-blocking TCP sockets. The function may return a socket as
-writable even though the socket is not ready for sending.
-
-
-
-Another important note: calling select with a server socket in the receive parameter before a call to accept does not guarantee
-accept will return immediately.
-Use the settimeout
-method or accept might block forever.
-
-
-
-Yet another note: If you close a socket and pass
-it to select, it will be ignored.
-
-
-
-Using select with non-socket objects: Any object that implements getfd and dirty can be used with select, allowing objects from other libraries to be used within a socket.select driven loop.
-
-
-
-
-
-socket._SETSIZE
-
-
-
-The maximum number of sockets that the select function can handle.
-
-
-
-
-
-
-socket.sink(mode, socket)
-
-
-
-Creates an
-LTN12
-sink from a stream socket object.
-
-
-
-Mode defines the behavior of the sink. The following
-options are available:
-
-
-
"http-chunked": sends data through socket after applying the
-chunked transfer coding, closing the socket when done;
-
"close-when-done": sends all received data through the
-socket, closing the socket when done;
-
"keep-open": sends all received data through the
-socket, leaving it open when done.
-
-
-Socket is the stream socket object used to send the data.
-
-
-
-The function returns a sink with the appropriate behavior.
-
-
-
-
-
-socket.skip(d [, ret1, ret2 ... retN])
-
-
-
-Drops a number of arguments and returns the remaining.
-
-
-
-D is the number of arguments to drop. Ret1 to
-retN are the arguments.
-
-
-
-The function returns retd+1 to retN.
-
-
-
-Note: This function is useful to avoid creation of dummy variables:
-
-
-
--- get the status code and separator from SMTP server reply
-local code, sep = socket.skip(2, string.find(line, "^(%d%d%d)(.?)"))
-
-
-
-
-
-socket.sleep(time)
-
-
-
-Freezes the program execution during a given amount of time.
-
-
-
-Time is the number of seconds to sleep for. If
-time is negative, the function returns immediately.
-
-
-
-
-
-socket.source(mode, socket [, length])
-
-
-
-Creates an
-LTN12
-source from a stream socket object.
-
-
-
-Mode defines the behavior of the source. The following
-options are available:
-
-
-
"http-chunked": receives data from socket and removes the
-chunked transfer coding before returning the data;
-
"by-length": receives a fixed number of bytes from the
-socket. This mode requires the extra argument length;
-
"until-closed": receives data from a socket until the other
-side closes the connection.
-
-
-Socket is the stream socket object used to receive the data.
-
-
-
-The function returns a source with the appropriate behavior.
-
-
-
-
-
-socket._SOCKETINVALID
-
-
-
-The OS value for an invalid socket. This can be used with
-tcp:getfd and tcp:setfd methods.
-
-
-
-
-
-socket.try(ret1 [, ret2 ... retN])
-
-
-
-Throws an exception in case ret1 is falsy, using
-ret2 as the error message. The exception is supposed to be caught
-by a protected function only.
-
-
-
-Ret1 to retN can be arbitrary
-arguments, but are usually the return values of a function call
-nested with try.
-
-
-
-The function returns ret1 to retN if
-ret1 is not nil or false.
-Otherwise, it calls error passing ret2 wrapped
-in a table with metatable used by protect to
-distinguish exceptions from runtime errors.
-
-
-
--- connects or throws an exception with the appropriate error message
-c = socket.try(socket.connect("localhost", 80))
-
-
-
-
-
-socket._VERSION
-
-
-
-This constant has a string describing the current LuaSocket version.
-
-Waits for a remote connection on the server
-object and returns a client object representing that connection.
-
-
-
-If a connection is successfully initiated, a client object is returned.
-If a timeout condition is met, the method returns nil
-followed by the error string 'timeout'. Other errors are
-reported by nil followed by a message describing the error.
-
-
-
-Note: calling socket.select
-with a server object in
-the recvt parameter before a call to accept does
-not guarantee accept will return immediately. Use the settimeout method or accept
-might block until another client shows up.
-
-
-
-
-
-master:bind(address, port)
-
-
-
-Binds a master object to address and port on the
-local host.
-
-
-
-Address can be an IP address or a host name.
-Port must be an integer number in the range [0..64K).
-If address
-is '*', the system binds to all local interfaces
-using the INADDR_ANY constant or
-IN6ADDR_ANY_INIT, according to the family.
-If port is 0, the system automatically
-chooses an ephemeral port.
-
-
-
-In case of success, the method returns 1. In case of error, the
-method returns nil followed by an error message.
-
-
-
-Note: The function socket.bind
-is available and is a shortcut for the creation of server sockets.
-
-
-
-
-
-master:close()
-client:close()
-server:close()
-
-
-
-Closes a TCP object. The internal socket used by the object is closed
-and the local address to which the object was
-bound is made available to other applications. No further operations
-(except for further calls to the close method) are allowed on
-a closed socket.
-
-
-
-Note: It is important to close all used sockets once they are not
-needed, since, in many systems, each socket uses a file descriptor,
-which are limited system resources. Garbage-collected objects are
-automatically closed before destruction, though.
-
-
-
-
-
-master:connect(address, port)
-
-
-
-Attempts to connect a master object to a remote host, transforming it into a
-client object.
-Client objects support methods
-send,
-receive,
-getsockname,
-getpeername,
-settimeout,
-and close.
-
-
-
-Address can be an IP address or a host name.
-Port must be an integer number in the range [1..64K).
-
-
-
-In case of error, the method returns nil followed by a string
-describing the error. In case of success, the method returns 1.
-
-
-
-Note: The function socket.connect
-is available and is a shortcut for the creation of client sockets.
-
-
-
-Note: Starting with LuaSocket 2.0,
-the settimeout
-method affects the behavior of connect, causing it to return
-with an error in case of a timeout. If that happens, you can still call socket.select with the socket in the
-sendt table. The socket will be writable when the connection is
-established.
-
-
-
-Note: Starting with LuaSocket 3.0, the host name resolution
-depends on whether the socket was created by
-socket.tcp,
-socket.tcp4 or
-socket.tcp6. Addresses from
-the appropriate family (or both) are tried in the order
-returned by the resolver until the
-first success or until the last failure. If the timeout was
-set to zero, only the first address is tried.
-
-
-
-
-
-master:dirty()
-client:dirty()
-server:dirty()
-
-
-
-Check the read buffer status.
-
-
-
-Returns true if there is any data in the read buffer, false otherwise.
-
-
-
-Note: This is an internal method, use at your own risk.
-
-
-
-
-
-
-master:getfd()
-client:getfd()
-server:getfd()
-
-
-
-Returns the underling socket descriptor or handle associated to the object.
-
-
-
-The descriptor or handle. In case the object has been closed, the return value
-will be -1. For an invalid socket it will be
-_SOCKETINVALID.
-
-
-
-Note: This is an internal method. Unlikely to be
-portable. Use at your own risk.
-
-Gets options for the TCP object.
-See setoption for description of the
-option names and values.
-
-
-
-Option is a string with the option name.
-
-
'keepalive'
-
'linger'
-
'reuseaddr'
-
'tcp-nodelay'
-
-
-
-The method returns the option value in case of success, or
-nil followed by an error message otherwise.
-
-
-
-
-
-
-client:getpeername()
-
-
-
-Returns information about the remote side of a connected client object.
-
-
-
-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 ("inet" or "inet6").
-In case of error, the method returns nil.
-
-
-
-Note: It makes no sense to call this method on server objects.
-
-Returns the local address information associated to the object.
-
-
-
-The method returns a string with local IP address, a number with
-the local port,
-and a string with the family ("inet" or "inet6").
-In case of error, the method returns nil.
-
-Returns the current block timeout followed by the curent
-total timeout.
-
-
-
-
-
-
-master:listen(backlog)
-
-
-
-Specifies the socket is willing to receive connections, transforming the
-object into a server object. Server objects support the
-accept,
-getsockname,
-setoption,
-settimeout,
-and close methods.
-
-
-
-The parameter backlog specifies the number of client
-connections that can
-be queued waiting for service. If the queue is full and another client
-attempts connection, the connection is refused.
-
-
-
-In case of success, the method returns 1. In case of error, the
-method returns nil followed by an error message.
-
-
-
-
-
-client:receive([pattern [, prefix]])
-
-
-
-Reads data from a client object, according to the specified read
-pattern. Patterns follow the Lua file I/O format, and the difference in performance between all patterns is negligible.
-
-
-
-Pattern can be any of the following:
-
-
-
-
'*a': reads from the socket until the connection is
-closed. No end-of-line translation is performed;
-
'*l': reads a line of text from the socket. The line is
-terminated by a LF character (ASCII 10), optionally preceded by a
-CR character (ASCII 13). The CR and LF characters are not included in
-the returned line. In fact, all CR characters are
-ignored by the pattern. This is the default pattern;
-
number: causes the method to read a specified number
-of bytes from the socket.
-
-
-
-Prefix is an optional string to be concatenated to the beginning
-of any received data before return.
-
-
-
-If successful, the method returns the received pattern. In case of error,
-the method returns nil followed by an error
-message, followed by a (possibly empty) string containing
-the partial that was received. The error message can be
-the string 'closed' in case the connection was
-closed before the transmission was completed or the string
-'timeout' in case there was a timeout during the operation.
-
-
-
-Important note: This function was changed severely. It used
-to support multiple patterns (but I have never seen this feature used) and
-now it doesn't anymore. Partial results used to be returned in the same
-way as successful results. This last feature violated the idea that all
-functions should return nil on error. Thus it was changed
-too.
-
-
-
-
-
-client:send(data [, i [, j]])
-
-
-
-Sends data through client object.
-
-
-
-Data is the string to be sent. The optional arguments
-i and j work exactly like the standard
-string.sub Lua function to allow the selection of a
-substring to be sent.
-
-
-
-If successful, the method returns the index of the last byte
-within [i, j] that has been sent. Notice that, if
-i is 1 or absent, this is effectively the total
-number of bytes sent. In case of error, the method returns
-nil, followed by an error message, followed
-by the index of the last byte within [i, j] that
-has been sent. You might want to try again from the byte
-following that. The error message can be 'closed'
-in case the connection was closed before the transmission
-was completed or the string 'timeout' in case
-there was a timeout during the operation.
-
-
-
-Note: Output is not buffered. For small strings,
-it is always better to concatenate them in Lua
-(with the '..' operator) and send the result in one call
-instead of calling the method several times.
-
-Sets options for the TCP object. Options are only needed by low-level or
-time-critical applications. You should only modify an option if you
-are sure you need it.
-
-
-
-Option is a string with the option name, and value
-depends on the option being set:
-
-
-
-
'keepalive': Setting this option to true enables
-the periodic transmission of messages on a connected socket. Should the
-connected party fail to respond to these messages, the connection is
-considered broken and processes using the socket are notified;
-
-
'linger': Controls the action taken when unsent data are
-queued on a socket and a close is performed. The value is a table with a
-boolean entry 'on' and a numeric entry for the time interval
-'timeout' in seconds. If the 'on' field is set to
-true, the system will block the process on the close attempt until
-it is able to transmit the data or until 'timeout' has passed. If
-'on' is false and a close is issued, the system will
-process the close in a manner that allows the process to continue as
-quickly as possible. I do not advise you to set this to anything other than
-zero;
-
-
'reuseaddr': Setting this option indicates that the rules
-used in validating addresses supplied in a call to
-bind should allow reuse of local addresses;
-
-
'tcp-nodelay': Setting this option to true
-disables the Nagle's algorithm for the connection;
-
-
'tcp-keepidle': value in seconds for TCP_KEEPIDLE Linux only!!
-
-
'tcp-keepcnt': value for TCP_KEEPCNT Linux only!!
-
-
'tcp-keepintvl': value for TCP_KEEPINTVL Linux only!!
-
-
'tcp-defer-accept': value for TCP_DEFER_ACCEPT Linux only!!
-
-
'tcp-fastopen': value for TCP_FASTOPEN Linux only!!
-
-
'tcp-fastopen-connect': value for TCP_FASTOPEN_CONNECT Linux only!!
-
-
'ipv6-v6only':
-Setting this option to true restricts an inet6 socket to
-sending and receiving only IPv6 packets.
-
-
-
-The method returns 1 in case of success, or nil
-followed by an error message otherwise.
-
-
-
-Note: The descriptions above come from the man pages.
-
-Changes the timeout values for the object. By default,
-all I/O operations are blocking. That is, any call to the methods
-send,
-receive, and
-accept
-will block indefinitely, until the operation completes. The
-settimeout method defines a limit on the amount of time the
-I/O methods can block. When a timeout is set and the specified amount of
-time has elapsed, the affected methods give up and fail with an error code.
-
-
-
-The amount of time to wait is specified as the
-value parameter, in seconds. There are two timeout modes and
-both can be used together for fine tuning:
-
-
-
-
'b': block timeout. Specifies the upper limit on
-the amount of time LuaSocket can be blocked by the operating system
-while waiting for completion of any single I/O operation. This is the
-default mode;
-
-
't': total timeout. Specifies the upper limit on
-the amount of time LuaSocket can block a Lua script before returning from
-a call.
-
-
-
-The nil timeout value allows operations to block
-indefinitely. Negative timeout values have the same effect.
-
-
-
-Note: although timeout values have millisecond precision in LuaSocket,
-large blocks can cause I/O functions not to respect timeout values due
-to the time the library takes to transfer blocks to and from the OS
-and to and from the Lua interpreter. Also, function that accept host names
-and perform automatic name resolution might be blocked by the resolver for
-longer than the specified timeout value.
-
-
-
-Note: The old timeout method is deprecated. The name has been
-changed for sake of uniformity, since all other method names already
-contained verbs making their imperative nature obvious.
-
-
-
-
-
-client:shutdown(mode)
-
-
-
-Shuts down part of a full-duplex connection.
-
-
-
-Mode tells which way of the connection should be shut down and can
-take the value:
-
-
"both": disallow further sends and receives on the object.
-This is the default mode;
-
"send": disallow further sends on the object;
-
"receive": disallow further receives on the object.
-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.
-To set it as invalid use _SOCKETINVALID.
-
-
-
-No return value.
-
-
-
-Note: This is an internal method. Unlikely to be
-portable. Use at your own risk.
-
-
-
-
-
-socket.tcp()
-
-
-
-Creates and returns an TCP master object. A master object can
-be transformed into a server object with the method
-listen (after a call to bind) or into a client object with
-the method connect. The only other
-method supported by a master object is the
-close method.
-
-
-In case of success, a new master object is returned. In case of error,
-nil is returned, followed by an error message.
-
-
-
-Note: The choice between IPv4 and IPv6 happens during a call to
-bind or connect, depending on the address
-family obtained from the resolver.
-
-
-
-Note: Before the choice between IPv4 and IPv6 happens,
-the internal socket object is invalid and therefore setoption will fail.
-
-
-
-
-
-socket.tcp4()
-
-
-
-Creates and returns an IPv4 TCP master object. A master object can
-be transformed into a server object with the method
-listen (after a call to bind) or into a client object with
-the method connect. The only other
-method supported by a master object is the
-close method.
-
-
-In case of success, a new master object is returned. In case of error,
-nil is returned, followed by an error message.
-
-
-
-
-
-socket.tcp6()
-
-
-
-Creates and returns an IPv6 TCP master object. A master object can
-be transformed into a server object with the method
-listen (after a call to bind) or into a client object with
-the method connect. The only other
-method supported by a master object is the
-close method.
-
-
-In case of success, a new master object is returned. In case of error,
-nil is returned, followed by an error message.
-
-
-
-Note: The TCP object returned will have the option
-"ipv6-v6only" set to true.
-
-Closes a UDP object. The internal socket
-used by the object is closed and the local address to which the
-object was bound is made available to other applications. No
-further operations (except for further calls to the close
-method) are allowed on a closed socket.
-
-
-
-Note: It is important to close all used sockets
-once they are not needed, since, in many systems, each socket uses
-a file descriptor, which are limited system resources.
-Garbage-collected objects are automatically closed before
-destruction, though.
-
-
-
-
-
-connected:getoption()
-unconnected:getoption()
-
-
-
-Gets an option value from the UDP object.
-See setoption for
-description of the option names and values.
-
-
-
Option is a string with the option name.
-
-
'dontroute'
-
'broadcast'
-
'reuseaddr'
-
'reuseport'
-
'ip-multicast-loop'
-
'ipv6-v6only'
-
'ip-multicast-if'
-
'ip-multicast-ttl'
-
'ip-add-membership'
-
'ip-drop-membership'
-
-
-
-
-The method returns the option value in case of
-success, or
-nil followed by an error message otherwise.
-
-
-
-
-
-connected:getpeername()
-
-
-
-Retrieves information about the peer
-associated with a connected UDP object.
-
-
-
-
-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 ("inet" or "inet6").
-In case of error, the method returns nil.
-
-
-
-Note: It makes no sense to call this method on unconnected objects.
-
-Returns the local address information associated to the object.
-
-
-
-
-The method returns a string with local IP address, a number with
-the local port,
-and a string with the family ("inet" or "inet6").
-In case of error, the method returns nil.
-
-
-
-Note: UDP sockets are not bound to any address
-until the setsockname or the
-sendto method is called for the
-first time (in which case it is bound to an ephemeral port and the
-wild-card address).
-
-Receives a datagram from the UDP object. If
-the UDP object is connected, only datagrams coming from the peer
-are accepted. Otherwise, the returned datagram can come from any
-host.
-
-
-
-The optional size parameter
-specifies the maximum size of the datagram to be retrieved. If
-there are more than size bytes available in the datagram,
-the excess bytes are discarded. If there are less then
-size bytes available in the current datagram, the
-available bytes are returned.
-If size is omitted, the
-compile-time constant
-socket._DATAGRAMSIZE is used
-(it defaults to 8192 bytes). Larger sizes will cause a
-temporary buffer to be allocated for the operation.
-
-
-
-In case of success, the method returns the
-received datagram. In case of timeout, the method returns
-nil followed by the string 'timeout'.
-
-
-
-
-
-unconnected:receivefrom([size])
-
-
-
-Works exactly as the receive
-method, except it returns the IP
-address and port as extra return values (and is therefore slightly less
-efficient).
-
-
-
-
-
-connected:send(datagram)
-
-
-
-Sends a datagram to the UDP peer of a connected object.
-
-
-
-Datagram is a string with the datagram contents.
-The maximum datagram size for UDP is 64K minus IP layer overhead.
-However datagrams larger than the link layer packet size will be
-fragmented, which may deteriorate performance and/or reliability.
-
-
-
-If successful, the method returns 1. In case of
-error, the method returns nil followed by an error message.
-
-
-
-Note: In UDP, the send method never blocks
-and the only way it can fail is if the underlying transport layer
-refuses to send a message to the specified address (i.e. no
-interface accepts the address).
-
-
-
-
-
-unconnected:sendto(datagram, ip, port)
-
-
-
-Sends a datagram to the specified IP address and port number.
-
-
-
-Datagram is a string with the
-datagram contents.
-The maximum datagram size for UDP is 64K minus IP layer overhead.
-However datagrams larger than the link layer packet size will be
-fragmented, which may deteriorate performance and/or reliability.
-Ip is the IP address of the recipient.
-Host names are not allowed for performance reasons.
-
-Port is the port number at the recipient.
-
-
-
-If successful, the method returns 1. In case of
-error, the method returns nil followed by an error message.
-
-
-
-Note: In UDP, the send method never blocks
-and the only way it can fail is if the underlying transport layer
-refuses to send a message to the specified address (i.e. no
-interface accepts the address).
-
-Sets options for the UDP object. Options are
-only needed by low-level or time-critical applications. You should
-only modify an option if you are sure you need it.
-
Option is a string with the option
-name, and value depends on the option being set:
-
-
-
-
'dontroute': Indicates that outgoing
-messages should bypass the standard routing facilities.
-Receives a boolean value;
-
'broadcast': Requests permission to send
-broadcast datagrams on the socket.
-Receives a boolean value;
-
'reuseaddr': Indicates that the rules used in
-validating addresses supplied in a bind() call
-should allow reuse of local addresses.
-Receives a boolean value;
-
'reuseport': Allows completely duplicate
-bindings by multiple processes if they all set
-'reuseport' before binding the port.
-Receives a boolean value;
-
'ip-multicast-loop':
-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;
-
'ipv6-v6only':
-Specifies whether to restrict inet6 sockets to
-sending and receiving only IPv6 packets.
-Receive a boolean value;
-
'ip-multicast-if':
-Sets the interface over which outgoing multicast datagrams
-are sent.
-Receives an IP address;
-
'ip-multicast-ttl':
-Sets the Time To Live in the IP header for outgoing
-multicast datagrams.
-Receives a number;
-
'ip-add-membership':
-Joins the multicast group specified.
-Receives a table with fields
-multiaddr and interface, each containing an
-IP address;
-
'ip-drop-membership': Leaves the multicast
-group specified.
-Receives a table with fields
-multiaddr and interface, each containing an
-IP address.
-
-
-
-The method returns 1 in case of success, or
-nil followed by an error message otherwise.
-
-
-
-Note: The descriptions above come from the man pages.
-
-Changes the peer of a UDP object. This
-method turns an unconnected UDP object into a connected UDP
-object or vice versa.
-
-
-
-For connected objects, outgoing datagrams
-will be sent to the specified peer, and datagrams received from
-other peers will be discarded by the OS. Connected UDP objects must
-use the send and
-receive methods instead of
-sendto and
-receivefrom.
-
-
-
-Address can be an IP address or a
-host name. Port is the port number. If address is
-'*' and the object is connected, the peer association is
-removed and the object becomes an unconnected object again. In that
-case, the port argument is ignored.
-
-
-
-In case of error the method returns
-nil followed by an error message. In case of success, the
-method returns 1.
-
-
-
-Note: Since the address of the peer does not have
-to be passed to and from the OS, the use of connected UDP objects
-is recommended when the same peer is used for several transmissions
-and can result in up to 30% performance gains.
-
-
-
-Note: Starting with LuaSocket 3.0, the host name resolution
-depends on whether the socket was created by socket.udp or socket.udp6. Addresses from
-the appropriate family are tried in succession until the
-first success or until the last failure.
-
-
-
-
-
-unconnected:setsockname(address, port)
-
-
-
-Binds the UDP object to a local address.
-
-
-
-Address can be an IP address or a
-host name. If address is '*' the system binds to
-all local interfaces using the constant INADDR_ANY. If
-port is 0, the system chooses an ephemeral port.
-
-
-
-If successful, the method returns 1. In case of
-error, the method returns nil followed by an error
-message.
-
-
-
-Note: This method can only be called before any
-datagram is sent through the UDP object, and only once. Otherwise,
-the system automatically binds the object to all local interfaces
-and chooses an ephemeral port as soon as the first datagram is
-sent. After the local address is set, either automatically by the
-system or explicitly by setsockname, it cannot be
-changed.
-
-Changes the timeout values for the object. By default, the
-receive and
-receivefrom
-operations are blocking. That is, any call to the methods will block
-indefinitely, until data arrives. The settimeout function defines
-a limit on the amount of time the functions can block. When a timeout is
-set and the specified amount of time has elapsed, the affected methods
-give up and fail with an error code.
-
-
-
-The amount of time to wait is specified as
-the value parameter, in seconds. The nil timeout
-value allows operations to block indefinitely. Negative
-timeout values have the same effect.
-
-
-
-Note: In UDP, the send
-and sendto methods never block (the
-datagram is just passed to the OS and the call returns
-immediately). Therefore, the settimeout method has no
-effect on them.
-
-
-
-Note: The old timeout method is
-deprecated. The name has been changed for sake of uniformity, since
-all other method names already contained verbs making their
-imperative nature obvious.
-
-In case of success, a new unconnected UDP object
-returned. In case of error, nil is returned, followed by
-an error message.
-
-
-
-Note: The choice between IPv4 and IPv6 happens during a call to
-sendto, setpeername, or sockname, depending on the address
-family obtained from the resolver.
-
-
-
-Note: Before the choice between IPv4 and IPv6 happens,
-the internal socket object is invalid and therefore setoption will fail.
-
-The url namespace provides functions to parse, protect,
-and build URLs, as well as functions to compose absolute URLs
-from base and relative URLs, according to
-RFC 2396.
-
-
-
-To obtain the url namespace, run:
-
-
-
--- loads the URL module
-local url = require("socket.url")
-
-Builds an absolute URL from a base URL and a relative URL.
-
-
-
-Base is a string with the base URL or
-a parsed URL table. Relative is a
-string with the relative URL.
-
-
-
-The function returns a string with the absolute URL.
-
-
-
-Note: The rules that
-govern the composition are fairly complex, and are described in detail in
-RFC 2396.
-The example bellow should give an idea of what the rules are.
-
-Parsed_url is a table with same components returned by
-parse.
-Lower level components, if specified,
-take precedence over high level components of the URL grammar.
-
-
-
-The function returns a string with the built URL.
-
-
-
-
-
-url.build_path(segments, unsafe)
-
-
-
-Builds a <path> component from a list of
-<segment> parts.
-Before composition, any reserved characters found in a segment are escaped into
-their protected form, so that the resulting path is a valid URL path
-component.
-
-
-
-Segments is a list of strings with the <segment>
-parts. If unsafe is anything but nil, reserved
-characters are left untouched.
-
-
-
-The function returns a string with the
-built <path> component.
-
-
-
-
-
-url.escape(content)
-
-
-
-Applies the URL escaping content coding to a string
-Each byte is encoded as a percent character followed
-by the two byte hexadecimal representation of its integer
-value.
-
-Parses an URL given as a string into a Lua table with its components.
-
-
-
-Url is the URL to be parsed. If the default table is
-present, it is used to store the parsed fields. Only fields present in the
-URL are overwritten. Therefore, this table can be used to pass default
-values for each field.
-
-
-
-The function returns a table with all the URL components:
-
-Breaks a <path> URL component into all its
-<segment> parts.
-
-
-
-Path is a string with the path to be parsed.
-
-
-
-Since some characters are reserved in URLs, they must be escaped
-whenever present in a <path> component. Therefore, before
-returning a list with all the parsed segments, the function removes
-escaping from all of them.
-
-
-
-
-
-url.unescape(content)
-
-
-
-Removes the URL escaping content coding from a string.
-
-
-
-Content is the string to be decoded.
-
-
-
-The function returns the decoded string.
-
-
-
-
-
-
-
-
diff --git a/src/deps/src/luasocket/test/README b/src/deps/src/luasocket/test/README
deleted file mode 100644
index 27837e04d..000000000
--- a/src/deps/src/luasocket/test/README
+++ /dev/null
@@ -1,14 +0,0 @@
-This provides the automated test scripts used to make sure the library
-is working properly.
-
-The files provided are:
-
- testsrvr.lua -- test server
- testclnt.lua -- test client
-
-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/src/deps/src/luasocket/test/auth/.htaccess b/src/deps/src/luasocket/test/auth/.htaccess
deleted file mode 100644
index 2509ae36a..000000000
--- a/src/deps/src/luasocket/test/auth/.htaccess
+++ /dev/null
@@ -1,4 +0,0 @@
-AuthName "test-auth"
- AuthType Basic
- AuthUserFile /home/diego/impa/luasocket/test/auth/.htpasswd
- Require valid-user
diff --git a/src/deps/src/luasocket/test/auth/.htpasswd b/src/deps/src/luasocket/test/auth/.htpasswd
deleted file mode 100644
index cfb26034b..000000000
--- a/src/deps/src/luasocket/test/auth/.htpasswd
+++ /dev/null
@@ -1 +0,0 @@
-luasocket:$apr1$47u2O.Me$.m/5BWAtt7GVoxsouIPBR1
diff --git a/src/deps/src/luasocket/test/auth/index.html b/src/deps/src/luasocket/test/auth/index.html
deleted file mode 100644
index 786694ef6..000000000
--- a/src/deps/src/luasocket/test/auth/index.html
+++ /dev/null
@@ -1,3002 +0,0 @@
-
-
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-
-
diff --git a/src/deps/src/luasocket/test/cgi/cat b/src/deps/src/luasocket/test/cgi/cat
deleted file mode 100644
index 8d41255ea..000000000
--- a/src/deps/src/luasocket/test/cgi/cat
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-echo Content-type: text/plain
-echo
-
-cat > /tmp/luasocket.cat.tmp
-cat /tmp/luasocket.cat.tmp
diff --git a/src/deps/src/luasocket/test/cgi/cat-index-html b/src/deps/src/luasocket/test/cgi/cat-index-html
deleted file mode 100644
index 7595043b1..000000000
--- a/src/deps/src/luasocket/test/cgi/cat-index-html
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-echo Content-type: text/plain
-echo
-
-cat ../index.html
diff --git a/src/deps/src/luasocket/test/cgi/env b/src/deps/src/luasocket/test/cgi/env
deleted file mode 100644
index 412a716ea..000000000
--- a/src/deps/src/luasocket/test/cgi/env
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-echo Content-type: text/plain
-echo
-
-env
diff --git a/src/deps/src/luasocket/test/cgi/query-string b/src/deps/src/luasocket/test/cgi/query-string
deleted file mode 100644
index 2342af532..000000000
--- a/src/deps/src/luasocket/test/cgi/query-string
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-echo Content-type: text/plain
-echo
-echo $QUERY_STRING
diff --git a/src/deps/src/luasocket/test/cgi/redirect-loop b/src/deps/src/luasocket/test/cgi/redirect-loop
deleted file mode 100644
index bd32f2048..000000000
--- a/src/deps/src/luasocket/test/cgi/redirect-loop
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-echo Location: http://$HTTP_HOST$REQUEST_URI
-echo
diff --git a/src/deps/src/luasocket/test/cgi/request-uri b/src/deps/src/luasocket/test/cgi/request-uri
deleted file mode 100644
index 20ebe9fed..000000000
--- a/src/deps/src/luasocket/test/cgi/request-uri
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-echo Content-type: text/plain
-echo
-echo $REQUEST_URI
diff --git a/src/deps/src/luasocket/test/dicttest.lua b/src/deps/src/luasocket/test/dicttest.lua
deleted file mode 100644
index a0da2e184..000000000
--- a/src/deps/src/luasocket/test/dicttest.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-local dict = require"socket.dict"
-
-print(dict.get("dict://localhost/d:teste"))
-
-for i,v in pairs(dict.get("dict://localhost/d:teste")) do print(v) end
diff --git a/src/deps/src/luasocket/test/excepttest.lua b/src/deps/src/luasocket/test/excepttest.lua
deleted file mode 100644
index 80c9cb80a..000000000
--- a/src/deps/src/luasocket/test/excepttest.lua
+++ /dev/null
@@ -1,30 +0,0 @@
-local socket = require("socket")
-
-local finalizer_called
-
-local func = socket.protect(function(err, ...)
- local try = socket.newtry(function()
- finalizer_called = true
- end)
-
- if err then
- return error(err, 0)
- else
- return try(...)
- end
-end)
-
-local ret1, ret2, ret3 = func(false, 1, 2, 3)
-assert(not finalizer_called, "unexpected finalizer call")
-assert(ret1 == 1 and ret2 == 2 and ret3 == 3, "incorrect return values")
-
-ret1, ret2, ret3 = func(false, false, "error message")
-assert(finalizer_called, "finalizer not called")
-assert(ret1 == nil and ret2 == "error message" and ret3 == nil, "incorrect return values")
-
-local err = {key = "value"}
-ret1, ret2 = pcall(func, err)
-assert(not ret1, "error not rethrown")
-assert(ret2 == err, "incorrect error rethrown")
-
-print("OK")
diff --git a/src/deps/src/luasocket/test/find-connect-limit b/src/deps/src/luasocket/test/find-connect-limit
deleted file mode 100644
index 199e51525..000000000
--- a/src/deps/src/luasocket/test/find-connect-limit
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env lua
---[[
-Find out how many TCP connections we can make.
-
-Use ulimit to increase the max number of descriptors:
-
-ulimit -n 10000
-ulimit -n
-
-You'll probably need to be root to do this.
-]]
-
-socket = require "socket"
-
-host = arg[1] or "google.com"
-port = arg[2] or 80
-
-connections = {}
-
-repeat
- c = assert(socket.connect(hostip or host, 80))
- table.insert(connections, c)
-
- if not hostip then
- hostip = c:getpeername()
- print("resolved", host, "to", hostip)
- end
-
- print("connection #", #connections, c, "fd", c:getfd())
-
-until false
-
diff --git a/src/deps/src/luasocket/test/ftptest.lua b/src/deps/src/luasocket/test/ftptest.lua
deleted file mode 100644
index 3ea0d3959..000000000
--- a/src/deps/src/luasocket/test/ftptest.lua
+++ /dev/null
@@ -1,122 +0,0 @@
-local socket = require("socket")
-local ftp = require("socket.ftp")
-local url = require("socket.url")
-local ltn12 = require("ltn12")
-
--- use dscl to create user "luasocket" with password "password"
--- with home in /Users/diego/luasocket/test/ftp
--- with group com.apple.access_ftp
--- with shell set to /sbin/nologin
--- set /etc/ftpchroot to chroot luasocket
--- must set group com.apple.access_ftp on user _ftp (for anonymous access)
--- copy index.html to /var/empty/pub (home of user ftp)
--- start ftp server with
--- sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist
--- copy index.html to /Users/diego/luasocket/test/ftp
--- stop with
--- sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist
-
--- override protection to make sure we see all errors
---socket.protect = function(s) return s end
-
-dofile("testsupport.lua")
-
-local host = host or "localhost"
-local port, index_file, index, back, err, ret
-
-local t = socket.gettime()
-
-index_file = "index.html"
-
--- a function that returns a directory listing
-local function nlst(u)
- local t = {}
- local p = url.parse(u)
- p.command = "nlst"
- p.sink = ltn12.sink.table(t)
- local r, e = ftp.get(p)
- return r and table.concat(t), e
-end
-
--- function that removes a remote file
-local function dele(u)
- local p = url.parse(u)
- p.command = "dele"
- p.argument = string.gsub(p.path, "^/", "")
- if p.argumet == "" then p.argument = nil end
- p.check = 250
- return ftp.command(p)
-end
-
--- read index with CRLF convention
-index = readfile(index_file)
-
-io.write("testing wrong scheme: ")
-back, err = ftp.get("wrong://banana.com/lixo")
-assert(not back and err == "wrong scheme 'wrong'", err)
-print("ok")
-
-io.write("testing invalid url: ")
-back, err = ftp.get("localhost/dir1/index.html;type=i")
-assert(not back and err)
-print("ok")
-
-io.write("testing anonymous file download: ")
-back, err = socket.ftp.get("ftp://" .. host .. "/pub/index.html;type=i")
-assert(not err and back == index, err)
-print("ok")
-
-io.write("erasing before upload: ")
-ret, err = dele("ftp://luasocket:password@" .. host .. "/index.up.html")
-if not ret then print(err)
-else print("ok") end
-
-io.write("testing upload: ")
-ret, err = ftp.put("ftp://luasocket:password@" .. host .. "/index.up.html;type=i", index)
-assert(ret and not err, err)
-print("ok")
-
-io.write("downloading uploaded file: ")
-back, err = ftp.get("ftp://luasocket:password@" .. host .. "/index.up.html;type=i")
-assert(ret and not err and index == back, err)
-print("ok")
-
-io.write("erasing after upload/download: ")
-ret, err = dele("ftp://luasocket:password@" .. host .. "/index.up.html")
-assert(ret and not err, err)
-print("ok")
-
-io.write("testing weird-character translation: ")
-back, err = ftp.get("ftp://luasocket:password@" .. host .. "/%23%3f;type=i")
-assert(not err and back == index, err)
-print("ok")
-
-io.write("testing parameter overriding: ")
-local back = {}
-ret, err = ftp.get{
- url = "//stupid:mistake@" .. host .. "/index.html",
- user = "luasocket",
- password = "password",
- type = "i",
- sink = ltn12.sink.table(back)
-}
-assert(ret and not err and table.concat(back) == index, err)
-print("ok")
-
-io.write("testing upload denial: ")
-ret, err = ftp.put("ftp://" .. host .. "/index.up.html;type=a", index)
-assert(not ret and err, "should have failed")
-print(err)
-
-io.write("testing authentication failure: ")
-ret, err = ftp.get("ftp://luasocket:wrong@".. host .. "/index.html;type=a")
-assert(not ret and err, "should have failed")
-print(err)
-
-io.write("testing wrong file: ")
-back, err = ftp.get("ftp://".. host .. "/index.wrong.html;type=a")
-assert(not back and err, "should have failed")
-print(err)
-
-print("passed all tests")
-print(string.format("done in %.2fs", socket.gettime() - t))
diff --git a/src/deps/src/luasocket/test/hello.lua b/src/deps/src/luasocket/test/hello.lua
deleted file mode 100644
index 3f385dc24..000000000
--- a/src/deps/src/luasocket/test/hello.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-local socket = require"socket"
-local mime = require"mime"
-print("Hello from " .. socket._VERSION .. " and " .. mime._VERSION .. "!")
diff --git a/src/deps/src/luasocket/test/httptest.lua b/src/deps/src/luasocket/test/httptest.lua
deleted file mode 100644
index 63ff92176..000000000
--- a/src/deps/src/luasocket/test/httptest.lua
+++ /dev/null
@@ -1,441 +0,0 @@
--- needs Alias from /home/c/diego/tec/luasocket/test to
--- "/luasocket-test" and "/luasocket-test/"
--- needs ScriptAlias from /home/c/diego/tec/luasocket/test/cgi
--- to "/luasocket-test-cgi" and "/luasocket-test-cgi/"
--- needs "AllowOverride AuthConfig" on /home/c/diego/tec/luasocket/test/auth
-local socket = require("socket")
-local http = require("socket.http")
-local url = require("socket.url")
-
-local mime = require("mime")
-local ltn12 = require("ltn12")
-
--- override protection to make sure we see all errors
--- socket.protect = function(s) return s end
-
-dofile("testsupport.lua")
-
-local host, proxy, request, response, index_file
-local ignore, expect, index, prefix, cgiprefix, index_crlf
-
-http.TIMEOUT = 10
-
-local t = socket.gettime()
-
---host = host or "diego.student.princeton.edu"
---host = host or "diego.student.princeton.edu"
-host = host or "localhost"
-proxy = proxy or "http://localhost:3128"
-prefix = prefix or "/luasocket-test"
-cgiprefix = cgiprefix or "/luasocket-test-cgi"
-index_file = "index.html"
-
--- read index with CRLF convention
-index = readfile(index_file)
-
-local check_result = function(response, expect, ignore)
- for i,v in pairs(response) do
- if not ignore[i] then
- if v ~= expect[i] then
- local f = io.open("err", "w")
- f:write(tostring(v), "\n\n versus\n\n", tostring(expect[i]))
- f:close()
- fail(i .. " differs!")
- end
- end
- end
- for i,v in pairs(expect) do
- if not ignore[i] then
- if v ~= response[i] then
- local f = io.open("err", "w")
- f:write(tostring(response[i]), "\n\n versus\n\n", tostring(v))
- v = string.sub(type(v) == "string" and v or "", 1, 70)
- f:close()
- fail(i .. " differs!")
- end
- end
- end
- print("ok")
-end
-
-local check_request = function(request, expect, ignore)
- local t
- if not request.sink then request.sink, t = ltn12.sink.table() end
- request.source = request.source or
- (request.body and ltn12.source.string(request.body))
- local response = {}
- response.code, response.headers, response.status =
- socket.skip(1, http.request(request))
- if t and #t > 0 then response.body = table.concat(t) end
- check_result(response, expect, ignore)
-end
-
-------------------------------------------------------------------------
-io.write("testing request uri correctness: ")
-local forth = cgiprefix .. "/request-uri?" .. "this+is+the+query+string"
-local back, c, h = http.request("http://" .. host .. forth)
-if not back then fail(c) end
-back = url.parse(back)
-if similar(back.query, "this+is+the+query+string") then print("ok")
-else fail(back.query) end
-
-------------------------------------------------------------------------
-io.write("testing query string correctness: ")
-forth = "this+is+the+query+string"
-back = http.request("http://" .. host .. cgiprefix ..
- "/query-string?" .. forth)
-if similar(back, forth) then print("ok")
-else fail("failed!") end
-
-------------------------------------------------------------------------
-io.write("testing document retrieval: ")
-request = {
- url = "http://" .. host .. prefix .. "/index.html"
-}
-expect = {
- body = index,
- code = 200
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing redirect loop: ")
-request = {
- url = "http://" .. host .. cgiprefix .. "/redirect-loop"
-}
-expect = {
- code = 302
-}
-ignore = {
- status = 1,
- headers = 1,
- body = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing invalid url: ")
-local r, e = http.request{url = host .. prefix}
-assert(r == nil and e == "invalid host ''")
-r, re = http.request(host .. prefix)
-assert(r == nil and e == re, tostring(r) ..", " .. tostring(re) ..
- " vs " .. tostring(e))
-print("ok")
-
-io.write("testing invalid empty port: ")
-request = {
- url = "http://" .. host .. ":" .. prefix .. "/index.html"
-}
-expect = {
- body = index,
- code = 200
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing post method: ")
--- wanted to test chunked post, but apache doesn't support it...
-request = {
- url = "http://" .. host .. cgiprefix .. "/cat",
- method = "POST",
- body = index,
- -- remove content-length header to send chunked body
- headers = { ["content-length"] = string.len(index) }
-}
-expect = {
- body = index,
- code = 200
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
---[[
-io.write("testing proxy with post method: ")
-request = {
- url = "http://" .. host .. cgiprefix .. "/cat",
- method = "POST",
- body = index,
- headers = { ["content-length"] = string.len(index) },
- proxy= proxy
-}
-expect = {
- body = index,
- code = 200
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-]]
-
-------------------------------------------------------------------------
-io.write("testing simple post function: ")
-back = http.request("http://" .. host .. cgiprefix .. "/cat", index)
-assert(back == index)
-print("ok")
-
-------------------------------------------------------------------------
-io.write("testing ltn12.(sink|source).file: ")
-request = {
- url = "http://" .. host .. cgiprefix .. "/cat",
- method = "POST",
- source = ltn12.source.file(io.open(index_file, "rb")),
- sink = ltn12.sink.file(io.open(index_file .. "-back", "wb")),
- headers = { ["content-length"] = string.len(index) }
-}
-expect = {
- code = 200
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-back = readfile(index_file .. "-back")
-assert(back == index)
-os.remove(index_file .. "-back")
-
-------------------------------------------------------------------------
-io.write("testing ltn12.(sink|source).chain and mime.(encode|decode): ")
-
-local function b64length(len)
- local a = math.ceil(len/3)*4
- local l = math.ceil(a/76)
- return a + l*2
-end
-
-local source = ltn12.source.chain(
- ltn12.source.file(io.open(index_file, "rb")),
- ltn12.filter.chain(
- mime.encode("base64"),
- mime.wrap("base64")
- )
-)
-
-local sink = ltn12.sink.chain(
- mime.decode("base64"),
- ltn12.sink.file(io.open(index_file .. "-back", "wb"))
-)
-
-request = {
- url = "http://" .. host .. cgiprefix .. "/cat",
- method = "POST",
- source = source,
- sink = sink,
- headers = { ["content-length"] = b64length(string.len(index)) }
-}
-expect = {
- code = 200
-}
-ignore = {
- body_cb = 1,
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-back = readfile(index_file .. "-back")
-assert(back == index)
-os.remove(index_file .. "-back")
-
-------------------------------------------------------------------------
-io.write("testing http redirection: ")
-request = {
- url = "http://" .. host .. prefix
-}
-expect = {
- body = index,
- code = 200
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
---[[
-io.write("testing proxy with redirection: ")
-request = {
- url = "http://" .. host .. prefix,
- proxy = proxy
-}
-expect = {
- body = index,
- code = 200
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-]]
-
-------------------------------------------------------------------------
-io.write("testing automatic auth failure: ")
-request = {
- url = "http://really:wrong@" .. host .. prefix .. "/auth/index.html"
-}
-expect = {
- code = 401
-}
-ignore = {
- body = 1,
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing http redirection failure: ")
-request = {
- url = "http://" .. host .. prefix,
- redirect = false
-}
-expect = {
- code = 301
-}
-ignore = {
- body = 1,
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing document not found: ")
-request = {
- url = "http://" .. host .. "/wrongdocument.html"
-}
-expect = {
- code = 404
-}
-ignore = {
- body = 1,
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing auth failure: ")
-request = {
- url = "http://" .. host .. prefix .. "/auth/index.html"
-}
-expect = {
- code = 401
-}
-ignore = {
- body = 1,
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing manual basic auth: ")
-request = {
- url = "http://" .. host .. prefix .. "/auth/index.html",
- headers = {
- authorization = "Basic " .. (mime.b64("luasocket:password"))
- }
-}
-expect = {
- code = 200,
- body = index
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing automatic basic auth: ")
-request = {
- url = "http://luasocket:password@" .. host .. prefix .. "/auth/index.html"
-}
-expect = {
- code = 200,
- body = index
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing auth info overriding: ")
-request = {
- url = "http://really:wrong@" .. host .. prefix .. "/auth/index.html",
- user = "luasocket",
- password = "password"
-}
-expect = {
- code = 200,
- body = index
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-io.write("testing cgi output retrieval (probably chunked...): ")
-request = {
- url = "http://" .. host .. cgiprefix .. "/cat-index-html"
-}
-expect = {
- body = index,
- code = 200
-}
-ignore = {
- status = 1,
- headers = 1
-}
-check_request(request, expect, ignore)
-
-------------------------------------------------------------------------
-local body
-io.write("testing simple request function: ")
-body = http.request("http://" .. host .. prefix .. "/index.html")
-assert(body == index)
-print("ok")
-
-------------------------------------------------------------------------
-io.write("testing HEAD method: ")
-local r, c, h = http.request {
- method = "HEAD",
- url = "http://www.tecgraf.puc-rio.br/~diego/"
-}
-assert(r and h and (c == 200), c)
-print("ok")
-
-------------------------------------------------------------------------
-io.write("testing host not found: ")
-local c, e = socket.connect("example.invalid", 80)
-local r, re = http.request{url = "http://example.invalid/does/not/exist"}
-assert(r == nil and e == re, tostring(r) .. " " .. tostring(re))
-r, re = http.request("http://example.invalid/does/not/exist")
-assert(r == nil and e == re)
-print("ok")
-
-------------------------------------------------------------------------
-print("passed all tests")
-os.remove("err")
-
-print(string.format("done in %.2fs", socket.gettime() - t))
diff --git a/src/deps/src/luasocket/test/index.html b/src/deps/src/luasocket/test/index.html
deleted file mode 100644
index 786694ef6..000000000
--- a/src/deps/src/luasocket/test/index.html
+++ /dev/null
@@ -1,3002 +0,0 @@
-
-
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-This document can contain anything, as long as it is long enough!
-
-
diff --git a/src/deps/src/luasocket/test/ltn12test.lua b/src/deps/src/luasocket/test/ltn12test.lua
deleted file mode 100644
index 0cafbc9d4..000000000
--- a/src/deps/src/luasocket/test/ltn12test.lua
+++ /dev/null
@@ -1,308 +0,0 @@
-local ltn12 = require("ltn12")
-
-dofile("testsupport.lua")
-
-local function format(chunk)
- if chunk then
- if chunk == "" then return "''"
- else return string.len(chunk) end
- else return "nil" end
-end
-
-local function show(name, input, output)
- local sin = format(input)
- local sout = format(output)
- io.write(name, ": ", sin, " -> ", sout, "\n")
-end
-
-local function chunked(length)
- local tmp
- return function(chunk)
- local ret
- if chunk and chunk ~= "" then
- tmp = chunk
- end
- ret = string.sub(tmp, 1, length)
- tmp = string.sub(tmp, length+1)
- if not chunk and ret == "" then ret = nil end
- return ret
- end
-end
-
-local function named(f, name)
- return function(chunk)
- local ret = f(chunk)
- show(name, chunk, ret)
- return ret
- end
-end
-
---------------------------------
-local function split(size)
- local buffer = ""
- local last_out = ""
- local last_in = ""
- local function output(chunk)
- local part = string.sub(buffer, 1, size)
- buffer = string.sub(buffer, size+1)
- last_out = (part ~= "" or chunk) and part
- last_in = chunk
- return last_out
- end
- return function(chunk, done)
- if done then
- return not last_in and not last_out
- end
- -- check if argument is consistent with state
- if not chunk then
- if last_in and last_in ~= "" and last_out ~= "" then
- error("nil chunk following data chunk", 2)
- end
- if not last_out then error("extra nil chunk", 2) end
- return output(chunk)
- elseif chunk == "" then
- if last_out == "" then error('extra "" chunk', 2) end
- if not last_out then error('"" chunk following nil return', 2) end
- if not last_in then error('"" chunk following nil chunk', 2) end
- return output(chunk)
- else
- if not last_in then error("data chunk following nil chunk", 2) end
- if last_in ~= "" and last_out ~= "" then
- error("data chunk following data chunk", 2)
- end
- buffer = chunk
- return output(chunk)
- end
- end
-end
-
---------------------------------
-local function format(chunk)
- if chunk then
- if chunk == "" then return "''"
- else return string.len(chunk) end
- else return "nil" end
-end
-
---------------------------------
-local function merge(size)
- local buffer = ""
- local last_out = ""
- local last_in = ""
- local function output(chunk)
- local part
- if string.len(buffer) >= size or not chunk then
- part = buffer
- buffer = ""
- else
- part = ""
- end
- last_out = (part ~= "" or chunk) and part
- last_in = chunk
- return last_out
- end
- return function(chunk, done)
- if done then
- return not last_in and not last_out
- end
- -- check if argument is consistent with state
- if not chunk then
- if last_in and last_in ~= "" and last_out ~= "" then
- error("nil chunk following data chunk", 2)
- end
- if not last_out then error("extra nil chunk", 2) end
- return output(chunk)
- elseif chunk == "" then
- if last_out == "" then error('extra "" chunk', 2) end
- if not last_out then error('"" chunk following nil return', 2) end
- if not last_in then error('"" chunk following nil chunk', 2) end
- return output(chunk)
- else
- if not last_in then error("data chunk following nil chunk", 2) end
- if last_in ~= "" and last_out ~= "" then
- error("data chunk following data chunk", 2)
- end
- buffer = buffer .. chunk
- return output(chunk)
- end
- end
-end
-
---------------------------------
-io.write("testing sink.table: ")
-local sink, t = ltn12.sink.table()
-local s, c = "", ""
-for i = 0, 10 do
- c = string.rep(string.char(i), i)
- s = s .. c
- assert(sink(c), "returned error")
-end
-assert(sink(nil), "returned error")
-assert(table.concat(t) == s, "mismatch")
-print("ok")
-
---------------------------------
-io.write("testing sink.chain (with split): ")
-sink, t = ltn12.sink.table()
-local filter = split(3)
-sink = ltn12.sink.chain(filter, sink)
-s = "123456789012345678901234567890"
-assert(sink(s), "returned error")
-assert(sink(s), "returned error")
-assert(sink(nil), "returned error")
-assert(table.concat(t) == s .. s, "mismatch")
-assert(filter(nil, 1), "filter not empty")
-print("ok")
-
---------------------------------
-io.write("testing sink.chain (with merge): ")
-sink, t = ltn12.sink.table()
-filter = merge(10)
-sink = ltn12.sink.chain(filter, sink)
-s = string.rep("123", 30)
-s = s .. string.rep("4321", 30)
-for i = 1, 30 do
- assert(sink("123"), "returned error")
-end
-for i = 1, 30 do
- assert(sink("4321"), "returned error")
-end
-assert(sink(nil), "returned error")
-assert(filter(nil, 1), "filter not empty")
-assert(table.concat(t) == s, "mismatch")
-print("ok")
-
---------------------------------
-io.write("testing source.string and pump.all: ")
-local source = ltn12.source.string(s)
-sink, t = ltn12.sink.table()
-assert(ltn12.pump.all(source, sink), "returned error")
-assert(table.concat(t) == s, "mismatch")
-print("ok")
-
---------------------------------
-io.write("testing source.table: ")
-local inp = {'a','b','c','d','e'}
-local source = ltn12.source.table(inp)
-sink, t = ltn12.sink.table()
-assert(ltn12.pump.all(source, sink), "returned error")
-for i = 1, #inp do assert(t[i] == inp[i], "mismatch") end
-print("ok")
-
---------------------------------
-io.write("testing source.chain (with split): ")
-source = ltn12.source.string(s)
-filter = split(5)
-source = ltn12.source.chain(source, filter)
-sink, t = ltn12.sink.table()
-assert(ltn12.pump.all(source, sink), "returned error")
-assert(table.concat(t) == s, "mismatch")
-assert(filter(nil, 1), "filter not empty")
-print("ok")
-
---------------------------------
-io.write("testing source.chain (with several filters): ")
-local function double(x) -- filter turning "ABC" into "AABBCC"
- if not x then return end
- local b={}
- for k in x:gmatch'.' do table.insert(b, k..k) end
- return table.concat(b)
-end
-source = ltn12.source.string(s)
-source = ltn12.source.chain(source, double, double, double)
-sink, t = ltn12.sink.table()
-assert(ltn12.pump.all(source, sink), "returned error")
-assert(table.concat(t) == double(double(double(s))), "mismatch")
-print("ok")
-
---------------------------------
-io.write("testing source.chain (with split) and sink.chain (with merge): ")
-source = ltn12.source.string(s)
-filter = split(5)
-source = ltn12.source.chain(source, filter)
-local filter2 = merge(13)
-sink, t = ltn12.sink.table()
-sink = ltn12.sink.chain(filter2, sink)
-assert(ltn12.pump.all(source, sink), "returned error")
-assert(table.concat(t) == s, "mismatch")
-assert(filter(nil, 1), "filter not empty")
-assert(filter2(nil, 1), "filter2 not empty")
-print("ok")
-
---------------------------------
-io.write("testing sink.chain (with several filters): ")
-source = ltn12.source.string(s)
-sink, t = ltn12.sink.table()
-sink = ltn12.sink.chain(double, double, double, sink)
-assert(ltn12.pump.all(source, sink), "returned error")
-assert(table.concat(t) == double(double(double(s))), "mismatch")
-print("ok")
-
---------------------------------
-io.write("testing filter.chain (and sink.chain, with split, merge): ")
-source = ltn12.source.string(s)
-filter = split(5)
-filter2 = merge(13)
-local chain = ltn12.filter.chain(filter, filter2)
-sink, t = ltn12.sink.table()
-sink = ltn12.sink.chain(chain, sink)
-assert(ltn12.pump.all(source, sink), "returned error")
-assert(table.concat(t) == s, "mismatch")
-assert(filter(nil, 1), "filter not empty")
-assert(filter2(nil, 1), "filter2 not empty")
-print("ok")
-
---------------------------------
-io.write("testing filter.chain (and sink.chain, a bunch): ")
-source = ltn12.source.string(s)
-filter = split(5)
-filter2 = merge(13)
-local filter3 = split(7)
-local filter4 = merge(11)
-local filter5 = split(10)
-chain = ltn12.filter.chain(filter, filter2, filter3, filter4, filter5)
-sink, t = ltn12.sink.table()
-sink = ltn12.sink.chain(chain, sink)
-assert(ltn12.pump.all(source, sink))
-assert(table.concat(t) == s, "mismatch")
-assert(filter(nil, 1), "filter not empty")
-assert(filter2(nil, 1), "filter2 not empty")
-assert(filter3(nil, 1), "filter3 not empty")
-assert(filter4(nil, 1), "filter4 not empty")
-assert(filter5(nil, 1), "filter5 not empty")
-print("ok")
-
---------------------------------
-io.write("testing filter.chain (and source.chain, with split, merge): ")
-source = ltn12.source.string(s)
-filter = split(5)
-filter2 = merge(13)
-local chain = ltn12.filter.chain(filter, filter2)
-sink, t = ltn12.sink.table()
-source = ltn12.source.chain(source, chain)
-assert(ltn12.pump.all(source, sink), "returned error")
-assert(table.concat(t) == s, "mismatch")
-assert(filter(nil, 1), "filter not empty")
-assert(filter2(nil, 1), "filter2 not empty")
-print("ok")
-
---------------------------------
-io.write("testing filter.chain (and source.chain, a bunch): ")
-source = ltn12.source.string(s)
-filter = split(5)
-filter2 = merge(13)
-local filter3 = split(7)
-local filter4 = merge(11)
-local filter5 = split(10)
-chain = ltn12.filter.chain(filter, filter2, filter3, filter4, filter5)
-sink, t = ltn12.sink.table()
-source = ltn12.source.chain(source, chain)
-assert(ltn12.pump.all(source, sink))
-assert(table.concat(t) == s, "mismatch")
-assert(filter(nil, 1), "filter not empty")
-assert(filter2(nil, 1), "filter2 not empty")
-assert(filter3(nil, 1), "filter3 not empty")
-assert(filter4(nil, 1), "filter4 not empty")
-assert(filter5(nil, 1), "filter5 not empty")
-print("ok")
-
diff --git a/src/deps/src/luasocket/test/luasocket.png b/src/deps/src/luasocket/test/luasocket.png
deleted file mode 100644
index d24a95495..000000000
Binary files a/src/deps/src/luasocket/test/luasocket.png and /dev/null differ
diff --git a/src/deps/src/luasocket/test/mimetest.lua b/src/deps/src/luasocket/test/mimetest.lua
deleted file mode 100644
index a3c89ac2e..000000000
--- a/src/deps/src/luasocket/test/mimetest.lua
+++ /dev/null
@@ -1,299 +0,0 @@
-local socket = require("socket")
-local ltn12 = require("ltn12")
-local mime = require("mime")
-
-local unpack = unpack or table.unpack
-
-dofile("testsupport.lua")
-
-local qptest = "qptest.bin"
-local eqptest = "qptest.bin2"
-local dqptest = "qptest.bin3"
-
-local b64test = "b64test.bin"
-local eb64test = "b64test.bin2"
-local db64test = "b64test.bin3"
-
-
--- from Machado de Assis, "A M�o e a Rosa"
-local mao = [[
- Cursavam estes dois mo�os a academia de S. Paulo, estando
- Lu�s Alves no quarto ano e Est�v�o no terceiro.
- Conheceram-se na academia, e ficaram amigos �ntimos, tanto
- quanto podiam s�-lo dois esp�ritos diferentes, ou talvez por
- isso mesmo que o eram. Est�v�o, dotado de extrema
- sensibilidade, e n�o menor fraqueza de �nimo, afetuoso e
- bom, n�o daquela bondade varonil, que � apan�gio de uma alma
- forte, mas dessa outra bondade mole e de cera, que vai �
- merc� de todas as circunst�ncias, tinha, al�m de tudo isso,
- o infort�nio de trazer ainda sobre o nariz os �culos
- cor-de-rosa de suas virginais ilus�es. Lu�s Alves via bem
- com os olhos da cara. N�o era mau rapaz, mas tinha o seu
- gr�o de ego�smo, e se n�o era incapaz de afei��es, sabia
- reg�-las, moder�-las, e sobretudo gui�-las ao seu pr�prio
- interesse. Entre estes dois homens travara-se amizade
- �ntima, nascida para um na simpatia, para outro no costume.
- Eram eles os naturais confidentes um do outro, com a
- diferen�a que Lu�s Alves dava menos do que recebia, e, ainda
- assim, nem tudo o que dava exprimia grande confian�a.
-]]
-
-local function random(handle, io_err)
- if handle then
- return function()
- if not handle then error("source is empty!", 2) end
- local len = math.random(0, 1024)
- local chunk = handle:read(len)
- if not chunk then
- handle:close()
- handle = nil
- end
- return chunk
- end
- else return ltn12.source.empty(io_err or "unable to open file") end
-end
-
-
-local function named(f)
- return f
-end
-
-local what = nil
-local function transform(input, output, filter)
- local source = random(io.open(input, "rb"))
- local sink = ltn12.sink.file(io.open(output, "wb"))
- if what then
- sink = ltn12.sink.chain(filter, sink)
- else
- source = ltn12.source.chain(source, filter)
- end
- --what = not what
- ltn12.pump.all(source, sink)
-end
-
-local function encode_qptest(mode)
- local encode = mime.encode("quoted-printable", mode)
- local split = mime.wrap("quoted-printable")
- local chain = ltn12.filter.chain(encode, split)
- transform(qptest, eqptest, chain)
-end
-
-local function compare_qptest()
-io.write("testing qp encoding and wrap: ")
- compare(qptest, dqptest)
-end
-
-local function decode_qptest()
- local decode = mime.decode("quoted-printable")
- transform(eqptest, dqptest, decode)
-end
-
-local function create_qptest()
- local f, err = io.open(qptest, "wb")
- if not f then fail(err) end
- -- try all characters
- for i = 0, 255 do
- f:write(string.char(i))
- end
- -- try all characters and different line sizes
- for i = 0, 255 do
- for j = 0, i do
- f:write(string.char(i))
- end
- f:write("\r\n")
- end
- -- test latin text
- f:write(mao)
- -- force soft line breaks and treatment of space/tab in end of line
- local tab
- f:write(string.gsub(mao, "(%s)", function(c)
- if tab then
- tab = nil
- return "\t"
- else
- tab = 1
- return " "
- end
- end))
- -- test crazy end of line conventions
- local eol = { "\r\n", "\r", "\n", "\n\r" }
- local which = 0
- f:write(string.gsub(mao, "(\n)", function(c)
- which = which + 1
- if which > 4 then which = 1 end
- return eol[which]
- end))
- for i = 1, 4 do
- for j = 1, 4 do
- f:write(eol[i])
- f:write(eol[j])
- end
- end
- -- try long spaced and tabbed lines
- f:write("\r\n")
- for i = 0, 255 do
- f:write(string.char(9))
- end
- f:write("\r\n")
- for i = 0, 255 do
- f:write(' ')
- end
- f:write("\r\n")
- for i = 0, 255 do
- f:write(string.char(9),' ')
- end
- f:write("\r\n")
- for i = 0, 255 do
- f:write(' ',string.char(32))
- end
- f:write("\r\n")
-
- f:close()
-end
-
-local function cleanup_qptest()
- os.remove(qptest)
- os.remove(eqptest)
- os.remove(dqptest)
-end
-
--- create test file
-local function create_b64test()
- local f = assert(io.open(b64test, "wb"))
- local t = {}
- for j = 1, 100 do
- for i = 1, 100 do
- t[i] = math.random(0, 255)
- end
- f:write(string.char(unpack(t)))
- end
- f:close()
-end
-
-local function encode_b64test()
- local e1 = mime.encode("base64")
- local e2 = mime.encode("base64")
- local e3 = mime.encode("base64")
- local e4 = mime.encode("base64")
- local sp4 = mime.wrap()
- local sp3 = mime.wrap(59)
- local sp2 = mime.wrap("base64", 30)
- local sp1 = mime.wrap(27)
- local chain = ltn12.filter.chain(e1, sp1, e2, sp2, e3, sp3, e4, sp4)
- transform(b64test, eb64test, chain)
-end
-
-local function decode_b64test()
- local d1 = named(mime.decode("base64"), "d1")
- local d2 = named(mime.decode("base64"), "d2")
- local d3 = named(mime.decode("base64"), "d3")
- local d4 = named(mime.decode("base64"), "d4")
- local chain = named(ltn12.filter.chain(d1, d2, d3, d4), "chain")
- transform(eb64test, db64test, chain)
-end
-
-local function cleanup_b64test()
- os.remove(b64test)
- os.remove(eb64test)
- os.remove(db64test)
-end
-
-local function compare_b64test()
-io.write("testing b64 chained encode: ")
- compare(b64test, db64test)
-end
-
-local function identity_test()
-io.write("testing identity: ")
- local chain = named(ltn12.filter.chain(
- named(mime.encode("quoted-printable"), "1 eq"),
- named(mime.encode("base64"), "2 eb"),
- named(mime.decode("base64"), "3 db"),
- named(mime.decode("quoted-printable"), "4 dq")
- ), "chain")
- transform(b64test, eb64test, chain)
- compare(b64test, eb64test)
- os.remove(eb64test)
-end
-
-
-local function padcheck(original, encoded)
- local e = (mime.b64(original))
- local d = (mime.unb64(encoded))
- if e ~= encoded then fail("encoding failed") end
- if d ~= original then fail("decoding failed") end
-end
-
-local function chunkcheck(original, encoded)
- local len = string.len(original)
- for i = 0, len do
- local a = string.sub(original, 1, i)
- local b = string.sub(original, i+1)
- local e, r = mime.b64(a, b)
- local f = (mime.b64(r))
- if (e .. (f or "") ~= encoded) then fail(e .. (f or "")) end
- end
-end
-
-local function padding_b64test()
-io.write("testing b64 padding: ")
- padcheck("a", "YQ==")
- padcheck("ab", "YWI=")
- padcheck("abc", "YWJj")
- padcheck("abcd", "YWJjZA==")
- padcheck("abcde", "YWJjZGU=")
- padcheck("abcdef", "YWJjZGVm")
- padcheck("abcdefg", "YWJjZGVmZw==")
- padcheck("abcdefgh", "YWJjZGVmZ2g=")
- padcheck("abcdefghi", "YWJjZGVmZ2hp")
- padcheck("abcdefghij", "YWJjZGVmZ2hpag==")
- chunkcheck("abcdefgh", "YWJjZGVmZ2g=")
- chunkcheck("abcdefghi", "YWJjZGVmZ2hp")
- chunkcheck("abcdefghij", "YWJjZGVmZ2hpag==")
- print("ok")
-end
-
-local function test_b64lowlevel()
-io.write("testing b64 low-level: ")
- local a, b
- a, b = mime.b64("", "")
- assert(a == "" and b == "")
- a, b = mime.b64(nil, "blablabla")
- assert(a == nil and b == nil)
- a, b = mime.b64("", nil)
- assert(a == nil and b == nil)
- a, b = mime.unb64("", "")
- assert(a == "" and b == "")
- a, b = mime.unb64(nil, "blablabla")
- assert(a == nil and b == nil)
- a, b = mime.unb64("", nil)
- assert(a == nil and b == nil)
- local binary=string.char(0x00,0x44,0x1D,0x14,0x0F,0xF4,0xDA,0x11,0xA9,0x78,0x00,0x14,0x38,0x50,0x60,0xCE)
- local encoded = mime.b64(binary)
- local decoded=mime.unb64(encoded)
- assert(binary == decoded)
- print("ok")
-end
-
-local t = socket.gettime()
-
-create_b64test()
-identity_test()
-encode_b64test()
-decode_b64test()
-compare_b64test()
-cleanup_b64test()
-padding_b64test()
-test_b64lowlevel()
-
-create_qptest()
-encode_qptest()
-decode_qptest()
-compare_qptest()
-encode_qptest("binary")
-decode_qptest()
-compare_qptest()
-cleanup_qptest()
-
-
-print(string.format("done in %.2fs", socket.gettime() - t))
diff --git a/src/deps/src/luasocket/test/smtptest.lua b/src/deps/src/luasocket/test/smtptest.lua
deleted file mode 100644
index 9d060543a..000000000
--- a/src/deps/src/luasocket/test/smtptest.lua
+++ /dev/null
@@ -1,259 +0,0 @@
-local sent = {}
-
-local from = "diego@localhost"
-local server = "localhost"
-local rcpt = "luasocket@localhost"
-
-local files = {
- "/var/spool/mail/luasocket",
- "/var/spool/mail/luasock1",
- "/var/spool/mail/luasock2",
- "/var/spool/mail/luasock3",
-}
-
-local t = socket.time()
-local err
-
-dofile("mbox.lua")
-local parse = mbox.parse
-dofile("testsupport.lua")
-
-local total = function()
- local t = 0
- for i = 1, #sent do
- t = t + sent[i].count
- end
- return t
-end
-
-local similar = function(s1, s2)
- return
- string.lower(string.gsub(s1, "%s", "")) ==
- string.lower(string.gsub(s2, "%s", ""))
-end
-
-local fail = function(s)
- s = s or "failed!"
- print(s)
- os.exit()
-end
-
-local readfile = function(name)
- local f = io.open(name, "r")
- if not f then
- fail("unable to open file!")
- return nil
- end
- local s = f:read("*a")
- f:close()
- return s
-end
-
-local empty = function()
- for i,v in ipairs(files) do
- local f = io.open(v, "w")
- if not f then
- fail("unable to open file!")
- end
- f:close()
- end
-end
-
-local get = function()
- local s = ""
- for i,v in ipairs(files) do
- s = s .. "\n" .. readfile(v)
- end
- return s
-end
-
-local check_headers = function(sent, got)
- sent = sent or {}
- got = got or {}
- for i,v in pairs(sent) do
- if not similar(v, got[i]) then fail("header " .. v .. "failed!") end
- end
-end
-
-local check_body = function(sent, got)
- sent = sent or ""
- got = got or ""
- if not similar(sent, got) then fail("bodies differ!") end
-end
-
-local check = function(sent, m)
- io.write("checking ", m.headers.title, ": ")
- for i = 1, #sent do
- local s = sent[i]
- if s.title == m.headers.title and s.count > 0 then
- check_headers(s.headers, m.headers)
- check_body(s.body, m.body)
- s.count = s.count - 1
- print("ok")
- return
- end
- end
- fail("not found")
-end
-
-local insert = function(sent, message)
- if type(message.rcpt) == "table" then
- message.count = #message.rcpt
- else message.count = 1 end
- message.headers = message.headers or {}
- message.headers.title = message.title
- table.insert(sent, message)
-end
-
-local mark = function()
- local time = socket.time()
- return { time = time }
-end
-
-local wait = function(sentinel, n)
- local to
- io.write("waiting for ", n, " messages: ")
- while 1 do
- local mbox = parse(get())
- if n == #mbox then break end
- if socket.time() - sentinel.time > 50 then
- to = 1
- break
- end
- socket.sleep(1)
- io.write(".")
- io.stdout:flush()
- end
- if to then fail("timeout")
- else print("ok") end
-end
-
-local stuffed_body = [[
-This message body needs to be
-stuffed because it has a dot
-.
-by itself on a line.
-Otherwise the mailer would
-think that the dot
-.
-is the end of the message
-and the remaining text would cause
-a lot of trouble.
-]]
-
-insert(sent, {
- from = from,
- rcpt = {
- "luasocket@localhost",
- "luasock3@dell-diego.cs.princeton.edu",
- "luasock1@dell-diego.cs.princeton.edu"
- },
- body = "multiple rcpt body",
- title = "multiple rcpt",
-})
-
-insert(sent, {
- from = from,
- rcpt = {
- "luasock2@localhost",
- "luasock3",
- "luasock1"
- },
- headers = {
- header1 = "header 1",
- header2 = "header 2",
- header3 = "header 3",
- header4 = "header 4",
- header5 = "header 5",
- header6 = "header 6",
- },
- body = stuffed_body,
- title = "complex message",
-})
-
-insert(sent, {
- from = from,
- rcpt = rcpt,
- server = server,
- body = "simple message body",
- title = "simple message"
-})
-
-insert(sent, {
- from = from,
- rcpt = rcpt,
- server = server,
- body = stuffed_body,
- title = "stuffed message body"
-})
-
-insert(sent, {
- from = from,
- rcpt = rcpt,
- headers = {
- header1 = "header 1",
- header2 = "header 2",
- header3 = "header 3",
- header4 = "header 4",
- header5 = "header 5",
- header6 = "header 6",
- },
- title = "multiple headers"
-})
-
-insert(sent, {
- from = from,
- rcpt = rcpt,
- title = "minimum message"
-})
-
-io.write("testing host not found: ")
-local c, e = socket.connect("wrong.host", 25)
-local ret, err = socket.smtp.mail{
- from = from,
- rcpt = rcpt,
- server = "wrong.host"
-}
-if ret or e ~= err then fail("wrong error message")
-else print("ok") end
-
-io.write("testing invalid from: ")
-local ret, err = socket.smtp.mail{
- from = ' " " (( _ * ',
- rcpt = rcpt,
-}
-if ret or not err then fail("wrong error message")
-else print(err) end
-
-io.write("testing no rcpt: ")
-local ret, err = socket.smtp.mail{
- from = from,
-}
-if ret or not err then fail("wrong error message")
-else print(err) end
-
-io.write("clearing mailbox: ")
-empty()
-print("ok")
-
-io.write("sending messages: ")
-for i = 1, #sent do
- ret, err = socket.smtp.mail(sent[i])
- if not ret then fail(err) end
- io.write("+")
- io.stdout:flush()
-end
-print("ok")
-
-wait(mark(), total())
-
-io.write("parsing mailbox: ")
-local mbox = parse(get())
-print(#mbox .. " messages found!")
-
-for i = 1, #mbox do
- check(sent, mbox[i])
-end
-
-print("passed all tests")
-print(string.format("done in %.2fs", socket.time() - t))
diff --git a/src/deps/src/luasocket/test/stufftest.lua b/src/deps/src/luasocket/test/stufftest.lua
deleted file mode 100644
index 490053f28..000000000
--- a/src/deps/src/luasocket/test/stufftest.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-local mime = require("mime")
-
-function test_dot(original, right)
- local result, n = mime.dot(2, original)
- assert(result == right, "->" .. result .. "<-")
- print("ok")
-end
-
-function test_stuff(original, right)
- local result, n = mime.dot(2, original)
- assert(result == right, "->" .. result .. "<-")
- print("ok")
-end
-
-test_dot("abc", "abc")
-test_dot("", "")
-test_dot("\r\n", "\r\n")
-test_dot("\r\n.", "\r\n..")
-test_dot(".\r\n.", "..\r\n..")
-test_dot(".\r\n.", "..\r\n..")
-test_dot("abcd.\r\n.", "abcd.\r\n..")
diff --git a/src/deps/src/luasocket/test/tcp-getoptions b/src/deps/src/luasocket/test/tcp-getoptions
deleted file mode 100644
index fbcc8846b..000000000
--- a/src/deps/src/luasocket/test/tcp-getoptions
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env lua
-
-local socket = require"socket"
-
-port = 8765
-
-function pcalltest(msg, o, opt)
- local a = { pcall(o.getoption, o, opt) }
- if a[1] then
- print(msg, opt, unpack(a))
- else
- print(msg, opt, 'fail: ' .. a[2])
- end
-end
-
-function options(o)
- print("options for", o)
-
- for _, opt in ipairs{
- "keepalive", "reuseaddr",
- "tcp-nodelay", "tcp-keepidle", "tcp-keepcnt", "tcp-keepintvl"} do
- pcalltest("getoption", o, opt)
- end
-
- r = o:getoption'linger'
- if r then
- print("getoption", "linger",
- "on", r.on,
- "timeout", r.timeout)
- else
- print("getoption", "linger", "no result")
- end
-end
-
-local m = socket.tcp()
-
-options(m)
-
-assert(m:bind("*", port))
-assert(m:listen())
-
-options(m)
-
-m:close()
-
-local m = socket.bind("*", port)
-
-options(m)
-
-local c = socket.connect("localhost", port)
-
-options(c)
-
-local s = m:accept()
-
-options(s)
-
diff --git a/src/deps/src/luasocket/test/test_bind.lua b/src/deps/src/luasocket/test/test_bind.lua
deleted file mode 100644
index 93c42d729..000000000
--- a/src/deps/src/luasocket/test/test_bind.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-local socket = require "socket"
-local u = socket.udp() assert(u:setsockname("*", 5088)) u:close()
-local u = socket.udp() assert(u:setsockname("*", 0)) u:close()
-local t = socket.tcp() assert(t:bind("*", 5088)) t:close()
-local t = socket.tcp() assert(t:bind("*", 0)) t:close()
-print("done!")
\ No newline at end of file
diff --git a/src/deps/src/luasocket/test/test_getaddrinfo.lua b/src/deps/src/luasocket/test/test_getaddrinfo.lua
deleted file mode 100644
index 4b52ff924..000000000
--- a/src/deps/src/luasocket/test/test_getaddrinfo.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-local socket = require "socket"
-local addresses = assert(socket.dns.getaddrinfo("localhost"))
-assert(type(addresses) == 'table')
-
-local ipv4mask = "^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?$"
-
-for i, alt in ipairs(addresses) do
- if alt.family == 'inet' then
- assert(type(alt.addr) == 'string')
- assert(alt.addr:find(ipv4mask))
- assert(alt.addr == '127.0.0.1')
- end
-end
-
-print("done!")
diff --git a/src/deps/src/luasocket/test/test_socket_error.lua b/src/deps/src/luasocket/test/test_socket_error.lua
deleted file mode 100644
index 1b4b601ca..000000000
--- a/src/deps/src/luasocket/test/test_socket_error.lua
+++ /dev/null
@@ -1,31 +0,0 @@
-local socket = require "socket"
-
-local host, port = "127.0.0.1", "5462"
-
-assert(socket.bind(host, port)):close()
-
-local sock = socket.tcp()
-sock:settimeout(0)
-
-local ok, err = sock:connect(host, port)
-assert(not ok)
-assert('timeout' == err)
-
-for i = 1, 10 do
- -- select pass even if socket has error
- local _, rec, err = socket.select(nil, {sock}, 1)
- local _, ss = next(rec)
- if ss then
- assert(ss == sock)
- else
- assert('timeout' == err, 'unexpected error :' .. tostring(err))
- end
- err = sock:getoption("error") -- i get 'connection refused' on WinXP
- if err then
- print("Passed! Error is '" .. err .. "'.")
- os.exit(0)
- end
-end
-
-print("Fail! No error detected!")
-os.exit(1)
diff --git a/src/deps/src/luasocket/test/testclnt.lua b/src/deps/src/luasocket/test/testclnt.lua
deleted file mode 100644
index 170e1878b..000000000
--- a/src/deps/src/luasocket/test/testclnt.lua
+++ /dev/null
@@ -1,803 +0,0 @@
-local socket = require"socket"
-
-host = host or "localhost"
-port = port or "8383"
-
-function printf(...)
- io.stderr:write(string.format(...))
-end
-
-function pass(...)
- printf(...)
- io.stderr:write("\n")
-end
-
-function fail(...)
- io.stderr:write("ERROR: ")
- printf(...)
- io.stderr:write("!\n")
- os.exit()
-end
-
-function warn(...)
- local s = string.format(...)
- io.stderr:write("WARNING: ", s, "\n")
-end
-
-function remote(...)
- local s = string.format(...)
- s = string.gsub(s, "\n", ";")
- s = string.gsub(s, "%s+", " ")
- s = string.gsub(s, "^%s*", "")
- control:send(s .. "\n")
- control:receive()
-end
-
-function test(test)
- io.stderr:write("----------------------------------------------\n",
- "testing: ", test, "\n",
- "----------------------------------------------\n")
-end
-
-function check_timeout(tm, sl, elapsed, err, opp, mode, alldone)
- if tm < sl then
- if opp == "send" then
- if not err then warn("must be buffered")
- elseif err == "timeout" then pass("proper timeout")
- else fail("unexpected error '%s'", err) end
- else
- if err ~= "timeout" then fail("should have timed out")
- else pass("proper timeout") end
- end
- else
- if mode == "total" then
- if elapsed > tm then
- if err ~= "timeout" then fail("should have timed out")
- else pass("proper timeout") end
- elseif elapsed < tm then
- if err then fail(err)
- else pass("ok") end
- else
- if alldone then
- if err then fail("unexpected error '%s'", err)
- else pass("ok") end
- else
- if err ~= "timeout" then fail(err)
- else pass("proper timeoutk") end
- end
- end
- else
- if err then fail(err)
- else pass("ok") end
- end
- end
-end
-
-if not socket._DEBUG then
- fail("Please define LUASOCKET_DEBUG and recompile LuaSocket")
-end
-
-io.stderr:write("----------------------------------------------\n",
-"LuaSocket Test Procedures\n",
-"----------------------------------------------\n")
-
-start = socket.gettime()
-
-function reconnect()
- if data then data:close() end
- remote [[
- if data then data:close() data = nil end
- data = server:accept()
- data:setoption("tcp-nodelay", true)
- ]]
- data, err = socket.connect(host, port)
- if not data then fail(err) end
- data:setoption("tcp-nodelay", true)
-end
-
-printf("attempting control connection...")
-control, err = socket.connect(host, port)
-if err then fail(err)
-else pass("connected!") end
-control:setoption("tcp-nodelay", true)
-
-------------------------------------------------------------------------
-function test_methods(sock, methods)
- for _, v in pairs(methods) do
- if type(sock[v]) ~= "function" then
- fail(sock.class .. " method '" .. v .. "' not registered")
- end
- end
- pass(sock.class .. " methods are ok")
-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"
- local p3 = "raw " .. string.rep("z", inter) .. "bytes"
- local p4 = "end" .. string.rep("w", inter) .. "bytes"
- local bp1, bp2, bp3, bp4
-remote (string.format("str = data:receive(%d)",
- string.len(p1)+string.len(p2)+string.len(p3)+string.len(p4)))
- sent, err = data:send(p1..p2..p3..p4)
- if err then fail(err) end
-remote "data:send(str); data:close()"
- bp1, err = data:receive()
- if err then fail(err) end
- bp2, err = data:receive()
- if err then fail(err) end
- bp3, err = data:receive(string.len(p3))
- if err then fail(err) end
- bp4, err = data:receive("*a")
- if err then fail(err) end
- if bp1.."\n" == p1 and bp2.."\r\n" == p2 and bp3 == p3 and bp4 == p4 then
- pass("patterns match")
- else fail("patterns don't match") end
-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))
- str = str .. str10
-remote "str = data:receive()"
- sent, err = data:send(str.."\n")
- if err then fail(err) end
-remote "data:send(str ..'\\n')"
- back, err = data:receive()
- if err then fail(err) end
- if back == str then pass("lines match")
- else fail("lines don't match") end
-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),
- math.floor(len/10))
- str = str .. str10
-remote "str = data:receive()"
- sent, err = data:send(str.."\n")
- if err then fail(err) end
-remote "data:send(str..'\\n')"
- back, err = data:receive()
- if err then fail(err) end
- if back == str then pass("lines match")
- else fail("lines don't match") end
-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)
- s2 = string.rep("y", len-half)
-remote (string.format("str = data:receive(%d)", len))
- sent, err = data:send(s1)
- if err then fail(err) end
- sent, err = data:send(s2)
- if err then fail(err) end
-remote "data:send(str)"
- back, err = data:receive(len)
- if err then fail(err) end
- if back == s1..s2 then pass("blocks match")
- else fail("blocks don't match") end
-end
-
-------------------------------------------------------------------------
-function test_totaltimeoutreceive(len, tm, sl)
- reconnect()
- local str, err, partial
- printf("%d bytes, %ds total timeout, %ds pause: ", len, tm, sl)
- remote (string.format ([[
- data:settimeout(%d)
- str = string.rep('a', %d)
- data:send(str)
- print('server: sleeping for %ds')
- socket.sleep(%d)
- print('server: woke up')
- data:send(str)
- ]], 2*tm, len, sl, sl))
- data:settimeout(tm, "total")
-local t = socket.gettime()
- str, err, partial, elapsed = data:receive(2*len)
- check_timeout(tm, sl, elapsed, err, "receive", "total",
- string.len(str or partial) == 2*len)
-end
-
-------------------------------------------------------------------------
-function test_totaltimeoutsend(len, tm, sl)
- reconnect()
- local str, err, total
- printf("%d bytes, %ds total timeout, %ds pause: ", len, tm, sl)
- remote (string.format ([[
- data:settimeout(%d)
- str = data:receive(%d)
- print('server: sleeping for %ds')
- socket.sleep(%d)
- print('server: woke up')
- str = data:receive(%d)
- ]], 2*tm, len, sl, sl, len))
- data:settimeout(tm, "total")
- str = string.rep("a", 2*len)
- total, err, partial, elapsed = data:send(str)
- check_timeout(tm, sl, elapsed, err, "send", "total",
- total == 2*len)
-end
-
-------------------------------------------------------------------------
-function test_blockingtimeoutreceive(len, tm, sl)
- reconnect()
- local str, err, partial
- printf("%d bytes, %ds blocking timeout, %ds pause: ", len, tm, sl)
- remote (string.format ([[
- data:settimeout(%d)
- str = string.rep('a', %d)
- data:send(str)
- print('server: sleeping for %ds')
- socket.sleep(%d)
- print('server: woke up')
- data:send(str)
- ]], 2*tm, len, sl, sl))
- data:settimeout(tm)
- str, err, partial, elapsed = data:receive(2*len)
- check_timeout(tm, sl, elapsed, err, "receive", "blocking",
- string.len(str or partial) == 2*len)
-end
-
-------------------------------------------------------------------------
-function test_blockingtimeoutsend(len, tm, sl)
- reconnect()
- local str, err, total
- printf("%d bytes, %ds blocking timeout, %ds pause: ", len, tm, sl)
- remote (string.format ([[
- data:settimeout(%d)
- str = data:receive(%d)
- print('server: sleeping for %ds')
- socket.sleep(%d)
- print('server: woke up')
- str = data:receive(%d)
- ]], 2*tm, len, sl, sl, len))
- data:settimeout(tm)
- str = string.rep("a", 2*len)
- total, err, partial, elapsed = data:send(str)
- check_timeout(tm, sl, elapsed, err, "send", "blocking",
- total == 2*len)
-end
-
-------------------------------------------------------------------------
-function empty_connect()
- printf("empty connect: ")
- reconnect()
- if data then data:close() data = nil end
- remote [[
- if data then data:close() data = nil end
- data = server:accept()
- ]]
- data, err = socket.connect("", port)
- if not data then
- pass("ok")
- data = socket.connect(host, port)
- else
- pass("gethostbyname returns localhost on empty string...")
- end
-end
-
-------------------------------------------------------------------------
-function isclosed(c)
- return c:getfd() == -1 or c:getfd() == (2^32-1)
-end
-
-function active_close()
- local tcp = socket.tcp4()
- if isclosed(tcp) then fail("should not be closed") end
- tcp:close()
- if not isclosed(tcp) then fail("should be closed") end
- tcp = socket.tcp()
- if not isclosed(tcp) then fail("should be closed") end
- tcp = nil
- local udp = socket.udp4()
- if isclosed(udp) then fail("should not be closed") end
- udp:close()
- if not isclosed(udp) then fail("should be closed") end
- udp = socket.udp()
- if not isclosed(udp) then fail("should be closed") end
- udp = nil
- pass("ok")
-end
-
-------------------------------------------------------------------------
-function test_closed()
- local back, partial, err
- local str = 'little string'
- reconnect()
- printf("trying read detection: ")
- remote (string.format ([[
- data:send('%s')
- data:close()
- data = nil
- ]], str))
- -- try to get a line
- back, err, partial = data:receive()
- if not err then fail("should have gotten 'closed'.")
- elseif err ~= "closed" then fail("got '"..err.."' instead of 'closed'.")
- elseif str ~= partial then fail("didn't receive partial result.")
- else pass("graceful 'closed' received") end
- reconnect()
- printf("trying write detection: ")
- remote [[
- data:close()
- data = nil
- ]]
- total, err, partial = data:send(string.rep("ugauga", 100000))
- if not err then
- pass("failed: output buffer is at least %d bytes long!", total)
- elseif err ~= "closed" then
- fail("got '"..err.."' instead of 'closed'.")
- else
- pass("graceful 'closed' received after %d bytes were sent", partial)
- end
-end
-
-------------------------------------------------------------------------
-function test_selectbugs()
- local r, s, e = socket.select(nil, nil, 0.1)
- assert(type(r) == "table" and type(s) == "table" and
- (e == "timeout" or e == "error"))
- pass("both nil: ok")
- local udp = socket.udp()
- udp:close()
- r, s, e = socket.select({ udp }, { udp }, 0.1)
- assert(type(r) == "table" and type(s) == "table" and
- (e == "timeout" or e == "error"))
- pass("closed sockets: ok")
- e = pcall(socket.select, "wrong", 1, 0.1)
- assert(e == false, tostring(e))
- e = pcall(socket.select, {}, 1, 0.1)
- assert(e == false, tostring(e))
- pass("invalid input: ok")
- local toomany = {}
- for i = 1, socket._SETSIZE+1 do
- toomany[#toomany+1] = socket.udp4()
- 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()
- printf("accept with timeout (if it hangs, it failed): ")
- local s, e = socket.bind("*", 0, 0)
- assert(s, e)
- local t = socket.gettime()
- s:settimeout(1)
- local c, e = s:accept()
- assert(not c, "should not accept")
- assert(e == "timeout", string.format("wrong error message (%s)", e))
- t = socket.gettime() - t
- assert(t < 2, string.format("took to long to give up (%gs)", t))
- s:close()
- pass("good")
-end
-
-------------------------------------------------------------------------
-function connect_timeout()
- 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)
- assert(not r, "should not connect")
- assert(socket.gettime() - t < 2, "took too long to give up.")
- c:close()
- pass("ok")
-end
-
-------------------------------------------------------------------------
-function accept_errors()
- printf("not listening: ")
- local d, e = socket.bind("*", 0)
- assert(d, e);
- local c, e = socket.tcp();
- assert(c, e);
- d:setfd(c:getfd())
- d:settimeout(2)
- local r, e = d:accept()
- assert(not r and e)
- 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)
- pass("ok")
-end
-
-------------------------------------------------------------------------
-function connect_errors()
- printf("connection refused: ")
- local c, e = socket.connect("localhost", 1);
- assert(not c and e)
- pass("ok")
- printf("host not found: ")
- local c, e = socket.connect("host.is.invalid", 1);
- assert(not c and e, e)
- pass("ok")
-end
-
-------------------------------------------------------------------------
-function rebind_test()
- 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)
- s:setoption("reuseaddr", false)
- r, e = s:bind(i, p)
- assert(not r, "managed to rebind!")
- assert(e)
- pass("ok")
-end
-
-------------------------------------------------------------------------
-function getstats_test()
- reconnect()
- local t = 0
- for i = 1, 25 do
- local c = math.random(1, 100)
- remote (string.format ([[
- str = data:receive(%d)
- data:send(str)
- ]], c))
- data:send(string.rep("a", c))
- data:receive(c)
- t = t + c
- local r, s, a = data:getstats()
- assert(r == t, "received count failed" .. tostring(r)
- .. "/" .. tostring(t))
- assert(s == t, "sent count failed" .. tostring(s)
- .. "/" .. tostring(t))
- end
- pass("ok")
-end
-
-
-------------------------------------------------------------------------
-function test_nonblocking(size)
- reconnect()
- printf("testing " .. 2*size .. " bytes: ")
-remote(string.format([[
- data:send(string.rep("a", %d))
- socket.sleep(0.5)
- data:send(string.rep("b", %d) .. "\n")
-]], size, size))
- local err = "timeout"
- local part = ""
- local str
- data:settimeout(0)
- while 1 do
- str, err, part = data:receive("*l", part)
- if err ~= "timeout" then break end
- end
- assert(str == (string.rep("a", size) .. string.rep("b", size)))
- reconnect()
-remote(string.format([[
- str = data:receive(%d)
- socket.sleep(0.5)
- str = data:receive(2*%d, str)
- data:send(str)
-]], size, size))
- data:settimeout(0)
- local start = 0
- while 1 do
- ret, err, start = data:send(str, start+1)
- if err ~= "timeout" then break end
- end
- data:send("\n")
- data:settimeout(-1)
- local back = data:receive(2*size)
- assert(back == str, "'" .. back .. "' vs '" .. str .. "'")
- pass("ok")
-end
-
-------------------------------------------------------------------------
-function test_readafterclose()
- local back, partial, err
- local str = 'little string'
- reconnect()
- printf("trying repeated '*a' pattern")
- remote (string.format ([[
- data:send('%s')
- data:close()
- data = nil
- ]], str))
- back, err, partial = data:receive("*a")
- assert(back == str, "unexpected data read")
- back, err, partial = data:receive("*a")
- assert(back == nil and err == "closed", "should have returned 'closed'")
- pass("ok")
- reconnect()
- printf("trying active close before '*a'")
- remote (string.format ([[
- data:close()
- data = nil
- ]]))
- data:close()
- back, err, partial = data:receive("*a")
- assert(back == nil and err == "closed", "should have returned 'closed'")
- pass("ok")
- reconnect()
- printf("trying active close before '*l'")
- remote (string.format ([[
- data:close()
- data = nil
- ]]))
- data:close()
- back, err, partial = data:receive()
- assert(back == nil and err == "closed", "should have returned 'closed'")
- pass("ok")
- reconnect()
- printf("trying active close before raw 1")
- remote (string.format ([[
- data:close()
- data = nil
- ]]))
- data:close()
- back, err, partial = data:receive(1)
- assert(back == nil and err == "closed", "should have returned 'closed'")
- pass("ok")
- reconnect()
- printf("trying active close before raw 0")
- remote (string.format ([[
- data:close()
- data = nil
- ]]))
- data:close()
- back, err, partial = data:receive(0)
- assert(back == nil and err == "closed", "should have returned 'closed'")
- 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", "got " .. err .. " instead of '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")
-
-local tcp_methods = {
- "accept",
- "bind",
- "close",
- "connect",
- "dirty",
- "getfamily",
- "getfd",
- "getoption",
- "getpeername",
- "getsockname",
- "getstats",
- "setstats",
- "listen",
- "receive",
- "send",
- "setfd",
- "setoption",
- "setpeername",
- "setsockname",
- "settimeout",
- "shutdown",
-}
-test_methods(socket.tcp(), tcp_methods)
-do local sock = socket.tcp6()
-if sock then test_methods(socket.tcp6(), tcp_methods)
-else io.stderr:write("Warning! IPv6 does not support!\n") end
-end
-
-local udp_methods = {
- "close",
- "dirty",
- "getfamily",
- "getfd",
- "getoption",
- "getpeername",
- "getsockname",
- "receive",
- "receivefrom",
- "send",
- "sendto",
- "setfd",
- "setoption",
- "setpeername",
- "setsockname",
- "settimeout"
-}
-
-------------------------------------------------------------------------
-test_methods(socket.udp(), udp_methods)
-do local sock = socket.tcp6()
-if sock then test_methods(socket.udp6(), udp_methods)
-else io.stderr:write("Warning! IPv6 does not support!\n") end
-end
-
-test("closed connection detection: ")
-test_closed()
-
-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()
-connect_errors()
-
-test("rebinding: ")
-rebind_test()
-
-test("active close: ")
-active_close()
-
-test("accept function: ")
-accept_timeout()
-accept_errors()
-
-test("getstats test")
-getstats_test()
-
-test("character line")
-test_asciiline(1)
-test_asciiline(17)
-test_asciiline(200)
-test_asciiline(4091)
-test_asciiline(80199)
-test_asciiline(8000000)
-test_asciiline(80199)
-test_asciiline(4091)
-test_asciiline(200)
-test_asciiline(17)
-test_asciiline(1)
-
-test("mixed patterns")
-test_mixed(1)
-test_mixed(17)
-test_mixed(200)
-test_mixed(4091)
-test_mixed(801990)
-test_mixed(4091)
-test_mixed(200)
-test_mixed(17)
-test_mixed(1)
-
-test("binary line")
-test_rawline(1)
-test_rawline(17)
-test_rawline(200)
-test_rawline(4091)
-test_rawline(80199)
-test_rawline(8000000)
-test_rawline(80199)
-test_rawline(4091)
-test_rawline(200)
-test_rawline(17)
-test_rawline(1)
-
-test("raw transfer")
-test_raw(1)
-test_raw(17)
-test_raw(200)
-test_raw(4091)
-test_raw(80199)
-test_raw(8000000)
-test_raw(80199)
-test_raw(4091)
-test_raw(200)
-test_raw(17)
-test_raw(1)
-
-test("non-blocking transfer")
-test_nonblocking(1)
-test_nonblocking(17)
-test_nonblocking(200)
-test_nonblocking(4091)
-test_nonblocking(80199)
-test_nonblocking(800000)
-test_nonblocking(80199)
-test_nonblocking(4091)
-test_nonblocking(200)
-test_nonblocking(17)
-test_nonblocking(1)
-
-test("total timeout on send")
-test_totaltimeoutsend(800091, 1, 3)
-test_totaltimeoutsend(800091, 2, 3)
-test_totaltimeoutsend(800091, 5, 2)
-test_totaltimeoutsend(800091, 3, 1)
-
-test("total timeout on receive")
-test_totaltimeoutreceive(800091, 1, 3)
-test_totaltimeoutreceive(800091, 2, 3)
-test_totaltimeoutreceive(800091, 3, 2)
-test_totaltimeoutreceive(800091, 3, 1)
-
-test("blocking timeout on send")
-test_blockingtimeoutsend(800091, 1, 3)
-test_blockingtimeoutsend(800091, 2, 3)
-test_blockingtimeoutsend(800091, 3, 2)
-test_blockingtimeoutsend(800091, 3, 1)
-
-test("blocking timeout on receive")
-test_blockingtimeoutreceive(800091, 1, 3)
-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/src/deps/src/luasocket/test/testmesg.lua b/src/deps/src/luasocket/test/testmesg.lua
deleted file mode 100644
index 8c086d511..000000000
--- a/src/deps/src/luasocket/test/testmesg.lua
+++ /dev/null
@@ -1,96 +0,0 @@
--- load the smtp support and its friends
-local smtp = require("socket.smtp")
-local mime = require("mime")
-local ltn12 = require("ltn12")
-
-function filter(s)
- if s then io.write(s) end
- return s
-end
-
-source = smtp.message {
- headers = { ['content-type'] = 'multipart/alternative' },
- body = {
- [1] = {
- headers = { ['Content-type'] = 'text/html' },
- body = " Hi, there... "
- },
- [2] = {
- headers = { ['content-type'] = 'text/plain' },
- body = "Hi, there..."
- }
- }
-}
-
-r, e = smtp.send{
- rcpt = {"",
- "" },
- from = "",
- source = ltn12.source.chain(source, filter),
- --server = "mail.cs.princeton.edu"
- server = "localhost",
- port = 2525
-}
-
-print(r, e)
-
--- creates a source to send a message with two parts. The first part is
--- plain text, the second part is a PNG image, encoded as base64.
-source = smtp.message{
- headers = {
- -- Remember that headers are *ignored* by smtp.send.
- from = "Sicrano ",
- to = "Fulano ",
- subject = "Here is a message with attachments"
- },
- body = {
- preamble = "If your client doesn't understand attachments, \r\n" ..
- "it will still display the preamble and the epilogue.\r\n" ..
- "Preamble might show up even in a MIME enabled client.",
- -- first part: No headers means plain text, us-ascii.
- -- The mime.eol low-level filter normalizes end-of-line markers.
- [1] = {
- body = mime.eol(0, [[
- Lines in a message body should always end with CRLF.
- The smtp module will *NOT* perform translation. It will
- perform necessary stuffing, though.
- ]])
- },
- -- second part: Headers describe content the to be an image,
- -- sent under the base64 transfer content encoding.
- -- Notice that nothing happens until the message is sent. Small
- -- chunks are loaded into memory and translation happens on the fly.
- [2] = {
- headers = {
- ["ConTenT-tYpE"] = 'image/png; name="luasocket.png"',
- ["content-disposition"] = 'attachment; filename="luasocket.png"',
- ["content-description"] = 'our logo',
- ["content-transfer-encoding"] = "BASE64"
- },
- body = ltn12.source.chain(
- ltn12.source.file(io.open("luasocket.png", "rb")),
- ltn12.filter.chain(
- mime.encode("base64"),
- mime.wrap()
- )
- )
- },
- epilogue = "This might also show up, but after the attachments"
- }
-}
-
-
-r, e = smtp.send{
- rcpt = {"",
- "" },
- from = "",
- source = ltn12.source.chain(source, filter),
- --server = "mail.cs.princeton.edu",
- --port = 25
- server = "localhost",
- port = 2525
-}
-
-print(r, e)
-
-
diff --git a/src/deps/src/luasocket/test/testsrvr.lua b/src/deps/src/luasocket/test/testsrvr.lua
deleted file mode 100644
index 1eb2d5b1f..000000000
--- a/src/deps/src/luasocket/test/testsrvr.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-socket = require("socket");
-host = host or "localhost";
-port = port or "8383";
-server = assert(socket.bind(host, port));
-ack = "\n";
-while 1 do
- print("server: waiting for client connection...");
- control = assert(server:accept());
- while 1 do
- command, emsg = control:receive();
- if emsg == "closed" then
- control:close()
- break
- end
- assert(command, emsg)
- assert(control:send(ack));
- print(command);
- ((loadstring or load)(command))();
- end
-end
diff --git a/src/deps/src/luasocket/test/testsupport.lua b/src/deps/src/luasocket/test/testsupport.lua
deleted file mode 100644
index 4360b6b3e..000000000
--- a/src/deps/src/luasocket/test/testsupport.lua
+++ /dev/null
@@ -1,37 +0,0 @@
-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
-end
-
-function similar(s1, s2)
- return string.lower(string.gsub(s1 or "", "%s", "")) ==
- string.lower(string.gsub(s2 or "", "%s", ""))
-end
-
-function fail(msg)
- msg = msg or "failed"
- error(msg, 2)
-end
-
-function compare(input, output)
- local original = readfile(input)
- local recovered = readfile(output)
- if original ~= recovered then fail("comparison failed")
- else print("ok") end
-end
-
-local G = _G
-local set = rawset
-local warn = print
-
-local setglobal = function(table, key, value)
- warn("changed " .. key)
- set(table, key, value)
-end
-
-setmetatable(G, {
- __newindex = setglobal
-})
diff --git a/src/deps/src/luasocket/test/tftptest.lua b/src/deps/src/luasocket/test/tftptest.lua
deleted file mode 100644
index 35078e836..000000000
--- a/src/deps/src/luasocket/test/tftptest.lua
+++ /dev/null
@@ -1,20 +0,0 @@
--- load tftpclnt.lua
-local tftp = require("socket.tftp")
-
--- needs tftp server running on localhost, with root pointing to
--- a directory with index.html in it
-
-function readfile(file)
- local f = io.open(file, "r")
- if not f then return nil end
- local a = f:read("*a")
- f:close()
- return a
-end
-
-host = host or "diego.student.princeton.edu"
-retrieved, err = tftp.get("tftp://" .. host .."/index.html")
-assert(not err, err)
-original = readfile("test/index.html")
-assert(original == retrieved, "files differ!")
-print("passed")
diff --git a/src/deps/src/luasocket/test/udp-zero-length-send b/src/deps/src/luasocket/test/udp-zero-length-send
deleted file mode 100644
index 9038c999a..000000000
--- a/src/deps/src/luasocket/test/udp-zero-length-send
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env lua
-
---[[
-Show that luasocket returns an error message on zero-length UDP sends,
-even though the send is valid, and in fact the UDP packet is sent
-to the peer:
-
-% sudo tcpdump -i lo -n
-tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
-listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
-13:40:16.652808 IP 127.0.0.1.56573 > 127.0.0.1.5432: UDP, length 0
-
-]]
-
-socket = require"socket"
-
-s = assert(socket.udp())
-r = assert(socket.udp())
-assert(r:setsockname("*", 5432))
-assert(s:setpeername("127.0.0.1", 5432))
-
-ssz, emsg = s:send("")
-
-print(ssz == 0 and "OK" or "FAIL",[[send:("")]], ssz, emsg)
-
diff --git a/src/deps/src/luasocket/test/udp-zero-length-send-recv b/src/deps/src/luasocket/test/udp-zero-length-send-recv
deleted file mode 100644
index 064ca5216..000000000
--- a/src/deps/src/luasocket/test/udp-zero-length-send-recv
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env lua
-
---[[
-Show that luasocket returns an error message on zero-length UDP sends,
-even though the send is valid, and in fact the UDP packet is sent
-to the peer:
-
-% sudo tcpdump -i lo -n
-tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
-listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
-13:40:16.652808 IP 127.0.0.1.56573 > 127.0.0.1.5432: UDP, length 0
-
-]]
-
-socket = require"socket"
-
-s = assert(socket.udp())
-r = assert(socket.udp())
-assert(r:setsockname("*", 5432))
-assert(s:setpeername("127.0.0.1", 5432))
-
-ok, emsg = s:send("")
-if ok ~= 0 then
- print("send of zero failed with:", ok, emsg)
-end
-
-assert(r:settimeout(2))
-
-ok, emsg = r:receive()
-
-if not ok or string.len(ok) ~= 0 then
- print("fail - receive of zero failed with:", ok, emsg)
- os.exit(1)
-end
-
-print"ok"
-
diff --git a/src/deps/src/luasocket/test/udpconnectclnt.lua b/src/deps/src/luasocket/test/udpconnectclnt.lua
deleted file mode 100644
index ad6ab6a45..000000000
--- a/src/deps/src/luasocket/test/udpconnectclnt.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-local socket = require"socket"
-local udp = socket.udp
-local localhost = "127.0.0.1"
-local port = assert(arg[1], "missing port argument")
-
-se = udp(); se:setoption("reuseaddr", true)
-se:setsockname(localhost, 5062)
-print("se", se:getsockname())
-sc = udp(); sc:setoption("reuseaddr", true)
-sc:setsockname(localhost, 5061)
-print("sc", sc:getsockname())
-
-se:sendto("this is a test from se", localhost, port)
-socket.sleep(1)
-sc:sendto("this is a test from sc", localhost, port)
-socket.sleep(1)
-se:sendto("this is a test from se", localhost, port)
-socket.sleep(1)
-sc:sendto("this is a test from sc", localhost, port)
diff --git a/src/deps/src/luasocket/test/udpconnectsrvr.lua b/src/deps/src/luasocket/test/udpconnectsrvr.lua
deleted file mode 100644
index 5a9772ec6..000000000
--- a/src/deps/src/luasocket/test/udpconnectsrvr.lua
+++ /dev/null
@@ -1,16 +0,0 @@
-local socket = require"socket"
-local udp = socket.udp
-local localhost = "127.0.0.1"
-local s = assert(udp())
-assert(tostring(s):find("udp{unconnected}"))
-print("setpeername", s:setpeername(localhost, 5061))
-print("getsockname", s:getsockname())
-assert(tostring(s):find("udp{connected}"))
-print(s:receive())
-print("setpeername", s:setpeername("*"))
-print("getsockname", s:getsockname())
-s:sendto("a", localhost, 12345)
-print("getsockname", s:getsockname())
-assert(tostring(s):find("udp{unconnected}"))
-print(s:receivefrom())
-s:close()
diff --git a/src/deps/src/luasocket/test/unixdgramclnt.lua b/src/deps/src/luasocket/test/unixdgramclnt.lua
deleted file mode 100644
index 9bd60f7f7..000000000
--- a/src/deps/src/luasocket/test/unixdgramclnt.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-socket = require"socket"
-socket.unix = require"socket.unix"
-c = assert(socket.unix.dgram())
-print(c:bind("/tmp/bar"))
-while 1 do
- local l = io.read("*l")
- assert(c:sendto(l, "/tmp/foo"))
- print(assert(c:receivefrom()))
-end
diff --git a/src/deps/src/luasocket/test/unixdgramsrvr.lua b/src/deps/src/luasocket/test/unixdgramsrvr.lua
deleted file mode 100644
index 4c11f552c..000000000
--- a/src/deps/src/luasocket/test/unixdgramsrvr.lua
+++ /dev/null
@@ -1,9 +0,0 @@
- socket = require"socket"
- socket.unix = require"socket.unix"
- u = assert(socket.unix.dgram())
- assert(u:bind("/tmp/foo"))
- while 1 do
- x, r = assert(u:receivefrom())
- print(x, r)
- assert(u:sendto(">" .. x, r))
- end
diff --git a/src/deps/src/luasocket/test/unixstreamclnt.lua b/src/deps/src/luasocket/test/unixstreamclnt.lua
deleted file mode 100644
index 4f2e1e3c1..000000000
--- a/src/deps/src/luasocket/test/unixstreamclnt.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-socket = require"socket"
-socket.unix = require"socket.unix"
-c = assert(socket.unix.stream())
-assert(c:connect("/tmp/foo"))
-while 1 do
- local l = io.read()
- assert(c:send(l .. "\n"))
-end
diff --git a/src/deps/src/luasocket/test/unixstreamsrvr.lua b/src/deps/src/luasocket/test/unixstreamsrvr.lua
deleted file mode 100644
index 0a5c644be..000000000
--- a/src/deps/src/luasocket/test/unixstreamsrvr.lua
+++ /dev/null
@@ -1,9 +0,0 @@
- socket = require"socket"
- socket.unix = require"socket.unix"
- u = assert(socket.unix.stream())
- assert(u:bind("/tmp/foo"))
- assert(u:listen())
- c = assert(u:accept())
- while 1 do
- print(assert(c:receive()))
- end
diff --git a/src/deps/src/luasocket/test/upload.html b/src/deps/src/luasocket/test/upload.html
deleted file mode 100644
index b4674a885..000000000
--- a/src/deps/src/luasocket/test/upload.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-POST test
-
-
-
-
-
-
diff --git a/src/deps/src/luasocket/test/urltest.lua b/src/deps/src/luasocket/test/urltest.lua
deleted file mode 100644
index 9a3c470a2..000000000
--- a/src/deps/src/luasocket/test/urltest.lua
+++ /dev/null
@@ -1,738 +0,0 @@
-local socket = require("socket")
-socket.url = require("socket.url")
-dofile("testsupport.lua")
-
-local check_build_url = function(parsed)
- local built = socket.url.build(parsed)
- if built ~= parsed.url then
- print("built is different from expected")
- print(built)
- print(expected)
- os.exit()
- end
-end
-
-local check_protect = function(parsed, path, unsafe)
- local built = socket.url.build_path(parsed, unsafe)
- if built ~= path then
- print(built, path)
- print("path composition failed.")
- os.exit()
- end
-end
-
-local check_invert = function(url)
- local parsed = socket.url.parse(url)
- parsed.path = socket.url.build_path(socket.url.parse_path(parsed.path))
- local rebuilt = socket.url.build(parsed)
- if rebuilt ~= url then
- print(url, rebuilt)
- print("original and rebuilt are different")
- os.exit()
- end
-end
-
-local check_parse_path = function(path, expect)
- local parsed = socket.url.parse_path(path)
- for i = 1, math.max(#parsed, #expect) do
- if parsed[i] ~= expect[i] then
- print(path)
- os.exit()
- end
- end
- if expect.is_directory ~= parsed.is_directory then
- print(path)
- print("is_directory mismatch")
- os.exit()
- end
- if expect.is_absolute ~= parsed.is_absolute then
- print(path)
- print("is_absolute mismatch")
- os.exit()
- end
- local built = socket.url.build_path(expect)
- if built ~= path then
- print(built, path)
- print("path composition failed.")
- os.exit()
- end
-end
-
-local check_absolute_url = function(base, relative, absolute)
- local res = socket.url.absolute(base, relative)
- if res ~= absolute then
- io.write("absolute: In test for base='", base, "', rel='", relative, "' expected '",
- absolute, "' but got '", res, "'\n")
- os.exit()
- end
-end
-
-local check_parse_url = function(gaba)
- local url = gaba.url
- gaba.url = nil
- local parsed = socket.url.parse(url)
- for i, v in pairs(gaba) do
- if v ~= parsed[i] then
- io.write("parse: In test for '", url, "' expected ", i, " = '",
- v, "' but got '", tostring(parsed[i]), "'\n")
- for i,v in pairs(parsed) do print(i,v) end
- os.exit()
- end
- end
- for i, v in pairs(parsed) do
- if v ~= gaba[i] then
- io.write("parse: In test for '", url, "' expected ", i, " = '",
- tostring(gaba[i]), "' but got '", v, "'\n")
- for i,v in pairs(parsed) do print(i,v) end
- os.exit()
- end
- end
-end
-
-print("testing URL parsing")
-check_parse_url{
- url = "scheme://user:pass$%?#wd@host:port/path;params?query#fragment",
- scheme = "scheme",
- authority = "user:pass$%?#wd@host:port",
- host = "host",
- port = "port",
- userinfo = "user:pass$%?#wd",
- password = "pass$%?#wd",
- user = "user",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-check_parse_url{
- url = "scheme://user:pass?#wd@host:port/path;params?query#fragment",
- scheme = "scheme",
- authority = "user:pass?#wd@host:port",
- host = "host",
- port = "port",
- userinfo = "user:pass?#wd",
- password = "pass?#wd",
- user = "user",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-check_parse_url{
- url = "scheme://user:pass-wd@host:port/path;params?query#fragment",
- scheme = "scheme",
- authority = "user:pass-wd@host:port",
- host = "host",
- port = "port",
- userinfo = "user:pass-wd",
- password = "pass-wd",
- user = "user",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-check_parse_url{
- url = "scheme://user:pass#wd@host:port/path;params?query#fragment",
- scheme = "scheme",
- authority = "user:pass#wd@host:port",
- host = "host",
- port = "port",
- userinfo = "user:pass#wd",
- password = "pass#wd",
- user = "user",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-check_parse_url{
- url = "scheme://user:pass#wd@host:port/path;params?query",
- scheme = "scheme",
- authority = "user:pass#wd@host:port",
- host = "host",
- port = "port",
- userinfo = "user:pass#wd",
- password = "pass#wd",
- user = "user",
- path = "/path",
- params = "params",
- query = "query",
-}
-check_parse_url{
- url = "scheme://userinfo@host:port/path;params?query#fragment",
- scheme = "scheme",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_parse_url{
- url = "scheme://user:password@host:port/path;params?query#fragment",
- scheme = "scheme",
- authority = "user:password@host:port",
- host = "host",
- port = "port",
- userinfo = "user:password",
- user = "user",
- password = "password",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment",
-}
-
-check_parse_url{
- url = "scheme://userinfo@host:port/path;params?query#",
- scheme = "scheme",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
- params = "params",
- query = "query",
- fragment = ""
-}
-
-check_parse_url{
- url = "scheme://userinfo@host:port/path;params?#fragment",
- scheme = "scheme",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
- params = "params",
- query = "",
- fragment = "fragment"
-}
-
-check_parse_url{
- url = "scheme://userinfo@host:port/path;params#fragment",
- scheme = "scheme",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
- params = "params",
- fragment = "fragment"
-}
-
-check_parse_url{
- url = "scheme://userinfo@host:port/path;?query#fragment",
- scheme = "scheme",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
- params = "",
- query = "query",
- fragment = "fragment"
-}
-
-check_parse_url{
- url = "scheme://userinfo@host:port/path?query#fragment",
- scheme = "scheme",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
- query = "query",
- fragment = "fragment"
-}
-
-check_parse_url{
- url = "scheme://userinfo@host:port/;params?query#fragment",
- scheme = "scheme",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_parse_url{
- url = "scheme://userinfo@host:port",
- scheme = "scheme",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
-}
-
-check_parse_url{
- url = "//userinfo@host:port/path;params?query#fragment",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_parse_url{
- url = "//userinfo@host:port/path",
- authority = "userinfo@host:port",
- host = "host",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
-}
-
-check_parse_url{
- url = "//userinfo@host/path",
- authority = "userinfo@host",
- host = "host",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
-}
-
-check_parse_url{
- url = "//user:password@host/path",
- authority = "user:password@host",
- host = "host",
- userinfo = "user:password",
- password = "password",
- user = "user",
- path = "/path",
-}
-
-check_parse_url{
- url = "//user:@host/path",
- authority = "user:@host",
- host = "host",
- userinfo = "user:",
- password = "",
- user = "user",
- path = "/path",
-}
-
-check_parse_url{
- url = "//user@host:port/path",
- authority = "user@host:port",
- host = "host",
- userinfo = "user",
- user = "user",
- port = "port",
- path = "/path",
-}
-
-check_parse_url{
- url = "//host:port/path",
- authority = "host:port",
- port = "port",
- host = "host",
- path = "/path",
-}
-
-check_parse_url{
- url = "//host/path",
- authority = "host",
- host = "host",
- path = "/path",
-}
-
-check_parse_url{
- url = "//host",
- authority = "host",
- host = "host",
-}
-
-check_parse_url{
- url = "/path",
- path = "/path",
-}
-
-check_parse_url{
- url = "path",
- path = "path",
-}
-
--- IPv6 tests
-
-check_parse_url{
- url = "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html",
- scheme = "http",
- host = "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210",
- authority = "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80",
- port = "80",
- path = "/index.html"
-}
-
-check_parse_url{
- url = "http://[1080:0:0:0:8:800:200C:417A]/index.html",
- scheme = "http",
- host = "1080:0:0:0:8:800:200C:417A",
- authority = "[1080:0:0:0:8:800:200C:417A]",
- path = "/index.html"
-}
-
-check_parse_url{
- url = "http://[3ffe:2a00:100:7031::1]",
- scheme = "http",
- host = "3ffe:2a00:100:7031::1",
- authority = "[3ffe:2a00:100:7031::1]",
-}
-
-check_parse_url{
- url = "http://[1080::8:800:200C:417A]/foo",
- scheme = "http",
- host = "1080::8:800:200C:417A",
- authority = "[1080::8:800:200C:417A]",
- path = "/foo"
-}
-
-check_parse_url{
- url = "http://[::192.9.5.5]/ipng",
- scheme = "http",
- host = "::192.9.5.5",
- authority = "[::192.9.5.5]",
- path = "/ipng"
-}
-
-check_parse_url{
- url = "http://[::FFFF:129.144.52.38]:80/index.html",
- scheme = "http",
- host = "::FFFF:129.144.52.38",
- port = "80",
- authority = "[::FFFF:129.144.52.38]:80",
- path = "/index.html"
-}
-
-check_parse_url{
- url = "http://[2010:836B:4179::836B:4179]",
- scheme = "http",
- host = "2010:836B:4179::836B:4179",
- authority = "[2010:836B:4179::836B:4179]",
-}
-
-check_parse_url{
- url = "//userinfo@[::FFFF:129.144.52.38]:port/path;params?query#fragment",
- authority = "userinfo@[::FFFF:129.144.52.38]:port",
- host = "::FFFF:129.144.52.38",
- port = "port",
- userinfo = "userinfo",
- user = "userinfo",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_parse_url{
- url = "scheme://user:password@[::192.9.5.5]:port/path;params?query#fragment",
- scheme = "scheme",
- authority = "user:password@[::192.9.5.5]:port",
- host = "::192.9.5.5",
- port = "port",
- userinfo = "user:password",
- user = "user",
- password = "password",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-print("testing URL building")
-check_build_url {
- url = "scheme://user:password@host:port/path;params?query#fragment",
- scheme = "scheme",
- host = "host",
- port = "port",
- user = "user",
- password = "password",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url{
- url = "//userinfo@[::FFFF:129.144.52.38]:port/path;params?query#fragment",
- host = "::FFFF:129.144.52.38",
- port = "port",
- user = "userinfo",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url{
- url = "scheme://user:password@[::192.9.5.5]:port/path;params?query#fragment",
- scheme = "scheme",
- host = "::192.9.5.5",
- port = "port",
- user = "user",
- password = "password",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://user:password@host/path;params?query#fragment",
- scheme = "scheme",
- host = "host",
- user = "user",
- password = "password",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://user@host/path;params?query#fragment",
- scheme = "scheme",
- host = "host",
- user = "user",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://host/path;params?query#fragment",
- scheme = "scheme",
- host = "host",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://host/path;params#fragment",
- scheme = "scheme",
- host = "host",
- path = "/path",
- params = "params",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://host/path#fragment",
- scheme = "scheme",
- host = "host",
- path = "/path",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://host/path",
- scheme = "scheme",
- host = "host",
- path = "/path",
-}
-
-check_build_url {
- url = "//host/path",
- host = "host",
- path = "/path",
-}
-
-check_build_url {
- url = "/path",
- path = "/path",
-}
-
-check_build_url {
- url = "scheme://user:password@host:port/path;params?query#fragment",
- scheme = "scheme",
- host = "host",
- port = "port",
- user = "user",
- userinfo = "not used",
- password = "password",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://user:password@host:port/path;params?query#fragment",
- scheme = "scheme",
- host = "host",
- port = "port",
- user = "user",
- userinfo = "not used",
- authority = "not used",
- password = "password",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://user:password@host:port/path;params?query#fragment",
- scheme = "scheme",
- host = "host",
- port = "port",
- userinfo = "user:password",
- authority = "not used",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
-check_build_url {
- url = "scheme://user:password@host:port/path;params?query#fragment",
- scheme = "scheme",
- authority = "user:password@host:port",
- path = "/path",
- params = "params",
- query = "query",
- fragment = "fragment"
-}
-
--- standard RFC tests
-print("testing absolute resolution")
-check_absolute_url("http://a/b/c/d;p?q#f", "g:h", "g:h")
-check_absolute_url("http://a/b/c/d;p?q#f", "g", "http://a/b/c/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "./g", "http://a/b/c/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "g/", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "/g", "http://a/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "//g", "http://g")
-check_absolute_url("http://a/b/c/d;p?q#f", "?y", "http://a/b/c/d;p?y")
-check_absolute_url("http://a/b/c/d;p?q#f", "g?y", "http://a/b/c/g?y")
-check_absolute_url("http://a/b/c/d;p?q#f", "g?y/./x", "http://a/b/c/g?y/x")
-check_absolute_url("http://a/b/c/d;p?q#f", "#s", "http://a/b/c/d;p?q#s")
-check_absolute_url("http://a/b/c/d;p?q#f", "g#s", "http://a/b/c/g#s")
-check_absolute_url("http://a/b/c/d;p?q#f", "g#s/./x", "http://a/b/c/g#s/x")
-check_absolute_url("http://a/b/c/d;p?q#f", "g?y#s", "http://a/b/c/g?y#s")
-check_absolute_url("http://a/b/c/d;p?q#f", ";x", "http://a/b/c/d;x")
-check_absolute_url("http://a/b/c/d;p?q#f", "g;x", "http://a/b/c/g;x")
-check_absolute_url("http://a/b/c/d;p?q#f", "g;x?y#s", "http://a/b/c/g;x?y#s")
-check_absolute_url("http://a/b/c/d;p?q#f", ".", "http://a/b/c/")
-check_absolute_url("http://a/b/c/d;p?q#f", "./", "http://a/b/c/")
-check_absolute_url("http://a/b/c/d;p?q#f", "./g", "http://a/b/c/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "./g/", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "././g", "http://a/b/c/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "././g/", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "g/.", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "g/./", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "g/./.", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "g/././", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "./.", "http://a/b/c/")
-check_absolute_url("http://a/b/c/d;p?q#f", "././.", "http://a/b/c/")
-check_absolute_url("http://a/b/c/d;p?q#f", "././g/./.", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "..", "http://a/b/")
-check_absolute_url("http://a/b/c/d;p?q#f", "../", "http://a/b/")
-check_absolute_url("http://a/b/c/d;p?q#f", "../g", "http://a/b/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "../..", "http://a/")
-check_absolute_url("http://a/b/c/d;p?q#f", "../../", "http://a/")
-check_absolute_url("http://a/b/c/d;p?q#f", "../../g", "http://a/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "../../../g", "http://a/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "", "http://a/b/c/d;p?q#f")
-check_absolute_url("http://a/b/c/d;p?q#f", "/./g", "http://a/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "/../g", "http://a/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "g.", "http://a/b/c/g.")
-check_absolute_url("http://a/b/c/d;p?q#f", ".g", "http://a/b/c/.g")
-check_absolute_url("http://a/b/c/d;p?q#f", "g..", "http://a/b/c/g..")
-check_absolute_url("http://a/b/c/d;p?q#f", "..g", "http://a/b/c/..g")
-check_absolute_url("http://a/b/c/d;p?q#f", "./../g", "http://a/b/g")
-check_absolute_url("http://a/b/c/d;p?q#f", "./g/.", "http://a/b/c/g/")
-check_absolute_url("http://a/b/c/d;p?q#f", "g/./h", "http://a/b/c/g/h")
-check_absolute_url("http://a/b/c/d;p?q#f", "g/../h", "http://a/b/c/h")
-
-check_absolute_url("http://a/b/c/d:p?q#f/", "../g/", "http://a/b/g/")
-check_absolute_url("http://a/b/c/d:p?q#f/", "../g", "http://a/b/g")
-check_absolute_url("http://a/b/c/d:p?q#f/", "../.g/", "http://a/b/.g/")
-check_absolute_url("http://a/b/c/d:p?q#f/", "../.g", "http://a/b/.g")
-check_absolute_url("http://a/b/c/d:p?q#f/", "../.g.h/", "http://a/b/.g.h/")
-check_absolute_url("http://a/b/c/d:p?q#f/", "../.g.h", "http://a/b/.g.h")
-
-check_absolute_url("http://a/b/c/d:p?q#f/", "g.h/", "http://a/b/c/g.h/")
-check_absolute_url("http://a/b/c/d:p?q#f/", "../g.h/", "http://a/b/g.h/")
-check_absolute_url("http://a/", "../g.h/", "http://a/g.h/")
-
--- extra tests
-check_absolute_url("//a/b/c/d;p?q#f", "d/e/f", "//a/b/c/d/e/f")
-check_absolute_url("/a/b/c/d;p?q#f", "d/e/f", "/a/b/c/d/e/f")
-check_absolute_url("a/b/c/d", "d/e/f", "a/b/c/d/e/f")
-check_absolute_url("a/b/c/d/../", "d/e/f", "a/b/c/d/e/f")
-check_absolute_url("http://velox.telemar.com.br", "/dashboard/index.html",
- "http://velox.telemar.com.br/dashboard/index.html")
-check_absolute_url("http://example.com/", "../.badhost.com/", "http://example.com/.badhost.com/")
-check_absolute_url("http://example.com/", "...badhost.com/", "http://example.com/...badhost.com/")
-check_absolute_url("http://example.com/a/b/c/d/", "../q", "http://example.com/a/b/c/q")
-check_absolute_url("http://example.com/a/b/c/d/", "../../q", "http://example.com/a/b/q")
-check_absolute_url("http://example.com/a/b/c/d/", "../../../q", "http://example.com/a/q")
-check_absolute_url("http://example.com", ".badhost.com", "http://example.com/.badhost.com")
-check_absolute_url("http://example.com/a/b/c/d/", "..//../../../q", "http://example.com/a/q")
-check_absolute_url("http://example.com/a/b/c/d/", "..//a/../../../../q", "http://example.com/a/q")
-check_absolute_url("http://example.com/a/b/c/d/", "..//a/..//../../../q", "http://example.com/a/b/q")
-check_absolute_url("http://example.com/a/b/c/d/", "..//a/..///../../../../q", "http://example.com/a/b/q")
-check_absolute_url("http://example.com/a/b/c/d/", "../x/a/../y/z/../../../../q", "http://example.com/a/b/q")
-
-print("testing path parsing and composition")
-check_parse_path("/eu/tu/ele", { "eu", "tu", "ele"; is_absolute = 1 })
-check_parse_path("/eu/", { "eu"; is_absolute = 1, is_directory = 1 })
-check_parse_path("eu/tu/ele/nos/vos/eles/",
- { "eu", "tu", "ele", "nos", "vos", "eles"; is_directory = 1})
-check_parse_path("/", { is_absolute = 1, is_directory = 1})
-check_parse_path("", { })
-check_parse_path("eu%01/%02tu/e%03l%04e/nos/vos%05/e%12les/",
- { "eu\1", "\2tu", "e\3l\4e", "nos", "vos\5", "e\18les"; is_directory = 1})
-check_parse_path("eu/tu", { "eu", "tu" })
-
-print("testing path protection")
-check_protect({ "eu", "-_.!~*'():@&=+$,", "tu" }, "eu/-_.!~*'():@&=+$,/tu")
-check_protect({ "eu ", "~diego" }, "eu%20/~diego")
-check_protect({ "/eu>", "", "/ tm then
- if err ~= "timeout" then fail("should have timed out")
- else pass("proper timeout") end
- elseif elapsed < tm then
- if err then fail(err)
- else pass("ok") end
- else
- if alldone then
- if err then fail("unexpected error '%s'", err)
- else pass("ok") end
- else
- if err ~= "timeout" then fail(err)
- else pass("proper timeoutk") end
- end
- end
- else
- if err then fail(err)
- else pass("ok") end
- end
- end
-end
-
-if not socket._DEBUG then
- fail("Please define LUASOCKET_DEBUG and recompile LuaSocket")
-end
-
-io.stderr:write("----------------------------------------------\n",
-"LuaSocket Test Procedures\n",
-"----------------------------------------------\n")
-
-start = socket.gettime()
-
-function reconnect()
- io.stderr:write("attempting data connection... ")
- if data then data:close() end
- remote [[
- i = i or 1
- if data then data:close() data = nil end
- print("accepting")
- data = server:accept()
- i = i + 1
- print("done " .. i)
- ]]
- data, err = uconnect(host, port)
- if not data then fail(err)
- else pass("connected!") end
-end
-
-pass("attempting control connection...")
-control, err = uconnect(host, port)
-if err then fail(err)
-else pass("connected!") end
-
-------------------------------------------------------------------------
-function test_methods(sock, methods)
- for _, v in pairs(methods) do
- if type(sock[v]) ~= "function" then
- fail(sock.class .. " method '" .. v .. "' not registered")
- end
- end
- pass(sock.class .. " methods are ok")
-end
-
-------------------------------------------------------------------------
-function test_mixed(len)
- reconnect()
- 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"
- local p3 = "raw " .. string.rep("z", inter) .. "bytes"
- local p4 = "end" .. string.rep("w", inter) .. "bytes"
- local bp1, bp2, bp3, bp4
-remote (string.format("str = data:receive(%d)",
- string.len(p1)+string.len(p2)+string.len(p3)+string.len(p4)))
- sent, err = data:send(p1..p2..p3..p4)
- if err then fail(err) end
-remote "data:send(str); data:close()"
- bp1, err = data:receive()
- if err then fail(err) end
- bp2, err = data:receive()
- if err then fail(err) end
- bp3, err = data:receive(string.len(p3))
- if err then fail(err) end
- bp4, err = data:receive("*a")
- if err then fail(err) end
- if bp1.."\n" == p1 and bp2.."\r\n" == p2 and bp3 == p3 and bp4 == p4 then
- pass("patterns match")
- else fail("patterns don't match") end
-end
-
-------------------------------------------------------------------------
-function test_asciiline(len)
- reconnect()
- local str, str10, back, err
- str = string.rep("x", math.mod(len, 10))
- str10 = string.rep("aZb.c#dAe?", math.floor(len/10))
- str = str .. str10
-remote "str = data:receive()"
- sent, err = data:send(str.."\n")
- if err then fail(err) end
-remote "data:send(str ..'\\n')"
- back, err = data:receive()
- if err then fail(err) end
- if back == str then pass("lines match")
- else fail("lines don't match") end
-end
-
-------------------------------------------------------------------------
-function test_rawline(len)
- reconnect()
- 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),
- math.floor(len/10))
- str = str .. str10
-remote "str = data:receive()"
- sent, err = data:send(str.."\n")
- if err then fail(err) end
-remote "data:send(str..'\\n')"
- back, err = data:receive()
- if err then fail(err) end
- if back == str then pass("lines match")
- else fail("lines don't match") end
-end
-
-------------------------------------------------------------------------
-function test_raw(len)
- reconnect()
- local half = math.floor(len/2)
- local s1, s2, back, err
- s1 = string.rep("x", half)
- s2 = string.rep("y", len-half)
-remote (string.format("str = data:receive(%d)", len))
- sent, err = data:send(s1)
- if err then fail(err) end
- sent, err = data:send(s2)
- if err then fail(err) end
-remote "data:send(str)"
- back, err = data:receive(len)
- if err then fail(err) end
- if back == s1..s2 then pass("blocks match")
- else fail("blocks don't match") end
-end
-
-------------------------------------------------------------------------
-function test_totaltimeoutreceive(len, tm, sl)
- reconnect()
- local str, err, partial
- pass("%d bytes, %ds total timeout, %ds pause", len, tm, sl)
- remote (string.format ([[
- data:settimeout(%d)
- str = string.rep('a', %d)
- data:send(str)
- print('server: sleeping for %ds')
- socket.sleep(%d)
- print('server: woke up')
- data:send(str)
- ]], 2*tm, len, sl, sl))
- data:settimeout(tm, "total")
-local t = socket.gettime()
- str, err, partial, elapsed = data:receive(2*len)
- check_timeout(tm, sl, elapsed, err, "receive", "total",
- string.len(str or partial) == 2*len)
-end
-
-------------------------------------------------------------------------
-function test_totaltimeoutsend(len, tm, sl)
- reconnect()
- local str, err, total
- pass("%d bytes, %ds total timeout, %ds pause", len, tm, sl)
- remote (string.format ([[
- data:settimeout(%d)
- str = data:receive(%d)
- print('server: sleeping for %ds')
- socket.sleep(%d)
- print('server: woke up')
- str = data:receive(%d)
- ]], 2*tm, len, sl, sl, len))
- data:settimeout(tm, "total")
- str = string.rep("a", 2*len)
- total, err, partial, elapsed = data:send(str)
- check_timeout(tm, sl, elapsed, err, "send", "total",
- total == 2*len)
-end
-
-------------------------------------------------------------------------
-function test_blockingtimeoutreceive(len, tm, sl)
- reconnect()
- local str, err, partial
- pass("%d bytes, %ds blocking timeout, %ds pause", len, tm, sl)
- remote (string.format ([[
- data:settimeout(%d)
- str = string.rep('a', %d)
- data:send(str)
- print('server: sleeping for %ds')
- socket.sleep(%d)
- print('server: woke up')
- data:send(str)
- ]], 2*tm, len, sl, sl))
- data:settimeout(tm)
- str, err, partial, elapsed = data:receive(2*len)
- check_timeout(tm, sl, elapsed, err, "receive", "blocking",
- string.len(str or partial) == 2*len)
-end
-
-------------------------------------------------------------------------
-function test_blockingtimeoutsend(len, tm, sl)
- reconnect()
- local str, err, total
- pass("%d bytes, %ds blocking timeout, %ds pause", len, tm, sl)
- remote (string.format ([[
- data:settimeout(%d)
- str = data:receive(%d)
- print('server: sleeping for %ds')
- socket.sleep(%d)
- print('server: woke up')
- str = data:receive(%d)
- ]], 2*tm, len, sl, sl, len))
- data:settimeout(tm)
- str = string.rep("a", 2*len)
- total, err, partial, elapsed = data:send(str)
- check_timeout(tm, sl, elapsed, err, "send", "blocking",
- total == 2*len)
-end
-
-------------------------------------------------------------------------
-function empty_connect()
- reconnect()
- if data then data:close() data = nil end
- remote [[
- if data then data:close() data = nil end
- data = server:accept()
- ]]
- data, err = socket.connect("", port)
- if not data then
- pass("ok")
- data = socket.connect(host, port)
- else
- pass("gethostbyname returns localhost on empty string...")
- end
-end
-
-------------------------------------------------------------------------
-function isclosed(c)
- return c:getfd() == -1 or c:getfd() == (2^32-1)
-end
-
-function active_close()
- reconnect()
- if isclosed(data) then fail("should not be closed") end
- data:close()
- if not isclosed(data) then fail("should be closed") end
- data = nil
- local udp = socket.udp()
- if isclosed(udp) then fail("should not be closed") end
- udp:close()
- if not isclosed(udp) then fail("should be closed") end
- pass("ok")
-end
-
-------------------------------------------------------------------------
-function test_closed()
- local back, partial, err
- local str = 'little string'
- reconnect()
- pass("trying read detection")
- remote (string.format ([[
- data:send('%s')
- data:close()
- data = nil
- ]], str))
- -- try to get a line
- back, err, partial = data:receive()
- if not err then fail("should have gotten 'closed'.")
- elseif err ~= "closed" then fail("got '"..err.."' instead of 'closed'.")
- elseif str ~= partial then fail("didn't receive partial result.")
- else pass("graceful 'closed' received") end
- reconnect()
- pass("trying write detection")
- remote [[
- data:close()
- data = nil
- ]]
- total, err, partial = data:send(string.rep("ugauga", 100000))
- if not err then
- pass("failed: output buffer is at least %d bytes long!", total)
- elseif err ~= "closed" then
- fail("got '"..err.."' instead of 'closed'.")
- else
- pass("graceful 'closed' received after %d bytes were sent", partial)
- end
-end
-
-------------------------------------------------------------------------
-function test_selectbugs()
- local r, s, e = socket.select(nil, nil, 0.1)
- assert(type(r) == "table" and type(s) == "table" and
- (e == "timeout" or e == "error"))
- pass("both nil: ok")
- local udp = socket.udp()
- udp:close()
- r, s, e = socket.select({ udp }, { udp }, 0.1)
- assert(type(r) == "table" and type(s) == "table" and
- (e == "timeout" or e == "error"))
- pass("closed sockets: ok")
- e = pcall(socket.select, "wrong", 1, 0.1)
- assert(e == false)
- e = pcall(socket.select, {}, 1, 0.1)
- assert(e == false)
- pass("invalid input: ok")
-end
-
-------------------------------------------------------------------------
-function accept_timeout()
- io.stderr:write("accept with timeout (if it hangs, it failed): ")
- local s, e = socket.bind("*", 0, 0)
- assert(s, e)
- local t = socket.gettime()
- s:settimeout(1)
- local c, e = s:accept()
- assert(not c, "should not accept")
- assert(e == "timeout", string.format("wrong error message (%s)", e))
- t = socket.gettime() - t
- assert(t < 2, string.format("took to long to give up (%gs)", t))
- s:close()
- pass("good")
-end
-
-------------------------------------------------------------------------
-function connect_timeout()
- io.stderr:write("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("127.0.0.2", 80)
- assert(not r, "should not connect")
- assert(socket.gettime() - t < 2, "took too long to give up.")
- c:close()
- print("ok")
-end
-
-------------------------------------------------------------------------
-function accept_errors()
- io.stderr:write("not listening: ")
- local d, e = socket.bind("*", 0)
- assert(d, e);
- local c, e = socket.tcp();
- assert(c, e);
- d:setfd(c:getfd())
- d:settimeout(2)
- local r, e = d:accept()
- assert(not r and e)
- print("ok: ", e)
- io.stderr:write("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)
-end
-
-------------------------------------------------------------------------
-function connect_errors()
- io.stderr:write("connection refused: ")
- local c, e = socket.connect("localhost", 1);
- assert(not c and e)
- print("ok: ", e)
- io.stderr:write("host not found: ")
- local c, e = socket.connect("host.is.invalid", 1);
- assert(not c and e, e)
- print("ok: ", e)
-end
-
-------------------------------------------------------------------------
-function rebind_test()
- local c = socket.bind("localhost", 0)
- local i, p = c:getsockname()
- local s, e = socket.tcp()
- assert(s, e)
- s:setoption("reuseaddr", false)
- r, e = s:bind("localhost", p)
- assert(not r, "managed to rebind!")
- assert(e)
- print("ok: ", e)
-end
-
-------------------------------------------------------------------------
-function getstats_test()
- reconnect()
- local t = 0
- for i = 1, 25 do
- local c = math.random(1, 100)
- remote (string.format ([[
- str = data:receive(%d)
- data:send(str)
- ]], c))
- data:send(string.rep("a", c))
- data:receive(c)
- t = t + c
- local r, s, a = data:getstats()
- assert(r == t, "received count failed" .. tostring(r)
- .. "/" .. tostring(t))
- assert(s == t, "sent count failed" .. tostring(s)
- .. "/" .. tostring(t))
- end
- print("ok")
-end
-
-
-------------------------------------------------------------------------
-function test_nonblocking(size)
- reconnect()
-print("Testing " .. 2*size .. " bytes")
-remote(string.format([[
- data:send(string.rep("a", %d))
- socket.sleep(0.5)
- data:send(string.rep("b", %d) .. "\n")
-]], size, size))
- local err = "timeout"
- local part = ""
- local str
- data:settimeout(0)
- while 1 do
- str, err, part = data:receive("*l", part)
- if err ~= "timeout" then break end
- end
- assert(str == (string.rep("a", size) .. string.rep("b", size)))
- reconnect()
-remote(string.format([[
- str = data:receive(%d)
- socket.sleep(0.5)
- str = data:receive(%d, str)
- data:send(str)
-]], size, size))
- data:settimeout(0)
- local start = 0
- while 1 do
- ret, err, start = data:send(str, start+1)
- if err ~= "timeout" then break end
- end
- data:send("\n")
- data:settimeout(-1)
- local back = data:receive(2*size)
- assert(back == str, "'" .. back .. "' vs '" .. str .. "'")
- print("ok")
-end
-
-------------------------------------------------------------------------
-
-test("method registration")
-test_methods(socket.unix(), {
- "accept",
- "bind",
- "close",
- "connect",
- "dirty",
- "getfd",
- "getstats",
- "setstats",
- "listen",
- "receive",
- "send",
- "setfd",
- "setoption",
- "setpeername",
- "setsockname",
- "settimeout",
- "shutdown",
-})
-
-test("connect function")
---connect_timeout()
---empty_connect()
---connect_errors()
-
---test("rebinding: ")
---rebind_test()
-
-test("active close: ")
-active_close()
-
-test("closed connection detection: ")
-test_closed()
-
-test("accept function: ")
-accept_timeout()
-accept_errors()
-
-test("getstats test")
-getstats_test()
-
-test("character line")
-test_asciiline(1)
-test_asciiline(17)
-test_asciiline(200)
-test_asciiline(4091)
-test_asciiline(80199)
-test_asciiline(8000000)
-test_asciiline(80199)
-test_asciiline(4091)
-test_asciiline(200)
-test_asciiline(17)
-test_asciiline(1)
-
-test("mixed patterns")
-test_mixed(1)
-test_mixed(17)
-test_mixed(200)
-test_mixed(4091)
-test_mixed(801990)
-test_mixed(4091)
-test_mixed(200)
-test_mixed(17)
-test_mixed(1)
-
-test("binary line")
-test_rawline(1)
-test_rawline(17)
-test_rawline(200)
-test_rawline(4091)
-test_rawline(80199)
-test_rawline(8000000)
-test_rawline(80199)
-test_rawline(4091)
-test_rawline(200)
-test_rawline(17)
-test_rawline(1)
-
-test("raw transfer")
-test_raw(1)
-test_raw(17)
-test_raw(200)
-test_raw(4091)
-test_raw(80199)
-test_raw(8000000)
-test_raw(80199)
-test_raw(4091)
-test_raw(200)
-test_raw(17)
-test_raw(1)
-
-test("non-blocking transfer")
-test_nonblocking(1)
-test_nonblocking(17)
-test_nonblocking(200)
-test_nonblocking(4091)
-test_nonblocking(80199)
-test_nonblocking(8000000)
-test_nonblocking(80199)
-test_nonblocking(4091)
-test_nonblocking(200)
-test_nonblocking(17)
-test_nonblocking(1)
-
-test("total timeout on send")
-test_totaltimeoutsend(800091, 1, 3)
-test_totaltimeoutsend(800091, 2, 3)
-test_totaltimeoutsend(800091, 5, 2)
-test_totaltimeoutsend(800091, 3, 1)
-
-test("total timeout on receive")
-test_totaltimeoutreceive(800091, 1, 3)
-test_totaltimeoutreceive(800091, 2, 3)
-test_totaltimeoutreceive(800091, 3, 2)
-test_totaltimeoutreceive(800091, 3, 1)
-
-test("blocking timeout on send")
-test_blockingtimeoutsend(800091, 1, 3)
-test_blockingtimeoutsend(800091, 2, 3)
-test_blockingtimeoutsend(800091, 3, 2)
-test_blockingtimeoutsend(800091, 3, 1)
-
-test("blocking timeout on receive")
-test_blockingtimeoutreceive(800091, 1, 3)
-test_blockingtimeoutreceive(800091, 2, 3)
-test_blockingtimeoutreceive(800091, 3, 2)
-test_blockingtimeoutreceive(800091, 3, 1)
-
-test(string.format("done in %.2fs", socket.gettime() - start))
diff --git a/src/deps/src/luasocket/test/utestsrvr.lua b/src/deps/src/luasocket/test/utestsrvr.lua
deleted file mode 100644
index b6e424605..000000000
--- a/src/deps/src/luasocket/test/utestsrvr.lua
+++ /dev/null
@@ -1,17 +0,0 @@
-socket=require("socket");
-os.remove("/tmp/luasocket")
-socket.unix = require("socket.unix");
-host = host or "luasocket";
-server = assert(socket.unix())
-assert(server:bind(host))
-assert(server:listen(5))
-ack = "\n";
-while 1 do
- print("server: waiting for client connection...");
- control = assert(server:accept());
- while 1 do
- command = assert(control:receive());
- assert(control:send(ack));
- ((loadstring or load)(command))();
- end
-end