Browse Source

Embedded nogame screen into binary and exposed version info.

rude 16 years ago
parent
commit
579f9c75db

+ 18 - 0
platform/msvc2008/love.sln

@@ -77,6 +77,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "font", "font\font.vcproj",
 EndProject
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "love", "love.vcproj", "{F2FDC53D-1ECD-4CF1-BA3F-3E59A2484DB9}"
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "love", "love.vcproj", "{F2FDC53D-1ECD-4CF1-BA3F-3E59A2484DB9}"
 EndProject
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signal", "signal\signal.vcproj", "{5A7AAEBC-F269-41DA-984A-75F975549CA5}"
+	ProjectSection(ProjectDependencies) = postProject
+		{8273822F-45A4-4BE3-82F3-B8B3223C578C} = {8273822F-45A4-4BE3-82F3-B8B3223C578C}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lovedll", "lovedll\lovedll.vcproj", "{2863FF8A-153F-46E0-8E71-2E58F3809E9B}"
+	ProjectSection(ProjectDependencies) = postProject
+		{8273822F-45A4-4BE3-82F3-B8B3223C578C} = {8273822F-45A4-4BE3-82F3-B8B3223C578C}
+	EndProjectSection
+EndProject
 Global
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
 		Debug|Win32 = Debug|Win32
@@ -147,6 +157,14 @@ Global
 		{F2FDC53D-1ECD-4CF1-BA3F-3E59A2484DB9}.Debug|Win32.Build.0 = Debug|Win32
 		{F2FDC53D-1ECD-4CF1-BA3F-3E59A2484DB9}.Debug|Win32.Build.0 = Debug|Win32
 		{F2FDC53D-1ECD-4CF1-BA3F-3E59A2484DB9}.Release|Win32.ActiveCfg = Release|Win32
 		{F2FDC53D-1ECD-4CF1-BA3F-3E59A2484DB9}.Release|Win32.ActiveCfg = Release|Win32
 		{F2FDC53D-1ECD-4CF1-BA3F-3E59A2484DB9}.Release|Win32.Build.0 = Release|Win32
 		{F2FDC53D-1ECD-4CF1-BA3F-3E59A2484DB9}.Release|Win32.Build.0 = Release|Win32
+		{5A7AAEBC-F269-41DA-984A-75F975549CA5}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5A7AAEBC-F269-41DA-984A-75F975549CA5}.Debug|Win32.Build.0 = Debug|Win32
+		{5A7AAEBC-F269-41DA-984A-75F975549CA5}.Release|Win32.ActiveCfg = Release|Win32
+		{5A7AAEBC-F269-41DA-984A-75F975549CA5}.Release|Win32.Build.0 = Release|Win32
+		{2863FF8A-153F-46E0-8E71-2E58F3809E9B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{2863FF8A-153F-46E0-8E71-2E58F3809E9B}.Debug|Win32.Build.0 = Debug|Win32
+		{2863FF8A-153F-46E0-8E71-2E58F3809E9B}.Release|Win32.ActiveCfg = Release|Win32
+		{2863FF8A-153F-46E0-8E71-2E58F3809E9B}.Release|Win32.Build.0 = Release|Win32
 	EndGlobalSection
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 		HideSolutionNode = FALSE

+ 60 - 0
platform/msvc2008/love.vcproj

@@ -3289,6 +3289,62 @@
 					</File>
 					</File>
 				</Filter>
 				</Filter>
 			</Filter>
 			</Filter>
+			<Filter
+				Name="signal"
+				>
+				<Filter
+					Name="posix"
+					>
+					<File
+						RelativePath="..\..\src\modules\signal\posix\Signal.cpp"
+						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+								ObjectFile="$(IntDir)\signal\posix\"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+								ObjectFile="$(IntDir)\signal\posix\"
+							/>
+						</FileConfiguration>
+					</File>
+					<File
+						RelativePath="..\..\src\modules\signal\posix\Signal.h"
+						>
+					</File>
+					<File
+						RelativePath="..\..\src\modules\signal\posix\wrap_Signal.cpp"
+						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+								ObjectFile="$(IntDir)\signal\posix\"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+								ObjectFile="$(IntDir)\signal\posix\"
+							/>
+						</FileConfiguration>
+					</File>
+					<File
+						RelativePath="..\..\src\modules\signal\posix\wrap_Signal.h"
+						>
+					</File>
+				</Filter>
+			</Filter>
 		</Filter>
 		</Filter>
 		<Filter
 		<Filter
 			Name="common"
 			Name="common"
@@ -3465,6 +3521,10 @@
 				RelativePath="..\..\src\common\Vector.h"
 				RelativePath="..\..\src\common\Vector.h"
 				>
 				>
 			</File>
 			</File>
+			<File
+				RelativePath="..\..\src\common\version.h"
+				>
+			</File>
 			<File
 			<File
 				RelativePath="..\..\src\common\wrap_Data.cpp"
 				RelativePath="..\..\src\common\wrap_Data.cpp"
 				>
 				>

+ 189 - 0
platform/msvc2008/lovedll/lovedll.vcproj

@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9,00"
+	Name="lovedll"
+	ProjectGUID="{2863FF8A-153F-46E0-8E71-2E58F3809E9B}"
+	RootNamespace="lovedll"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../include;../../../src;../../../src/modules;../include/SDL"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LOVEDLL_EXPORTS;LOVE_BUILD;LOVE_BUILD_DLL"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)\love.dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LOVEDLL_EXPORTS"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="resources"
+			>
+			<File
+				RelativePath="..\..\..\src\resources\resources.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\resources\resources.h"
+				>
+			</File>
+		</Filter>
+		<File
+			RelativePath="..\..\..\src\love.cpp"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

+ 211 - 0
platform/msvc2008/signal/signal.vcproj

@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9,00"
+	Name="signal"
+	ProjectGUID="{5A7AAEBC-F269-41DA-984A-75F975549CA5}"
+	RootNamespace="signal"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="../include;../../../src;../../../src/modules;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SIGNAL_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)\love\$(ProjectName).dll"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="../include;../../../src;../../../src/modules;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SIGNAL_EXPORTS"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)\love\$(ProjectName).dll"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="posix"
+			>
+			<File
+				RelativePath="..\..\..\src\modules\signal\posix\Signal.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						ObjectFile="$(IntDir)\signal\posix\"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\..\src\modules\signal\posix\Signal.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\src\modules\signal\posix\wrap_Signal.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						ObjectFile="$(IntDir)\signal\posix\"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\..\src\modules\signal\posix\wrap_Signal.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

+ 6 - 3
src/common/config.h

@@ -40,9 +40,12 @@
 #	define _CRT_SECURE_NO_WARNINGS
 #	define _CRT_SECURE_NO_WARNINGS
 #endif
 #endif
 
 
-// Build.
-#define LOVE_BUILD_EXE 1
-#define LOVE_BUILD_DLL 0
+#ifndef LOVE_BUILD
+#	define LOVE_BUILD
+#	define LOVE_BUILD_STANDALONE
+#	define LOVE_BUILD_EXE
+//#	define LOVE_BUILD_DLL
+#endif
 
 
 // DLL-stuff.
 // DLL-stuff.
 #ifdef LOVE_WINDOWS
 #ifdef LOVE_WINDOWS

+ 5 - 4
src/common/version.h

@@ -24,10 +24,11 @@
 namespace love
 namespace love
 {
 {
 	// Version stuff.
 	// Version stuff.
-	const char VERSION_MAJOR = 0;
-	const char VERSION_MINOR = 6;
-	const char VERSION_REV = 0;
-	const int VERSION_COMPATIBILITY[] =  { 0 };
+	const int VERSION_MAJOR = 0;
+	const int VERSION_MINOR = 6;
+	const int VERSION_REV = 0;
+	const int VERSION = VERSION_MAJOR*100 + VERSION_MINOR*10 + VERSION_REV;
+	const int VERSION_COMPATIBILITY[] =  { VERSION, 0 };
 	const char * VERSION_STR = "0.6.0";
 	const char * VERSION_STR = "0.6.0";
 	const char * VERSION_CODENAME = "Jiggly Juice";
 	const char * VERSION_CODENAME = "Jiggly Juice";
 
 

+ 38 - 5
src/love.cpp

@@ -18,15 +18,17 @@
 * 3. This notice may not be removed or altered from any source distribution.
 * 3. This notice may not be removed or altered from any source distribution.
 **/
 **/
 
 
-// SDL
-#include <SDL.h>
-
 // LOVE
 // LOVE
 #include <common/config.h>
 #include <common/config.h>
 #include <common/version.h>
 #include <common/version.h>
 #include <common/runtime.h>
 #include <common/runtime.h>
 #include <common/MemoryData.h>
 #include <common/MemoryData.h>
 
 
+#ifdef LOVE_BUILD_EXE
+
+// SDL
+#include <SDL.h>
+
 // Modules
 // Modules
 #include <audio/wrap_Audio.h>
 #include <audio/wrap_Audio.h>
 #include <event/sdl/wrap_Event.h>
 #include <event/sdl/wrap_Event.h>
@@ -47,9 +49,13 @@
 #include "libraries/luasocket/luasocket.h"
 #include "libraries/luasocket/luasocket.h"
 #include "libraries/lanes/lanes.h"
 #include "libraries/lanes/lanes.h"
 
 
+#endif // LOVE_BUILD_EXE
+
 // Resources
 // Resources
 #include "resources/resources.h"
 #include "resources/resources.h"
 
 
+#ifdef LOVE_BUILD_STANDALONE
+
 static const luaL_Reg modules[] = {
 static const luaL_Reg modules[] = {
 	{ "love.audio", love::audio::luaopen_love_audio },
 	{ "love.audio", love::audio::luaopen_love_audio },
 	{ "love.event", love::event::sdl::luaopen_love_event },
 	{ "love.event", love::event::sdl::luaopen_love_event },
@@ -68,10 +74,33 @@ static const luaL_Reg modules[] = {
 	{ 0, 0 }
 	{ 0, 0 }
 };
 };
 
 
-DECLSPEC int luaopen_love(lua_State * L)
+#endif // LOVE_BUILD_STANDALONE
+
+extern "C" LOVE_EXPORT int luaopen_love(lua_State * L)
 {
 {
 	love::luax_insistglobal(L, "love");
 	love::luax_insistglobal(L, "love");
 
 
+	// Set version information.
+	lua_pushinteger(L, love::VERSION);
+	lua_setfield(L, -2, "_version");
+
+	lua_pushstring(L, love::VERSION_STR);
+	lua_setfield(L, -2, "_version_string");
+
+	lua_pushstring(L, love::VERSION_CODENAME);
+	lua_setfield(L, -2, "_version_codename");
+
+	lua_newtable(L);
+
+	for(int i = 0; love::VERSION_COMPATIBILITY[i] != 0; ++i)
+	{
+		lua_pushinteger(L, love::VERSION_COMPATIBILITY[i]);
+		lua_rawseti(L, -2, i+1);
+	}
+
+	lua_setfield(L, -2, "_version_compat");
+
+
 	// Resources.
 	// Resources.
 	for(const love::Resource * r = love::resources; r->name != 0; r++)
 	for(const love::Resource * r = love::resources; r->name != 0; r++)
 	{
 	{
@@ -81,6 +110,8 @@ DECLSPEC int luaopen_love(lua_State * L)
 
 
 	lua_pop(L, 1); // love
 	lua_pop(L, 1); // love
 
 
+#ifdef LOVE_BUILD_STANDALONE
+
 	// Preload module loaders.
 	// Preload module loaders.
 	for(int i = 0; modules[i].name != 0; i++)
 	for(int i = 0; modules[i].name != 0; i++)
 	{
 	{
@@ -90,10 +121,12 @@ DECLSPEC int luaopen_love(lua_State * L)
 	love::luasocket::__open(L);
 	love::luasocket::__open(L);
 	love::lanes::open(L);
 	love::lanes::open(L);
 
 
+#endif // LOVE_BUILD_STANDALONE
+
 	return 0;
 	return 0;
 }
 }
 
 
-#if LOVE_BUILD_EXE
+#ifdef LOVE_BUILD_EXE
 
 
 int main(int argc, char ** argv)
 int main(int argc, char ** argv)
 {
 {

+ 7 - 0
src/modules/image/Image.h

@@ -53,6 +53,13 @@ namespace image
 		**/
 		**/
 		virtual ImageData * newImageData(love::filesystem::File * file) = 0;
 		virtual ImageData * newImageData(love::filesystem::File * file) = 0;
 
 
+		/**
+		* Creates new ImageData from a raw Data. 
+		* @param data The object containing encoded pixel data.
+		* @return The new ImageData.
+		**/
+		virtual ImageData * newImageData(Data * data) = 0;
+
 		/**
 		/**
 		* Creates empty ImageData with the given size.
 		* Creates empty ImageData with the given size.
 		* @param The width of the ImageData.
 		* @param The width of the ImageData.

+ 5 - 0
src/modules/image/devil/Image.cpp

@@ -51,6 +51,11 @@ namespace devil
 		return new ImageData(file);
 		return new ImageData(file);
 	}
 	}
 
 
+	love::image::ImageData * Image::newImageData(Data * data)
+	{
+		return new ImageData(data);
+	}
+
 	love::image::ImageData * Image::newImageData(int width, int height)
 	love::image::ImageData * Image::newImageData(int width, int height)
 	{
 	{
 		return new ImageData(width, height);
 		return new ImageData(width, height);

+ 1 - 0
src/modules/image/devil/Image.h

@@ -41,6 +41,7 @@ namespace devil
 		const char * getName() const;
 		const char * getName() const;
 		
 		
 		love::image::ImageData * newImageData(love::filesystem::File * file);
 		love::image::ImageData * newImageData(love::filesystem::File * file);
+		love::image::ImageData * newImageData(Data * data);
 		love::image::ImageData * newImageData(int width, int height);
 		love::image::ImageData * newImageData(int width, int height);
 
 
 	}; // Image
 	}; // Image

+ 13 - 7
src/modules/image/devil/ImageData.cpp

@@ -29,11 +29,8 @@ namespace image
 {
 {
 namespace devil
 namespace devil
 {
 {
-	ImageData::ImageData(filesystem::File * file)
+	void ImageData::load(Data * data)
 	{
 	{
-		// Read the data.
-		Data * data = file->read();
-
 		// Generate DevIL image.
 		// Generate DevIL image.
 		ilGenImages(1, &image);
 		ilGenImages(1, &image);
 
 
@@ -43,9 +40,6 @@ namespace devil
 		// Try to load the image.
 		// Try to load the image.
 		ILboolean success = ilLoadL(IL_TYPE_UNKNOWN, (void*)data->getData(), data->getSize());
 		ILboolean success = ilLoadL(IL_TYPE_UNKNOWN, (void*)data->getData(), data->getSize());
 
 
-		// Free local image data.
-		data->release();
-
 		// Check for errors
 		// Check for errors
 		if(!success)
 		if(!success)
 		{
 		{
@@ -70,6 +64,18 @@ namespace devil
 		}
 		}
 	}
 	}
 
 
+	ImageData::ImageData(Data * data)
+	{
+		load(data);
+	}
+
+	ImageData::ImageData(filesystem::File * file)
+	{
+		Data * data = file->read();
+		load(data);
+		data->release();
+	}
+
 	ImageData::ImageData(int width, int height)
 	ImageData::ImageData(int width, int height)
 		: width(width), height(height), origin(IL_ORIGIN_UPPER_LEFT), bpp(4)
 		: width(width), height(height), origin(IL_ORIGIN_UPPER_LEFT), bpp(4)
 	{
 	{

+ 3 - 0
src/modules/image/devil/ImageData.h

@@ -53,8 +53,11 @@ namespace devil
 		// DevIL image identifier.
 		// DevIL image identifier.
 		ILuint image;
 		ILuint image;
 
 
+		void load(Data * data);
+
 	public:
 	public:
 
 
+		ImageData(Data * data);
 		ImageData(love::filesystem::File * file);
 		ImageData(love::filesystem::File * file);
 		ImageData(int width, int height);
 		ImageData(int width, int height);
 		virtual ~ImageData();
 		virtual ~ImageData();

+ 11 - 1
src/modules/image/wrap_Image.cpp

@@ -41,11 +41,21 @@ namespace image
 			return 1;
 			return 1;
 		}
 		}
 
 
+		// Case 2: Data
+		if(luax_istype(L, 1, DATA_T))
+		{
+			Data * d = luax_checktype<Data>(L, 1, "Data", DATA_T);
+			ImageData * t = instance->newImageData(d);
+			luax_newtype(L, "ImageData", IMAGE_IMAGE_DATA_T, (void*)t);
+			return 1;
+		}
+
+		// Case 3: String/File.
+
 		// Convert to File, if necessary.
 		// Convert to File, if necessary.
 		if(lua_isstring(L, 1))
 		if(lua_isstring(L, 1))
 			luax_convobj(L, 1, "filesystem", "newFile");
 			luax_convobj(L, 1, "filesystem", "newFile");
 
 
-		// Case 2: String/File.
 		love::filesystem::File * file = luax_checktype<love::filesystem::File>(L, 1, "File", FILESYSTEM_FILE_T);
 		love::filesystem::File * file = luax_checktype<love::filesystem::File>(L, 1, "File", FILESYSTEM_FILE_T);
 		ImageData * t = instance->newImageData(file);
 		ImageData * t = instance->newImageData(file);
 		luax_newtype(L, "ImageData", IMAGE_IMAGE_DATA_T, (void*)t);
 		luax_newtype(L, "ImageData", IMAGE_IMAGE_DATA_T, (void*)t);

+ 3 - 2
src/modules/signal/posix/Signal.cpp

@@ -35,7 +35,7 @@ namespace posix
 	
 	
 	Signal::~Signal()
 	Signal::~Signal()
 	{
 	{
-		::signal(signals, SIG_DFL);
+		//::signal(signals, SIG_DFL);
 	}
 	}
 	
 	
 	bool Signal::hook(int sgn)
 	bool Signal::hook(int sgn)
@@ -61,7 +61,8 @@ namespace posix
 	
 	
 	bool Signal::raise(int sgn)
 	bool Signal::raise(int sgn)
 	{
 	{
-		return ::raise(sgn);
+		// MSVC warns about int -> bool conversion.
+		return ::raise(sgn) ? true : false;
 	}
 	}
 	
 	
 	void handler(int signal)
 	void handler(int signal)

+ 3 - 2
src/modules/signal/posix/wrap_Signal.cpp

@@ -36,7 +36,7 @@ namespace posix
 	int w_hook(lua_State *L)
 	int w_hook(lua_State *L)
 	{
 	{
 		luaL_argcheck(L, lua_isnumber(L, 1), 1, "Expected number");
 		luaL_argcheck(L, lua_isnumber(L, 1), 1, "Expected number");
-		lua_pushboolean(L, instance->hook(lua_tonumber(L, 1)));
+		lua_pushboolean(L, instance->hook(lua_tointeger(L, 1)));
 		return 1;
 		return 1;
 	}
 	}
 	
 	
@@ -44,12 +44,13 @@ namespace posix
 	{
 	{
 		luaL_argcheck(L, lua_isfunction(L, 1), 1, "Expected function");
 		luaL_argcheck(L, lua_isfunction(L, 1), 1, "Expected function");
 		instance->setCallback(L);
 		instance->setCallback(L);
+		return 0;
 	}
 	}
 	
 	
 	int w_raise(lua_State *L)
 	int w_raise(lua_State *L)
 	{
 	{
 		luaL_argcheck(L, lua_isnumber(L, 1), 1, "Expected number");
 		luaL_argcheck(L, lua_isnumber(L, 1), 1, "Expected number");
-		lua_pushboolean(L, instance->raise(lua_tonumber(L, 1)));
+		lua_pushboolean(L, instance->raise(lua_tointeger(L, 1)));
 		return 1;
 		return 1;
 	}
 	}
 
 

+ 4 - 1
src/modules/sound/lullaby/Mpg123Decoder.cpp

@@ -22,6 +22,8 @@
 
 
 #include <common/Exception.h>
 #include <common/Exception.h>
 
 
+#include <iostream>
+
 namespace love
 namespace love
 {
 {
 namespace sound
 namespace sound
@@ -116,7 +118,8 @@ namespace lullaby
 
 
 	bool Mpg123Decoder::rewind()
 	bool Mpg123Decoder::rewind()
 	{
 	{
-		mpg123_seek(handle, SEEK_SET, 0);
+		if(mpg123_seek(handle, SEEK_SET, 0) < 0)
+			return false;
 		return true;
 		return true;
 	}
 	}
 
 

+ 418 - 5
src/scripts/boot.lua

@@ -107,9 +107,8 @@ end
 -- This can't be overriden. 
 -- This can't be overriden. 
 function love.boot()
 function love.boot()
 
 
-	print("boot")
-
-	-- This is absolutely needed. 
+	-- This is absolutely needed.
+	require("love")
 	require("love.filesystem")
 	require("love.filesystem")
 
 
 	if arg and arg[1] then
 	if arg and arg[1] then
@@ -117,6 +116,7 @@ function love.boot()
 		love.filesystem.setSource(love.path.getfull(arg[1]))
 		love.filesystem.setSource(love.path.getfull(arg[1]))
 	else
 	else
 		love.filesystem = nil
 		love.filesystem = nil
+		love.nogame() -- Who needs a game? Got one embedded right here!
 	end
 	end
 end
 end
 
 
@@ -147,12 +147,18 @@ function love.init()
 			sound = true,
 			sound = true,
 			native = true,
 			native = true,
 			font = true,
 			font = true,
+			signal = true,
 		},
 		},
 	}
 	}
 
 
 	-- If config file exists, load it and allow it to update config table.
 	-- If config file exists, load it and allow it to update config table.
-	if love.filesystem and love.filesystem.exists("conf.lua") then
+	if not love.conf and love.filesystem and love.filesystem.exists("conf.lua") then
 		require("conf.lua")
 		require("conf.lua")
+	end
+	
+	-- Yes, conf.lua might not exist, but there are other ways of making
+	-- love.conf appear, so we should check for it anyway.
+	if love.conf then
 		love.conf(c)
 		love.conf(c)
 	end
 	end
 	
 	
@@ -207,10 +213,417 @@ end
 -- Default screen.
 -- Default screen.
 -----------------------------------------------------------
 -----------------------------------------------------------
 
 
-function love.defaultscreen()
+function love.nogame()
+
+	love.load = function()
+
+		love.graphics.setBackgroundColor(0x84, 0xca, 0xff)
+		
+		names = {
+			"wheel_major",
+			"wheel_minor",
+			"wheel_revision",
+			"belt_tooth",
+			"belt_track",
+			"turret_body",
+			"turret_cannon",
+			"star",
+			"knoll01",
+			"knoll02",
+			"knoll03",
+			"knoll04",
+			"tree01",
+			"bubble",
+			"love",
+		}
+		
+		local decode = function(file)
+			return love.graphics.newImage(love.image.newImageData(file))
+		end
+		
+		images = {}
+		
+		for i,v in pairs(names) do
+			images[v] = decode(love["_"..v.."_png"])
+		end
+
+		pools = {
+			{
+				images.knoll01,
+				images.knoll02,
+			},
+			{
+				images.knoll03,
+				images.knoll04,
+			},
+		}
+
+		List = {}
+		List.__index = List
+
+		List.new = function(self)
+			local o = {
+				head = nil,
+			}
+			setmetatable(o, List)
+			return o
+		end
+
+		List.update = function(self, dt)
+			local n = self.head
+			while n do
+				n:update(dt)
+				n = n.next
+			end
+		end
+
+		List.draw = function(self)
+			local n = self.head
+			while n do
+				n:draw()
+				n = n.next
+			end
+		end
+
+		Node = {}
+		Node.__index = Node
+
+		Node.new = function(self, object)
+			local o = {
+				next = nil, 
+			}
+			setmetatable(o, List)
+			return o
+		end
+
+		Node.insert = function(self, list)
+			local h = list.head
+			list.head = self
+			self.next = h
+		end
+
+		Node.remove = function(self)
+			parent.next = self.next
+		end
+
+		Object = Node:new()
+		Object.__index = Object
+		setmetatable(Object, Node)
+
+		Object.new = function(self)
+			local o = {
+				image = nil,
+				x = 0, 
+				y = 0,
+				dx = -400,
+				dy = 0,
+				scale = 1,
+				r = 0,
+				duration = 30,
+				passed = 0,
+				t = 0,
+				alpha = 255
+			}
+			setmetatable(o, Object)
+			return o
+		end
+
+		Object.update = function(self, dt)
+			self.passed = self.passed + dt
+			while self.passed > self.duration do
+				self.passed = self.passed - self.duration
+			end
+			self.t = self.passed/self.duration
+		end
+
+		Object.draw = function(self)
+			if self.image then
+				local x = self.x + self.dx*self.t
+				local y = self.y + self.dy*self.t
+				local r = self.r*self.t
+				love.graphics.setColor(255, 255, 255, self.alpha)
+				love.graphics.draw(self.image, x, y, r, self.scale)
+				love.graphics.setColor(255, 255, 255, 255)
+			end
+		end
+
+		Tree = Object:new()
+		Tree.__index = Tree
+		setmetatable(Tree, Object)
+
+		Tree.new = function(self)
+			local o = {}
+			o.image = images.tree01
+			o.x = 800 + math.random(0, 800)
+			o.y = 300 + math.random(0, 40)
+			o.xt = -200;
+			o.dx = o.xt - o.x
+			o.speed = 100
+			o.duration = -o.dx/o.speed
+			setmetatable(o, Tree)
+			return o
+		end
+
+		Star = Object:new()
+		Star.__index = Star
+		setmetatable(Star, Object)
+
+		Star.new = function(self, speed, scale)
+			local o = {}
+			o.image = images.star
+			o.x = 800 + math.random(0, 800)
+			o.y = -200 + math.random(0, 300)
+			o.xt = -50;
+			o.dy = 400
+			o.dx = o.xt - o.x
+			o.speed = speed
+			o.scale = scale
+			o.duration = -o.dx/o.speed
+			o.r = math.pi * 5
+			o.alpha = 100 + math.random(155)
+			setmetatable(o, Star)
+			return o
+		end
+
+		Knoll = Object:new()
+		Knoll.__index = Knoll
+		setmetatable(Knoll, Object)
+
+		Knoll.new = function(self, pool, var, speed)
+			local o = {}
+			o.image = pools[pool][math.random(1, #pools[pool])]
+			o.x = 800 + math.random(0, 800)
+			o.y = 300 + var - math.random(0, var*2)
+			o.xt = -200;
+			o.dx = o.xt - o.x
+			o.speed = speed
+			o.duration = -o.dx/o.speed
+			setmetatable(o, Star)
+			return o
+		end
+
+		Belt = Object:new()
+		Belt.__index = Belt
+		setmetatable(Belt, Object)
+
+		Belt.new = function(self, n)
+
+			local o = {}
+			
+			o.r = 30
+			o.d = o.r*2
+			o.half_c = math.pi*o.r
+			o.c = 2*o.half_c
+			o.x = 200
+			o.y = 300
+			o.th = 1
+			o.ta = 1
+			o.w = o.th*o.half_c
+			o.total = o.th*2+o.ta*2
+			o.teeth = {}
+
+			for i=0,n-1 do
+				local b = { x = 0, y = 0, t = (o.total/n)*i }
+				table.insert(o.teeth, b)
+			end
+			
+			setmetatable(o, Belt)
+			return o
+		end
+
+		Belt.update = function(self, dt)
+			for i,b in ipairs(self.teeth) do
+				b.t = b.t + dt
+				
+				if b.t < self.th then
+					local t = b.t
+					b.x = self.x + self.w * (t/self.th)
+					b.y = self.y
+				elseif b.t < self.th + self.ta then 
+					local t = (self.th + self.ta - b.t)
+					b.x = self.x + self.w + math.cos(-math.pi*t + math.pi/2)*self.r
+					b.y = self.y + self.r + math.sin(-math.pi*t + math.pi/2)*self.r
+				elseif b.t < self.th*2 + self.ta then
+					local t = (b.t - self.th*2 + self.ta)/self.th
+					b.x = self.x + self.w * (2-t)
+					b.y = self.y + self.d
+				elseif b.t < self.total then 
+					local t = (self.th*2 + self.ta - b.t)
+					b.x = self.x + math.cos(-math.pi*t + math.pi/2)*self.r
+					b.y = self.y + self.r + math.sin(-math.pi*t + math.pi/2)*self.r
+				else
+					b.t = b.t - self.total
+				end
+			end
+		end
+
+		Belt.draw = function(self)
+			for i,b in ipairs(self.teeth) do
+				love.graphics.draw(images.belt_tooth, b.x, b.y)
+			end
+		end
+
+		Tank = Object:new()
+		Tank.__index = Tank
+		setmetatable(Tank, Object)
+
+		Tank.new = function(self)
+			local o = {}
+			o.x = 200
+			o.y = 490
+			o.i = 49
+			o.belt = Belt:new(30)
+			o.belt.x = o.x-7
+			o.belt.y = o.y-37
+			o.angle = 0
+			setmetatable(o, Tank)
+			return o
+		end
+
+		Tank.update = function(self, dt)
+			self.angle = self.angle + dt * math.pi/2
+			self.belt:update(dt)
+		end
+
+
+		Tank.draw = function(self)
+			love.graphics.draw(images.turret_cannon, self.x+30, self.y-80)
+			love.graphics.draw(images.turret_body, self.x-12, self.y-110)
+			love.graphics.draw(images.belt_track, self.belt.x-74, self.belt.y-28)
+			love.graphics.draw(images.wheel_major, self.x, self.y, self.angle, 1, 1, 32, 32)
+			love.graphics.draw(images.wheel_minor, self.x+self.i, self.y, self.angle, 1, 1, 32, 32)
+			love.graphics.draw(images.wheel_revision, self.x+self.i*2, self.y, self.angle, 1, 1, 32, 32)
+			self.belt:draw()
+		end
+
+		Bubble = Object:new()
+		Bubble.__index = Bubble
+		setmetatable(Bubble, Object)
+
+		 Bubble.new = function(self)
+			local o = {}
+			o.x = 240
+			o.y = 190
+			o.angle = 0
+			setmetatable(o, Bubble)
+			return o
+		end
+
+		Bubble.update = function(self, dt)
+			self.angle = self.angle + dt*5
+		end
+
+		Bubble.draw = function(self)
+			local yv = math.sin(self.angle)*5
+			love.graphics.draw(images.bubble, self.x, self.y+yv)
+			love.graphics.draw(images.love, self.x+8, self.y+yv+95)
+		end
+
+		timers = {}
+
+		Timer = {}
+		Timer.__index = Timer
+
+		Timer.spawn = function(self, tick, f)
+			local o = {
+				passed = 0,
+				tick = tick,
+				f = f
+			}
+			setmetatable(o, Timer)
+			table.insert(timers, o)
+		end
+
+		Timer.update = function(self, dt)
+			self.passed = self.passed + dt
+			while self.passed > self.tick do
+				self.passed = self.passed - self.tick
+				self.f()
+			end
+		end
+
+		lists = {
+			b = List:new(), 
+			f = List:new()
+		}
+		
+		do
+			local t = Bubble:new()
+			t:insert(lists.f)
+		end
+		
+		do
+			local t = Tank:new()
+			t:insert(lists.f)
+		end
+
+		for i=1,3 do
+			local t = Tree:new(50, 300)
+			t:insert(lists.b)
+		end
+		
+
+		for i=1,2 do
+			local t = Knoll:new(1, 50, 100)
+			t:insert(lists.b)
+		end
+
+		for i=1,40 do
+			local t = Star:new(100, 1)
+			t:insert(lists.b)
+		end
+
+		for i=1,5 do
+			local t = Knoll:new(2, 100, 50)
+			t:insert(lists.b)
+		end
+		
+		for i,v in pairs(lists) do
+			v:update(10)
+		end
+		
+	end
+
+
 
 
+	love.update = function(dt)
 
 
+		for i,v in ipairs(timers) do v:update(dt) end
 
 
+
+		for i,v in pairs(lists) do
+			v:update(dt)
+		end
+		
+		love.timer.sleep(10)
+	end
+
+
+	love.draw = function()
+
+		lists.b:draw()
+		
+		-- Ground
+		love.graphics.setColor(146, 201, 87)
+		love.graphics.rectangle(love.draw_fill, 0, 530, 800, 70)
+		love.graphics.setColor(205, 227, 161)
+		love.graphics.rectangle(love.draw_fill, 0, 520, 800, 10)
+		love.graphics.setColor(255, 255, 255)
+		
+		lists.f:draw()
+		
+	end
+	
+	love.conf = function(t)
+		t.title = "*Tank* you using LOVE " .. love._version_string .. " (" .. love._version_codename .. ")"
+		t.modules.audio = false
+		t.modules.sound = false
+		t.modules.physics = false
+		t.modules.joystick = false
+		t.modules.native = false
+		t.modules.font = false
+	end
+	
 end
 end
 
 
 -----------------------------------------------------------
 -----------------------------------------------------------

+ 503 - 71
src/scripts/boot.lua.h

@@ -125,54 +125,67 @@ static const unsigned char B1[]={
 110,100, 44, 13, 10,  9,125, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45,
 110,100, 44, 13, 10,  9,125, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45,
  32, 84,104,105,115, 32, 99, 97,110, 39,116, 32, 98,101, 32,111,118,101,114,114,
  32, 84,104,105,115, 32, 99, 97,110, 39,116, 32, 98,101, 32,111,118,101,114,114,
 105,100,101,110, 46, 32, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,
 105,100,101,110, 46, 32, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,
-101, 46, 98,111,111,116, 40, 41, 13, 10, 13, 10,  9,112,114,105,110,116, 40, 34,
- 98,111,111,116, 34, 41, 13, 10, 13, 10,  9, 45, 45, 32, 84,104,105,115, 32,105,
-115, 32, 97, 98,115,111,108,117,116,101,108,121, 32,110,101,101,100,101,100, 46,
- 32, 13, 10,  9,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,102,105,
-108,101,115,121,115,116,101,109, 34, 41, 13, 10, 13, 10,  9,105,102, 32, 97,114,
-103, 32, 97,110,100, 32, 97,114,103, 91, 49, 93, 32,116,104,101,110, 13, 10,  9,
-  9,108,111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,105,110,105,
-116, 40,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117,108,108, 40,
-108,111,118,101, 46, 97,114,103, 46,103,101,116, 76,111,119, 40, 97,114,103, 41,
- 41, 41, 13, 10,  9,  9,108,111,118,101, 46,102,105,108,101,115,121,115,116,101,
-109, 46,115,101,116, 83,111,117,114, 99,101, 40,108,111,118,101, 46,112, 97,116,
-104, 46,103,101,116,102,117,108,108, 40, 97,114,103, 91, 49, 93, 41, 41, 13, 10,
-  9,101,108,115,101, 13, 10,  9,  9,108,111,118,101, 46,102,105,108,101,115,121,
-115,116,101,109, 32, 61, 32,110,105,108, 13, 10,  9,101,110,100, 13, 10,101,110,
-100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,105,
-110,105,116, 40, 41, 13, 10, 13, 10,  9, 45, 45, 32, 67,114,101, 97,116,101, 32,
-100,101,102, 97,117,108,116, 32, 99,111,110,102,105,103,117,114, 97,116,105,111,
-110, 32,115,101,116,116,105,110,103,115, 46, 13, 10,  9,108,111, 99, 97,108, 32,
- 99, 32, 61, 32,123, 13, 10,  9,  9,116,105,116,108,101, 32, 61, 32, 34, 85,110,
-116,105,116,108,101,100, 34, 44, 13, 10,  9,  9, 97,117,116,104,111,114, 32, 61,
- 32, 34, 85,110,110, 97,109,101,100, 34, 44, 13, 10,  9,  9,118,101,114,115,105,
-111,110, 32, 61, 32, 48, 44, 13, 10,  9,  9,115, 99,114,101,101,110, 32, 61, 32,
-123, 13, 10,  9,  9,  9,119,105,100,116,104, 32, 61, 32, 56, 48, 48, 44, 13, 10,
-  9,  9,  9,104,101,105,103,104,116, 32, 61, 32, 54, 48, 48, 44, 13, 10,  9,  9,
-  9,102,117,108,108,115, 99,114,101,101,110, 32, 61, 32,102, 97,108,115,101, 44,
- 13, 10,  9,  9,  9,118,115,121,110, 99, 32, 61, 32,116,114,117,101, 44, 13, 10,
-  9,  9,  9,102,115, 97, 97, 32, 61, 32, 48, 44, 13, 10,  9,  9,125, 44, 32, 13,
- 10,  9,  9,109,111,100,117,108,101,115, 32, 61, 32,123, 13, 10,  9,  9,  9,101,
-118,101,110,116, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,107,101,121,
- 98,111, 97,114,100, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,109,111,
-117,115,101, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,116,105,109,101,
-114, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,106,111,121,115,116,105,
- 99,107, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,105,109, 97,103,101,
- 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,103,114, 97,112,104,105, 99,
-115, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9, 97,117,100,105,111, 32,
- 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,112,104,121,115,105, 99,115, 32,
- 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,115,111,117,110,100, 32, 61, 32,
-116,114,117,101, 44, 13, 10,  9,  9,  9,110, 97,116,105,118,101, 32, 61, 32,116,
-114,117,101, 44, 13, 10,  9,  9,  9,102,111,110,116, 32, 61, 32,116,114,117,101,
- 44, 13, 10,  9,  9,125, 44, 13, 10,  9,125, 13, 10, 13, 10,  9, 45, 45, 32, 73,
-102, 32, 99,111,110,102,105,103, 32,102,105,108,101, 32,101,120,105,115,116,115,
- 44, 32,108,111, 97,100, 32,105,116, 32, 97,110,100, 32, 97,108,108,111,119, 32,
-105,116, 32,116,111, 32,117,112,100, 97,116,101, 32, 99,111,110,102,105,103, 32,
-116, 97, 98,108,101, 46, 13, 10,  9,105,102, 32,108,111,118,101, 46,102,105,108,
-101,115,121,115,116,101,109, 32, 97,110,100, 32,108,111,118,101, 46,102,105,108,
-101,115,121,115,116,101,109, 46,101,120,105,115,116,115, 40, 34, 99,111,110,102,
- 46,108,117, 97, 34, 41, 32,116,104,101,110, 13, 10,  9,  9,114,101,113,117,105,
-114,101, 40, 34, 99,111,110,102, 46,108,117, 97, 34, 41, 13, 10,  9,  9,108,111,
+101, 46, 98,111,111,116, 40, 41, 13, 10, 13, 10,  9, 45, 45, 32, 84,104,105,115,
+ 32,105,115, 32, 97, 98,115,111,108,117,116,101,108,121, 32,110,101,101,100,101,
+100, 46, 13, 10,  9,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 34, 41,
+ 13, 10,  9,114,101,113,117,105,114,101, 40, 34,108,111,118,101, 46,102,105,108,
+101,115,121,115,116,101,109, 34, 41, 13, 10, 13, 10,  9,105,102, 32, 97,114,103,
+ 32, 97,110,100, 32, 97,114,103, 91, 49, 93, 32,116,104,101,110, 13, 10,  9,  9,
+108,111,118,101, 46,102,105,108,101,115,121,115,116,101,109, 46,105,110,105,116,
+ 40,108,111,118,101, 46,112, 97,116,104, 46,103,101,116,102,117,108,108, 40,108,
+111,118,101, 46, 97,114,103, 46,103,101,116, 76,111,119, 40, 97,114,103, 41, 41,
+ 41, 13, 10,  9,  9,108,111,118,101, 46,102,105,108,101,115,121,115,116,101,109,
+ 46,115,101,116, 83,111,117,114, 99,101, 40,108,111,118,101, 46,112, 97,116,104,
+ 46,103,101,116,102,117,108,108, 40, 97,114,103, 91, 49, 93, 41, 41, 13, 10,  9,
+101,108,115,101, 13, 10,  9,  9,108,111,118,101, 46,102,105,108,101,115,121,115,
+116,101,109, 32, 61, 32,110,105,108, 13, 10,  9,  9,108,111,118,101, 46,110,111,
+103, 97,109,101, 40, 41, 32, 45, 45, 32, 87,104,111, 32,110,101,101,100,115, 32,
+ 97, 32,103, 97,109,101, 63, 32, 71,111,116, 32,111,110,101, 32,101,109, 98,101,
+100,100,101,100, 32,114,105,103,104,116, 32,104,101,114,101, 33, 13, 10,  9,101,
+110,100, 13, 10,101,110,100, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,
+108,111,118,101, 46,105,110,105,116, 40, 41, 13, 10, 13, 10,  9, 45, 45, 32, 67,
+114,101, 97,116,101, 32,100,101,102, 97,117,108,116, 32, 99,111,110,102,105,103,
+117,114, 97,116,105,111,110, 32,115,101,116,116,105,110,103,115, 46, 13, 10,  9,
+108,111, 99, 97,108, 32, 99, 32, 61, 32,123, 13, 10,  9,  9,116,105,116,108,101,
+ 32, 61, 32, 34, 85,110,116,105,116,108,101,100, 34, 44, 13, 10,  9,  9, 97,117,
+116,104,111,114, 32, 61, 32, 34, 85,110,110, 97,109,101,100, 34, 44, 13, 10,  9,
+  9,118,101,114,115,105,111,110, 32, 61, 32, 48, 44, 13, 10,  9,  9,115, 99,114,
+101,101,110, 32, 61, 32,123, 13, 10,  9,  9,  9,119,105,100,116,104, 32, 61, 32,
+ 56, 48, 48, 44, 13, 10,  9,  9,  9,104,101,105,103,104,116, 32, 61, 32, 54, 48,
+ 48, 44, 13, 10,  9,  9,  9,102,117,108,108,115, 99,114,101,101,110, 32, 61, 32,
+102, 97,108,115,101, 44, 13, 10,  9,  9,  9,118,115,121,110, 99, 32, 61, 32,116,
+114,117,101, 44, 13, 10,  9,  9,  9,102,115, 97, 97, 32, 61, 32, 48, 44, 13, 10,
+  9,  9,125, 44, 32, 13, 10,  9,  9,109,111,100,117,108,101,115, 32, 61, 32,123,
+ 13, 10,  9,  9,  9,101,118,101,110,116, 32, 61, 32,116,114,117,101, 44, 13, 10,
+  9,  9,  9,107,101,121, 98,111, 97,114,100, 32, 61, 32,116,114,117,101, 44, 13,
+ 10,  9,  9,  9,109,111,117,115,101, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,
+  9,  9,116,105,109,101,114, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,
+106,111,121,115,116,105, 99,107, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,
+  9,105,109, 97,103,101, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,103,
+114, 97,112,104,105, 99,115, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,
+ 97,117,100,105,111, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,112,104,
+121,115,105, 99,115, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,115,111,
+117,110,100, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,110, 97,116,105,
+118,101, 32, 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,102,111,110,116, 32,
+ 61, 32,116,114,117,101, 44, 13, 10,  9,  9,  9,115,105,103,110, 97,108, 32, 61,
+ 32,116,114,117,101, 44, 13, 10,  9,  9,125, 44, 13, 10,  9,125, 13, 10, 13, 10,
+  9, 45, 45, 32, 73,102, 32, 99,111,110,102,105,103, 32,102,105,108,101, 32,101,
+120,105,115,116,115, 44, 32,108,111, 97,100, 32,105,116, 32, 97,110,100, 32, 97,
+108,108,111,119, 32,105,116, 32,116,111, 32,117,112,100, 97,116,101, 32, 99,111,
+110,102,105,103, 32,116, 97, 98,108,101, 46, 13, 10,  9,105,102, 32,110,111,116,
+ 32,108,111,118,101, 46, 99,111,110,102, 32, 97,110,100, 32,108,111,118,101, 46,
+102,105,108,101,115,121,115,116,101,109, 32, 97,110,100, 32,108,111,118,101, 46,
+102,105,108,101,115,121,115,116,101,109, 46,101,120,105,115,116,115, 40, 34, 99,
+111,110,102, 46,108,117, 97, 34, 41, 32,116,104,101,110, 13, 10,  9,  9,114,101,
+113,117,105,114,101, 40, 34, 99,111,110,102, 46,108,117, 97, 34, 41, 13, 10,  9,
+101,110,100, 13, 10,  9, 13, 10,  9, 45, 45, 32, 89,101,115, 44, 32, 99,111,110,
+102, 46,108,117, 97, 32,109,105,103,104,116, 32,110,111,116, 32,101,120,105,115,
+116, 44, 32, 98,117,116, 32,116,104,101,114,101, 32, 97,114,101, 32,111,116,104,
+101,114, 32,119, 97,121,115, 32,111,102, 32,109, 97,107,105,110,103, 13, 10,  9,
+ 45, 45, 32,108,111,118,101, 46, 99,111,110,102, 32, 97,112,112,101, 97,114, 44,
+ 32,115,111, 32,119,101, 32,115,104,111,117,108,100, 32, 99,104,101, 99,107, 32,
+102,111,114, 32,105,116, 32, 97,110,121,119, 97,121, 46, 13, 10,  9,105,102, 32,
+108,111,118,101, 46, 99,111,110,102, 32,116,104,101,110, 13, 10,  9,  9,108,111,
 118,101, 46, 99,111,110,102, 40, 99, 41, 13, 10,  9,101,110,100, 13, 10,  9, 13,
 118,101, 46, 99,111,110,102, 40, 99, 41, 13, 10,  9,101,110,100, 13, 10,  9, 13,
  10,  9, 45, 45, 32, 71,101,116,115, 32,100,101,115,105,114,101,100, 32,109,111,
  10,  9, 45, 45, 32, 71,101,116,115, 32,100,101,115,105,114,101,100, 32,109,111,
 100,117,108,101,115, 46, 13, 10,  9,102,111,114, 32,107, 44,118, 32,105,110, 32,
 100,117,108,101,115, 46, 13, 10,  9,102,111,114, 32,107, 44,118, 32,105,110, 32,
@@ -234,37 +247,456 @@ static const unsigned char B1[]={
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,110, 99,116,105,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,110, 99,116,105,
-111,110, 32,108,111,118,101, 46,100,101,102, 97,117,108,116,115, 99,114,101,101,
-110, 40, 41, 13, 10, 13, 10, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45,
+111,110, 32,108,111,118,101, 46,110,111,103, 97,109,101, 40, 41, 13, 10, 13, 10,
+  9,108,111,118,101, 46,108,111, 97,100, 32, 61, 32,102,117,110, 99,116,105,111,
+110, 40, 41, 13, 10, 13, 10,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105,
+ 99,115, 46,115,101,116, 66, 97, 99,107,103,114,111,117,110,100, 67,111,108,111,
+114, 40, 48,120, 56, 52, 44, 32, 48,120, 99, 97, 44, 32, 48,120,102,102, 41, 13,
+ 10,  9,  9, 13, 10,  9,  9,110, 97,109,101,115, 32, 61, 32,123, 13, 10,  9,  9,
+  9, 34,119,104,101,101,108, 95,109, 97,106,111,114, 34, 44, 13, 10,  9,  9,  9,
+ 34,119,104,101,101,108, 95,109,105,110,111,114, 34, 44, 13, 10,  9,  9,  9, 34,
+119,104,101,101,108, 95,114,101,118,105,115,105,111,110, 34, 44, 13, 10,  9,  9,
+  9, 34, 98,101,108,116, 95,116,111,111,116,104, 34, 44, 13, 10,  9,  9,  9, 34,
+ 98,101,108,116, 95,116,114, 97, 99,107, 34, 44, 13, 10,  9,  9,  9, 34,116,117,
+114,114,101,116, 95, 98,111,100,121, 34, 44, 13, 10,  9,  9,  9, 34,116,117,114,
+114,101,116, 95, 99, 97,110,110,111,110, 34, 44, 13, 10,  9,  9,  9, 34,115,116,
+ 97,114, 34, 44, 13, 10,  9,  9,  9, 34,107,110,111,108,108, 48, 49, 34, 44, 13,
+ 10,  9,  9,  9, 34,107,110,111,108,108, 48, 50, 34, 44, 13, 10,  9,  9,  9, 34,
+107,110,111,108,108, 48, 51, 34, 44, 13, 10,  9,  9,  9, 34,107,110,111,108,108,
+ 48, 52, 34, 44, 13, 10,  9,  9,  9, 34,116,114,101,101, 48, 49, 34, 44, 13, 10,
+  9,  9,  9, 34, 98,117, 98, 98,108,101, 34, 44, 13, 10,  9,  9,  9, 34,108,111,
+118,101, 34, 44, 13, 10,  9,  9,125, 13, 10,  9,  9, 13, 10,  9,  9,108,111, 99,
+ 97,108, 32,100,101, 99,111,100,101, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40,102,105,108,101, 41, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,108,111,
+118,101, 46,103,114, 97,112,104,105, 99,115, 46,110,101,119, 73,109, 97,103,101,
+ 40,108,111,118,101, 46,105,109, 97,103,101, 46,110,101,119, 73,109, 97,103,101,
+ 68, 97,116, 97, 40,102,105,108,101, 41, 41, 13, 10,  9,  9,101,110,100, 13, 10,
+  9,  9, 13, 10,  9,  9,105,109, 97,103,101,115, 32, 61, 32,123,125, 13, 10,  9,
+  9, 13, 10,  9,  9,102,111,114, 32,105, 44,118, 32,105,110, 32,112, 97,105,114,
+115, 40,110, 97,109,101,115, 41, 32,100,111, 13, 10,  9,  9,  9,105,109, 97,103,
+101,115, 91,118, 93, 32, 61, 32,100,101, 99,111,100,101, 40,108,111,118,101, 91,
+ 34, 95, 34, 46, 46,118, 46, 46, 34, 95,112,110,103, 34, 93, 41, 13, 10,  9,  9,
+101,110,100, 13, 10, 13, 10,  9,  9,112,111,111,108,115, 32, 61, 32,123, 13, 10,
+  9,  9,  9,123, 13, 10,  9,  9,  9,  9,105,109, 97,103,101,115, 46,107,110,111,
+108,108, 48, 49, 44, 13, 10,  9,  9,  9,  9,105,109, 97,103,101,115, 46,107,110,
+111,108,108, 48, 50, 44, 13, 10,  9,  9,  9,125, 44, 13, 10,  9,  9,  9,123, 13,
+ 10,  9,  9,  9,  9,105,109, 97,103,101,115, 46,107,110,111,108,108, 48, 51, 44,
+ 13, 10,  9,  9,  9,  9,105,109, 97,103,101,115, 46,107,110,111,108,108, 48, 52,
+ 44, 13, 10,  9,  9,  9,125, 44, 13, 10,  9,  9,125, 13, 10, 13, 10,  9,  9, 76,
+105,115,116, 32, 61, 32,123,125, 13, 10,  9,  9, 76,105,115,116, 46, 95, 95,105,
+110,100,101,120, 32, 61, 32, 76,105,115,116, 13, 10, 13, 10,  9,  9, 76,105,115,
+116, 46,110,101,119, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,
+102, 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,111, 32, 61, 32,123, 13, 10,
+  9,  9,  9,  9,104,101, 97,100, 32, 61, 32,110,105,108, 44, 13, 10,  9,  9,  9,
+125, 13, 10,  9,  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,111,
+ 44, 32, 76,105,115,116, 41, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,111,
+ 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 76,105,115,116, 46,117,112,
+100, 97,116,101, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102,
+ 44, 32,100,116, 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,110, 32, 61, 32,
+115,101,108,102, 46,104,101, 97,100, 13, 10,  9,  9,  9,119,104,105,108,101, 32,
+110, 32,100,111, 13, 10,  9,  9,  9,  9,110, 58,117,112,100, 97,116,101, 40,100,
+116, 41, 13, 10,  9,  9,  9,  9,110, 32, 61, 32,110, 46,110,101,120,116, 13, 10,
+  9,  9,  9,101,110,100, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 76,
+105,115,116, 46,100,114, 97,119, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,
+115,101,108,102, 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,110, 32, 61, 32,
+115,101,108,102, 46,104,101, 97,100, 13, 10,  9,  9,  9,119,104,105,108,101, 32,
+110, 32,100,111, 13, 10,  9,  9,  9,  9,110, 58,100,114, 97,119, 40, 41, 13, 10,
+  9,  9,  9,  9,110, 32, 61, 32,110, 46,110,101,120,116, 13, 10,  9,  9,  9,101,
+110,100, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 78,111,100,101, 32,
+ 61, 32,123,125, 13, 10,  9,  9, 78,111,100,101, 46, 95, 95,105,110,100,101,120,
+ 32, 61, 32, 78,111,100,101, 13, 10, 13, 10,  9,  9, 78,111,100,101, 46,110,101,
+119, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,111,
+ 98,106,101, 99,116, 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,111, 32, 61,
+ 32,123, 13, 10,  9,  9,  9,  9,110,101,120,116, 32, 61, 32,110,105,108, 44, 32,
+ 13, 10,  9,  9,  9,125, 13, 10,  9,  9,  9,115,101,116,109,101,116, 97,116, 97,
+ 98,108,101, 40,111, 44, 32, 76,105,115,116, 41, 13, 10,  9,  9,  9,114,101,116,
+117,114,110, 32,111, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 78,111,
+100,101, 46,105,110,115,101,114,116, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40,115,101,108,102, 44, 32,108,105,115,116, 41, 13, 10,  9,  9,  9,108,111, 99,
+ 97,108, 32,104, 32, 61, 32,108,105,115,116, 46,104,101, 97,100, 13, 10,  9,  9,
+  9,108,105,115,116, 46,104,101, 97,100, 32, 61, 32,115,101,108,102, 13, 10,  9,
+  9,  9,115,101,108,102, 46,110,101,120,116, 32, 61, 32,104, 13, 10,  9,  9,101,
+110,100, 13, 10, 13, 10,  9,  9, 78,111,100,101, 46,114,101,109,111,118,101, 32,
+ 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 41, 13, 10,  9,  9,
+  9,112, 97,114,101,110,116, 46,110,101,120,116, 32, 61, 32,115,101,108,102, 46,
+110,101,120,116, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 79, 98,106,
+101, 99,116, 32, 61, 32, 78,111,100,101, 58,110,101,119, 40, 41, 13, 10,  9,  9,
+ 79, 98,106,101, 99,116, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 79, 98,106,
+101, 99,116, 13, 10,  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,
+ 79, 98,106,101, 99,116, 44, 32, 78,111,100,101, 41, 13, 10, 13, 10,  9,  9, 79,
+ 98,106,101, 99,116, 46,110,101,119, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40,115,101,108,102, 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,111, 32, 61,
+ 32,123, 13, 10,  9,  9,  9,  9,105,109, 97,103,101, 32, 61, 32,110,105,108, 44,
+ 13, 10,  9,  9,  9,  9,120, 32, 61, 32, 48, 44, 32, 13, 10,  9,  9,  9,  9,121,
+ 32, 61, 32, 48, 44, 13, 10,  9,  9,  9,  9,100,120, 32, 61, 32, 45, 52, 48, 48,
+ 44, 13, 10,  9,  9,  9,  9,100,121, 32, 61, 32, 48, 44, 13, 10,  9,  9,  9,  9,
+115, 99, 97,108,101, 32, 61, 32, 49, 44, 13, 10,  9,  9,  9,  9,114, 32, 61, 32,
+ 48, 44, 13, 10,  9,  9,  9,  9,100,117,114, 97,116,105,111,110, 32, 61, 32, 51,
+ 48, 44, 13, 10,  9,  9,  9,  9,112, 97,115,115,101,100, 32, 61, 32, 48, 44, 13,
+ 10,  9,  9,  9,  9,116, 32, 61, 32, 48, 44, 13, 10,  9,  9,  9,  9, 97,108,112,
+104, 97, 32, 61, 32, 50, 53, 53, 13, 10,  9,  9,  9,125, 13, 10,  9,  9,  9,115,
+101,116,109,101,116, 97,116, 97, 98,108,101, 40,111, 44, 32, 79, 98,106,101, 99,
+116, 41, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,111, 13, 10,  9,  9,101,
+110,100, 13, 10, 13, 10,  9,  9, 79, 98,106,101, 99,116, 46,117,112,100, 97,116,
+101, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,100,
+116, 41, 13, 10,  9,  9,  9,115,101,108,102, 46,112, 97,115,115,101,100, 32, 61,
+ 32,115,101,108,102, 46,112, 97,115,115,101,100, 32, 43, 32,100,116, 13, 10,  9,
+  9,  9,119,104,105,108,101, 32,115,101,108,102, 46,112, 97,115,115,101,100, 32,
+ 62, 32,115,101,108,102, 46,100,117,114, 97,116,105,111,110, 32,100,111, 13, 10,
+  9,  9,  9,  9,115,101,108,102, 46,112, 97,115,115,101,100, 32, 61, 32,115,101,
+108,102, 46,112, 97,115,115,101,100, 32, 45, 32,115,101,108,102, 46,100,117,114,
+ 97,116,105,111,110, 13, 10,  9,  9,  9,101,110,100, 13, 10,  9,  9,  9,115,101,
+108,102, 46,116, 32, 61, 32,115,101,108,102, 46,112, 97,115,115,101,100, 47,115,
+101,108,102, 46,100,117,114, 97,116,105,111,110, 13, 10,  9,  9,101,110,100, 13,
+ 10, 13, 10,  9,  9, 79, 98,106,101, 99,116, 46,100,114, 97,119, 32, 61, 32,102,
+117,110, 99,116,105,111,110, 40,115,101,108,102, 41, 13, 10,  9,  9,  9,105,102,
+ 32,115,101,108,102, 46,105,109, 97,103,101, 32,116,104,101,110, 13, 10,  9,  9,
+  9,  9,108,111, 99, 97,108, 32,120, 32, 61, 32,115,101,108,102, 46,120, 32, 43,
+ 32,115,101,108,102, 46,100,120, 42,115,101,108,102, 46,116, 13, 10,  9,  9,  9,
+  9,108,111, 99, 97,108, 32,121, 32, 61, 32,115,101,108,102, 46,121, 32, 43, 32,
+115,101,108,102, 46,100,121, 42,115,101,108,102, 46,116, 13, 10,  9,  9,  9,  9,
+108,111, 99, 97,108, 32,114, 32, 61, 32,115,101,108,102, 46,114, 42,115,101,108,
+102, 46,116, 13, 10,  9,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105,
+ 99,115, 46,115,101,116, 67,111,108,111,114, 40, 50, 53, 53, 44, 32, 50, 53, 53,
+ 44, 32, 50, 53, 53, 44, 32,115,101,108,102, 46, 97,108,112,104, 97, 41, 13, 10,
+  9,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,100,114,
+ 97,119, 40,115,101,108,102, 46,105,109, 97,103,101, 44, 32,120, 44, 32,121, 44,
+ 32,114, 44, 32,115,101,108,102, 46,115, 99, 97,108,101, 41, 13, 10,  9,  9,  9,
+  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,115,101,116, 67,111,
+108,111,114, 40, 50, 53, 53, 44, 32, 50, 53, 53, 44, 32, 50, 53, 53, 44, 32, 50,
+ 53, 53, 41, 13, 10,  9,  9,  9,101,110,100, 13, 10,  9,  9,101,110,100, 13, 10,
+ 13, 10,  9,  9, 84,114,101,101, 32, 61, 32, 79, 98,106,101, 99,116, 58,110,101,
+119, 40, 41, 13, 10,  9,  9, 84,114,101,101, 46, 95, 95,105,110,100,101,120, 32,
+ 61, 32, 84,114,101,101, 13, 10,  9,  9,115,101,116,109,101,116, 97,116, 97, 98,
+108,101, 40, 84,114,101,101, 44, 32, 79, 98,106,101, 99,116, 41, 13, 10, 13, 10,
+  9,  9, 84,114,101,101, 46,110,101,119, 32, 61, 32,102,117,110, 99,116,105,111,
+110, 40,115,101,108,102, 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,111, 32,
+ 61, 32,123,125, 13, 10,  9,  9,  9,111, 46,105,109, 97,103,101, 32, 61, 32,105,
+109, 97,103,101,115, 46,116,114,101,101, 48, 49, 13, 10,  9,  9,  9,111, 46,120,
+ 32, 61, 32, 56, 48, 48, 32, 43, 32,109, 97,116,104, 46,114, 97,110,100,111,109,
+ 40, 48, 44, 32, 56, 48, 48, 41, 13, 10,  9,  9,  9,111, 46,121, 32, 61, 32, 51,
+ 48, 48, 32, 43, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40, 48, 44, 32,
+ 52, 48, 41, 13, 10,  9,  9,  9,111, 46,120,116, 32, 61, 32, 45, 50, 48, 48, 59,
+ 13, 10,  9,  9,  9,111, 46,100,120, 32, 61, 32,111, 46,120,116, 32, 45, 32,111,
+ 46,120, 13, 10,  9,  9,  9,111, 46,115,112,101,101,100, 32, 61, 32, 49, 48, 48,
+ 13, 10,  9,  9,  9,111, 46,100,117,114, 97,116,105,111,110, 32, 61, 32, 45,111,
+ 46,100,120, 47,111, 46,115,112,101,101,100, 13, 10,  9,  9,  9,115,101,116,109,
+101,116, 97,116, 97, 98,108,101, 40,111, 44, 32, 84,114,101,101, 41, 13, 10,  9,
+  9,  9,114,101,116,117,114,110, 32,111, 13, 10,  9,  9,101,110,100, 13, 10, 13,
+ 10,  9,  9, 83,116, 97,114, 32, 61, 32, 79, 98,106,101, 99,116, 58,110,101,119,
+ 40, 41, 13, 10,  9,  9, 83,116, 97,114, 46, 95, 95,105,110,100,101,120, 32, 61,
+ 32, 83,116, 97,114, 13, 10,  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,
+101, 40, 83,116, 97,114, 44, 32, 79, 98,106,101, 99,116, 41, 13, 10, 13, 10,  9,
+  9, 83,116, 97,114, 46,110,101,119, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40,115,101,108,102, 44, 32,115,112,101,101,100, 44, 32,115, 99, 97,108,101, 41,
+ 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,111, 32, 61, 32,123,125, 13, 10,  9,
+  9,  9,111, 46,105,109, 97,103,101, 32, 61, 32,105,109, 97,103,101,115, 46,115,
+116, 97,114, 13, 10,  9,  9,  9,111, 46,120, 32, 61, 32, 56, 48, 48, 32, 43, 32,
+109, 97,116,104, 46,114, 97,110,100,111,109, 40, 48, 44, 32, 56, 48, 48, 41, 13,
+ 10,  9,  9,  9,111, 46,121, 32, 61, 32, 45, 50, 48, 48, 32, 43, 32,109, 97,116,
+104, 46,114, 97,110,100,111,109, 40, 48, 44, 32, 51, 48, 48, 41, 13, 10,  9,  9,
+  9,111, 46,120,116, 32, 61, 32, 45, 53, 48, 59, 13, 10,  9,  9,  9,111, 46,100,
+121, 32, 61, 32, 52, 48, 48, 13, 10,  9,  9,  9,111, 46,100,120, 32, 61, 32,111,
+ 46,120,116, 32, 45, 32,111, 46,120, 13, 10,  9,  9,  9,111, 46,115,112,101,101,
+100, 32, 61, 32,115,112,101,101,100, 13, 10,  9,  9,  9,111, 46,115, 99, 97,108,
+101, 32, 61, 32,115, 99, 97,108,101, 13, 10,  9,  9,  9,111, 46,100,117,114, 97,
+116,105,111,110, 32, 61, 32, 45,111, 46,100,120, 47,111, 46,115,112,101,101,100,
+ 13, 10,  9,  9,  9,111, 46,114, 32, 61, 32,109, 97,116,104, 46,112,105, 32, 42,
+ 32, 53, 13, 10,  9,  9,  9,111, 46, 97,108,112,104, 97, 32, 61, 32, 49, 48, 48,
+ 32, 43, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40, 49, 53, 53, 41, 13,
+ 10,  9,  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,111, 44, 32,
+ 83,116, 97,114, 41, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,111, 13, 10,
+  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 75,110,111,108,108, 32, 61, 32, 79,
+ 98,106,101, 99,116, 58,110,101,119, 40, 41, 13, 10,  9,  9, 75,110,111,108,108,
+ 46, 95, 95,105,110,100,101,120, 32, 61, 32, 75,110,111,108,108, 13, 10,  9,  9,
+115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 75,110,111,108,108, 44, 32,
+ 79, 98,106,101, 99,116, 41, 13, 10, 13, 10,  9,  9, 75,110,111,108,108, 46,110,
+101,119, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,
+112,111,111,108, 44, 32,118, 97,114, 44, 32,115,112,101,101,100, 41, 13, 10,  9,
+  9,  9,108,111, 99, 97,108, 32,111, 32, 61, 32,123,125, 13, 10,  9,  9,  9,111,
+ 46,105,109, 97,103,101, 32, 61, 32,112,111,111,108,115, 91,112,111,111,108, 93,
+ 91,109, 97,116,104, 46,114, 97,110,100,111,109, 40, 49, 44, 32, 35,112,111,111,
+108,115, 91,112,111,111,108, 93, 41, 93, 13, 10,  9,  9,  9,111, 46,120, 32, 61,
+ 32, 56, 48, 48, 32, 43, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40, 48,
+ 44, 32, 56, 48, 48, 41, 13, 10,  9,  9,  9,111, 46,121, 32, 61, 32, 51, 48, 48,
+ 32, 43, 32,118, 97,114, 32, 45, 32,109, 97,116,104, 46,114, 97,110,100,111,109,
+ 40, 48, 44, 32,118, 97,114, 42, 50, 41, 13, 10,  9,  9,  9,111, 46,120,116, 32,
+ 61, 32, 45, 50, 48, 48, 59, 13, 10,  9,  9,  9,111, 46,100,120, 32, 61, 32,111,
+ 46,120,116, 32, 45, 32,111, 46,120, 13, 10,  9,  9,  9,111, 46,115,112,101,101,
+100, 32, 61, 32,115,112,101,101,100, 13, 10,  9,  9,  9,111, 46,100,117,114, 97,
+116,105,111,110, 32, 61, 32, 45,111, 46,100,120, 47,111, 46,115,112,101,101,100,
+ 13, 10,  9,  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,111, 44,
+ 32, 83,116, 97,114, 41, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,111, 13,
+ 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 66,101,108,116, 32, 61, 32, 79,
+ 98,106,101, 99,116, 58,110,101,119, 40, 41, 13, 10,  9,  9, 66,101,108,116, 46,
+ 95, 95,105,110,100,101,120, 32, 61, 32, 66,101,108,116, 13, 10,  9,  9,115,101,
+116,109,101,116, 97,116, 97, 98,108,101, 40, 66,101,108,116, 44, 32, 79, 98,106,
+101, 99,116, 41, 13, 10, 13, 10,  9,  9, 66,101,108,116, 46,110,101,119, 32, 61,
+ 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,110, 41, 13, 10,
+ 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,111, 32, 61, 32,123,125, 13, 10,  9,
+  9,  9, 13, 10,  9,  9,  9,111, 46,114, 32, 61, 32, 51, 48, 13, 10,  9,  9,  9,
+111, 46,100, 32, 61, 32,111, 46,114, 42, 50, 13, 10,  9,  9,  9,111, 46,104, 97,
+108,102, 95, 99, 32, 61, 32,109, 97,116,104, 46,112,105, 42,111, 46,114, 13, 10,
+  9,  9,  9,111, 46, 99, 32, 61, 32, 50, 42,111, 46,104, 97,108,102, 95, 99, 13,
+ 10,  9,  9,  9,111, 46,120, 32, 61, 32, 50, 48, 48, 13, 10,  9,  9,  9,111, 46,
+121, 32, 61, 32, 51, 48, 48, 13, 10,  9,  9,  9,111, 46,116,104, 32, 61, 32, 49,
+ 13, 10,  9,  9,  9,111, 46,116, 97, 32, 61, 32, 49, 13, 10,  9,  9,  9,111, 46,
+119, 32, 61, 32,111, 46,116,104, 42,111, 46,104, 97,108,102, 95, 99, 13, 10,  9,
+  9,  9,111, 46,116,111,116, 97,108, 32, 61, 32,111, 46,116,104, 42, 50, 43,111,
+ 46,116, 97, 42, 50, 13, 10,  9,  9,  9,111, 46,116,101,101,116,104, 32, 61, 32,
+123,125, 13, 10, 13, 10,  9,  9,  9,102,111,114, 32,105, 61, 48, 44,110, 45, 49,
+ 32,100,111, 13, 10,  9,  9,  9,  9,108,111, 99, 97,108, 32, 98, 32, 61, 32,123,
+ 32,120, 32, 61, 32, 48, 44, 32,121, 32, 61, 32, 48, 44, 32,116, 32, 61, 32, 40,
+111, 46,116,111,116, 97,108, 47,110, 41, 42,105, 32,125, 13, 10,  9,  9,  9,  9,
+116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,111, 46,116,101,101,116,104,
+ 44, 32, 98, 41, 13, 10,  9,  9,  9,101,110,100, 13, 10,  9,  9,  9, 13, 10,  9,
+  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,111, 44, 32, 66,101,
+108,116, 41, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,111, 13, 10,  9,  9,
+101,110,100, 13, 10, 13, 10,  9,  9, 66,101,108,116, 46,117,112,100, 97,116,101,
+ 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,100,116,
+ 41, 13, 10,  9,  9,  9,102,111,114, 32,105, 44, 98, 32,105,110, 32,105,112, 97,
+105,114,115, 40,115,101,108,102, 46,116,101,101,116,104, 41, 32,100,111, 13, 10,
+  9,  9,  9,  9, 98, 46,116, 32, 61, 32, 98, 46,116, 32, 43, 32,100,116, 13, 10,
+  9,  9,  9,  9, 13, 10,  9,  9,  9,  9,105,102, 32, 98, 46,116, 32, 60, 32,115,
+101,108,102, 46,116,104, 32,116,104,101,110, 13, 10,  9,  9,  9,  9,  9,108,111,
+ 99, 97,108, 32,116, 32, 61, 32, 98, 46,116, 13, 10,  9,  9,  9,  9,  9, 98, 46,
+120, 32, 61, 32,115,101,108,102, 46,120, 32, 43, 32,115,101,108,102, 46,119, 32,
+ 42, 32, 40,116, 47,115,101,108,102, 46,116,104, 41, 13, 10,  9,  9,  9,  9,  9,
+ 98, 46,121, 32, 61, 32,115,101,108,102, 46,121, 13, 10,  9,  9,  9,  9,101,108,
+115,101,105,102, 32, 98, 46,116, 32, 60, 32,115,101,108,102, 46,116,104, 32, 43,
+ 32,115,101,108,102, 46,116, 97, 32,116,104,101,110, 32, 13, 10,  9,  9,  9,  9,
+  9,108,111, 99, 97,108, 32,116, 32, 61, 32, 40,115,101,108,102, 46,116,104, 32,
+ 43, 32,115,101,108,102, 46,116, 97, 32, 45, 32, 98, 46,116, 41, 13, 10,  9,  9,
+  9,  9,  9, 98, 46,120, 32, 61, 32,115,101,108,102, 46,120, 32, 43, 32,115,101,
+108,102, 46,119, 32, 43, 32,109, 97,116,104, 46, 99,111,115, 40, 45,109, 97,116,
+104, 46,112,105, 42,116, 32, 43, 32,109, 97,116,104, 46,112,105, 47, 50, 41, 42,
+115,101,108,102, 46,114, 13, 10,  9,  9,  9,  9,  9, 98, 46,121, 32, 61, 32,115,
+101,108,102, 46,121, 32, 43, 32,115,101,108,102, 46,114, 32, 43, 32,109, 97,116,
+104, 46,115,105,110, 40, 45,109, 97,116,104, 46,112,105, 42,116, 32, 43, 32,109,
+ 97,116,104, 46,112,105, 47, 50, 41, 42,115,101,108,102, 46,114, 13, 10,  9,  9,
+  9,  9,101,108,115,101,105,102, 32, 98, 46,116, 32, 60, 32,115,101,108,102, 46,
+116,104, 42, 50, 32, 43, 32,115,101,108,102, 46,116, 97, 32,116,104,101,110, 13,
+ 10,  9,  9,  9,  9,  9,108,111, 99, 97,108, 32,116, 32, 61, 32, 40, 98, 46,116,
+ 32, 45, 32,115,101,108,102, 46,116,104, 42, 50, 32, 43, 32,115,101,108,102, 46,
+116, 97, 41, 47,115,101,108,102, 46,116,104, 13, 10,  9,  9,  9,  9,  9, 98, 46,
+120, 32, 61, 32,115,101,108,102, 46,120, 32, 43, 32,115,101,108,102, 46,119, 32,
+ 42, 32, 40, 50, 45,116, 41, 13, 10,  9,  9,  9,  9,  9, 98, 46,121, 32, 61, 32,
+115,101,108,102, 46,121, 32, 43, 32,115,101,108,102, 46,100, 13, 10,  9,  9,  9,
+  9,101,108,115,101,105,102, 32, 98, 46,116, 32, 60, 32,115,101,108,102, 46,116,
+111,116, 97,108, 32,116,104,101,110, 32, 13, 10,  9,  9,  9,  9,  9,108,111, 99,
+ 97,108, 32,116, 32, 61, 32, 40,115,101,108,102, 46,116,104, 42, 50, 32, 43, 32,
+115,101,108,102, 46,116, 97, 32, 45, 32, 98, 46,116, 41, 13, 10,  9,  9,  9,  9,
+  9, 98, 46,120, 32, 61, 32,115,101,108,102, 46,120, 32, 43, 32,109, 97,116,104,
+ 46, 99,111,115, 40, 45,109, 97,116,104, 46,112,105, 42,116, 32, 43, 32,109, 97,
+116,104, 46,112,105, 47, 50, 41, 42,115,101,108,102, 46,114, 13, 10,  9,  9,  9,
+  9,  9, 98, 46,121, 32, 61, 32,115,101,108,102, 46,121, 32, 43, 32,115,101,108,
+102, 46,114, 32, 43, 32,109, 97,116,104, 46,115,105,110, 40, 45,109, 97,116,104,
+ 46,112,105, 42,116, 32, 43, 32,109, 97,116,104, 46,112,105, 47, 50, 41, 42,115,
+101,108,102, 46,114, 13, 10,  9,  9,  9,  9,101,108,115,101, 13, 10,  9,  9,  9,
+  9,  9, 98, 46,116, 32, 61, 32, 98, 46,116, 32, 45, 32,115,101,108,102, 46,116,
+111,116, 97,108, 13, 10,  9,  9,  9,  9,101,110,100, 13, 10,  9,  9,  9,101,110,
+100, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 66,101,108,116, 46,100,
+114, 97,119, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 41,
+ 13, 10,  9,  9,  9,102,111,114, 32,105, 44, 98, 32,105,110, 32,105,112, 97,105,
+114,115, 40,115,101,108,102, 46,116,101,101,116,104, 41, 32,100,111, 13, 10,  9,
+  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,100,114, 97,
+119, 40,105,109, 97,103,101,115, 46, 98,101,108,116, 95,116,111,111,116,104, 44,
+ 32, 98, 46,120, 44, 32, 98, 46,121, 41, 13, 10,  9,  9,  9,101,110,100, 13, 10,
+  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 84, 97,110,107, 32, 61, 32, 79, 98,
+106,101, 99,116, 58,110,101,119, 40, 41, 13, 10,  9,  9, 84, 97,110,107, 46, 95,
+ 95,105,110,100,101,120, 32, 61, 32, 84, 97,110,107, 13, 10,  9,  9,115,101,116,
+109,101,116, 97,116, 97, 98,108,101, 40, 84, 97,110,107, 44, 32, 79, 98,106,101,
+ 99,116, 41, 13, 10, 13, 10,  9,  9, 84, 97,110,107, 46,110,101,119, 32, 61, 32,
+102,117,110, 99,116,105,111,110, 40,115,101,108,102, 41, 13, 10,  9,  9,  9,108,
+111, 99, 97,108, 32,111, 32, 61, 32,123,125, 13, 10,  9,  9,  9,111, 46,120, 32,
+ 61, 32, 50, 48, 48, 13, 10,  9,  9,  9,111, 46,121, 32, 61, 32, 52, 57, 48, 13,
+ 10,  9,  9,  9,111, 46,105, 32, 61, 32, 52, 57, 13, 10,  9,  9,  9,111, 46, 98,
+101,108,116, 32, 61, 32, 66,101,108,116, 58,110,101,119, 40, 51, 48, 41, 13, 10,
+  9,  9,  9,111, 46, 98,101,108,116, 46,120, 32, 61, 32,111, 46,120, 45, 55, 13,
+ 10,  9,  9,  9,111, 46, 98,101,108,116, 46,121, 32, 61, 32,111, 46,121, 45, 51,
+ 55, 13, 10,  9,  9,  9,111, 46, 97,110,103,108,101, 32, 61, 32, 48, 13, 10,  9,
+  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,111, 44, 32, 84, 97,
+110,107, 41, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,111, 13, 10,  9,  9,
+101,110,100, 13, 10, 13, 10,  9,  9, 84, 97,110,107, 46,117,112,100, 97,116,101,
+ 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,100,116,
+ 41, 13, 10,  9,  9,  9,115,101,108,102, 46, 97,110,103,108,101, 32, 61, 32,115,
+101,108,102, 46, 97,110,103,108,101, 32, 43, 32,100,116, 32, 42, 32,109, 97,116,
+104, 46,112,105, 47, 50, 13, 10,  9,  9,  9,115,101,108,102, 46, 98,101,108,116,
+ 58,117,112,100, 97,116,101, 40,100,116, 41, 13, 10,  9,  9,101,110,100, 13, 10,
+ 13, 10, 13, 10,  9,  9, 84, 97,110,107, 46,100,114, 97,119, 32, 61, 32,102,117,
+110, 99,116,105,111,110, 40,115,101,108,102, 41, 13, 10,  9,  9,  9,108,111,118,
+101, 46,103,114, 97,112,104,105, 99,115, 46,100,114, 97,119, 40,105,109, 97,103,
+101,115, 46,116,117,114,114,101,116, 95, 99, 97,110,110,111,110, 44, 32,115,101,
+108,102, 46,120, 43, 51, 48, 44, 32,115,101,108,102, 46,121, 45, 56, 48, 41, 13,
+ 10,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,100,114,
+ 97,119, 40,105,109, 97,103,101,115, 46,116,117,114,114,101,116, 95, 98,111,100,
+121, 44, 32,115,101,108,102, 46,120, 45, 49, 50, 44, 32,115,101,108,102, 46,121,
+ 45, 49, 49, 48, 41, 13, 10,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,
+105, 99,115, 46,100,114, 97,119, 40,105,109, 97,103,101,115, 46, 98,101,108,116,
+ 95,116,114, 97, 99,107, 44, 32,115,101,108,102, 46, 98,101,108,116, 46,120, 45,
+ 55, 52, 44, 32,115,101,108,102, 46, 98,101,108,116, 46,121, 45, 50, 56, 41, 13,
+ 10,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,100,114,
+ 97,119, 40,105,109, 97,103,101,115, 46,119,104,101,101,108, 95,109, 97,106,111,
+114, 44, 32,115,101,108,102, 46,120, 44, 32,115,101,108,102, 46,121, 44, 32,115,
+101,108,102, 46, 97,110,103,108,101, 44, 32, 49, 44, 32, 49, 44, 32, 51, 50, 44,
+ 32, 51, 50, 41, 13, 10,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105,
+ 99,115, 46,100,114, 97,119, 40,105,109, 97,103,101,115, 46,119,104,101,101,108,
+ 95,109,105,110,111,114, 44, 32,115,101,108,102, 46,120, 43,115,101,108,102, 46,
+105, 44, 32,115,101,108,102, 46,121, 44, 32,115,101,108,102, 46, 97,110,103,108,
+101, 44, 32, 49, 44, 32, 49, 44, 32, 51, 50, 44, 32, 51, 50, 41, 13, 10,  9,  9,
+  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,100,114, 97,119, 40,
+105,109, 97,103,101,115, 46,119,104,101,101,108, 95,114,101,118,105,115,105,111,
+110, 44, 32,115,101,108,102, 46,120, 43,115,101,108,102, 46,105, 42, 50, 44, 32,
+115,101,108,102, 46,121, 44, 32,115,101,108,102, 46, 97,110,103,108,101, 44, 32,
+ 49, 44, 32, 49, 44, 32, 51, 50, 44, 32, 51, 50, 41, 13, 10,  9,  9,  9,115,101,
+108,102, 46, 98,101,108,116, 58,100,114, 97,119, 40, 41, 13, 10,  9,  9,101,110,
+100, 13, 10, 13, 10,  9,  9, 66,117, 98, 98,108,101, 32, 61, 32, 79, 98,106,101,
+ 99,116, 58,110,101,119, 40, 41, 13, 10,  9,  9, 66,117, 98, 98,108,101, 46, 95,
+ 95,105,110,100,101,120, 32, 61, 32, 66,117, 98, 98,108,101, 13, 10,  9,  9,115,
+101,116,109,101,116, 97,116, 97, 98,108,101, 40, 66,117, 98, 98,108,101, 44, 32,
+ 79, 98,106,101, 99,116, 41, 13, 10, 13, 10,  9,  9, 32, 66,117, 98, 98,108,101,
+ 46,110,101,119, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102,
+ 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,111, 32, 61, 32,123,125, 13, 10,
+  9,  9,  9,111, 46,120, 32, 61, 32, 50, 52, 48, 13, 10,  9,  9,  9,111, 46,121,
+ 32, 61, 32, 49, 57, 48, 13, 10,  9,  9,  9,111, 46, 97,110,103,108,101, 32, 61,
+ 32, 48, 13, 10,  9,  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,
+111, 44, 32, 66,117, 98, 98,108,101, 41, 13, 10,  9,  9,  9,114,101,116,117,114,
+110, 32,111, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 66,117, 98, 98,
+108,101, 46,117,112,100, 97,116,101, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40,115,101,108,102, 44, 32,100,116, 41, 13, 10,  9,  9,  9,115,101,108,102, 46,
+ 97,110,103,108,101, 32, 61, 32,115,101,108,102, 46, 97,110,103,108,101, 32, 43,
+ 32,100,116, 42, 53, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9, 66,117,
+ 98, 98,108,101, 46,100,114, 97,119, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40,115,101,108,102, 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,121,118, 32,
+ 61, 32,109, 97,116,104, 46,115,105,110, 40,115,101,108,102, 46, 97,110,103,108,
+101, 41, 42, 53, 13, 10,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105,
+ 99,115, 46,100,114, 97,119, 40,105,109, 97,103,101,115, 46, 98,117, 98, 98,108,
+101, 44, 32,115,101,108,102, 46,120, 44, 32,115,101,108,102, 46,121, 43,121,118,
+ 41, 13, 10,  9,  9,  9,108,111,118,101, 46,103,114, 97,112,104,105, 99,115, 46,
+100,114, 97,119, 40,105,109, 97,103,101,115, 46,108,111,118,101, 44, 32,115,101,
+108,102, 46,120, 43, 56, 44, 32,115,101,108,102, 46,121, 43,121,118, 43, 57, 53,
+ 41, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9,116,105,109,101,114,115,
+ 32, 61, 32,123,125, 13, 10, 13, 10,  9,  9, 84,105,109,101,114, 32, 61, 32,123,
+125, 13, 10,  9,  9, 84,105,109,101,114, 46, 95, 95,105,110,100,101,120, 32, 61,
+ 32, 84,105,109,101,114, 13, 10, 13, 10,  9,  9, 84,105,109,101,114, 46,115,112,
+ 97,119,110, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44,
+ 32,116,105, 99,107, 44, 32,102, 41, 13, 10,  9,  9,  9,108,111, 99, 97,108, 32,
+111, 32, 61, 32,123, 13, 10,  9,  9,  9,  9,112, 97,115,115,101,100, 32, 61, 32,
+ 48, 44, 13, 10,  9,  9,  9,  9,116,105, 99,107, 32, 61, 32,116,105, 99,107, 44,
+ 13, 10,  9,  9,  9,  9,102, 32, 61, 32,102, 13, 10,  9,  9,  9,125, 13, 10,  9,
+  9,  9,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,111, 44, 32, 84,105,
+109,101,114, 41, 13, 10,  9,  9,  9,116, 97, 98,108,101, 46,105,110,115,101,114,
+116, 40,116,105,109,101,114,115, 44, 32,111, 41, 13, 10,  9,  9,101,110,100, 13,
+ 10, 13, 10,  9,  9, 84,105,109,101,114, 46,117,112,100, 97,116,101, 32, 61, 32,
+102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32,100,116, 41, 13, 10,
+  9,  9,  9,115,101,108,102, 46,112, 97,115,115,101,100, 32, 61, 32,115,101,108,
+102, 46,112, 97,115,115,101,100, 32, 43, 32,100,116, 13, 10,  9,  9,  9,119,104,
+105,108,101, 32,115,101,108,102, 46,112, 97,115,115,101,100, 32, 62, 32,115,101,
+108,102, 46,116,105, 99,107, 32,100,111, 13, 10,  9,  9,  9,  9,115,101,108,102,
+ 46,112, 97,115,115,101,100, 32, 61, 32,115,101,108,102, 46,112, 97,115,115,101,
+100, 32, 45, 32,115,101,108,102, 46,116,105, 99,107, 13, 10,  9,  9,  9,  9,115,
+101,108,102, 46,102, 40, 41, 13, 10,  9,  9,  9,101,110,100, 13, 10,  9,  9,101,
+110,100, 13, 10, 13, 10,  9,  9,108,105,115,116,115, 32, 61, 32,123, 13, 10,  9,
+  9,  9, 98, 32, 61, 32, 76,105,115,116, 58,110,101,119, 40, 41, 44, 32, 13, 10,
+  9,  9,  9,102, 32, 61, 32, 76,105,115,116, 58,110,101,119, 40, 41, 13, 10,  9,
+  9,125, 13, 10,  9,  9, 13, 10,  9,  9,100,111, 13, 10,  9,  9,  9,108,111, 99,
+ 97,108, 32,116, 32, 61, 32, 66,117, 98, 98,108,101, 58,110,101,119, 40, 41, 13,
+ 10,  9,  9,  9,116, 58,105,110,115,101,114,116, 40,108,105,115,116,115, 46,102,
+ 41, 13, 10,  9,  9,101,110,100, 13, 10,  9,  9, 13, 10,  9,  9,100,111, 13, 10,
+  9,  9,  9,108,111, 99, 97,108, 32,116, 32, 61, 32, 84, 97,110,107, 58,110,101,
+119, 40, 41, 13, 10,  9,  9,  9,116, 58,105,110,115,101,114,116, 40,108,105,115,
+116,115, 46,102, 41, 13, 10,  9,  9,101,110,100, 13, 10, 13, 10,  9,  9,102,111,
+114, 32,105, 61, 49, 44, 51, 32,100,111, 13, 10,  9,  9,  9,108,111, 99, 97,108,
+ 32,116, 32, 61, 32, 84,114,101,101, 58,110,101,119, 40, 53, 48, 44, 32, 51, 48,
+ 48, 41, 13, 10,  9,  9,  9,116, 58,105,110,115,101,114,116, 40,108,105,115,116,
+115, 46, 98, 41, 13, 10,  9,  9,101,110,100, 13, 10,  9,  9, 13, 10, 13, 10,  9,
+  9,102,111,114, 32,105, 61, 49, 44, 50, 32,100,111, 13, 10,  9,  9,  9,108,111,
+ 99, 97,108, 32,116, 32, 61, 32, 75,110,111,108,108, 58,110,101,119, 40, 49, 44,
+ 32, 53, 48, 44, 32, 49, 48, 48, 41, 13, 10,  9,  9,  9,116, 58,105,110,115,101,
+114,116, 40,108,105,115,116,115, 46, 98, 41, 13, 10,  9,  9,101,110,100, 13, 10,
+ 13, 10,  9,  9,102,111,114, 32,105, 61, 49, 44, 52, 48, 32,100,111, 13, 10,  9,
+  9,  9,108,111, 99, 97,108, 32,116, 32, 61, 32, 83,116, 97,114, 58,110,101,119,
+ 40, 49, 48, 48, 44, 32, 49, 41, 13, 10,  9,  9,  9,116, 58,105,110,115,101,114,
+116, 40,108,105,115,116,115, 46, 98, 41, 13, 10,  9,  9,101,110,100, 13, 10, 13,
+ 10,  9,  9,102,111,114, 32,105, 61, 49, 44, 53, 32,100,111, 13, 10,  9,  9,  9,
+108,111, 99, 97,108, 32,116, 32, 61, 32, 75,110,111,108,108, 58,110,101,119, 40,
+ 50, 44, 32, 49, 48, 48, 44, 32, 53, 48, 41, 13, 10,  9,  9,  9,116, 58,105,110,
+115,101,114,116, 40,108,105,115,116,115, 46, 98, 41, 13, 10,  9,  9,101,110,100,
+ 13, 10,  9,  9, 13, 10,  9,  9,102,111,114, 32,105, 44,118, 32,105,110, 32,112,
+ 97,105,114,115, 40,108,105,115,116,115, 41, 32,100,111, 13, 10,  9,  9,  9,118,
+ 58,117,112,100, 97,116,101, 40, 49, 48, 41, 13, 10,  9,  9,101,110,100, 13, 10,
+  9,  9, 13, 10,  9,101,110,100, 13, 10, 13, 10, 13, 10, 13, 10,  9,108,111,118,
+101, 46,117,112,100, 97,116,101, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,
+100,116, 41, 13, 10, 13, 10,  9,  9,102,111,114, 32,105, 44,118, 32,105,110, 32,
+105,112, 97,105,114,115, 40,116,105,109,101,114,115, 41, 32,100,111, 32,118, 58,
+117,112,100, 97,116,101, 40,100,116, 41, 32,101,110,100, 13, 10, 13, 10, 13, 10,
+  9,  9,102,111,114, 32,105, 44,118, 32,105,110, 32,112, 97,105,114,115, 40,108,
+105,115,116,115, 41, 32,100,111, 13, 10,  9,  9,  9,118, 58,117,112,100, 97,116,
+101, 40,100,116, 41, 13, 10,  9,  9,101,110,100, 13, 10,  9,  9, 13, 10,  9,  9,
+108,111,118,101, 46,116,105,109,101,114, 46,115,108,101,101,112, 40, 49, 48, 41,
+ 13, 10,  9,101,110,100, 13, 10, 13, 10, 13, 10,  9,108,111,118,101, 46,100,114,
+ 97,119, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 13, 10, 13, 10,  9,
+  9,108,105,115,116,115, 46, 98, 58,100,114, 97,119, 40, 41, 13, 10,  9,  9, 13,
+ 10,  9,  9, 45, 45, 32, 71,114,111,117,110,100, 13, 10,  9,  9,108,111,118,101,
+ 46,103,114, 97,112,104,105, 99,115, 46,115,101,116, 67,111,108,111,114, 40, 49,
+ 52, 54, 44, 32, 50, 48, 49, 44, 32, 56, 55, 41, 13, 10,  9,  9,108,111,118,101,
+ 46,103,114, 97,112,104,105, 99,115, 46,114,101, 99,116, 97,110,103,108,101, 40,
+108,111,118,101, 46,100,114, 97,119, 95,102,105,108,108, 44, 32, 48, 44, 32, 53,
+ 51, 48, 44, 32, 56, 48, 48, 44, 32, 55, 48, 41, 13, 10,  9,  9,108,111,118,101,
+ 46,103,114, 97,112,104,105, 99,115, 46,115,101,116, 67,111,108,111,114, 40, 50,
+ 48, 53, 44, 32, 50, 50, 55, 44, 32, 49, 54, 49, 41, 13, 10,  9,  9,108,111,118,
+101, 46,103,114, 97,112,104,105, 99,115, 46,114,101, 99,116, 97,110,103,108,101,
+ 40,108,111,118,101, 46,100,114, 97,119, 95,102,105,108,108, 44, 32, 48, 44, 32,
+ 53, 50, 48, 44, 32, 56, 48, 48, 44, 32, 49, 48, 41, 13, 10,  9,  9,108,111,118,
+101, 46,103,114, 97,112,104,105, 99,115, 46,115,101,116, 67,111,108,111,114, 40,
+ 50, 53, 53, 44, 32, 50, 53, 53, 44, 32, 50, 53, 53, 41, 13, 10,  9,  9, 13, 10,
+  9,  9,108,105,115,116,115, 46,102, 58,100,114, 97,119, 40, 41, 13, 10,  9,  9,
+ 13, 10,  9,101,110,100, 13, 10,  9, 13, 10,  9,108,111,118,101, 46, 99,111,110,
+102, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,116, 41, 13, 10,  9,  9,116,
+ 46,116,105,116,108,101, 32, 61, 32, 34, 42, 84, 97,110,107, 42, 32,121,111,117,
+ 32,117,115,105,110,103, 32, 76, 79, 86, 69, 32, 34, 32, 46, 46, 32,108,111,118,
+101, 46, 95,118,101,114,115,105,111,110, 95,115,116,114,105,110,103, 32, 46, 46,
+ 32, 34, 32, 40, 34, 32, 46, 46, 32,108,111,118,101, 46, 95,118,101,114,115,105,
+111,110, 95, 99,111,100,101,110, 97,109,101, 32, 46, 46, 32, 34, 41, 34, 13, 10,
+  9,  9,116, 46,109,111,100,117,108,101,115, 46, 97,117,100,105,111, 32, 61, 32,
+102, 97,108,115,101, 13, 10,  9,  9,116, 46,109,111,100,117,108,101,115, 46,115,
+111,117,110,100, 32, 61, 32,102, 97,108,115,101, 13, 10,  9,  9,116, 46,109,111,
+100,117,108,101,115, 46,112,104,121,115,105, 99,115, 32, 61, 32,102, 97,108,115,
+101, 13, 10,  9,  9,116, 46,109,111,100,117,108,101,115, 46,106,111,121,115,116,
+105, 99,107, 32, 61, 32,102, 97,108,115,101, 13, 10,  9,  9,116, 46,109,111,100,
+117,108,101,115, 46,110, 97,116,105,118,101, 32, 61, 32,102, 97,108,115,101, 13,
+ 10,  9,  9,116, 46,109,111,100,117,108,101,115, 46,102,111,110,116, 32, 61, 32,
+102, 97,108,115,101, 13, 10,  9,101,110,100, 13, 10,  9, 13, 10,101,110,100, 13,
+ 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45,
- 45, 32, 69,114,114,111,114, 32,115, 99,114,101,101,110, 46, 13, 10, 45, 45, 45,
+ 45, 45, 13, 10, 45, 45, 32, 69,114,114,111,114, 32,115, 99,114,101,101,110, 46,
+ 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,
-102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,101,114,114,111,114,115,
- 99,114,101,101,110, 40, 41, 13, 10,  9, 13, 10,  9, 45, 45, 32, 77, 97,105,110,
- 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114,101, 46, 13, 10, 13, 10,
-101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 13, 10, 13, 10,102,117,110, 99,116,105,111,110, 32,108,111,118,101, 46,101,
+114,114,111,114,115, 99,114,101,101,110, 40, 41, 13, 10,  9, 13, 10,  9, 45, 45,
+ 32, 77, 97,105,110, 32,108,111,111,112, 32,103,111,101,115, 32,104,101,114,101,
+ 46, 13, 10, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 84,104,101, 32,114,111,111,116, 32,
-111,102, 32, 97,108,108, 32, 99, 97,108,108,115, 46, 13, 10, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 45, 45, 32, 84,104,101, 32,
+114,111,111,116, 32,111,102, 32, 97,108,108, 32, 99, 97,108,108,115, 46, 13, 10,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
  45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13, 10, 13, 10,102,117,
-110, 99,116,105,111,110, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114,
- 40,109,115,103, 41, 13, 10,  9,112,114,105,110,116, 40, 34, 98,111,111,116, 34,
- 44, 32,109,115,103, 44, 32,100,101, 98,117,103, 46,116,114, 97, 99,101, 98, 97,
- 99,107, 40, 41, 41, 13, 10,101,110,100, 13, 10, 13, 10,114,101,115,117,108,116,
- 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46, 98,111,111,116, 44,
- 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, 13, 10,114,101,115,
-117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46,105,110,
-105,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41, 13, 10,
-114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101,
- 46,114,117,110, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41,
- 13, 10, 13, 10,112,114,105,110,116, 40, 34, 68,111,110,101, 46, 34, 41,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 13,
+ 10, 13, 10,102,117,110, 99,116,105,111,110, 32,101,114,114,111,114, 95,112,114,
+105,110,116,101,114, 40,109,115,103, 41, 13, 10,  9,112,114,105,110,116, 40, 34,
+ 98,111,111,116, 34, 44, 32,109,115,103, 44, 32,100,101, 98,117,103, 46,116,114,
+ 97, 99,101, 98, 97, 99,107, 40, 41, 41, 13, 10,101,110,100, 13, 10, 13, 10,114,
+101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,118,101, 46,
+ 98,111,111,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,101,114, 41,
+ 13, 10,114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108, 40,108,111,
+118,101, 46,105,110,105,116, 44, 32,101,114,114,111,114, 95,112,114,105,110,116,
+101,114, 41, 13, 10,114,101,115,117,108,116, 32, 61, 32,120,112, 99, 97,108,108,
+ 40,108,111,118,101, 46,114,117,110, 44, 32,101,114,114,111,114, 95,112,114,105,
+110,116,101,114, 41, 13, 10, 13, 10,112,114,105,110,116, 40, 34, 68,111,110,101,
+ 46, 34, 41,
 };
 };
 
 
  if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"boot.lua")==0) lua_call(L, 0, 0);
  if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"boot.lua")==0) lua_call(L, 0, 0);