diff --git a/src/deps/src/luasocket/docs/dns.html b/src/deps/src/luasocket/docs/dns.html deleted file mode 100644 index 56ce3ba40..000000000 --- a/src/deps/src/luasocket/docs/dns.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - -LuaSocket: DNS support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

DNS

- -

-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: -

- -
-resolved6 = {
-  [1] = {
-    family = family-name-1,
-    addr = address-1
-  },
-  ...
-  [n] = {
-    family = family-name-n,
-    addr = address-n
-  }
-} -
- -

-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. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/ftp.html b/src/deps/src/luasocket/docs/ftp.html deleted file mode 100644 index 7f7da2e47..000000000 --- a/src/deps/src/luasocket/docs/ftp.html +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - -LuaSocket: FTP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

FTP

- -

-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. -

- -

-To really benefit from this module, a good understanding of - -LTN012, Filters sources and sinks is necessary. -

- -

-To obtain the ftp namespace, run: -

- -
--- loads the FTP module and any libraries it requires
-local ftp = require("socket.ftp")
-
- -

-URLs MUST conform to -RFC 1738, -that is, an URL is a string in the form: -

- -
- -[ftp://][<user>[:<password>]@]<host>[:<port>][/<path>][type=a|i] -
- -

-The following constants in the namespace can be set to control the default behavior of -the FTP module: -

- - - - - - -

-ftp.get(url)
-ftp.get{
-  host = string,
-  sink = LTN12 sink,
-  argument or path = string,
-  [user = string,]
-  [password = string]
-  [command = string,]
-  [port = number,]
-  [type = string,]
-  [step = LTN12 pump step,]
-  [create = function]
-} -

- -

-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: -

- - -

-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
-
- - - -

-ftp.put(url, content)
-ftp.put{
-  host = string,
-  source = LTN12 sink,
-  argument or path = string,
-  [user = string,]
-  [password = string]
-  [command = string,]
-  [port = number,]
-  [type = string,]
-  [step = LTN12 pump step,]
-  [create = function]
-} -

- -

-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: -

- - -

-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"))
-}
-
- - - - - - - - diff --git a/src/deps/src/luasocket/docs/http.html b/src/deps/src/luasocket/docs/http.html deleted file mode 100644 index 52b8a30fe..000000000 --- a/src/deps/src/luasocket/docs/http.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - -LuaSocket: HTTP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -introduction · -introduction · -reference -

-
-
-
- - - -

HTTP

- -

-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: -

- -
-
-[http://][<user>[:<password>]@]<host>[:<port>][/<path>]
-
-
- -

-MIME headers are represented as a Lua table in the form: -

- -
- - -
-headers = {
-  field-1-name = field-1-value,
-  field-2-name = field-2-value,
-  field-3-name = field-3-value,
-  ...
-  field-n-name = field-n-value
-} -
-
- -

-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: -

- - - -

-Note: These constants are global. Changing them will also -change the behavior other code that might be using LuaSocket. -

- - - -

-http.request(url [, body])
-http.request{
-  url = string,
-  [sink = LTN12 sink,]
-  [method = string,]
-  [headers = header-table,]
-  [source = LTN12 source],
-  [step = LTN12 pump step,]
-  [proxy = string,]
-  [redirect = boolean,]
-  [create = function,]
-  [maxredirects = number]
-} -

- -

-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: -

- - -

-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 -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

What is LuaSocket?

- -

-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. -

- -

-Copyright © 1999-2013 Diego Nehab. All rights reserved.
-Author: Diego Nehab -

- - - -

Download

- -

-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. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/installation.html b/src/deps/src/luasocket/docs/installation.html deleted file mode 100644 index dcf9d36f5..000000000 --- a/src/deps/src/luasocket/docs/installation.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - -LuaSocket: Installation - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

Installation

- -

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:

- -
-<LDIR>/ltn12.lua
-<LDIR>/socket.lua
-<CDIR>/socket/core.dll
-<LDIR>/socket/http.lua
-<LDIR>/socket/tp.lua
-<LDIR>/socket/ftp.lua
-<LDIR>/socket/smtp.lua
-<LDIR>/socket/url.lua
-<LDIR>/mime.lua
-<CDIR>/mime/core.dll
-
- -

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:

- -
-Lua 5.2.2  Copyright (C) 1994-2013 Lua.org, PUC-Rio
-> socket = require("socket")
-> print(socket._VERSION)
---> LuaSocket 3.0.0
-
- -

Each module loads their dependencies automatically, so you only need to -load the modules you directly depend upon:

- -
-Lua 5.2.2  Copyright (C) 1994-2013 Lua.org, PUC-Rio
-> http = require("socket.http")
-> print(http.request("http://www.impa.br/~diego/software/luasocket"))
---> homepage gets dumped to terminal
-
- - - - - - - diff --git a/src/deps/src/luasocket/docs/introduction.html b/src/deps/src/luasocket/docs/introduction.html deleted file mode 100644 index fd22f483d..000000000 --- a/src/deps/src/luasocket/docs/introduction.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - -LuaSocket: Introduction to the core - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

Introduction

- -

-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. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/ltn12.html b/src/deps/src/luasocket/docs/ltn12.html deleted file mode 100644 index fe3e3a0fb..000000000 --- a/src/deps/src/luasocket/docs/ltn12.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - -LuaSocket: LTN12 module - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

LTN12

- -

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")
-
- - - -

Filters

- - - -

-ltn12.filter.chain(filter1, filter2 -[, ... filterN]) -

- -

-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. -

- -
--- load required modules
-local ltn12 = require("ltn12")
-local mime = require("mime")
-
--- create a silly identity filter
-id = ltn12.filter.chain(
-  mime.encode("quoted-printable"),
-  mime.encode("base64"),
-  mime.decode("base64"),
-  mime.decode("quoted-printable")
-)
-
- - - -

-ltn12.filter.cycle(low [, ctx, extra]) -

- -

-Returns a high-level filter that cycles though a low-level filter by -passing it each chunk and updating a context between calls. -

- -

-Low is the low-level filter to be cycled, -ctx is the initial context and extra is any extra -argument the low-level filter might take. -

- -

-The function returns the high-level filter. -

- -
--- load the ltn12 module
-local ltn12 = require("ltn12")
-
--- the base64 mime filter factory
-encodet['base64'] = function()
-    return ltn12.filter.cycle(b64, "")
-end
-
- - - -

Pumps

- - - -

-ltn12.pump.all(source, sink) -

- -

-Pumps all 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. -

- - - -

-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. -

- -
--- load the ltn12 module
-local ltn12 = require("ltn12")
-
--- copy a file
-ltn12.pump.all(
-  ltn12.source.file(io.open("original.png", "rb")),
-  ltn12.sink.file(io.open("copy.png", "wb"))
-)
-
- - - -

-ltn12.sink.null() -

- -

-Returns a sink that ignores all data it receives. -

- - - -

-ltn12.sink.simplify(sink) -

- -

-Creates and returns a simple sink given a fancy sink. -

- - - -

-ltn12.sink.table([table]) -

- -

-Creates a sink that stores all chunks in a table. The chunks can later be -efficiently concatenated into a single string. -

- -

-Table is used to hold the chunks. If -nil, the function creates its own table. -

- -

-The function returns the sink and the table used to store the chunks. -

- -
--- load needed modules
-local http = require("socket.http")
-local ltn12 = require("ltn12")
-
--- a simplified http.get function
-function http.get(u)
-  local t = {}
-  local respt = request{
-    url = u,
-    sink = ltn12.sink.table(t)
-  }
-  return table.concat(t), respt.headers, respt.code
-end
-
- - - -

Sources

- - - -

-ltn12.source.cat(source1 [, source2, ..., -sourceN]) -

- -

-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. -

- -
--- load the ltn12 module
-local ltn12 = require("ltn12")
-
--- copy a file
-ltn12.pump.all(
-  ltn12.source.file(io.open("original.png", "rb")),
-  ltn12.sink.file(io.open("copy.png", "wb"))
-)
-
- - - -

-ltn12.source.simplify(source) -

- -

-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. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/lua05.ppt b/src/deps/src/luasocket/docs/lua05.ppt deleted file mode 100644 index e2b7ab4b3..000000000 Binary files a/src/deps/src/luasocket/docs/lua05.ppt and /dev/null differ diff --git a/src/deps/src/luasocket/docs/luasocket.png b/src/deps/src/luasocket/docs/luasocket.png deleted file mode 100644 index d24a95495..000000000 Binary files a/src/deps/src/luasocket/docs/luasocket.png and /dev/null differ diff --git a/src/deps/src/luasocket/docs/mime.html b/src/deps/src/luasocket/docs/mime.html deleted file mode 100644 index ff4d8e870..000000000 --- a/src/deps/src/luasocket/docs/mime.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - - - -LuaSocket: MIME module - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

MIME

- -

-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. -

- -

-All functionality provided by the MIME module -follows the ideas presented in - -LTN012, Filters sources and sinks. -

- -

-To obtain the mime namespace, run: -

- -
--- loads the MIME module and everything it requires
-local mime = require("mime")
-
- - - - -

High-level filters

- - - - -

-mime.decode("base64")
-mime.decode("quoted-printable") -

- -

-Returns a filter that decodes data from a given transfer content -encoding. -

- - - -

-mime.encode("base64")
-mime.encode("quoted-printable" [, mode]) -

- -

-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. -

- -
-base64 = ltn12.filter.chain(
-  mime.encode("base64"),
-  mime.wrap("base64")
-)
-
- -

-Note: Text data has to be converted to canonic form -before being encoded. -

- -
-base64 = ltn12.filter.chain(
-  mime.normalize(),
-  mime.encode("base64"),
-  mime.wrap("base64")
-)
-
- - - -

-mime.normalize([marker]) -

- -

-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. -

- - - -

-mime.wrap("text" [, length])
-mime.wrap("base64")
-mime.wrap("quoted-printable") -

- -

-Returns a filter that breaks data into lines. -

- -

-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: -

- -
-qp = ltn12.filter.chain(
-  mime.normalize(),
-  mime.encode("quoted-printable"),
-  mime.wrap("quoted-printable")
-)
-
- -

-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. -

- -
-print((mime.b64("diego:password")))
---> ZGllZ286cGFzc3dvcmQ=
-
- - -

-A, n = mime.dot(m [, B]) -

- -

-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. -

- -
-print((mime.unb64("ZGllZ286cGFzc3dvcmQ=")))
---> diego:password
-
- - - -

-A, B = mime.unqp(C [, D]) -

- -

-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. -

- - - - - - - - diff --git a/src/deps/src/luasocket/docs/reference.css b/src/deps/src/luasocket/docs/reference.css deleted file mode 100644 index 04e38cfeb..000000000 --- a/src/deps/src/luasocket/docs/reference.css +++ /dev/null @@ -1,55 +0,0 @@ -body { - margin-left: 1em; - margin-right: 1em; - font-family: "Verdana", sans-serif; - background: #ffffff; -} - -tt { - font-family: "Andale Mono", monospace; -} - -h1, h2, h3, h4 { margin-left: 0em; } - - -h3 { padding-top: 1em; } - -p { margin-left: 1em; } - -p.name { - font-family: "Andale Mono", monospace; - padding-top: 1em; - margin-left: 0em; -} - -a[href] { color: #00007f; } - -blockquote { margin-left: 3em; } - -pre.example { - background: #ccc; - padding: 1em; - margin-left: 1em; - font-family: "Andale Mono", monospace; - font-size: small; -} - -hr { - margin-left: 0em; - background: #00007f; - border: 0px; - height: 1px; -} - -ul { list-style-type: disc; } - -table.index { border: 1px #00007f; } -table.index td { text-align: left; vertical-align: top; } -table.index ul { padding-top: 0em; margin-top: 0em; } - -h1:first-letter, -h2:first-letter, -h2:first-letter, -h3:first-letter { color: #00007f; } - -div.header, div.footer { margin-left: 0em; } diff --git a/src/deps/src/luasocket/docs/reference.html b/src/deps/src/luasocket/docs/reference.html deleted file mode 100644 index 2bc5f78c5..000000000 --- a/src/deps/src/luasocket/docs/reference.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -LuaSocket: Index to reference manual - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

Reference

- -
-DNS (in socket) -
-getaddrinfo, -gethostname, -tohostname, -toip. -
-
- - - -
-FTP -
-get, -put. -
-
- - - -
-HTTP -
-request. -
-
- - - -
-LTN12 -
-filter: -chain, -cycle. -
-
-pump: -all, -step. -
-
-sink: -chain, -error, -file, -null, -simplify, -table. -
-
-source: -cat, -chain, -empty, -error, -file, -simplify, -string, -table. -
-
- - - -
-MIME -
-high-level: -decode, -encode, -normalize, -stuff, -wrap. -
-
-low-level: -b64, -dot, -eol, -qp, -qpwrp, -unb64, -unqp, -wrp. -
-
- - - -
-SMTP -
-message, -send. -
-
- - - -
-Socket -
-bind, -connect, -connect4, -connect6, -_DATAGRAMSIZE, -_DEBUG, -dns, -gettime, -headers.canonic, -newtry, -protect, -select, -sink, -skip, -sleep, -_SETSIZE, -_SOCKETINVALID, -source, -tcp, -tcp4, -tcp6, -try, -udp, -udp4, -udp6, -_VERSION. -
-
- - - -
-TCP (in socket) -
-accept, -bind, -close, -connect, -dirty, -getfd, -getoption, -getpeername, -getsockname, -getstats, -gettimeout, -listen, -receive, -send, -setfd, -setoption, -setstats, -settimeout, -shutdown. -
-
- - - -
-UDP (in socket) -
-close, -getoption, -getpeername, -getsockname, -gettimeout, -receive, -receivefrom, -send, -sendto, -setpeername, -setsockname, -setoption, -settimeout. -
-
- - - -
-URL -
-absolute, -build, -build_path, -escape, -parse, -parse_path, -unescape. -
-
- - - - - - - diff --git a/src/deps/src/luasocket/docs/smtp.html b/src/deps/src/luasocket/docs/smtp.html deleted file mode 100644 index 787d0b107..000000000 --- a/src/deps/src/luasocket/docs/smtp.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - - - -LuaSocket: SMTP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

SMTP

- -

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: -

- -
- - -
-headers = {
-  field-1-name = field-1-value,
-  field-2-name = field-2-value,
-  field-3-name = field-3-value,
-  ...
-  field-n-name = field-n-value
-} -
-
- -

-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: -

- - - - - -

-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): -

- -
- - -
-mesgt = {
-  headers = header-table,
-  body = LTN12 source or string or -multipart-mesgt
-}

-multipart-mesgt = {
-  [preamble = string,]
-  [1] = mesgt,
-  [2] = mesgt,
-  ...
-  [n] = mesgt,
-  [epilogue = string,]
-}
-
-
- -

-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,
-}
-
- - - - -

-smtp.send{
-  from = string,
-  rcpt = string or string-table,
-  source = LTN12 source,
-  [user = string,]
-  [password = string,]
-  [server = string,]
-  [port = number,]
-  [domain = string,]
-  [step = LTN12 pump step,]
-  [create = function]
-} -

- -

-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: -

- - -

-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: -

- - - -

-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: -

- - -

-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)
-}
-
- - - - - - - diff --git a/src/deps/src/luasocket/docs/socket.html b/src/deps/src/luasocket/docs/socket.html deleted file mode 100644 index c14811447..000000000 --- a/src/deps/src/luasocket/docs/socket.html +++ /dev/null @@ -1,481 +0,0 @@ - - - - - - -LuaSocket: The socket namespace - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

The socket namespace

- -

-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: -

- -

-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: -

- -

-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. -

- - - - - - - diff --git a/src/deps/src/luasocket/docs/tcp.html b/src/deps/src/luasocket/docs/tcp.html deleted file mode 100644 index a26228d50..000000000 --- a/src/deps/src/luasocket/docs/tcp.html +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - -LuaSocket: TCP/IP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

TCP

- - - -

-server:accept() -

- -

-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. -

- - - - -

-client:getoption(option)
-server:getoption(option) -

- -

-Gets options for the TCP object. -See setoption for description of the -option names and values. -

- -

-Option is a string with the option name.

- - -

-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. -

- - - -

-master:getsockname()
-client:getsockname()
-server:getsockname() -

- -

-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. -

- - - -

-master:getstats()
-client:getstats()
-server:getstats()
-

- -

-Returns accounting information on the socket, useful for throttling -of bandwidth. -

- -

-The method returns the number of bytes received, the number of bytes sent, -and the age of the socket object in seconds. -

- - - -

-master:gettimeout()
-client:gettimeout()
-server:gettimeout() -

- -

-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: -

- - - -

-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. -

- - - -

-client:setoption(option [, value])
-server:setoption(option [, value]) -

- -

-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:

- - - -

-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. -

- - - -

-master:setstats(received, sent, age)
-client:setstats(received, sent, age)
-server:setstats(received, sent, age)
-

- -

-Resets accounting information on the socket, useful for throttling -of bandwidth. -

- -

-Received is a number with the new number of bytes received. -Sent is a number with the new number of bytes sent. -Age is the new age in seconds. -

- -

-The method returns 1 in case of success and nil otherwise. -

- - - -

-master:settimeout(value [, mode])
-client:settimeout(value [, mode])
-server:settimeout(value [, mode]) -

- -

-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: -

- - - -

-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: -

-

- -

-This function returns 1. -

- - - -

-master:setfd(fd)
-client:setfd(fd)
-server:setfd(fd) -

- -

-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. -

- - - - - - - - - diff --git a/src/deps/src/luasocket/docs/udp.html b/src/deps/src/luasocket/docs/udp.html deleted file mode 100644 index db711cb8d..000000000 --- a/src/deps/src/luasocket/docs/udp.html +++ /dev/null @@ -1,596 +0,0 @@ - - - - - - -LuaSocket: UDP support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - - -

UDP

- - - -

-connected:close()
-unconnected:close() -

- -

-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. -

-

- -

-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. -

- - - -

-connected:getsockname()
-unconnected:getsockname() -

- -

-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). -

- - - -

-connected:settimeout(value)
-unconnected:settimeout(value) -

- -

-Returns the current timeout value. -

- - - - -

-connected:receive([size])
-unconnected:receive([size]) -

- -

-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). -

- - - -

-connected:setoption(option [, value])
-unconnected:setoption(option [, value]) -

- -

-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: -

- - - -

-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. -

- - - - -

-connected:setpeername('*')
-unconnected:setpeername(address, port) -

- -

-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. -

- - - -

-connected:settimeout(value)
-unconnected:settimeout(value) -

- -

-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. -

- - - -

-socket.udp() -

- -

-Creates and returns an unconnected UDP object. -Unconnected objects support the -sendto, -receive, -receivefrom, -getoption, -getsockname, -setoption, -settimeout, -setpeername, -setsockname, and -close. -The setpeername -is used to connect the object. -

- -

-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. -

- - - -

-socket.udp4() -

- -

-Creates and returns an unconnected IPv4 UDP object. -Unconnected objects support the -sendto, -receive, -receivefrom, -getoption, -getsockname, -setoption, -settimeout, -setpeername, -setsockname, and -close. -The setpeername -is used to connect the object. -

- -

-In case of success, a new unconnected UDP object -returned. In case of error, nil is returned, followed by -an error message. -

- - - -

-socket.udp6() -

- -

-Creates and returns an unconnected IPv6 UDP object. -Unconnected objects support the -sendto, -receive, -receivefrom, -getoption, -getsockname, -setoption, -settimeout, -setpeername, -setsockname, and -close. -The setpeername -is used to connect the object. -

- -

-In case of success, a new unconnected UDP object -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. -

- - - - - - - - - diff --git a/src/deps/src/luasocket/docs/url.html b/src/deps/src/luasocket/docs/url.html deleted file mode 100644 index 6ff673da5..000000000 --- a/src/deps/src/luasocket/docs/url.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - -LuaSocket: URL support - - - - - - - -
-
-
- - - -
-LuaSocket -
Network support for the Lua language -
-

-home · -download · -installation · -introduction · -reference -

-
-
-
- - - -

URL

- -

-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")
-
- -

-An URL is defined by the following grammar: -

- -
- -<url> ::= [<scheme>:][//<authority>][/<path>][;<params>][?<query>][#<fragment>]
-<authority> ::= [<userinfo>@]<host>[:<port>]
-<userinfo> ::= <user>[:<password>]
-<path> ::= {<segment>/}<segment>
-
-
- - - -

-url.absolute(base, relative) -

- -

-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. -

- -
-http://a/b/c/d;p?q
-
-+
-
-g:h      =  g:h
-g        =  http://a/b/c/g
-./g      =  http://a/b/c/g
-g/       =  http://a/b/c/g/
-/g       =  http://a/g
-//g      =  http://g
-?y       =  http://a/b/c/?y
-g?y      =  http://a/b/c/g?y
-#s       =  http://a/b/c/d;p?q#s
-g#s      =  http://a/b/c/g#s
-g?y#s    =  http://a/b/c/g?y#s
-;x       =  http://a/b/c/;x
-g;x      =  http://a/b/c/g;x
-g;x?y#s  =  http://a/b/c/g;x?y#s
-.        =  http://a/b/c/
-./       =  http://a/b/c/
-..       =  http://a/b/
-../      =  http://a/b/
-../g     =  http://a/b/g
-../..    =  http://a/
-../../   =  http://a/
-../../g  =  http://a/g
-
- - - -

-url.build(parsed_url) -

- -

-Rebuilds an URL from its parts. -

- -

-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. -

- -

-Content is the string to be encoded. -

- -

-The function returns the encoded string. -

- -
--- load url module
-url = require("socket.url")
-
-code = url.escape("/#?;")
--- code = "%2f%23%3f%3b"
-
- - - -

-url.parse(url, default) -

- -

-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: -

- -
-parsed_url = {
-  url = string,
-  scheme = string,
-  authority = string,
-  path = string,
-  params = string,
-  query = string,
-  fragment = string,
-  userinfo = string,
-  host = string,
-  port = string,
-  user = string,
-  password = string
-} -
- -
--- load url module
-url = require("socket.url")
-
-parsed_url = url.parse("http://www.example.com/cgilua/index.lua?a=2#there")
--- parsed_url = {
---   scheme = "http",
---   authority = "www.example.com",
---   path = "/cgilua/index.lua"
---   query = "a=2",
---   fragment = "there",
---   host = "www.puc-rio.br",
--- }
-
-parsed_url = url.parse("ftp://root:passwd@unsafe.org/pub/virus.exe;type=i")
--- parsed_url = {
---   scheme = "ftp",
---   authority = "root:passwd@unsafe.org",
---   path = "/pub/virus.exe",
---   params = "type=i",
---   userinfo = "root:passwd",
---   host = "unsafe.org",
---   user = "root",
---   password = "passwd",
--- }
-
- - - -

-url.parse_path(path) -

- -

-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