Index: /ColladaPlugin/Makefile.am
===================================================================
--- /ColladaPlugin/Makefile.am	(revision 21)
+++ /ColladaPlugin/Makefile.am	(revision 21)
@@ -0,0 +1,9 @@
+SUBDIRS=src include demo
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = OGRE-Plugin_Collada.pc
+
+MAINTAINERCLEANFILES = \
+	Makefile.in configure \
+	install-sh stamp-h.in aclocal.m4 mkinstalldirs missing \
+	autom4te.cache config.guess config.sub ltmain.sh depcomp
Index: /ColladaPlugin/OGRE-Plugin_Collada.pc.in
===================================================================
--- /ColladaPlugin/OGRE-Plugin_Collada.pc.in	(revision 21)
+++ /ColladaPlugin/OGRE-Plugin_Collada.pc.in	(revision 21)
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=${prefix}/include
+plugindir=@OGRE_PLUGINDIR@
+
+Name: OGRE-Plugin_Collada
+Description: Collada importer plugin for OGRE
+Version: @VERSION@
+Libs: -rpath ${plugindir} ${plugindir}/Plugin_Collada.so
+Cflags: -I${includedir}/@PACKAGE@ @OGRE_CFLAGS@  
Index: /ColladaPlugin/OgreColladaPlugin.sln
===================================================================
--- /ColladaPlugin/OgreColladaPlugin.sln	(revision 21)
+++ /ColladaPlugin/OgreColladaPlugin.sln	(revision 21)
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_Collada", "OgreColladaPlugin.vcproj", "{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}.Debug.ActiveCfg = Debug|Win32
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}.Debug.Build.0 = Debug|Win32
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}.Release.ActiveCfg = Release|Win32
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: /ColladaPlugin/OgreColladaPlugin.vcproj
===================================================================
--- /ColladaPlugin/OgreColladaPlugin.vcproj	(revision 21)
+++ /ColladaPlugin/OgreColladaPlugin.vcproj	(revision 21)
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Plugin_Collada"
+	ProjectGUID="{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}"
+	RootNamespace="OgreColladaPlugin"
+	Keyword="ManagedCProj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="bin\$(ConfigurationName)"
+			IntermediateDirectory="obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			ManagedExtensions="FALSE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="include;&quot;$(OGRE_HOME)\include&quot;;&quot;$(LIBXML_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PLUGIN_COLLADA_EXPORT"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				BufferSecurityCheck="TRUE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				WarnAsError="TRUE"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				RegisterOutput="FALSE"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain_d.lib libxml2.lib"
+				OutputFile="$(OutDir)\$(ProjectName).dll"
+				Version="0.4"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;;&quot;$(LIBXML_HOME)\lib&quot;"
+				ModuleDefinitionFile="misc\OgreColladaDll.def"
+				GenerateDebugInformation="TRUE"
+				AssemblyDebug="0"
+				SubSystem="0"
+				OptimizeForWindows98="1"
+				ImportLibrary=""
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="bin\$(ConfigurationName)"
+			IntermediateDirectory="obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			ManagedExtensions="FALSE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="include;&quot;$(OGRE_HOME)\include&quot;;&quot;$(LIBXML_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_COLLADA_EXPORT"
+				StringPooling="TRUE"
+				MinimalRebuild="FALSE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="TRUE"
+				WarningLevel="3"
+				WarnAsError="FALSE"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain.lib libxml2.lib"
+				OutputFile="$(OutDir)\$(ProjectName).dll"
+				Version="0.4"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;;&quot;$(LIBXML_HOME)\lib&quot;"
+				GenerateDebugInformation="TRUE"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Quelldateien"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="src\OgreColladaCamera.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaDll.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaDocument.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaEntity.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaGeometry.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaLibrary.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaLight.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaMaterial.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaScene.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaTexture.cpp">
+			</File>
+			<File
+				RelativePath="src\OgreColladaUtils.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Headerdateien"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="include\OgreColladaCamera.h">
+			</File>
+			<File
+				RelativePath="misc\OgreColladaDll.def">
+			</File>
+			<File
+				RelativePath="include\OgreColladaDocument.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaEntity.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaGeometry.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaLibrary.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaLight.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaMaterial.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaPrerequisites.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaScene.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaSyntax.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaTexture.h">
+			</File>
+			<File
+				RelativePath="include\OgreColladaUtils.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Ressourcendateien"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+		<File
+			RelativePath="Readme">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ColladaPlugin/OgreColladaPlugin_vc8.sln
===================================================================
--- /ColladaPlugin/OgreColladaPlugin_vc8.sln	(revision 21)
+++ /ColladaPlugin/OgreColladaPlugin_vc8.sln	(revision 21)
@@ -0,0 +1,28 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual C++ Express 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_Collada", "OgreColladaPlugin_vc8.vcproj", "{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_Collada", "demo\scripts\Demo_Collada_vc8.vcproj", "{15613409-8F0E-4AC6-91EB-0792419A543D}"
+	ProjectSection(ProjectDependencies) = postProject
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A} = {18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}.Debug|Win32.Build.0 = Debug|Win32
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}.Release|Win32.ActiveCfg = Release|Win32
+		{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}.Release|Win32.Build.0 = Release|Win32
+		{15613409-8F0E-4AC6-91EB-0792419A543D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{15613409-8F0E-4AC6-91EB-0792419A543D}.Debug|Win32.Build.0 = Debug|Win32
+		{15613409-8F0E-4AC6-91EB-0792419A543D}.Release|Win32.ActiveCfg = Release|Win32
+		{15613409-8F0E-4AC6-91EB-0792419A543D}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
Index: /ColladaPlugin/OgreColladaPlugin_vc8.vcproj
===================================================================
--- /ColladaPlugin/OgreColladaPlugin_vc8.vcproj	(revision 21)
+++ /ColladaPlugin/OgreColladaPlugin_vc8.vcproj	(revision 21)
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="Plugin_Collada"
+	ProjectGUID="{18BE7001-ECD6-4311-B0F8-DE6F2F27EF5A}"
+	RootNamespace="OgreColladaPlugin"
+	Keyword="ManagedCProj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(OGRE_HOME)\bin\$(ConfigurationName)"
+			IntermediateDirectory="obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			ManagedExtensions="0"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="include;&quot;$(OGRE_HOME)\include&quot;;&quot;$(LIBXML_HOME)\include&quot;;&quot;$(OGRE_HOME)\OgreMain\include&quot;;&quot;$(ICONV_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PLUGIN_COLLADA_EXPORT"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				BufferSecurityCheck="true"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				WarnAsError="true"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				RegisterOutput="false"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="OgreMain_d.lib libxml2.lib"
+				OutputFile="$(OutDir)\$(ProjectName).dll"
+				Version="0.4"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;;&quot;$(LIBXML_HOME)\lib&quot;;&quot;$(OGRE_HOME)\OgreMain\lib&quot;"
+				ModuleDefinitionFile="misc\OgreColladaDll.def"
+				GenerateDebugInformation="true"
+				AssemblyDebug="0"
+				SubSystem="0"
+				OptimizeForWindows98="1"
+				ImportLibrary="$(OGRE_HOME)/lib/$(ConfigurationName)/$(ProjectName).lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) .\Demo\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(OGRE_HOME)\bin\$(ConfigurationName)"
+			IntermediateDirectory="obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			ManagedExtensions="0"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="include;&quot;$(OGRE_HOME)\include&quot;;&quot;$(LIBXML_HOME)\include&quot;;&quot;$(OGRE_HOME)\OgreMain\include&quot;;&quot;$(ICONV_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_COLLADA_EXPORT"
+				StringPooling="true"
+				MinimalRebuild="false"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				WarningLevel="3"
+				WarnAsError="false"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="OgreMain.lib libxml2.lib"
+				OutputFile="$(OutDir)\$(ProjectName).dll"
+				Version="0.4"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib&quot;;&quot;$(LIBXML_HOME)\lib&quot;;&quot;$(OGRE_HOME)\OgreMain\lib&quot;;&quot;$(ICONV_HOME)\lib&quot;"
+				GenerateDebugInformation="true"
+				ImportLibrary="$(OGRE_HOME)/lib/$(ConfigurationName)/$(ProjectName).lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) .\Demo\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\src\OgreColladaAsset.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaCamera.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaDll.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaDocument.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaEntity.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaGeometry.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaLibrary.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaLight.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\src\OgreColladaManager.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaMaterial.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaScene.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaTexture.cpp"
+				>
+			</File>
+			<File
+				RelativePath="src\OgreColladaUtils.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Headers"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath=".\include\OgreColladaAsset.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaCamera.h"
+				>
+			</File>
+			<File
+				RelativePath="misc\OgreColladaDll.def"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaDocument.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaEntity.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaGeometry.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaLibrary.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaLight.h"
+				>
+			</File>
+			<File
+				RelativePath=".\include\OgreColladaManager.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaMaterial.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaPrerequisites.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaScene.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaSyntax.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaTexture.h"
+				>
+			</File>
+			<File
+				RelativePath="include\OgreColladaUtils.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resources"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<File
+			RelativePath="Readme"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ColladaPlugin/README
===================================================================
--- /ColladaPlugin/README	(revision 21)
+++ /ColladaPlugin/README	(revision 21)
@@ -0,0 +1,105 @@
+-------------------------------------------------------------------------------
+ README
+-------------------------------------------------------------------------------
+
+ This source file is part of OgreColladaPlugin
+ an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ For the latest info, see http://www.ogre3d.org/
+
+ Copyright (C) 2006 Philipp Hartl
+ http://www.philipp.h.bkf.at/OgreColladaPlugin
+
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any later
+ version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ http://www.gnu.org/copyleft/lesser.txt.
+
+-------------------------------------------------------------------------------
+ directories
+-------------------------------------------------------------------------------
+
+working_dir
+  bin
+    *.dll *.lib debug and release version
+  docs
+   introduction and doxygen
+  include
+    *.h
+  misc
+    *.def
+  obj
+    *.obj and debug database
+  src
+    *.cpp
+
+-------------------------------------------------------------------------------
+ development and requirements
+-------------------------------------------------------------------------------
+
+Windows:
+
+ This project was created with VS 7.1 under Windows.
+
+ need \include and \lib directories of
+
+ OGRE_HOME		... env variable of Ogre SDK or ogrenew
+ LIBXML_HOME	... env variable of libxml2
+
+ Libraries:
+ 	Ogre:  	OgreMain(_d).lib
+ 	Libxml:	libxml2.lib
+
+Linux:
+
+ The Linux build system uses autotools. It was developed on a machine with
+ these versions:
+
+   autoconf 2.60
+   automake 1.9.6
+   libtool 1.5.22 
+
+ To build:
+
+   ./bootstrap.sh
+   ./configure
+   make
+
+ To run the demo, you need to install the plugin (as root):
+
+   make install
+
+ And, since the plugins.cfg file has been checked into CVS with a capital letter, 
+ you need to fix that:
+
+   cd demo/bin/Debug
+   cp Plugins.cfg plugins.cfg
+
+ You will also need to plugins.cfg to take out the Direct3D renderer.
+
+ Then you should be ready to go:
+
+   ./ColladaDemo
+
+-------------------------------------------------------------------------------
+ libxml (iconv)
+-------------------------------------------------------------------------------
+
+ For further details visit http://www.xmlsoft.org
+
+ Maya uses a self-precompiled version of libxml2-2.6.19 (and above) without
+ ivonv (it is used for character encoding).
+ They have set the makro LIBXML_ICONV_ENABLED 0 in xmlversion.h and linked the
+ library statically into their plugin with LIBXML_STATIC.
+
+ There is no problem to use libxml2 with iconv enabled dynamically. So you
+ need to set the paths for include and library directories in your development
+ IDE.
Index: /ColladaPlugin/bootstrap
===================================================================
--- /ColladaPlugin/bootstrap	(revision 21)
+++ /ColladaPlugin/bootstrap	(revision 21)
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# clean up files which cause confusion when switch versions of auto*
+rm -rf autom4te.cache
+
+# Fire up autotools
+libtoolize --force && 
+aclocal $ACLOCAL_FLAGS && 
+autoheader && 
+automake --include-deps --add-missing --foreign &&
+autoconf
Index: /ColladaPlugin/configure.ac
===================================================================
--- /ColladaPlugin/configure.ac	(revision 21)
+++ /ColladaPlugin/configure.ac	(revision 21)
@@ -0,0 +1,39 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.59)
+AC_INIT(Plugin_Collada, 0.0, philipp.hartl@bkf.at)
+AC_CONFIG_SRCDIR([src/OgreColladaDll.cpp])
+AC_CONFIG_HEADERS([config.h])
+
+AM_INIT_AUTOMAKE
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_INSTALL
+
+AC_PROG_LIBTOOL
+
+# Checks for libraries.
+
+PKG_CHECK_MODULES([OGRE], [OGRE], AC_SUBST(OGRE_PLUGINDIR,`pkg-config --variable plugindir OGRE`))
+PKG_CHECK_MODULES([CEGUI], [CEGUI])
+PKG_CHECK_MODULES([CEGUI_OGRE], [CEGUI-OGRE])
+PKG_CHECK_MODULES([XML2], [libxml-2.0])
+
+# Checks for header files.
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_TYPE_SIZE_T
+
+# Checks for library functions.
+
+AC_CONFIG_FILES([
+	Makefile 
+	src/Makefile 
+	include/Makefile 
+	demo/Makefile 
+	demo/src/Makefile 
+	demo/include/Makefile
+	OGRE-Plugin_Collada.pc])
+AC_OUTPUT
Index: /ColladaPlugin/demo/Makefile.am
===================================================================
--- /ColladaPlugin/demo/Makefile.am	(revision 21)
+++ /ColladaPlugin/demo/Makefile.am	(revision 21)
@@ -0,0 +1,3 @@
+SUBDIRS=src include
+
+MAINTAINERCLEANFILES = Makefile.in
Index: /ColladaPlugin/demo/bin/Debug/Plugins.cfg
===================================================================
--- /ColladaPlugin/demo/bin/Debug/Plugins.cfg	(revision 21)
+++ /ColladaPlugin/demo/bin/Debug/Plugins.cfg	(revision 21)
@@ -0,0 +1,14 @@
+# Defines plugins to load
+
+# Define plugin folder
+PluginFolder=.
+
+# Define plugins
+Plugin=RenderSystem_Direct3D9
+Plugin=RenderSystem_GL
+Plugin=Plugin_ParticleFX
+Plugin=Plugin_OctreeSceneManager
+Plugin=Plugin_CgProgramManager
+Plugin=Plugin_Collada
+
+
Index: /ColladaPlugin/demo/bin/Debug/resources.cfg
===================================================================
--- /ColladaPlugin/demo/bin/Debug/resources.cfg	(revision 21)
+++ /ColladaPlugin/demo/bin/Debug/resources.cfg	(revision 21)
@@ -0,0 +1,10 @@
+# Resource locations to be added to the 'boostrap' path
+# This also contains the minimum you need to use the Ogre example framework
+[Bootstrap]
+
+# Resource locations to be added to the default path
+[General]
+FileSystem=../../media
+FileSystem=../../media/Fonts
+FileSystem=../../media/gui
+FileSystem=../../media/dae
Index: /ColladaPlugin/demo/bin/Release/Plugins.cfg
===================================================================
--- /ColladaPlugin/demo/bin/Release/Plugins.cfg	(revision 21)
+++ /ColladaPlugin/demo/bin/Release/Plugins.cfg	(revision 21)
@@ -0,0 +1,14 @@
+# Defines plugins to load
+
+# Define plugin folder
+PluginFolder=.
+
+# Define plugins
+Plugin=RenderSystem_Direct3D9
+Plugin=RenderSystem_GL
+Plugin=Plugin_ParticleFX
+Plugin=Plugin_OctreeSceneManager
+Plugin=Plugin_CgProgramManager
+Plugin=Plugin_Collada
+
+
Index: /ColladaPlugin/demo/bin/Release/resources.cfg
===================================================================
--- /ColladaPlugin/demo/bin/Release/resources.cfg	(revision 21)
+++ /ColladaPlugin/demo/bin/Release/resources.cfg	(revision 21)
@@ -0,0 +1,10 @@
+# Resource locations to be added to the 'boostrap' path
+# This also contains the minimum you need to use the Ogre example framework
+[Bootstrap]
+
+# Resource locations to be added to the default path
+[General]
+FileSystem=../../Media
+FileSystem=../../Media/Fonts
+FileSystem=../../Media/gui
+FileSystem=../../Media/dae
Index: /ColladaPlugin/demo/include/ColladaDemo.h
===================================================================
--- /ColladaPlugin/demo/include/ColladaDemo.h	(revision 21)
+++ /ColladaPlugin/demo/include/ColladaDemo.h	(revision 21)
@@ -0,0 +1,105 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2006 The OGRE Team
+Also see acknowledgements in Readme.html
+
+You may use this sample code for anything you like, it is not covered by the
+LGPL like the rest of the engine.
+-----------------------------------------------------------------------------
+*/
+
+#ifndef _ColladaDemo_H_
+#define _ColladaDemo_H_
+
+#include "Ogre.h"
+#include "CEGUI/CEGUI.h"
+#include "CEGUI/CEGUIRenderer.h"
+
+//---------------------------------------------------------------------------
+class UIHandler;
+
+class ColladaDemo
+{
+protected:
+    Ogre::Root*			  mRoot;
+    Ogre::SceneManager*	  mSceneMgr;
+    UIHandler*            mFrameListener;
+    Ogre::RenderWindow*	  mWindow;
+    Ogre::Camera*         mActiveCamera;
+
+    CEGUI::Renderer*		mGUIRenderer;
+    CEGUI::System*        mGUISystem;
+    CEGUI::Window*        mLoadingWindow;
+    Ogre::String          mActiveDaeFileName;
+    unsigned int          mLastUpdateTime;
+    float                 mElapsedTime;
+    bool                  mAutoReload;
+    bool                  mLoadQued;
+    unsigned long         mLastFrameNumber;
+
+    // These internal methods package up the stages in the startup process
+    /** Sets up the application - returns false if the user chooses to abandon configuration. */
+    bool setup();
+
+	/** Configures the application - returns false if the user chooses to abandon configuration. */
+    bool configure();
+    void createDefaultCamera();
+    void createViewports();
+    void updateAvailableCameras();
+    void updateDaeFileList();
+
+    /// Method which will define the source of resources (other than current folder)
+    void setupResources();
+    bool setupGUI();
+	void createFrameListener();
+
+	void initDemoEventWiring();
+
+	void doErrorBox(const char* text);
+    void viewColladaDocument(const Ogre::String& daeFileName);
+
+	bool handleQuit(const CEGUI::EventArgs& e);
+	bool handleDaeComboChanged(const CEGUI::EventArgs& e);
+    bool handleCameraComboChanged(const CEGUI::EventArgs& e);
+    bool handleAutoReloadChanged(const CEGUI::EventArgs& e);
+	bool handleErrorBox(const CEGUI::EventArgs& e);
+    bool handleUpdateList(const CEGUI::EventArgs& e);
+
+public:
+	ColladaDemo()
+        : mRoot(0)
+        , mFrameListener(0)
+        , mGUIRenderer(0)
+        , mGUISystem(0)
+        , mLoadingWindow(0)
+        , mLastUpdateTime(0)
+        , mElapsedTime(0.0)
+        , mAutoReload(false)
+        , mLoadQued(false)
+        , mLastFrameNumber(0)
+    {
+    }
+
+    ~ColladaDemo();
+
+    void go();
+
+    void ColladaDemo::setActiveCamera(const Ogre::String& cameraName);
+    Ogre::Camera* getActiveCamera() const { return mActiveCamera; }
+	Ogre::SceneManager* getSceneManager() const { return mSceneMgr; }
+	Ogre::RenderWindow* getRenderWindow() const { return mWindow; }
+
+    void clearScene();
+    void loadActiveDae();
+    void updateAutoReload(float time);
+    bool checkActiveFileUpdated();
+    void showLoadingWindow(const bool show);
+
+};
+
+
+#endif	// end _ColladaDemo_H_
Index: /ColladaPlugin/demo/include/Makefile.am
===================================================================
--- /ColladaPlugin/demo/include/Makefile.am	(revision 21)
+++ /ColladaPlugin/demo/include/Makefile.am	(revision 21)
@@ -0,0 +1,3 @@
+noinst_HEADERS = ColladaDemo.h UIHandler.h
+
+MAINTAINERCLEANFILES = Makefile.in
Index: /ColladaPlugin/demo/include/UIHandler.h
===================================================================
--- /ColladaPlugin/demo/include/UIHandler.h	(revision 21)
+++ /ColladaPlugin/demo/include/UIHandler.h	(revision 21)
@@ -0,0 +1,109 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2006 The OGRE Team
+Also see acknowledgements in Readme.html
+
+You may use this sample code for anything you like, it is not covered by the
+LGPL like the rest of the engine.
+-----------------------------------------------------------------------------
+*/
+
+#ifndef _UIHandler_H_
+#define _UIHandler_H_
+
+#include "CEGUI/CEGUI.h"
+
+#include "OgreFrameListener.h"
+#include <OIS/OIS.h>
+
+class ColladaDemo;
+
+class UIHandler : public Ogre::FrameListener, public OIS::KeyListener, OIS::MouseListener
+{
+#define MINSPEED .150f
+#define MOVESPEED 30
+#define MAXSPEED 1.800f
+
+
+protected:
+	ColladaDemo* mMain;
+
+    Ogre::Vector3 mTranslateVector;
+    bool mStatsOn;
+	unsigned int mNumScreenShots;
+    float mMoveScale;
+    float mRotScale;
+	float mSpeed;
+	float mAvgFrameTime;
+	int mSceneDetailIndex;
+    Ogre::Real mMoveSpeed;
+    Ogre::Real mRotateSpeed;
+	float mSkipCount;
+	float mUpdateFreq;
+	CEGUI::Point mLastMousePosition;
+	bool mLastMousePositionSet;
+
+	OIS::Mouse *mMouse;
+	OIS::Keyboard *mKeyboard;
+    OIS::InputManager* mInputManager;
+
+    float mRotX, mRotY;
+    Ogre::TextureFilterOptions mFiltering;
+    int mAniso;
+	bool mQuit;
+	bool mLMBDown;
+	bool mRMBDown;
+	bool mProcessMovement;
+	bool mUpdateMovement;
+	bool mMoveFwd;
+	bool mMoveBck;
+	bool mMoveLeft;
+	bool mMoveRight;
+
+	CEGUI::Renderer* mGuiRenderer;
+	CEGUI::Window* mGuiAvg;
+	CEGUI::Window* mGuiCurr;
+	CEGUI::Window* mGuiBest;
+	CEGUI::Window* mGuiWorst;
+	CEGUI::Window* mGuiTris;
+	CEGUI::Window* mGuiDbg;
+	CEGUI::Window* mRoot;
+
+	CEGUI::MouseButton convertOgreButtonToCegui(OIS::MouseButtonID b);
+	void CheckMovementKeys( CEGUI::Key::Scan keycode, bool state );
+	void updateStats();
+
+
+public:
+	UIHandler(ColladaDemo* main);
+	virtual ~UIHandler();
+
+
+	virtual bool mouseMoved (const OIS::MouseEvent &e);
+	virtual bool mouseDragged (const OIS::MouseEvent &e);
+	virtual bool keyPressed (const OIS::KeyEvent &e);
+	virtual bool keyReleased (const OIS::KeyEvent &e);
+	virtual bool mousePressed (const OIS::MouseEvent &e,OIS::MouseButtonID);
+	virtual bool mouseReleased (const OIS::MouseEvent &e,OIS::MouseButtonID);
+
+	// do-nothing events
+	virtual bool keyClicked (const OIS::KeyEvent &e) {return false;}
+	virtual bool mouseClicked (const OIS::MouseEvent &e) {return false;}
+	virtual bool mouseEntered (const OIS::MouseEvent &e) {return false;}
+	virtual bool mouseExited (const OIS::MouseEvent &e) {return false;}
+
+
+	bool frameStarted(const Ogre::FrameEvent& evt);
+	bool handleMouseMove(const CEGUI::EventArgs& e);
+	bool handleMouseButtonUp(const CEGUI::EventArgs& e);
+	bool handleMouseButtonDown(const CEGUI::EventArgs& e);
+	bool handleMouseWheelEvent(const CEGUI::EventArgs& e);
+	bool handleKeyDownEvent(const CEGUI::EventArgs& e);
+	bool handleKeyUpEvent(const CEGUI::EventArgs& e);
+};
+
+#endif // _UIHandler_H_
Index: /ColladaPlugin/demo/media/Fonts/read_me.html
===================================================================
--- /ColladaPlugin/demo/media/Fonts/read_me.html	(revision 21)
+++ /ColladaPlugin/demo/media/Fonts/read_me.html	(revision 21)
@@ -0,0 +1,2 @@
+<html><head><title>Larabie Fonts "read me" file, license and FAQ</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta name="keywords" content="typodermic,typo dermic,fonts,Larabie,Larabie Fonts,fontd,fotn,fnots,fons,fots,fnts,font,truetype,typefaces,typeface,logo,ttf,opentype,larbie,laribie,larby,larabee,lairby,larrabie,larraby,laraby,typography,Type1,postscript,macintosh,windows,design,lettering,type"><font face="Georgia"><h3>LARABIE FONTS README.TXT</h3><p>All Larabie Fonts in this file are free to use for personal and/or commercial purposes. No payment is necessary to use these fonts for personal or commercial use. For Software Products who want to include Larabie Fonts see the License Agreement below. You can add this font to a website but do not combine fonts into a single archive or alter them in any way.</p><p>All Larabie Fonts are free for commercial use but a sample of your product would be gratefully appreciated so I can see how the font looks in use. Contact <a href="http://www.larabiefonts.com/donation.html">www.larabiefonts.com/donation.html</a> for mailing information.</p><p>Some Larabie Fonts have enhanced and expanded families available for sale at <a href="http://www.typodermic.com">www.typodermic.com</a>.</p><p>If you'd like to make a voluntary donation to Larabie Fonts for the use of the free fonts in any amount please go to <a href="http://www.larabiefonts.com/donation.html">www.larabiefonts.com/donation.html</a></p><p>I accept CDs, magazines, t-shirts, a sample of your merchandise or anything featuring Larabie Fonts. Please remember to list your item as a gift on the customs form or I will have to pay import duties and taxes on the item. Mailing information is provided at the link above.</p><p>Font installation help is available at <a href="http://www.larabiefonts.com/help.html">www.larabiefonts.com/help.html</a></p><h3>LARABIE FONTS FREQUENTLY ASKED QUESTIONS</h3><ul><li>Q: How do use these fonts in my favourite software?<li>A: In Windows, you take the fonts out of the ZIP archive and place them in your fonts folder which can be found in your Control Panel. The next time you run your software, the font will be available. For example: If you install a new font, the next time you run Microsoft Word, that font will be available in the menu under Format / Font. For anything more complicated, or Mac installation, visit <a href="http://www.larabiefonts.com/help.html">www.larabiefonts.com/help.html</a></ul><ul><li>Q: How can I use this font in <a href="http://www.aol.com/aim/">AOL Instant Messenger</a>, <a href="http://messenger.msn.com/">MSN Messenger</a>, <a href="http://www.microsoft.com/office/outlook/">Outlook</a>, <a href="http://www.microsoft.com/office/outlook/">Outlook Express</a>, <a href="http://www.eudora.com/">Euodora</a> or any other email software?<li>A: At the time of this writing (Feb 2004) you cant. After installing one of my fonts, you may be able to select it in the above applications but the person at the other end wont see that same thing unless they have the font installed. If you really want to use my fonts in these applications, make sure the people at the other end have the same fonts installed.</ul><ul><li>Q: How can I use these fonts on a web page?<li>A: If youre creating a web page using Flash, its easy. Consult your Flash manual. If youre using <a href="http://www.adobe.com/products/acrobat/">Acrobat</a>, make sure the font embedding settings are turned on. Consult your Acrobat manual. For anything else there are limitations: If you want to use one of my fonts as your main, text font youre pretty much out of luck unless you explore a font embedding tool such as <a href="http://www.microsoft.com/typography/web/embedding/weft/">WEFT</a> but I dont recommend it. To use my fonts as headings or titles, use image creation software such as <a href="http://www.gimp.org/">The Gimp</a>, <a href="http://www.adobe.com/products/photoshop/">Photoshop</a>, <a href="http://www.jasc.com/">Paint Shop Pro</a>, <a href="http://www.google.com/search?q=pixia">Pixia</a> etc. Save the images as GIF files and place them on your web page. Theres a lot more to it than can be explained here but there are countless books available on web page design.</ul><ul><li>Q: How can I make these fonts bigger?<li>A: All my fonts are infinitely scalable; the limitations are in your software. A common problem is scaling fonts in Microsoft Word. If you choose Format / Font you can type in any number you like under size.</ul><ul><li>Q: Are these fonts really free?<li>A: Yes they are. Some fonts such as <a href="http://www.typodermic.com/fonts/19.html">Neuropol</a> have expanded font families available for sale at <a href="http://www.typodermic.com">www.typodermic.com</a> but the version you downloaded at Larabie Fonts is free.</ul><ul><li>Q: Your licence agreement states that the fonts cant be altered. Does that mean I cant mess around with your fonts in Photoshop/Illustrator/Publisher etc?<li>A: Those license restrictions refer to altering the actual fonts themselves, not what you make with them. As long as you dont alter the font files in font creation software such as FontLab or Fontographer youre free to create anything you like with them.</ul><ul><li>Q: Can I use your fonts in a logo?<li>A: Yes. But check with a lawyer if youre not sure. Its okay with me if you use it but do so at your own risk.</ul><ul><li>Q: Can I send you a sample of the nifty thing I created with your fonts?<li>A: Of course. Check <a href="http://www.larabiefonts.com/donation.html">www.larabiefonts.com/donation.html</a> for my current email or mailing address.</ul><ul><li>Q: Can you make a custom font for me?<li>A: Possibly. Check <a href="http://typodermic.com/custom.html">typodermic.com/custom.html</a> for details. Keep in mind that making fonts is my full-time job so no freebies.</ul><ul><li>Q: I want to sell software that includes you font files.<li>A: Contact me first at <a href="http://www.larabiefonts.com/email.html">www.larabiefonts.com/email.html</a>.</ul><ul><li>Q: I want to sell rubber stamp alphabets, alphabet punches or stencil alphabets using your font designs.<li>A: Contact me first at <a href="http://www.larabiefonts.com/email.html">www.larabiefonts.com/email.html</a>.</ul><ul><li>Q: My software wont let me embed one of your fonts.<li>A: You may have an old version of one of my fonts. Uninstall it and install a current version on Larabie Fonts.</ul><ul><li>Q: Can you help me find a font?<li>A: I really dont have the time but if you send a donation, I can give it a try. If not. post your question on my font forum: <a href="http://www.larabiefonts.com/info.html">www.larabiefonts.com/info.html</a>.</ul><h3>LARABIE FONTS END-USER LICENSE AGREEMENT FOR SOFTWARE PRODUCTS</h3><h4>SOFTWARE PRODUCT LICENSE</h4><p>The SOFTWARE PRODUCT is protected by copyright laws and International copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold.</p><h5>1. GRANT OF LICENSE. This document grants you the following rights:</h5><p>- Installation and Use. You may install and use an unlimited number of copies of the SOFTWARE PRODUCT.  You may copy and distribute unlimited copies of the SOFTWARE PRODUCT as you receive them, in any medium, provided that you publish on each copy an appropriate copyright notice. Keep intact all the notices that refer to this License and give any other recipients of the fonts a copy of this License along with the fonts.</p><h5>2. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.</h5><p>- You may modify your copy or copies of the SOFTWARE PRODUCT or any portion of it, provided that you also meet all of these rules:</p><p>a) Do not alter in any way alphanumeric characters (A-Z, a-z, 1-9) contained in the font. An exception is converting between formats, here is allowed the nominal distortion that occurs during conversion from second order to third order quadratic curves (TrueType to Postscript) and vice versa.</p><p>b) Extra characters may be added; here it is allowed to use curves (shapes) from alphanumeric characters in fonts under same license.</p><p>c) It is allowed to modify and remove analpahbetics (punctuation, special characters, ligatures and symbols).</p><p>d) The original font name must be retained but can be augmented. (ie. a Font named Blue Highway can be renamed Blue Highway Cyrillic or Blue Highway ANSI, etc.)</p><p>e) Character mapping may be altered.</p><p>f) If the kerning information is altered or discarded it must be stated in the user notes or documentation.</p><p>g) All modifications must be released under this license.</p></p>LIMITED WARRANTY NO WARRANTIES. Larabie Fonts expressly disclaims any warranty for the SOFTWARE PRODUCT. The SOFTWARE PRODUCT and any related documentation is provided "as is" without warranty of any kind, either express or implied, including, without limitation, the implied warranties or merchantability, fitness for a particular purpose, or non-infringement. The entire risk arising out of use or performance of the SOFTWARE PRODUCT remains with you.</p><p>NO LIABILITY FOR CONSEQUENTIAL DAMAGES. In no event shall Larabie Fonts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use this product, even if Larabie Fonts has been advised of the possibility of such damages.</p><h5>3. MISCELLANEOUS</h5><p>Should you have any questions concerning this document, or if you desire to contact Larabie Fonts for any reason, please email <a href="http://www.larabiefonts.com/email.html">www.larabiefonts.com/email.html</a>.</p></font></BODY></HTML>
+
Index: /ColladaPlugin/demo/media/dae/collada.dae
===================================================================
--- /ColladaPlugin/demo/media/dae/collada.dae	(revision 21)
+++ /ColladaPlugin/demo/media/dae/collada.dae	(revision 21)
@@ -0,0 +1,30496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<COLLADA xmlns="http://www.collada.org/2005/COLLADASchema" version="1.3.0">
+  <asset>
+<copyright>Copyright 2005 Sony Computer Entertainment Inc., All Rights Reserved.</copyright>
+    <authoring_tool>Maya 6.0.1 COLLADA exporter</authoring_tool>
+    <source_data>file://C:/COLLADA_DataExchange_Test/Results/OutputFiles/Maya/Other/collada_I-Maya.mb</source_data>
+    <up_axis>Y_UP</up_axis>
+    <unit name="centimeter" meter="1.e-002"/>
+    <author>lthompson</author>
+    <modified>2005-07-28T18:12:56Z</modified>
+  </asset>
+  <library type="MATERIAL">
+    <material id="Stone" name="Stone">
+      <shader>
+        <technique profile="COMMON">
+          <pass>
+            <program url="PHONG">
+              <param name="DIFFUSE" type="float3" flow="IN" sid="diffuse">0.521569 0.596078 0.658824</param>
+              <param name="AMBIENT" type="float3" flow="IN" sid="param1">0 0 0</param>
+              <param name="TRANSPARENT" type="float3" flow="IN" sid="transparent">0 0 0</param>
+              <param name="TRANSPARENCY" type="float" flow="IN">0</param>
+              <param name="EMISSION" type="float3" flow="IN" sid="param4">0 0 0</param>
+              <param name="SPECULAR" type="float3" flow="IN" sid="param5">0.345098 0.360784 0.356863</param>
+              <param name="REFLECTIVE" type="float3" flow="IN" sid="param6">0 0 0</param>
+              <param name="REFLECTIVITY" type="float" flow="IN" sid="param7">0.5</param>
+              <param name="SHININESS" type="float" flow="IN" sid="param8">10.</param>
+            </program>
+          </pass>
+        </technique>
+      </shader>
+    </material>
+    <material id="RedPlastic" name="RedPlastic">
+      <shader>
+        <technique profile="COMMON">
+          <pass>
+            <program url="PHONG">
+              <param name="DIFFUSE" type="float3" flow="IN" sid="diffuse">0.815686 0.345098 0.309804</param>
+              <param name="AMBIENT" type="float3" flow="IN" sid="param1">0 0 0</param>
+              <param name="TRANSPARENT" type="float3" flow="IN" sid="transparent">0 0 0</param>
+              <param name="TRANSPARENCY" type="float" flow="IN">0</param>
+              <param name="EMISSION" type="float3" flow="IN" sid="param4">0 0 0</param>
+              <param name="SPECULAR" type="float3" flow="IN" sid="param5">0.388235 0.486275 0.498039</param>
+              <param name="REFLECTIVE" type="float3" flow="IN" sid="param6">0 0 0</param>
+              <param name="REFLECTIVITY" type="float" flow="IN" sid="param7">0.5</param>
+              <param name="SHININESS" type="float" flow="IN" sid="param8">16.</param>
+            </program>
+          </pass>
+        </technique>
+      </shader>
+    </material>
+  </library>
+  <library type="GEOMETRY">
+    <geometry id="floor-lib" name="floor">
+      <mesh>
+        <source id="floor-lib-Position">
+          <float_array id="floor-lib-Position-array" count="12">
+-400. 0 -200.
+400. 0 -200.
+-400. 0 200.
+400. 0 200.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#floor-lib-Position-array" count="4" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+        </source>
+        <source id="floor-lib-Normal">
+          <float_array id="floor-lib-Normal-array" count="12">
+0 1. 0
+0 1. 0
+0 1. 0
+0 1. 0
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#floor-lib-Normal-array" count="4" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+          <technique profile="MAYA">
+            <param name="DOUBLE_SIDED" type="bool" flow="OUT">TRUE</param>
+          </technique>
+        </source>
+        <vertices id="floor-lib-Vertex">
+          <input semantic="POSITION" source="#floor-lib-Position"/>
+          <input semantic="NORMAL" source="#floor-lib-Normal"/>
+        </vertices>
+        <polygons material="#Stone" count="1">
+          <input semantic="VERTEX" idx="0" source="#floor-lib-Vertex"/>
+          <p>0 2 3 1</p>
+        </polygons>
+      </mesh>
+    </geometry>
+    <geometry id="collada-lib" name="collada">
+      <mesh>
+        <source id="collada-lib-Position">
+          <float_array id="collada-lib-Position-array" count="10098">
+-165.048 31.8541 0.78
+-165.279 31.0538 0.78
+-166.115 28.9666 0.78
+-167.808 25.9128 0.78
+-170.609 22.2115 0.78
+-174.756 18.1889 0.78
+-175.749 17.444 0.78
+-178.456 15.7459 0.78
+-182.69 13.7238 0.78
+-188.24 12.0288 0.78
+-194.862 11.3182 0.78
+-195.998 11.3588 0.78
+-198.875 11.6394 0.78
+-203.014 12.3996 0.78
+-207.897 13.8832 0.78
+-212.982 16.3271 0.78
+-213.936 16.9633 0.78
+-216.238 18.7814 0.78
+-219.317 21.8105 0.78
+-222.567 26.0635 0.78
+-225.365 31.5224 0.78
+-225.793 32.7269 0.78
+-226.767 35.974 0.78
+-227.926 40.9856 0.78
+-228.897 47.449 0.78
+-229.304 55.0369 0.78
+-229.278 56.2308 0.78
+-229.092 59.3652 0.78
+-228.59 63.9382 0.78
+-227.61 69.4294 0.78
+-225.994 75.3099 0.78
+-225.567 76.4258 0.78
+-224.277 79.2133 0.78
+-222.036 83.0383 0.78
+-218.76 87.2456 0.78
+-214.383 91.1547 0.78
+-213.37 91.8053 0.78
+-210.631 93.2674 0.78
+-206.329 95.0067 0.78
+-200.658 96.463 0.78
+-193.843 97.0731 0.78
+-192.628 97.0301 0.78
+-189.59 96.7332 0.78
+-185.362 95.927 0.78
+-180.607 94.3481 0.78
+-176.025 91.7418 0.78
+-175.196 91.0447 0.78
+-173.228 89.0651 0.78
+-170.577 85.7244 0.78
+-167.736 80.9741 0.78
+-165.589 75.2267 0.78
+-165.365 75.4717 0.78
+-163.3 75.9581 0.78
+-160.258 76.6749 0.78
+-156.564 77.5453 0.78
+-153.046 78.1133 0.78
+-153.618 79.0279 0.78
+-155.232 82.9965 0.78
+-158.053 88.4013 0.78
+-162.176 94.2358 0.78
+-167.715 99.5252 0.78
+-168.87 100.297 0.78
+-172.327 102.237 0.78
+-177.773 104.557 0.78
+-184.933 106.502 0.78
+-193.562 107.318 0.78
+-195.018 107.269 0.78
+-199.032 106.921 0.78
+-204.792 105.976 0.78
+-211.519 104.14 0.78
+-218.459 101.112 0.78
+-219.636 100.399 0.78
+-222.781 98.1964 0.78
+-227.061 94.547 0.78
+-231.675 89.4825 0.78
+-235.841 83.0102 0.78
+-236.455 81.6879 0.78
+-237.978 77.8202 0.78
+-239.8 71.8236 0.78
+-241.326 64.0826 0.78
+-241.967 54.9608 0.78
+-241.923 53.3581 0.78
+-241.618 48.9661 0.78
+-240.788 42.6232 0.78
+-239.173 35.143 0.78
+-236.512 27.3222 0.78
+-235.881 25.9739 0.78
+-233.951 22.4126 0.78
+-230.76 17.5855 0.78
+-226.345 12.4146 0.78
+-220.72 7.7966 0.78
+-219.568 7.1319 0.78
+-216.069 5.4602 0.78
+-210.464 3.4581 0.78
+-202.959 1.7784 0.78
+-193.737 1.0732 0.78
+-192.025 1.1426 0.78
+-187.419 1.6351 0.78
+-180.975 2.9718 0.78
+-173.725 5.567 0.78
+-166.657 9.8464 0.78
+-165.528 10.845 0.78
+-162.543 13.9547 0.78
+-158.606 19.1012 0.78
+-154.585 26.2393 0.78
+-151.275 34.7704 0.78
+-151.55 34.5767 0.78
+-153.647 35.1063 0.78
+-156.737 35.8868 0.78
+-160.49 36.8346 0.78
+-163.971 37.9594 0.78
+-163.631 38.4048 0.78
+-163.711 38.0364 0.78
+-163.927 37.0366 0.78
+-164.348 35.0896 0.78
+-165.102 31.8676 0.78
+-165.331 31.0717 0.78
+-166.165 28.9903 0.78
+-167.854 25.9428 0.78
+-170.65 22.2481 0.78
+-174.792 18.2308 0.78
+-175.78 17.4894 0.78
+-178.483 15.7943 0.78
+-182.71 13.7752 0.78
+-188.251 12.0828 0.78
+-194.864 11.3734 0.78
+-195.994 11.4138 0.78
+-198.867 11.694 0.78
+-203.001 12.4532 0.78
+-207.877 13.9346 0.78
+-212.955 16.375 0.78
+-213.904 17.0079 0.78
+-216.202 18.8228 0.78
+-219.275 21.847 0.78
+-222.52 26.0929 0.78
+-225.315 31.5442 0.78
+-225.741 32.744 0.78
+-226.714 35.9881 0.78
+-227.872 40.9959 0.78
+-228.842 47.4546 0.78
+-229.249 55.0377 0.78
+-229.223 56.2285 0.78
+-229.037 59.3606 0.78
+-228.535 63.9304 0.78
+-227.557 69.4173 0.78
+-225.942 75.2927 0.78
+-225.516 76.4044 0.78
+-224.228 79.1878 0.78
+-221.99 83.0073 0.78
+-218.72 87.2079 0.78
+-214.349 91.1107 0.78
+-213.342 91.7578 0.78
+-210.608 93.2175 0.78
+-206.312 94.9543 0.78
+-200.649 96.4086 0.78
+-193.841 97.0179 0.78
+-192.632 96.975 0.78
+-189.598 96.6786 0.78
+-185.376 95.8736 0.78
+-180.63 94.2977 0.78
+-176.056 91.6966 0.78
+-175.233 91.0042 0.78
+-173.269 89.0284 0.78
+-170.622 85.6931 0.78
+-167.785 80.9495 0.78
+-165.615 75.1776 0.78
+-165.352 75.4181 0.78
+-163.288 75.9045 0.78
+-160.245 76.6213 0.78
+-156.551 77.4917 0.78
+-152.997 78.0864 0.78
+-153.566 79.047 0.78
+-155.182 83.0197 0.78
+-158.006 88.4301 0.78
+-162.134 94.2719 0.78
+-167.681 99.5682 0.78
+-168.841 100.344 0.78
+-172.302 102.286 0.78
+-177.755 104.609 0.78
+-184.924 106.556 0.78
+-193.56 107.373 0.78
+-195.021 107.324 0.78
+-199.039 106.976 0.78
+-204.804 106.03 0.78
+-211.538 104.192 0.78
+-218.485 101.161 0.78
+-219.666 100.446 0.78
+-222.815 98.24 0.78
+-227.1 94.5867 0.78
+-231.719 89.5161 0.78
+-235.89 83.0368 0.78
+-236.505 81.7097 0.78
+-238.03 77.8383 0.78
+-239.853 71.8369 0.78
+-241.381 64.0898 0.78
+-242.022 54.962 0.78
+-241.979 53.3554 0.78
+-241.673 48.9606 0.78
+-240.842 42.6137 0.78
+-239.227 35.1282 0.78
+-236.563 27.3016 0.78
+-235.931 25.9491 0.78
+-233.998 22.3842 0.78
+-230.804 17.5524 0.78
+-226.383 12.3752 0.78
+-220.751 7.7513 0.78
+-219.593 7.0831 0.78
+-216.09 5.4093 0.78
+-210.48 3.4051 0.78
+-202.967 1.7239 0.78
+-193.738 1.0181 0.78
+-192.02 1.0876 0.78
+-187.41 1.5806 0.78
+-180.961 2.9188 0.78
+-173.701 5.5172 0.78
+-166.625 9.802 0.78
+-165.49 10.8052 0.78
+-162.501 13.9188 0.78
+-158.56 19.0708 0.78
+-154.535 26.2165 0.78
+-151.226 34.7964 0.78
+-151.537 34.6301 0.78
+-153.634 35.1598 0.78
+-156.724 35.9403 0.78
+-160.476 36.8881 0.78
+-164. 38.0063 0.78
+-163.685 38.4165 0.78
+-163.765 38.0481 0.78
+-163.981 37.0482 0.78
+-164.402 35.1012 0.78
+-165.583 31.9887 0.5515
+-165.801 31.2328 0.5515
+-166.613 29.2032 0.5515
+-168.27 26.2136 0.5515
+-171.022 22.577 0.5515
+-175.114 18.6084 0.5515
+-176.061 17.8987 0.5515
+-178.722 16.2291 0.5515
+-182.89 14.2378 0.5515
+-188.351 12.5691 0.5515
+-194.881 11.8695 0.5515
+-195.961 11.9091 0.5515
+-198.798 12.1856 0.5515
+-202.884 12.9356 0.5515
+-207.697 14.3971 0.5515
+-212.709 16.806 0.5515
+-213.611 17.4094 0.5515
+-215.873 19.1951 0.5515
+-218.903 22.1755 0.5515
+-222.1 26.3579 0.5515
+-224.859 31.7407 0.5515
+-225.269 32.8982 0.5515
+-226.234 36.1154 0.5515
+-227.385 41.0888 0.5515
+-228.349 47.5048 0.5515
+-228.753 55.0454 0.5515
+-228.727 56.2082 0.5515
+-228.543 59.3188 0.5515
+-228.044 63.8597 0.5515
+-227.072 69.3078 0.5515
+-225.47 75.1379 0.5515
+-225.059 76.2112 0.5515
+-223.788 78.9579 0.5515
+-221.579 82.7289 0.5515
+-218.357 86.869 0.5515
+-214.049 90.7153 0.5515
+-213.091 91.3295 0.5515
+-210.398 92.7678 0.5515
+-206.157 94.4828 0.5515
+-200.565 95.9194 0.5515
+-193.828 96.5217 0.5515
+-192.665 96.4797 0.5515
+-189.669 96.1872 0.5515
+-185.501 95.3932 0.5515
+-180.831 93.8442 0.5515
+-176.34 91.2895 0.5515
+-175.57 90.6393 0.5515
+-173.64 88.6986 0.5515
+-171.03 85.4107 0.5515
+-168.23 80.7277 0.5515
+-165.842 74.7364 0.5515
+-165.238 74.9349 0.5515
+-163.174 75.4213 0.5515
+-160.132 76.1381 0.5515
+-156.437 77.0085 0.5515
+-152.564 77.8446 0.5515
+-153.1 79.2191 0.5515
+-154.731 83.2283 0.5515
+-157.582 88.6888 0.5515
+-161.758 94.5961 0.5515
+-167.37 99.9552 0.5515
+-168.581 100.767 0.5515
+-172.083 102.732 0.5515
+-177.593 105.078 0.5515
+-184.835 107.045 0.5515
+-193.545 107.869 0.5515
+-195.051 107.819 0.5515
+-199.1 107.468 0.5515
+-204.909 106.515 0.5515
+-211.703 104.66 0.5515
+-218.713 101.602 0.5515
+-219.937 100.862 0.5515
+-223.119 98.6326 0.5515
+-227.445 94.9433 0.5515
+-232.113 89.8187 0.5515
+-236.324 83.2764 0.5515
+-236.962 81.9054 0.5515
+-238.499 78.0015 0.5515
+-240.335 71.9572 0.5515
+-241.873 64.1554 0.5515
+-242.518 54.9728 0.5515
+-242.474 53.3316 0.5515
+-242.167 48.9112 0.5515
+-241.331 42.5291 0.5515
+-239.705 34.9957 0.5515
+-237.024 27.1164 0.5515
+-236.374 25.7256 0.5515
+-234.424 22.1288 0.5515
+-231.201 17.2537 0.5515
+-226.731 12.0208 0.5515
+-221.034 7.3433 0.5515
+-219.825 6.644 0.5515
+-216.281 4.951 0.5515
+-210.618 2.9283 0.5515
+-203.04 1.233 0.5515
+-193.747 0.5218 0.5515
+-191.984 0.5926 0.5515
+-187.333 1.0902 0.5515
+-180.826 2.4409 0.5515
+-173.488 5.0689 0.5515
+-166.331 9.4019 0.5515
+-165.147 10.4468 0.5515
+-162.124 13.5956 0.5515
+-158.146 18.7976 0.5515
+-154.084 26.0106 0.5515
+-150.788 35.0302 0.5515
+-151.415 35.1114 0.5515
+-153.512 35.641 0.5515
+-156.602 36.4216 0.5515
+-160.355 37.3693 0.5515
+-164.262 38.4281 0.5515
+-164.17 38.5213 0.5515
+-164.25 38.153 0.5515
+-164.466 37.1531 0.5515
+-164.887 35.2061 0.5515
+-165.804 32.0444 5.52e-002
+-166.017 31.3069 5.52e-002
+-166.819 29.3013 5.52e-002
+-168.462 26.3382 5.52e-002
+-171.193 22.7283 5.52e-002
+-175.262 18.7822 5.52e-002
+-176.191 18.087 5.52e-002
+-178.833 16.4293 5.52e-002
+-182.973 14.4507 5.52e-002
+-188.397 12.793 5.52e-002
+-194.889 12.0978 5.52e-002
+-195.945 12.137 5.52e-002
+-198.766 12.4118 5.52e-002
+-202.83 13.1576 5.52e-002
+-207.614 14.61 5.52e-002
+-212.596 17.0044 5.52e-002
+-213.477 17.5941 5.52e-002
+-215.722 19.3665 5.52e-002
+-218.732 22.3267 5.52e-002
+-221.907 26.4799 5.52e-002
+-224.649 31.8311 5.52e-002
+-225.052 32.9692 5.52e-002
+-226.013 36.174 5.52e-002
+-227.16 41.1316 5.52e-002
+-228.121 47.5279 5.52e-002
+-228.524 55.0489 5.52e-002
+-228.498 56.1989 5.52e-002
+-228.315 59.2996 5.52e-002
+-227.818 63.8271 5.52e-002
+-226.85 69.2575 5.52e-002
+-225.253 75.0667 5.52e-002
+-224.849 76.1222 5.52e-002
+-223.585 78.8521 5.52e-002
+-221.39 82.6007 5.52e-002
+-218.19 86.713 5.52e-002
+-213.911 90.5333 5.52e-002
+-212.976 91.1324 5.52e-002
+-210.301 92.5609 5.52e-002
+-206.085 94.2658 5.52e-002
+-200.526 95.6943 5.52e-002
+-193.822 96.2933 5.52e-002
+-192.68 96.2518 5.52e-002
+-189.701 95.9611 5.52e-002
+-185.559 95.172 5.52e-002
+-180.924 93.6355 5.52e-002
+-176.471 91.1022 5.52e-002
+-175.725 90.4713 5.52e-002
+-173.811 88.5468 5.52e-002
+-171.218 85.2808 5.52e-002
+-168.434 80.6256 5.52e-002
+-165.947 74.5333 5.52e-002
+-165.186 74.7125 5.52e-002
+-163.122 75.1989 5.52e-002
+-160.079 75.9157 5.52e-002
+-156.385 76.7861 5.52e-002
+-152.364 77.7333 5.52e-002
+-152.886 79.2983 5.52e-002
+-154.524 83.3244 5.52e-002
+-157.387 88.8079 5.52e-002
+-161.585 94.7454 5.52e-002
+-167.227 100.133 5.52e-002
+-168.461 100.962 5.52e-002
+-171.983 102.937 5.52e-002
+-177.518 105.294 5.52e-002
+-184.794 107.27 5.52e-002
+-193.538 108.098 5.52e-002
+-195.064 108.047 5.52e-002
+-199.129 107.695 5.52e-002
+-204.958 106.738 5.52e-002
+-211.779 104.876 5.52e-002
+-218.818 101.804 5.52e-002
+-220.062 101.053 5.52e-002
+-223.258 98.8132 5.52e-002
+-227.604 95.1075 5.52e-002
+-232.294 89.9579 5.52e-002
+-236.524 83.3867 5.52e-002
+-237.172 81.9954 5.52e-002
+-238.715 78.0767 5.52e-002
+-240.557 72.0126 5.52e-002
+-242.1 64.1855 5.52e-002
+-242.747 54.9778 5.52e-002
+-242.703 53.3206 5.52e-002
+-242.394 48.8884 5.52e-002
+-241.556 42.4901 5.52e-002
+-239.925 34.9347 5.52e-002
+-237.236 27.0311 5.52e-002
+-236.578 25.6228 5.52e-002
+-234.62 22.0112 5.52e-002
+-231.383 17.1162 5.52e-002
+-226.891 11.8577 5.52e-002
+-221.164 7.1556 5.52e-002
+-219.931 6.4419 5.52e-002
+-216.369 4.7401 5.52e-002
+-210.681 2.7088 5.52e-002
+-203.074 1.007 5.52e-002
+-193.751 0.2933 5.52e-002
+-191.967 0.3647 5.52e-002
+-187.298 0.8645 5.52e-002
+-180.764 2.221 5.52e-002
+-173.389 4.8626 5.52e-002
+-166.196 9.2178 5.52e-002
+-164.989 10.2819 5.52e-002
+-161.951 13.4469 5.52e-002
+-157.955 18.6719 5.52e-002
+-153.876 25.9158 5.52e-002
+-150.587 35.1378 5.52e-002
+-151.359 35.3329 5.52e-002
+-153.456 35.8625 5.52e-002
+-156.546 36.6431 5.52e-002
+-160.299 37.5908 5.52e-002
+-164.382 38.6222 5.52e-002
+-164.394 38.5696 5.52e-002
+-164.473 38.2012 5.52e-002
+-164.689 37.2014 5.52e-002
+-165.11 35.2544 5.52e-002
+-165.804 32.0444 0
+-166.017 31.3069 0
+-166.819 29.3013 0
+-168.462 26.3382 0
+-171.193 22.7283 0
+-175.262 18.7822 0
+-176.191 18.087 0
+-178.833 16.4293 0
+-182.973 14.4507 0
+-188.397 12.793 0
+-194.889 12.0978 0
+-195.945 12.137 0
+-198.766 12.4118 0
+-202.83 13.1576 0
+-207.614 14.61 0
+-212.596 17.0044 0
+-213.477 17.5941 0
+-215.722 19.3665 0
+-218.732 22.3267 0
+-221.907 26.4799 0
+-224.649 31.8311 0
+-225.052 32.9692 0
+-226.013 36.174 0
+-227.16 41.1316 0
+-228.121 47.5279 0
+-228.524 55.0489 0
+-228.498 56.1989 0
+-228.315 59.2996 0
+-227.818 63.8271 0
+-226.85 69.2575 0
+-225.253 75.0667 0
+-224.849 76.1222 0
+-223.585 78.8521 0
+-221.39 82.6007 0
+-218.19 86.713 0
+-213.911 90.5333 0
+-212.976 91.1324 0
+-210.301 92.5609 0
+-206.085 94.2658 0
+-200.526 95.6943 0
+-193.822 96.2933 0
+-192.68 96.2518 0
+-189.701 95.9611 0
+-185.559 95.172 0
+-180.924 93.6355 0
+-176.471 91.1022 0
+-175.725 90.4713 0
+-173.811 88.5468 0
+-171.218 85.2808 0
+-168.434 80.6256 0
+-165.947 74.5333 0
+-165.186 74.7125 0
+-163.122 75.1989 0
+-160.079 75.9157 0
+-156.385 76.7861 0
+-152.364 77.7333 0
+-152.886 79.2983 0
+-154.524 83.3244 0
+-157.387 88.8079 0
+-161.585 94.7454 0
+-167.227 100.133 0
+-168.461 100.962 0
+-171.983 102.937 0
+-177.518 105.294 0
+-184.794 107.27 0
+-193.538 108.098 0
+-195.064 108.047 0
+-199.129 107.695 0
+-204.958 106.738 0
+-211.779 104.876 0
+-218.818 101.804 0
+-220.062 101.053 0
+-223.258 98.8132 0
+-227.604 95.1075 0
+-232.294 89.9579 0
+-236.524 83.3867 0
+-237.172 81.9954 0
+-238.715 78.0767 0
+-240.557 72.0126 0
+-242.1 64.1855 0
+-242.747 54.9778 0
+-242.703 53.3206 0
+-242.394 48.8884 0
+-241.556 42.4901 0
+-239.925 34.9347 0
+-237.236 27.0311 0
+-236.578 25.6228 0
+-234.62 22.0112 0
+-231.383 17.1162 0
+-226.891 11.8577 0
+-221.164 7.1556 0
+-219.931 6.4419 0
+-216.369 4.7401 0
+-210.681 2.7088 0
+-203.074 1.007 0
+-193.751 0.2933 0
+-191.967 0.3647 0
+-187.298 0.8645 0
+-180.764 2.221 0
+-173.389 4.8626 0
+-166.196 9.2178 0
+-164.989 10.2819 0
+-161.951 13.4469 0
+-157.955 18.6719 0
+-153.876 25.9158 0
+-150.587 35.1378 0
+-151.359 35.3329 0
+-153.456 35.8625 0
+-156.546 36.6431 0
+-160.299 37.5908 0
+-164.382 38.6222 0
+-164.394 38.5696 0
+-164.473 38.2012 0
+-164.689 37.2014 0
+-165.11 35.2544 0
+-165.804 32.0444 -100.
+-166.017 31.3069 -100.
+-166.819 29.3013 -100.
+-168.462 26.3382 -100.
+-171.193 22.7283 -100.
+-175.262 18.7822 -100.
+-176.191 18.087 -100.
+-178.833 16.4293 -100.
+-182.973 14.4507 -100.
+-188.397 12.793 -100.
+-194.889 12.0978 -100.
+-195.945 12.137 -100.
+-198.766 12.4118 -100.
+-202.83 13.1576 -100.
+-207.614 14.61 -100.
+-212.596 17.0044 -100.
+-213.477 17.5941 -100.
+-215.722 19.3665 -100.
+-218.732 22.3267 -100.
+-221.907 26.4799 -100.
+-224.649 31.8311 -100.
+-225.052 32.9692 -100.
+-226.013 36.174 -100.
+-227.16 41.1316 -100.
+-228.121 47.5279 -100.
+-228.524 55.0489 -100.
+-228.498 56.1989 -100.
+-228.315 59.2996 -100.
+-227.818 63.8271 -100.
+-226.85 69.2575 -100.
+-225.253 75.0667 -100.
+-224.849 76.1222 -100.
+-223.585 78.8521 -100.
+-221.39 82.6007 -100.
+-218.19 86.713 -100.
+-213.911 90.5333 -100.
+-212.976 91.1324 -100.
+-210.301 92.5609 -100.
+-206.085 94.2658 -100.
+-200.526 95.6943 -100.
+-193.822 96.2933 -100.
+-192.68 96.2518 -100.
+-189.701 95.9611 -100.
+-185.559 95.172 -100.
+-180.924 93.6355 -100.
+-176.471 91.1022 -100.
+-175.725 90.4713 -100.
+-173.811 88.5468 -100.
+-171.218 85.2808 -100.
+-168.434 80.6256 -100.
+-165.947 74.5333 -100.
+-165.186 74.7125 -100.
+-163.122 75.1989 -100.
+-160.079 75.9157 -100.
+-156.385 76.7861 -100.
+-152.364 77.7333 -100.
+-152.886 79.2983 -100.
+-154.524 83.3244 -100.
+-157.387 88.8079 -100.
+-161.585 94.7454 -100.
+-167.227 100.133 -100.
+-168.461 100.962 -100.
+-171.983 102.937 -100.
+-177.518 105.294 -100.
+-184.794 107.27 -100.
+-193.538 108.098 -100.
+-195.064 108.047 -100.
+-199.129 107.695 -100.
+-204.958 106.738 -100.
+-211.779 104.876 -100.
+-218.818 101.804 -100.
+-220.062 101.053 -100.
+-223.258 98.8132 -100.
+-227.604 95.1075 -100.
+-232.294 89.9579 -100.
+-236.524 83.3867 -100.
+-237.172 81.9954 -100.
+-238.715 78.0767 -100.
+-240.557 72.0126 -100.
+-242.1 64.1855 -100.
+-242.747 54.9778 -100.
+-242.703 53.3206 -100.
+-242.394 48.8884 -100.
+-241.556 42.4901 -100.
+-239.925 34.9347 -100.
+-237.236 27.0311 -100.
+-236.578 25.6228 -100.
+-234.62 22.0112 -100.
+-231.383 17.1162 -100.
+-226.891 11.8577 -100.
+-221.164 7.1556 -100.
+-219.931 6.4419 -100.
+-216.369 4.7401 -100.
+-210.681 2.7088 -100.
+-203.074 1.007 -100.
+-193.751 0.2933 -100.
+-191.967 0.3647 -100.
+-187.298 0.8645 -100.
+-180.764 2.221 -100.
+-173.389 4.8626 -100.
+-166.196 9.2178 -100.
+-164.989 10.2819 -100.
+-161.951 13.4469 -100.
+-157.955 18.6719 -100.
+-153.876 25.9158 -100.
+-150.587 35.1378 -100.
+-151.359 35.3329 -100.
+-153.456 35.8625 -100.
+-156.546 36.6431 -100.
+-160.299 37.5908 -100.
+-164.382 38.6222 -100.
+-164.394 38.5696 -100.
+-164.473 38.2012 -100.
+-164.689 37.2014 -100.
+-165.11 35.2544 -100.
+-139.141 30.2239 0.78
+-139.068 29.2194 0.78
+-138.539 26.3755 0.78
+-137.091 22.1128 0.78
+-134.258 16.8499 0.78
+-129.562 10.9942 0.78
+-128.486 10.0023 0.78
+-125.242 7.534 0.78
+-120.037 4.5825 0.78
+-113.057 2.1103 0.78
+-104.437 1.0726 0.78
+-103.423 1.1089 0.78
+-100.552 1.3629 0.78
+-96.4224 2.0532 0.78
+-91.5866 3.3944 0.78
+-86.5734 5.6074 0.78
+-85.7333 6.1172 0.78
+-83.4629 7.6967 0.78
+-80.3848 10.281 0.78
+-77.0905 13.8173 0.78
+-74.1526 18.2727 0.78
+-73.7354 19.1799 0.78
+-72.6719 22.0088 0.78
+-71.3957 26.626 0.78
+-70.3237 32.9314 0.78
+-69.8733 40.8331 0.78
+-69.9503 42.7209 0.78
+-70.4963 47.6864 0.78
+-71.977 54.4629 0.78
+-74.8462 61.8019 0.78
+-79.5739 68.5076 0.78
+-80.6422 69.4854 0.78
+-83.8985 71.9636 0.78
+-89.0924 74.926 0.78
+-96.0148 77.4065 0.78
+-104.502 78.4473 0.78
+-105.945 78.382 0.78
+-109.9 77.9208 0.78
+-115.436 76.6684 0.78
+-121.671 74.2376 0.78
+-127.753 70.2314 0.78
+-128.877 69.1002 0.78
+-131.707 65.5057 0.78
+-135.097 59.4462 0.78
+-137.944 50.8817 0.78
+-139.141 39.7182 0.78
+-139.14 39.6835 0.78
+-139.14 39.1479 0.78
+-139.14 37.6941 0.78
+-139.14 34.863 0.78
+-127.473 39.8537 0.78
+-127.473 40.2603 0.78
+-127.473 41.3642 0.78
+-127.473 43.5138 0.78
+-127.473 47.082 0.78
+-127.418 47.9567 0.78
+-127.049 50.2473 0.78
+-126.057 53.5962 0.78
+-124.129 57.6444 0.78
+-120.97 62.0142 0.78
+-120.172 62.8302 0.78
+-118. 64.6698 0.78
+-114.568 66.8639 0.78
+-110.007 68.7077 0.78
+-104.504 69.4815 0.78
+-103.358 69.4203 0.78
+-100.573 69.0015 0.78
+-96.6932 67.8666 0.78
+-92.323 65.65 0.78
+-88.1068 62.0105 0.78
+-87.3702 61.0528 0.78
+-85.7465 58.3955 0.78
+-83.8206 54.0208 0.78
+-82.2125 47.9531 0.78
+-81.5403 40.2438 0.78
+-81.5919 38.5708 0.78
+-81.9509 34.419 0.78
+-82.9275 28.825 0.78
+-84.8454 22.8483 0.78
+-88.0215 17.6033 0.78
+-88.8379 16.7564 0.78
+-91.0049 14.899 0.78
+-94.4265 12.6831 0.78
+-98.9666 10.8204 0.78
+-104.437 10.0385 0.78
+-105.597 10.0996 0.78
+-108.415 10.5181 0.78
+-112.332 11.6527 0.78
+-116.728 13.8695 0.78
+-120.943 17.511 0.78
+-121.678 18.4751 0.78
+-123.293 21.1618 0.78
+-125.207 25.6125 0.78
+-126.805 31.8258 0.78
+-127.473 39.7629 0.78
+-139.196 30.2219 0.78
+-139.123 29.2123 0.78
+-138.592 26.3616 0.78
+-137.141 22.0907 0.78
+-134.304 16.8195 0.78
+-129.602 10.9565 0.78
+-128.521 9.96 0.78
+-125.272 7.4879 0.78
+-120.06 4.5323 0.78
+-113.07 2.0566 0.78
+-104.44 1.0175 0.78
+-103.42 1.0538 0.78
+-100.545 1.3082 0.78
+-96.4105 1.9994 0.78
+-91.568 3.3425 0.78
+-86.548 5.5585 0.78
+-85.7032 6.071 0.78
+-83.4294 7.6529 0.78
+-80.3468 10.241 0.78
+-77.0471 13.7832 0.78
+-74.1045 18.2459 0.78
+-73.6845 19.1586 0.78
+-72.6194 21.9917 0.78
+-71.3418 26.614 0.78
+-70.2689 32.9252 0.78
+-69.8182 40.8326 0.78
+-69.8953 42.725 0.78
+-70.4419 47.6954 0.78
+-71.9242 54.4789 0.78
+-74.7976 61.828 0.78
+-79.5325 68.544 0.78
+-80.6068 69.5277 0.78
+-83.8681 72.0096 0.78
+-89.0694 74.9761 0.78
+-96.0021 77.4601 0.78
+-104.5 78.5024 0.78
+-105.95 78.437 0.78
+-109.909 77.9752 0.78
+-115.452 76.7211 0.78
+-121.696 74.2866 0.78
+-127.788 70.2741 0.78
+-128.918 69.1368 0.78
+-131.753 65.5363 0.78
+-135.148 59.4685 0.78
+-137.998 50.8934 0.78
+-139.196 39.7212 0.78
+-139.195 39.6835 0.78
+-139.195 39.1479 0.78
+-139.195 37.6941 0.78
+-139.195 34.863 0.78
+-127.418 39.8537 0.78
+-127.418 40.2603 0.78
+-127.418 41.3642 0.78
+-127.418 43.5138 0.78
+-127.418 47.0803 0.78
+-127.363 47.9506 0.78
+-126.996 50.235 0.78
+-126.005 53.5765 0.78
+-124.082 57.6162 0.78
+-120.928 61.9786 0.78
+-120.134 62.7898 0.78
+-117.967 64.6254 0.78
+-114.542 66.8149 0.78
+-109.993 68.6544 0.78
+-104.501 69.4264 0.78
+-103.364 69.3655 0.78
+-100.585 68.9476 0.78
+-96.7135 67.8153 0.78
+-92.3537 65.6042 0.78
+-88.1469 61.9727 0.78
+-87.4157 61.0216 0.78
+-85.7953 58.3699 0.78
+-83.8727 54.0026 0.78
+-82.2668 47.9436 0.78
+-81.5954 40.2423 0.78
+-81.647 38.574 0.78
+-82.0056 34.4262 0.78
+-82.981 28.8381 0.78
+-84.8956 22.8711 0.78
+-88.0652 17.637 0.78
+-88.8757 16.7966 0.78
+-91.0379 14.9432 0.78
+-94.4521 12.732 0.78
+-98.9811 10.8736 0.78
+-104.44 10.0936 0.78
+-105.592 10.1544 0.78
+-108.403 10.572 0.78
+-112.312 11.704 0.78
+-116.697 13.9154 0.78
+-120.903 17.5487 0.78
+-121.632 18.506 0.78
+-123.244 21.187 0.78
+-125.155 25.6304 0.78
+-126.751 31.8351 0.78
+-127.418 39.7653 0.78
+-139.692 30.2039 0.5515
+-139.615 29.1488 0.5515
+-139.073 26.2359 0.5515
+-137.596 21.8925 0.5515
+-134.718 16.5455 0.5515
+-129.965 10.618 0.5515
+-128.84 9.5797 0.5515
+-125.545 7.0735 0.5515
+-120.266 4.0806 0.5515
+-113.183 1.5733 0.5515
+-104.461 0.5216 0.5515
+-103.389 0.5583 0.5515
+-100.482 0.8158 0.5515
+-96.303 1.5148 0.5515
+-91.401 2.875 0.5515
+-86.3188 5.1182 0.5515
+-85.4329 5.6547 0.5515
+-83.1277 7.2587 0.5515
+-80.0049 9.8812 0.5515
+-76.6569 13.4763 0.5515
+-73.6707 18.0044 0.5515
+-73.2266 18.9671 0.5515
+-72.1474 21.8382 0.5515
+-70.8573 26.5062 0.5515
+-69.7756 32.8694 0.5515
+-69.3218 40.8285 0.5515
+-69.4003 42.7622 0.5515
+-69.952 47.7757 0.5515
+-71.4492 54.6228 0.5515
+-74.3605 62.0632 0.5515
+-79.1595 68.8715 0.5515
+-80.2882 69.9083 0.5515
+-83.5943 72.4236 0.5515
+-88.862 75.4271 0.5515
+-95.8875 77.9431 0.5515
+-104.48 78.9984 0.5515
+-105.989 78.9318 0.5515
+-109.993 78.4644 0.5515
+-115.597 77.1958 0.5515
+-121.924 74.7275 0.5515
+-128.102 70.6586 0.5515
+-129.29 69.466 0.5515
+-132.166 65.8118 0.5515
+-135.602 59.6688 0.5515
+-138.483 50.9988 0.5515
+-139.692 39.7478 0.5515
+-139.691 39.6835 0.5515
+-139.691 39.1479 0.5515
+-139.691 37.6941 0.5515
+-139.691 34.863 0.5515
+-126.922 39.8537 0.5515
+-126.922 40.2603 0.5515
+-126.922 41.3642 0.5515
+-126.922 43.5138 0.5515
+-126.922 47.0649 0.5515
+-126.87 47.8958 0.5515
+-126.512 50.125 0.5515
+-125.542 53.3988 0.5515
+-123.655 57.3631 0.5515
+-120.549 61.6585 0.5515
+-119.796 62.4263 0.5515
+-117.673 64.2261 0.5515
+-114.314 66.3739 0.5515
+-109.865 68.175 0.5515
+-104.481 68.9305 0.5515
+-103.415 68.8717 0.5515
+-100.692 68.4628 0.5515
+-96.896 67.3537 0.5515
+-92.6302 65.1919 0.5515
+-88.5082 61.6322 0.5515
+-87.8251 60.7409 0.5515
+-86.2352 58.1399 0.5515
+-84.3412 53.8385 0.5515
+-82.7558 47.8581 0.5515
+-82.0916 40.2285 0.5515
+-82.1425 38.6032 0.5515
+-82.4979 34.4902 0.5515
+-83.463 28.9568 0.5515
+-85.3474 23.0768 0.5515
+-88.4581 17.9404 0.5515
+-89.2157 17.1583 0.5515
+-91.3352 15.3407 0.5515
+-94.6824 13.1717 0.5515
+-99.1114 11.3526 0.5515
+-104.461 10.5895 0.5515
+-105.541 10.6483 0.5515
+-108.298 11.0571 0.5515
+-112.13 12.1661 0.5515
+-116.421 14.328 0.5515
+-120.541 17.8882 0.5515
+-121.221 18.7842 0.5515
+-122.802 21.4135 0.5515
+-124.685 25.7908 0.5515
+-126.261 31.9179 0.5515
+-126.922 39.786 0.5515
+-139.92 30.1956 5.52e-002
+-139.842 29.1195 5.52e-002
+-139.294 26.1781 5.52e-002
+-137.806 21.8013 5.52e-002
+-134.909 16.4193 5.52e-002
+-130.132 10.4622 5.52e-002
+-128.987 9.4047 5.52e-002
+-125.671 6.8828 5.52e-002
+-120.361 3.8728 5.52e-002
+-113.235 1.3509 5.52e-002
+-104.471 0.2933 5.52e-002
+-103.375 0.3303 5.52e-002
+-100.453 0.5892 5.52e-002
+-96.2535 1.2917 5.52e-002
+-91.3241 2.6599 5.52e-002
+-86.2133 4.9156 5.52e-002
+-85.3084 5.4631 5.52e-002
+-82.9889 7.0773 5.52e-002
+-79.8476 9.7156 5.52e-002
+-76.4774 13.3351 5.52e-002
+-73.4711 17.8933 5.52e-002
+-73.0158 18.8789 5.52e-002
+-71.9301 21.7675 5.52e-002
+-70.6343 26.4565 5.52e-002
+-69.5486 32.8437 5.52e-002
+-69.0933 40.8267 5.52e-002
+-69.1725 42.7794 5.52e-002
+-69.7266 47.8126 5.52e-002
+-71.2305 54.6891 5.52e-002
+-74.1593 62.1714 5.52e-002
+-78.9878 69.0222 5.52e-002
+-80.1415 70.0835 5.52e-002
+-83.4683 72.6142 5.52e-002
+-88.7666 75.6347 5.52e-002
+-95.8347 78.1654 5.52e-002
+-104.471 79.2267 5.52e-002
+-106.007 79.1595 5.52e-002
+-110.031 78.6896 5.52e-002
+-115.664 77.4142 5.52e-002
+-122.029 74.9304 5.52e-002
+-128.247 70.8356 5.52e-002
+-129.461 69.6176 5.52e-002
+-132.356 65.9386 5.52e-002
+-135.811 59.761 5.52e-002
+-138.706 51.0473 5.52e-002
+-139.92 39.76 5.52e-002
+-139.92 39.6835 5.52e-002
+-139.92 39.1479 5.52e-002
+-139.92 37.6941 5.52e-002
+-139.92 34.863 5.52e-002
+-126.693 39.8537 5.52e-002
+-126.693 40.2603 5.52e-002
+-126.693 41.3642 5.52e-002
+-126.693 43.5138 5.52e-002
+-126.693 47.0578 5.52e-002
+-126.643 47.8706 5.52e-002
+-126.289 50.0743 5.52e-002
+-125.328 53.317 5.52e-002
+-123.458 57.2466 5.52e-002
+-120.374 61.5111 5.52e-002
+-119.641 62.259 5.52e-002
+-117.537 64.0424 5.52e-002
+-114.21 66.1709 5.52e-002
+-109.805 67.9543 5.52e-002
+-104.471 68.7022 5.52e-002
+-103.438 68.6444 5.52e-002
+-100.741 68.2397 5.52e-002
+-96.98 67.1413 5.52e-002
+-92.7574 65.0022 5.52e-002
+-88.6744 61.4756 5.52e-002
+-88.0136 60.6118 5.52e-002
+-86.4377 58.0341 5.52e-002
+-84.5568 53.7629 5.52e-002
+-82.9809 47.8188 5.52e-002
+-82.32 40.2222 5.52e-002
+-82.3705 38.6166 5.52e-002
+-82.7244 34.5197 5.52e-002
+-83.6849 29.0113 5.52e-002
+-85.5553 23.1715 5.52e-002
+-88.6389 18.08 5.52e-002
+-89.3722 17.3247 5.52e-002
+-91.472 15.5237 5.52e-002
+-94.7884 13.3741 5.52e-002
+-99.1714 11.573 5.52e-002
+-104.471 10.8178 5.52e-002
+-105.518 10.8756 5.52e-002
+-108.249 11.2803 5.52e-002
+-112.047 12.3787 5.52e-002
+-116.294 14.5178 5.52e-002
+-120.374 18.0444 5.52e-002
+-121.032 18.9122 5.52e-002
+-122.599 21.5178 5.52e-002
+-124.469 25.8646 5.52e-002
+-126.036 31.9561 5.52e-002
+-126.693 39.7956 5.52e-002
+-139.92 30.1956 0
+-139.842 29.1195 0
+-139.294 26.1781 0
+-137.806 21.8013 0
+-134.909 16.4193 0
+-130.132 10.4622 0
+-128.987 9.4047 0
+-125.671 6.8828 0
+-120.361 3.8728 0
+-113.235 1.3509 0
+-104.471 0.2933 0
+-103.375 0.3303 0
+-100.453 0.5892 0
+-96.2535 1.2917 0
+-91.3241 2.6599 0
+-86.2133 4.9156 0
+-85.3084 5.4631 0
+-82.9889 7.0773 0
+-79.8476 9.7156 0
+-76.4774 13.3351 0
+-73.4711 17.8933 0
+-73.0158 18.8789 0
+-71.9301 21.7675 0
+-70.6343 26.4565 0
+-69.5486 32.8437 0
+-69.0933 40.8267 0
+-69.1725 42.7794 0
+-69.7266 47.8126 0
+-71.2305 54.6891 0
+-74.1593 62.1714 0
+-78.9878 69.0222 0
+-80.1415 70.0835 0
+-83.4683 72.6142 0
+-88.7666 75.6347 0
+-95.8347 78.1654 0
+-104.471 79.2267 0
+-106.007 79.1595 0
+-110.031 78.6896 0
+-115.664 77.4142 0
+-122.029 74.9304 0
+-128.247 70.8356 0
+-129.461 69.6176 0
+-132.356 65.9386 0
+-135.811 59.761 0
+-138.706 51.0473 0
+-139.92 39.76 0
+-139.92 39.6835 0
+-139.92 39.1479 0
+-139.92 37.6941 0
+-139.92 34.863 0
+-126.693 39.8537 0
+-126.693 40.2603 0
+-126.693 41.3642 0
+-126.693 43.5138 0
+-126.693 47.0578 0
+-126.643 47.8706 0
+-126.289 50.0743 0
+-125.328 53.317 0
+-123.458 57.2466 0
+-120.374 61.5111 0
+-119.641 62.259 0
+-117.537 64.0424 0
+-114.21 66.1709 0
+-109.805 67.9543 0
+-104.471 68.7022 0
+-103.438 68.6444 0
+-100.741 68.2397 0
+-96.98 67.1413 0
+-92.7574 65.0022 0
+-88.6744 61.4756 0
+-88.0136 60.6118 0
+-86.4377 58.0341 0
+-84.5568 53.7629 0
+-82.9809 47.8188 0
+-82.32 40.2222 0
+-82.3705 38.6166 0
+-82.7244 34.5197 0
+-83.6849 29.0113 0
+-85.5553 23.1715 0
+-88.6389 18.08 0
+-89.3722 17.3247 0
+-91.472 15.5237 0
+-94.7884 13.3741 0
+-99.1714 11.573 0
+-104.471 10.8178 0
+-105.518 10.8756 0
+-108.249 11.2803 0
+-112.047 12.3787 0
+-116.294 14.5178 0
+-120.374 18.0444 0
+-121.032 18.9122 0
+-122.599 21.5178 0
+-124.469 25.8646 0
+-126.036 31.9561 0
+-126.693 39.7956 0
+-139.92 30.1956 -100.
+-139.842 29.1195 -100.
+-139.294 26.1781 -100.
+-137.806 21.8013 -100.
+-134.909 16.4193 -100.
+-130.132 10.4622 -100.
+-128.987 9.4047 -100.
+-125.671 6.8828 -100.
+-120.361 3.8728 -100.
+-113.235 1.3509 -100.
+-104.471 0.2933 -100.
+-103.375 0.3303 -100.
+-100.453 0.5892 -100.
+-96.2535 1.2917 -100.
+-91.3241 2.6599 -100.
+-86.2133 4.9156 -100.
+-85.3084 5.4631 -100.
+-82.9889 7.0773 -100.
+-79.8476 9.7156 -100.
+-76.4774 13.3351 -100.
+-73.4711 17.8933 -100.
+-73.0158 18.8789 -100.
+-71.9301 21.7675 -100.
+-70.6343 26.4565 -100.
+-69.5486 32.8437 -100.
+-69.0933 40.8267 -100.
+-69.1725 42.7794 -100.
+-69.7266 47.8126 -100.
+-71.2305 54.6891 -100.
+-74.1593 62.1714 -100.
+-78.9878 69.0222 -100.
+-80.1415 70.0835 -100.
+-83.4683 72.6142 -100.
+-88.7666 75.6347 -100.
+-95.8347 78.1654 -100.
+-104.471 79.2267 -100.
+-106.007 79.1595 -100.
+-110.031 78.6896 -100.
+-115.664 77.4142 -100.
+-122.029 74.9304 -100.
+-128.247 70.8356 -100.
+-129.461 69.6176 -100.
+-132.356 65.9386 -100.
+-135.811 59.761 -100.
+-138.706 51.0473 -100.
+-139.92 39.76 -100.
+-139.92 39.6835 -100.
+-139.92 39.1479 -100.
+-139.92 37.6941 -100.
+-139.92 34.863 -100.
+-126.693 39.8537 -100.
+-126.693 40.2603 -100.
+-126.693 41.3642 -100.
+-126.693 43.5138 -100.
+-126.693 47.0578 -100.
+-126.643 47.8706 -100.
+-126.289 50.0743 -100.
+-125.328 53.317 -100.
+-123.458 57.2466 -100.
+-120.374 61.5111 -100.
+-119.641 62.259 -100.
+-117.537 64.0424 -100.
+-114.21 66.1709 -100.
+-109.805 67.9543 -100.
+-104.471 68.7022 -100.
+-103.438 68.6444 -100.
+-100.741 68.2397 -100.
+-96.98 67.1413 -100.
+-92.7574 65.0022 -100.
+-88.6744 61.4756 -100.
+-88.0136 60.6118 -100.
+-86.4377 58.0341 -100.
+-84.5568 53.7629 -100.
+-82.9809 47.8188 -100.
+-82.32 40.2222 -100.
+-82.3705 38.6166 -100.
+-82.7244 34.5197 -100.
+-83.6849 29.0113 -100.
+-85.5553 23.1715 -100.
+-88.6389 18.08 -100.
+-89.3722 17.3247 -100.
+-91.472 15.5237 -100.
+-94.7884 13.3741 -100.
+-99.1714 11.573 -100.
+-104.471 10.8178 -100.
+-105.518 10.8756 -100.
+-108.249 11.2803 -100.
+-112.047 12.3787 -100.
+-116.294 14.5178 -100.
+-120.374 18.0444 -100.
+-121.032 18.9122 -100.
+-122.599 21.5178 -100.
+-124.469 25.8646 -100.
+-126.036 31.9561 -100.
+-126.693 39.7956 -100.
+-42.196 2.5515 0.78
+-42.196 105.697 0.78
+-53.8929 105.697 0.78
+-53.8929 2.5515 0.78
+-42.157 2.5125 0.78
+-42.157 105.736 0.78
+-53.9319 105.736 0.78
+-53.9319 2.5125 0.78
+-41.806 2.1615 0.5515
+-41.806 106.087 0.5515
+-54.2829 106.087 0.5515
+-54.2829 2.1615 0.5515
+-41.6444 2. 5.52e-002
+-41.6444 106.249 5.52e-002
+-54.4444 106.249 5.52e-002
+-54.4444 2. 5.52e-002
+-41.6444 2. 0
+-41.6444 106.249 0
+-54.4444 106.249 0
+-54.4444 2. 0
+-41.6444 2. -100.
+-41.6444 106.249 -100.
+-54.4444 106.249 -100.
+-54.4444 2. -100.
+-9.9115 2.5515 0.78
+-9.9115 105.697 0.78
+-21.6085 105.697 0.78
+-21.6085 2.5515 0.78
+-9.8725 2.5125 0.78
+-9.8725 105.736 0.78
+-21.6475 105.736 0.78
+-21.6475 2.5125 0.78
+-9.5215 2.1615 0.5515
+-9.5215 106.087 0.5515
+-21.9985 106.087 0.5515
+-21.9985 2.1615 0.5515
+-9.36 2. 5.52e-002
+-9.36 106.249 5.52e-002
+-22.16 106.249 5.52e-002
+-22.16 2. 5.52e-002
+-9.36 2. 0
+-9.36 106.249 0
+-22.16 106.249 0
+-22.16 2. 0
+-9.36 2. -100.
+-9.36 106.249 -100.
+-22.16 106.249 -100.
+-22.16 2. -100.
+60.888 8.8082 0.78
+61.0238 8.0272 0.78
+61.6529 5.777 0.78
+62.8232 2.6494 0.78
+75.094 2.406 0.78
+74.6676 2.4175 0.78
+73.7275 4.4843 0.78
+72.6294 7.4647 0.78
+71.7576 10.9785 0.78
+71.6207 12.0625 0.78
+71.3369 15.6787 0.78
+71.0547 22.6349 0.78
+70.9267 33.7111 0.78
+70.9267 50.7794 0.78
+70.9168 52.1554 0.78
+70.8472 55.4291 0.78
+70.6593 59.294 0.78
+70.3006 62.429 0.78
+69.9233 63.8225 0.78
+68.6773 67.1351 0.78
+66.4641 70.7744 0.78
+65.6011 71.6439 0.78
+62.7643 73.8099 0.78
+57.8914 76.2342 0.78
+56.0616 76.7906 0.78
+50.7244 77.8657 0.78
+42.433 78.4468 0.78
+39.698 78.3501 0.78
+33.1608 77.6702 0.78
+25.5285 75.8251 0.78
+24.3897 75.3629 0.78
+21.4812 73.9426 0.78
+17.8735 71.6326 0.78
+14.5653 68.4769 0.78
+13.5611 67.0063 0.78
+11.2839 62.6581 0.78
+9.0065 56.4604 0.78
+20.4419 54.9934 0.78
+20.5158 55.8931 0.78
+21.7257 59.0748 0.78
+23.786 62.9033 0.78
+26.7362 66.1397 0.78
+27.6846 66.7238 0.78
+30.2548 67.8565 0.78
+34.5395 68.9766 0.78
+40.5484 69.4821 0.78
+42.2161 69.4118 0.78
+46.1614 68.9256 0.78
+51.0905 67.5927 0.78
+55.6269 64.9721 0.78
+56.3239 64.2162 0.78
+57.6506 62.1319 0.78
+58.9571 58.5429 0.78
+59.5432 53.386 0.78
+59.3921 49.5369 0.78
+57.5872 48.8205 0.78
+53.3277 47.7284 0.78
+46.1536 46.2914 0.78
+36.0011 44.8183 0.78
+34.7496 44.658 0.78
+31.7306 44.2331 0.78
+28.0182 43.6237 0.78
+24.6987 42.914 0.78
+23.8842 42.6629 0.78
+21.7182 41.8852 0.78
+18.8057 40.5997 0.78
+15.7155 38.8151 0.78
+15.0966 38.3529 0.78
+13.467 36.9424 0.78
+11.3787 34.6989 0.78
+9.3432 31.7035 0.78
+8.9872 30.975 0.78
+8.1459 28.8587 0.78
+7.3042 25.7354 0.78
+6.9221 21.9335 0.78
+7.0207 20.4689 0.78
+7.7287 16.6637 0.78
+9.6443 11.7693 0.78
+13.3859 6.936 0.78
+14.5079 6.0813 0.78
+18.063 4.0482 0.78
+23.9138 2.0052 0.78
+32.0218 1.0726 0.78
+33.227 1.1112 0.78
+36.4905 1.3804 0.78
+40.9633 2.1103 0.78
+45.8601 3.5313 0.78
+46.9347 3.9906 0.78
+49.9278 5.4914 0.78
+54.245 8.1211 0.78
+60.1405 12.1027 0.78
+59.5444 35.2709 0.78
+59.5114 33.8549 0.78
+59.2817 30.4242 0.78
+58.6531 26.1369 0.78
+57.4151 22.1736 0.78
+56.8488 21.1425 0.78
+55.2346 18.7823 0.78
+52.5004 15.7942 0.78
+48.6263 12.9602 0.78
+47.5219 12.4089 0.78
+44.6549 11.2683 0.78
+40.3656 10.1291 0.78
+35.0632 9.6114 0.78
+33.7473 9.6672 0.78
+30.6648 10.0525 0.78
+26.7912 11.1111 0.78
+23.1927 13.1936 0.78
+22.0537 14.4025 0.78
+20.081 17.5525 0.78
+19.0178 22.2783 0.78
+19.0883 23.4086 0.78
+19.5803 25.862 0.78
+20.9066 28.817 0.78
+21.5745 29.6958 0.78
+23.3846 31.4802 0.78
+26.2956 33.2803 0.78
+27.543 33.7328 0.78
+31.2332 34.7292 0.78
+37.6902 35.9069 0.78
+39.9822 36.2627 0.78
+45.5205 37.2537 0.78
+52.3444 38.7712 0.78
+59.2259 40.6022 0.78
+60.8334 8.8005 0.78
+60.97 8.015 0.78
+61.6008 5.7589 0.78
+62.7926 2.6035 0.78
+75.1411 2.3773 0.78
+74.7172 2.4416 0.78
+73.7785 4.5053 0.78
+72.6822 7.4809 0.78
+71.8118 10.9885 0.78
+71.6756 12.0681 0.78
+71.392 15.682 0.78
+71.1099 22.6363 0.78
+70.9818 33.7114 0.78
+70.9818 50.7796 0.78
+70.9719 52.1562 0.78
+70.9023 55.431 0.78
+70.7142 59.2985 0.78
+70.3547 62.4394 0.78
+69.9758 63.8394 0.78
+68.7269 67.1593 0.78
+66.5076 70.8084 0.78
+65.6376 71.6853 0.78
+62.7935 73.8567 0.78
+57.9118 76.2855 0.78
+56.0751 76.844 0.78
+50.7318 77.9204 0.78
+42.434 78.5019 0.78
+39.6941 78.4051 0.78
+33.1514 77.7245 0.78
+25.5116 75.8776 0.78
+24.3672 75.4133 0.78
+21.4542 73.9907 0.78
+17.8394 71.676 0.78
+14.5233 68.5126 0.78
+13.5139 67.0347 0.78
+11.2331 62.6794 0.78
+8.9599 56.431 0.78
+20.4718 54.9471 0.78
+20.5681 55.8754 0.78
+21.7759 59.0519 0.78
+23.831 62.8714 0.78
+26.7713 66.0972 0.78
+27.7101 66.6749 0.78
+30.273 67.8044 0.78
+34.5488 68.9222 0.78
+40.5496 69.4269 0.78
+42.2116 69.3568 0.78
+46.1508 68.8714 0.78
+51.0694 67.5417 0.78
+55.5923 64.9291 0.78
+56.2801 64.1827 0.78
+57.6011 62.1074 0.78
+58.9034 58.5303 0.78
+59.4882 53.3829 0.78
+59.3477 49.5696 0.78
+57.5722 48.8735 0.78
+53.3154 47.7822 0.78
+46.1443 46.3457 0.78
+35.9936 44.8729 0.78
+34.7422 44.7127 0.78
+31.7223 44.2876 0.78
+28.008 43.6779 0.78
+24.6848 42.9674 0.78
+23.8668 42.7152 0.78
+21.6977 41.9364 0.78
+18.7807 40.6488 0.78
+15.6852 38.8612 0.78
+15.0621 38.3959 0.78
+13.4287 36.9821 0.78
+11.3356 34.7332 0.78
+9.2955 31.7313 0.78
+8.9368 30.9974 0.78
+8.0935 28.8761 0.78
+7.25 25.7454 0.78
+6.867 21.9344 0.78
+6.966 20.462 0.78
+7.6757 16.6485 0.78
+9.5964 11.7421 0.78
+13.347 6.897 0.78
+14.4774 6.0354 0.78
+18.0402 3.998 0.78
+23.9015 1.9514 0.78
+32.0194 1.0175 0.78
+33.2301 1.0561 0.78
+36.4972 1.3257 0.78
+40.9754 2.0565 0.78
+45.8786 3.4794 0.78
+46.9579 3.9406 0.78
+49.9545 5.4432 0.78
+54.2761 8.0756 0.78
+60.1186 12.0521 0.78
+59.4893 35.2716 0.78
+59.4563 33.8574 0.78
+59.2269 30.43 0.78
+58.5993 26.1491 0.78
+57.3644 22.1953 0.78
+56.8018 21.1714 0.78
+55.1913 18.8165 0.78
+52.4636 15.8352 0.78
+48.5977 13.0073 0.78
+47.4994 12.4593 0.78
+44.6376 11.3207 0.78
+40.3558 10.1833 0.78
+35.0617 9.6665 0.78
+33.7519 9.7221 0.78
+30.6755 10.1066 0.78
+26.8124 11.1621 0.78
+23.227 13.2368 0.78
+22.0974 14.4362 0.78
+20.132 17.5736 0.78
+19.0728 22.2825 0.78
+19.143 23.4013 0.78
+19.6328 25.8452 0.78
+20.954 28.7888 0.78
+21.6159 29.6594 0.78
+23.4187 31.4369 0.78
+26.3195 33.2306 0.78
+27.5596 33.6801 0.78
+31.2454 34.6754 0.78
+37.6994 35.8525 0.78
+39.9913 36.2083 0.78
+45.5313 37.1996 0.78
+52.3587 38.7179 0.78
+59.1933 40.5577 0.78
+60.3418 8.7317 0.5515
+60.4859 7.9053 0.5515
+61.132 5.5958 0.5515
+62.5177 2.1902 0.5515
+75.5649 2.1189 0.5515
+75.1639 2.6582 0.5515
+74.2376 4.6941 0.5515
+73.1566 7.6268 0.5515
+72.2998 11.0793 0.5515
+72.1694 12.1184 0.5515
+71.8875 15.7114 0.5515
+71.6061 22.6492 0.5515
+71.4782 33.7142 0.5515
+71.4782 50.7814 0.5515
+71.4682 52.1632 0.5515
+71.3984 55.4484 0.5515
+71.209 59.3389 0.5515
+70.8423 62.5326 0.5515
+70.4482 63.9918 0.5515
+69.1731 67.3768 0.5515
+66.8988 71.1139 0.5515
+65.9655 72.0579 0.5515
+63.0558 74.2781 0.5515
+58.0955 76.7466 0.5515
+56.1967 77.3253 0.5515
+50.7983 78.4123 0.5515
+42.4427 78.9982 0.5515
+39.6597 78.9003 0.5515
+33.0672 78.2137 0.5515
+25.3599 76.3503 0.5515
+24.1651 75.8667 0.5515
+21.2109 74.4234 0.5515
+17.5327 72.0663 0.5515
+14.1451 68.8342 0.5515
+13.0885 67.2905 0.5515
+10.7751 62.871 0.5515
+8.5399 56.1663 0.5515
+20.7407 54.5298 0.5515
+21.0382 55.7161 0.5515
+22.2276 58.8459 0.5515
+24.2362 62.5847 0.5515
+27.0869 65.7141 0.5515
+27.9397 66.2348 0.5515
+30.4364 67.3357 0.5515
+34.6327 68.433 0.5515
+40.5598 68.9306 0.5515
+42.1707 68.8621 0.5515
+46.0557 68.3842 0.5515
+50.8792 67.0832 0.5515
+55.281 64.5424 0.5515
+55.8859 63.881 0.5515
+57.156 61.8878 0.5515
+58.4202 58.4167 0.5515
+58.9926 53.3551 0.5515
+58.9483 49.8644 0.5515
+57.4373 49.3513 0.5515
+53.205 48.2662 0.5515
+46.0599 46.8349 0.5515
+35.9265 45.3648 0.5515
+34.6761 45.2047 0.5515
+31.6475 44.7783 0.5515
+27.9158 44.1657 0.5515
+24.5598 43.4478 0.5515
+23.7098 43.1862 0.5515
+21.5134 42.3973 0.5515
+18.556 41.0914 0.5515
+15.4123 39.2758 0.5515
+14.7511 38.7828 0.5515
+13.0839 37.3392 0.5515
+10.9475 35.0427 0.5515
+8.8664 31.9807 0.5515
+8.483 31.1985 0.5515
+7.6224 29.0325 0.5515
+6.7617 25.8349 0.5515
+6.3707 21.9428 0.5515
+6.4735 20.3999 0.5515
+7.1985 16.5117 0.5515
+9.1647 11.4971 0.5515
+12.9968 6.5452 0.5515
+14.2026 5.622 0.5515
+17.8344 3.5462 0.5515
+23.7906 1.4676 0.5515
+31.9985 0.5216 0.5515
+33.2581 0.5605 0.5515
+36.5577 0.833 0.5515
+41.0848 1.5723 0.5515
+46.0454 3.0118 0.5515
+47.1666 3.4902 0.5515
+50.1951 5.009 0.5515
+54.5557 7.6654 0.5515
+59.9217 11.5964 0.5515
+58.9929 35.2773 0.5515
+58.9604 33.8797 0.5515
+58.7333 30.4825 0.5515
+58.1153 26.2593 0.5515
+56.9079 22.3903 0.5515
+56.3792 21.4318 0.5515
+54.8023 19.1248 0.5515
+52.1323 16.2049 0.5515
+48.3398 13.4315 0.5515
+47.2969 12.9125 0.5515
+44.4817 11.792 0.5515
+40.2676 10.6718 0.5515
+35.0484 10.1627 0.5515
+33.7934 10.2168 0.5515
+30.7716 10.5936 0.5515
+27.0034 11.6202 0.5515
+23.5357 13.6255 0.5515
+22.4904 14.7395 0.5515
+20.5909 17.7628 0.5515
+19.5678 22.3204 0.5515
+19.6351 23.3358 0.5515
+20.1057 25.6942 0.5515
+21.3804 28.5347 0.5515
+21.9884 29.3313 0.5515
+23.7256 31.0467 0.5515
+26.5352 32.7836 0.5515
+27.7084 33.2066 0.5515
+31.3547 34.1912 0.5515
+37.782 35.3631 0.5515
+40.0731 35.7187 0.5515
+45.629 36.7129 0.5515
+52.4871 38.2385 0.5515
+58.8996 40.1575 0.5515
+60.1156 8.7 5.52e-002
+60.2631 7.8548 5.52e-002
+60.9162 5.5207 5.52e-002
+62.3911 2. 5.52e-002
+75.76 2. 5.52e-002
+75.3695 2.7578 5.52e-002
+74.4489 4.781 5.52e-002
+73.375 7.6939 5.52e-002
+72.5245 11.1211 5.52e-002
+72.3967 12.1415 5.52e-002
+72.1156 15.725 5.52e-002
+71.8345 22.6552 5.52e-002
+71.7067 33.7156 5.52e-002
+71.7067 50.7822 5.52e-002
+71.6967 52.1665 5.52e-002
+71.6267 55.4564 5.52e-002
+71.4367 59.3575 5.52e-002
+71.0667 62.5756 5.52e-002
+70.6656 64.0619 5.52e-002
+69.3784 67.477 5.52e-002
+67.0789 71.2544 5.52e-002
+66.1165 72.2294 5.52e-002
+63.1765 74.4721 5.52e-002
+58.18 76.9589 5.52e-002
+56.2526 77.5468 5.52e-002
+50.8289 78.6387 5.52e-002
+42.4467 79.2267 5.52e-002
+39.6438 79.1282 5.52e-002
+33.0284 78.4388 5.52e-002
+25.29 76.5678 5.52e-002
+24.0721 76.0753 5.52e-002
+21.0989 74.6225 5.52e-002
+17.3916 72.2459 5.52e-002
+13.9711 68.9822 5.52e-002
+12.8927 67.4082 5.52e-002
+10.5644 62.9592 5.52e-002
+8.3467 56.0444 5.52e-002
+20.8644 54.3378 5.52e-002
+21.2546 55.6428 5.52e-002
+22.4354 58.7511 5.52e-002
+24.4227 62.4528 5.52e-002
+27.2322 65.5378 5.52e-002
+28.0454 66.0322 5.52e-002
+30.5117 67.12 5.52e-002
+34.6713 68.2078 5.52e-002
+40.5644 68.7022 5.52e-002
+42.1518 68.6344 5.52e-002
+46.0119 68.16 5.52e-002
+50.7916 66.8722 5.52e-002
+55.1378 64.3644 5.52e-002
+55.7044 63.7422 5.52e-002
+56.9511 61.7867 5.52e-002
+58.1978 58.3644 5.52e-002
+58.7645 53.3422 5.52e-002
+58.7645 50. 5.52e-002
+57.3753 49.5711 5.52e-002
+53.1542 48.4889 5.52e-002
+46.021 47.06 5.52e-002
+35.8956 45.5911 5.52e-002
+34.6457 45.4311 5.52e-002
+31.6131 45.0042 5.52e-002
+27.8734 44.3902 5.52e-002
+24.5022 43.6689 5.52e-002
+23.6376 43.4029 5.52e-002
+21.4286 42.6094 5.52e-002
+18.4525 41.2951 5.52e-002
+15.2867 39.4667 5.52e-002
+14.6079 38.9609 5.52e-002
+12.9253 37.5036 5.52e-002
+10.7689 35.1851 5.52e-002
+8.6689 32.0956 5.52e-002
+8.2741 31.291 5.52e-002
+7.4056 29.1044 5.52e-002
+6.537 25.8762 5.52e-002
+6.1422 21.9467 5.52e-002
+6.2468 20.3713 5.52e-002
+6.9789 16.4488 5.52e-002
+8.966 11.3843 5.52e-002
+12.8356 6.3833 5.52e-002
+14.0761 5.4318 5.52e-002
+17.7397 3.3383 5.52e-002
+23.7396 1.2449 5.52e-002
+31.9889 0.2933 5.52e-002
+33.271 0.3324 5.52e-002
+36.5856 0.6062 5.52e-002
+41.1351 1.3494 5.52e-002
+46.1222 2.7967 5.52e-002
+47.2627 3.2829 5.52e-002
+50.3058 4.8092 5.52e-002
+54.6844 7.4767 5.52e-002
+59.8311 11.3867 5.52e-002
+58.7645 35.28 5.52e-002
+58.7322 33.89 5.52e-002
+58.5061 30.5067 5.52e-002
+57.8926 26.31 5.52e-002
+56.6978 22.48 5.52e-002
+56.1847 21.5517 5.52e-002
+54.6232 19.2667 5.52e-002
+51.9798 16.375 5.52e-002
+48.2211 13.6267 5.52e-002
+47.2038 13.1211 5.52e-002
+44.41 12.0089 5.52e-002
+40.227 10.8967 5.52e-002
+35.0422 10.3911 5.52e-002
+33.8125 10.4444 5.52e-002
+30.8158 10.8178 5.52e-002
+27.0913 11.8311 5.52e-002
+23.6778 13.8044 5.52e-002
+22.6713 14.879 5.52e-002
+20.8021 17.8499 5.52e-002
+19.7956 22.3378 5.52e-002
+19.8615 23.3057 5.52e-002
+20.3233 25.6247 5.52e-002
+21.5767 28.4178 5.52e-002
+22.1598 29.1802 5.52e-002
+23.8669 30.8672 5.52e-002
+26.6345 32.5778 5.52e-002
+27.7769 32.9886 5.52e-002
+31.405 33.9684 5.52e-002
+37.82 35.1378 5.52e-002
+40.1107 35.4933 5.52e-002
+45.6739 36.4889 5.52e-002
+52.5463 38.0178 5.52e-002
+58.7645 39.9733 5.52e-002
+60.1156 8.7 0
+60.2631 7.8548 0
+60.9162 5.5207 0
+62.3911 2. 0
+75.76 2. 0
+75.3695 2.7578 0
+74.4489 4.781 0
+73.375 7.6939 0
+72.5245 11.1211 0
+72.3967 12.1415 0
+72.1156 15.725 0
+71.8345 22.6552 0
+71.7067 33.7156 0
+71.7067 50.7822 0
+71.6967 52.1665 0
+71.6267 55.4564 0
+71.4367 59.3575 0
+71.0667 62.5756 0
+70.6656 64.0619 0
+69.3784 67.477 0
+67.0789 71.2544 0
+66.1165 72.2294 0
+63.1765 74.4721 0
+58.18 76.9589 0
+56.2526 77.5468 0
+50.8289 78.6387 0
+42.4467 79.2267 0
+39.6438 79.1282 0
+33.0284 78.4388 0
+25.29 76.5678 0
+24.0721 76.0753 0
+21.0989 74.6225 0
+17.3916 72.2459 0
+13.9711 68.9822 0
+12.8927 67.4082 0
+10.5644 62.9592 0
+8.3467 56.0444 0
+20.8644 54.3378 0
+21.2546 55.6428 0
+22.4354 58.7511 0
+24.4227 62.4528 0
+27.2322 65.5378 0
+28.0454 66.0322 0
+30.5117 67.12 0
+34.6713 68.2078 0
+40.5644 68.7022 0
+42.1518 68.6344 0
+46.0119 68.16 0
+50.7916 66.8722 0
+55.1378 64.3644 0
+55.7044 63.7422 0
+56.9511 61.7867 0
+58.1978 58.3644 0
+58.7645 53.3422 0
+58.7645 50. 0
+57.3753 49.5711 0
+53.1542 48.4889 0
+46.021 47.06 0
+35.8956 45.5911 0
+34.6457 45.4311 0
+31.6131 45.0042 0
+27.8734 44.3902 0
+24.5022 43.6689 0
+23.6376 43.4029 0
+21.4286 42.6094 0
+18.4525 41.2951 0
+15.2867 39.4667 0
+14.6079 38.9609 0
+12.9253 37.5036 0
+10.7689 35.1851 0
+8.6689 32.0956 0
+8.2741 31.291 0
+7.4056 29.1044 0
+6.537 25.8762 0
+6.1422 21.9467 0
+6.2468 20.3713 0
+6.9789 16.4488 0
+8.966 11.3843 0
+12.8356 6.3833 0
+14.0761 5.4318 0
+17.7397 3.3383 0
+23.7396 1.2449 0
+31.9889 0.2933 0
+33.271 0.3324 0
+36.5856 0.6062 0
+41.1351 1.3494 0
+46.1222 2.7967 0
+47.2627 3.2829 0
+50.3058 4.8092 0
+54.6844 7.4767 0
+59.8311 11.3867 0
+58.7645 35.28 0
+58.7322 33.89 0
+58.5061 30.5067 0
+57.8926 26.31 0
+56.6978 22.48 0
+56.1847 21.5517 0
+54.6232 19.2667 0
+51.9798 16.375 0
+48.2211 13.6267 0
+47.2038 13.1211 0
+44.41 12.0089 0
+40.227 10.8967 0
+35.0422 10.3911 0
+33.8125 10.4444 0
+30.8158 10.8178 0
+27.0913 11.8311 0
+23.6778 13.8044 0
+22.6713 14.879 0
+20.8021 17.8499 0
+19.7956 22.3378 0
+19.8615 23.3057 0
+20.3233 25.6247 0
+21.5767 28.4178 0
+22.1598 29.1802 0
+23.8669 30.8672 0
+26.6345 32.5778 0
+27.7769 32.9886 0
+31.405 33.9684 0
+37.82 35.1378 0
+40.1107 35.4933 0
+45.6739 36.4889 0
+52.5463 38.0178 0
+58.7645 39.9733 0
+60.1156 8.7 -100.
+60.2631 7.8548 -100.
+60.9162 5.5207 -100.
+62.3911 2. -100.
+75.76 2. -100.
+75.3695 2.7578 -100.
+74.4489 4.781 -100.
+73.375 7.6939 -100.
+72.5245 11.1211 -100.
+72.3967 12.1415 -100.
+72.1156 15.725 -100.
+71.8345 22.6552 -100.
+71.7067 33.7156 -100.
+71.7067 50.7822 -100.
+71.6967 52.1665 -100.
+71.6267 55.4564 -100.
+71.4367 59.3575 -100.
+71.0667 62.5756 -100.
+70.6656 64.0619 -100.
+69.3784 67.477 -100.
+67.0789 71.2544 -100.
+66.1165 72.2294 -100.
+63.1765 74.4721 -100.
+58.18 76.9589 -100.
+56.2526 77.5468 -100.
+50.8289 78.6387 -100.
+42.4467 79.2267 -100.
+39.6438 79.1282 -100.
+33.0284 78.4388 -100.
+25.29 76.5678 -100.
+24.0721 76.0753 -100.
+21.0989 74.6225 -100.
+17.3916 72.2459 -100.
+13.9711 68.9822 -100.
+12.8927 67.4082 -100.
+10.5644 62.9592 -100.
+8.3467 56.0444 -100.
+20.8644 54.3378 -100.
+21.2546 55.6428 -100.
+22.4354 58.7511 -100.
+24.4227 62.4528 -100.
+27.2322 65.5378 -100.
+28.0454 66.0322 -100.
+30.5117 67.12 -100.
+34.6713 68.2078 -100.
+40.5644 68.7022 -100.
+42.1518 68.6344 -100.
+46.0119 68.16 -100.
+50.7916 66.8722 -100.
+55.1378 64.3644 -100.
+55.7044 63.7422 -100.
+56.9511 61.7867 -100.
+58.1978 58.3644 -100.
+58.7645 53.3422 -100.
+58.7645 50. -100.
+57.3753 49.5711 -100.
+53.1542 48.4889 -100.
+46.021 47.06 -100.
+35.8956 45.5911 -100.
+34.6457 45.4311 -100.
+31.6131 45.0042 -100.
+27.8734 44.3902 -100.
+24.5022 43.6689 -100.
+23.6376 43.4029 -100.
+21.4286 42.6094 -100.
+18.4525 41.2951 -100.
+15.2867 39.4667 -100.
+14.6079 38.9609 -100.
+12.9253 37.5036 -100.
+10.7689 35.1851 -100.
+8.6689 32.0956 -100.
+8.2741 31.291 -100.
+7.4056 29.1044 -100.
+6.537 25.8762 -100.
+6.1422 21.9467 -100.
+6.2468 20.3713 -100.
+6.9789 16.4488 -100.
+8.966 11.3843 -100.
+12.8356 6.3833 -100.
+14.0761 5.4318 -100.
+17.7397 3.3383 -100.
+23.7396 1.2449 -100.
+31.9889 0.2933 -100.
+33.271 0.3324 -100.
+36.5856 0.6062 -100.
+41.1351 1.3494 -100.
+46.1222 2.7967 -100.
+47.2627 3.2829 -100.
+50.3058 4.8092 -100.
+54.6844 7.4767 -100.
+59.8311 11.3867 -100.
+58.7645 35.28 -100.
+58.7322 33.89 -100.
+58.5061 30.5067 -100.
+57.8926 26.31 -100.
+56.6978 22.48 -100.
+56.1847 21.5517 -100.
+54.6232 19.2667 -100.
+51.9798 16.375 -100.
+48.2211 13.6267 -100.
+47.2038 13.1211 -100.
+44.41 12.0089 -100.
+40.227 10.8967 -100.
+35.0422 10.3911 -100.
+33.8125 10.4444 -100.
+30.8158 10.8178 -100.
+27.0913 11.8311 -100.
+23.6778 13.8044 -100.
+22.6713 14.879 -100.
+20.8021 17.8499 -100.
+19.7956 22.3378 -100.
+19.8615 23.3057 -100.
+20.3233 25.6247 -100.
+21.5767 28.4178 -100.
+22.1598 29.1802 -100.
+23.8669 30.8672 -100.
+26.6345 32.5778 -100.
+27.7769 32.9886 -100.
+31.405 33.9684 -100.
+37.82 35.1378 -100.
+40.1107 35.4933 -100.
+45.6739 36.4889 -100.
+52.5463 38.0178 -100.
+58.7645 39.9733 -100.
+151.937 2.5515 0.78
+151.937 105.697 0.78
+140.311 105.697 0.78
+140.014 68.1757 0.78
+138.768 68.9179 0.78
+137.672 70.1801 0.78
+135.917 71.9284 0.78
+133.573 73.8603 0.78
+130.696 75.6846 0.78
+130.146 75.9521 0.78
+128.489 76.6408 0.78
+125.938 77.4659 0.78
+122.68 78.157 0.78
+118.885 78.4468 0.78
+117.923 78.4093 0.78
+115.245 78.1407 0.78
+111.416 77.4108 0.78
+106.974 75.9937 0.78
+102.429 73.6544 0.78
+101.684 73.1187 0.78
+99.6513 71.4293 0.78
+96.9051 68.641 0.78
+93.9842 64.7903 0.78
+91.4108 59.8858 0.78
+91.0431 58.9002 0.78
+90.1202 56.0249 0.78
+89.0166 51.6357 0.78
+88.092 46.0766 0.78
+87.7043 39.6755 0.78
+87.7369 38.4491 0.78
+87.9672 35.1157 0.78
+88.5924 30.3865 0.78
+89.8062 24.9534 0.78
+91.8061 19.4851 0.78
+92.2694 18.5798 0.78
+93.6995 16.1348 0.78
+96.041 12.7992 0.78
+99.2467 9.1922 0.78
+103.29 5.9097 0.78
+104.084 5.4345 0.78
+106.417 4.2273 0.78
+109.96 2.7845 0.78
+114.41 1.5782 0.78
+119.487 1.0732 0.78
+120.894 1.1585 0.78
+124.66 1.7703 0.78
+129.746 3.4304 0.78
+135.162 6.6493 0.78
+140.894 12.2568 0.78
+141.165 2.5515 0.78
+99.3711 39.7845 0.78
+99.3711 40.2052 0.78
+99.3711 41.3468 0.78
+99.3711 43.5701 0.78
+99.3714 47.2569 0.78
+99.4206 48.1488 0.78
+99.753 50.4811 0.78
+100.65 53.865 0.78
+102.397 57.9106 0.78
+105.262 62.2055 0.78
+105.988 63.002 0.78
+107.951 64.7911 0.78
+111.048 66.9272 0.78
+115.156 68.7257 0.78
+120.098 69.4814 0.78
+121.177 69.4193 0.78
+123.775 68.9963 0.78
+127.397 67.8512 0.78
+131.484 65.6172 0.78
+135.44 61.9539 0.78
+136.135 60.9754 0.78
+137.662 58.2226 0.78
+139.469 53.6123 0.78
+140.977 47.103 0.78
+141.607 38.6726 0.78
+141.558 37.0897 0.78
+141.225 33.1555 0.78
+140.318 27.8545 0.78
+138.535 22.1897 0.78
+135.582 17.2185 0.78
+134.825 16.4135 0.78
+132.836 14.6537 0.78
+129.721 12.5523 0.78
+125.622 10.7826 0.78
+120.737 10.0385 0.78
+119.699 10.1004 0.78
+117.198 10.5201 0.78
+113.681 11.6548 0.78
+109.663 13.8652 0.78
+105.687 17.4869 0.78
+104.979 18.4445 0.78
+103.416 21.122 0.78
+101.563 25.5607 0.78
+100.017 31.7623 0.78
+99.3717 39.6929 0.78
+151.976 2.5125 0.78
+151.976 105.736 0.78
+140.273 105.736 0.78
+139.996 68.2279 0.78
+138.81 68.953 0.78
+137.712 70.2178 0.78
+135.954 71.9693 0.78
+133.605 73.905 0.78
+130.723 75.7328 0.78
+130.168 76.0024 0.78
+128.508 76.6926 0.78
+125.952 77.5192 0.78
+122.688 78.2116 0.78
+118.886 78.502 0.78
+117.919 78.4643 0.78
+115.237 78.1953 0.78
+111.403 77.4643 0.78
+106.953 76.0446 0.78
+102.4 73.7014 0.78
+101.65 73.1624 0.78
+99.614 71.4699 0.78
+96.8634 68.6771 0.78
+93.9377 64.8199 0.78
+91.3605 59.9083 0.78
+90.991 58.9183 0.78
+90.0672 56.0401 0.78
+88.9626 51.6469 0.78
+88.0372 46.0828 0.78
+87.6492 39.6764 0.78
+87.6818 38.4465 0.78
+87.9123 35.1102 0.78
+88.5381 30.3769 0.78
+89.7533 24.9379 0.78
+91.7555 19.4631 0.78
+92.221 18.5533 0.78
+93.6531 16.105 0.78
+95.9977 12.7649 0.78
+99.2086 9.1523 0.78
+103.258 5.8645 0.78
+104.057 5.3863 0.78
+106.394 4.1772 0.78
+109.942 2.7323 0.78
+114.4 1.5239 0.78
+119.485 1.018 0.78
+120.9 1.1036 0.78
+124.673 1.7167 0.78
+129.769 3.3802 0.78
+135.197 6.6067 0.78
+140.874 12.2053 0.78
+141.126 2.5125 0.78
+99.4263 39.7845 0.78
+99.4263 40.2052 0.78
+99.4263 41.3468 0.78
+99.4263 43.5701 0.78
+99.4265 47.2554 0.78
+99.4755 48.1434 0.78
+99.8071 50.4702 0.78
+100.703 53.847 0.78
+102.445 57.8843 0.78
+105.305 62.1715 0.78
+106.027 62.963 0.78
+107.985 64.7479 0.78
+111.075 66.8791 0.78
+115.172 68.6727 0.78
+120.101 69.4263 0.78
+121.171 69.3645 0.78
+123.762 68.9426 0.78
+127.376 67.8004 0.78
+131.452 65.5724 0.78
+135.399 61.9175 0.78
+136.088 60.946 0.78
+137.612 58.1991 0.78
+139.416 53.5959 0.78
+140.922 47.0947 0.78
+141.551 38.6714 0.78
+141.503 37.0929 0.78
+141.17 33.1624 0.78
+140.264 27.8674 0.78
+138.485 22.2122 0.78
+135.538 17.2518 0.78
+134.786 16.4531 0.78
+132.802 14.6973 0.78
+129.694 12.6007 0.78
+125.607 10.8357 0.78
+120.734 10.0936 0.78
+119.705 10.1552 0.78
+117.211 10.5737 0.78
+113.703 11.7054 0.78
+109.695 13.91 0.78
+105.728 17.5239 0.78
+105.025 18.4748 0.78
+103.465 21.1466 0.78
+101.616 25.5781 0.78
+100.072 31.7712 0.78
+99.4269 39.6951 0.78
+152.327 2.1615 0.5515
+152.327 106.087 0.5515
+139.921 106.087 0.5515
+139.834 68.6973 0.5515
+139.193 69.2685 0.5515
+138.075 70.5566 0.5515
+136.287 72.3371 0.5515
+133.897 74.3069 0.5515
+130.965 76.1661 0.5515
+130.373 76.4549 0.5515
+128.68 77.1583 0.5515
+126.08 77.9988 0.5515
+122.759 78.703 0.5515
+118.896 78.9982 0.5515
+117.885 78.9595 0.5515
+115.166 78.6866 0.5515
+111.281 77.9454 0.5515
+106.764 76.5033 0.5515
+102.141 74.125 0.5515
+101.347 73.5552 0.5515
+99.2781 71.8353 0.5515
+96.488 69.0019 0.5515
+93.5187 65.0862 0.5515
+90.9074 60.1111 0.5515
+90.5221 59.0813 0.5515
+89.5899 56.1765 0.5515
+88.4767 51.7482 0.5515
+87.544 46.1386 0.5515
+87.1529 39.685 0.5515
+87.186 38.4229 0.5515
+87.4184 35.0605 0.5515
+88.0494 30.2901 0.5515
+89.277 24.7982 0.5515
+91.3005 19.2647 0.5515
+91.7855 18.315 0.5515
+93.2354 15.8368 0.5515
+95.6085 12.4569 0.5515
+98.8656 8.7935 0.5515
+102.973 5.4581 0.5515
+103.815 4.9529 0.5515
+106.186 3.7264 0.5515
+109.784 2.262 0.5515
+114.31 1.0357 0.5515
+119.476 0.5217 0.5515
+120.955 0.6103 0.5515
+124.791 1.2344 0.5515
+129.974 2.9282 0.5515
+135.512 6.2227 0.5515
+140.695 11.7421 0.5515
+140.775 2.1615 0.5515
+99.9227 39.7845 0.5515
+99.9227 40.2052 0.5515
+99.9227 41.3468 0.5515
+99.9227 43.5701 0.5515
+99.9227 47.2418 0.5515
+99.9695 48.0949 0.5515
+100.294 50.3715 0.5515
+101.172 53.6847 0.5515
+102.881 57.6472 0.5515
+105.696 61.8653 0.5515
+106.378 62.6118 0.5515
+108.295 64.3594 0.5515
+111.317 66.4456 0.5515
+115.31 68.1959 0.5515
+120.123 68.9304 0.5515
+121.116 68.8712 0.5515
+123.647 68.4597 0.5515
+127.181 67.3438 0.5515
+131.162 65.1694 0.5515
+135.025 61.5905 0.5515
+135.668 60.6821 0.5515
+137.163 57.9876 0.5515
+138.942 53.4489 0.5515
+140.431 47.02 0.5515
+141.055 38.6605 0.5515
+141.008 37.1215 0.5515
+140.678 33.2253 0.5515
+139.781 27.9839 0.5515
+138.031 22.4147 0.5515
+135.142 17.5511 0.5515
+134.441 16.81 0.5515
+132.498 15.0897 0.5515
+129.456 13.036 0.5515
+125.47 11.3128 0.5515
+120.712 10.5895 0.5515
+119.762 10.6483 0.5515
+117.328 11.056 0.5515
+113.899 12.1613 0.5515
+109.983 14.3138 0.5515
+106.097 17.856 0.5515
+105.44 18.7475 0.5515
+103.91 21.3679 0.5515
+102.087 25.7342 0.5515
+100.562 31.8516 0.5515
+99.9228 39.7152 0.5515
+152.489 2. 5.52e-002
+152.489 106.249 5.52e-002
+139.76 106.249 5.52e-002
+139.76 68.9133 5.52e-002
+139.37 69.4137 5.52e-002
+138.242 70.7125 5.52e-002
+136.441 72.5064 5.52e-002
+134.031 74.4919 5.52e-002
+131.077 76.3656 5.52e-002
+130.467 76.6631 5.52e-002
+128.759 77.3727 5.52e-002
+126.139 78.2196 5.52e-002
+122.791 78.9291 5.52e-002
+118.9 79.2267 5.52e-002
+117.869 79.1874 5.52e-002
+115.133 78.9126 5.52e-002
+111.224 78.1668 5.52e-002
+106.676 76.7144 5.52e-002
+102.022 74.32 5.52e-002
+101.207 73.736 5.52e-002
+99.1234 72.0035 5.52e-002
+96.3152 69.1514 5.52e-002
+93.3259 65.2087 5.52e-002
+90.6989 60.2044 5.52e-002
+90.3063 59.1563 5.52e-002
+89.3703 56.2393 5.52e-002
+88.253 51.7948 5.52e-002
+87.317 46.1643 5.52e-002
+86.9244 39.6889 5.52e-002
+86.9578 38.412 5.52e-002
+87.1911 35.0377 5.52e-002
+87.8244 30.2502 5.52e-002
+89.0578 24.7339 5.52e-002
+91.0911 19.1733 5.52e-002
+91.5851 18.2054 5.52e-002
+93.0432 15.7134 5.52e-002
+95.4293 12.3151 5.52e-002
+98.7077 8.6284 5.52e-002
+102.842 5.2711 5.52e-002
+103.703 4.7534 5.52e-002
+106.091 3.5189 5.52e-002
+109.711 2.0455 5.52e-002
+114.269 0.811 5.52e-002
+119.471 0.2933 5.52e-002
+120.98 0.3832 5.52e-002
+124.845 1.0124 5.52e-002
+130.068 2.7202 5.52e-002
+135.657 6.0459 5.52e-002
+140.613 11.5289 5.52e-002
+140.613 2. 5.52e-002
+100.151 39.7845 5.52e-002
+100.151 40.2052 5.52e-002
+100.151 41.3468 5.52e-002
+100.151 43.5701 5.52e-002
+100.151 47.2356 5.52e-002
+100.197 48.0725 5.52e-002
+100.518 50.326 5.52e-002
+101.388 53.61 5.52e-002
+103.082 57.5381 5.52e-002
+105.876 61.7244 5.52e-002
+106.539 62.4501 5.52e-002
+108.437 64.1806 5.52e-002
+111.428 66.246 5.52e-002
+115.374 67.9765 5.52e-002
+120.133 68.7022 5.52e-002
+121.091 68.6441 5.52e-002
+123.594 68.2374 5.52e-002
+127.091 67.1336 5.52e-002
+131.029 64.984 5.52e-002
+134.853 61.44 5.52e-002
+135.475 60.5606 5.52e-002
+136.956 57.8903 5.52e-002
+138.724 53.3813 5.52e-002
+140.205 46.9857 5.52e-002
+140.827 38.6556 5.52e-002
+140.78 37.1347 5.52e-002
+140.451 33.2542 5.52e-002
+139.559 28.0375 5.52e-002
+137.823 22.5079 5.52e-002
+134.96 17.6889 5.52e-002
+134.283 16.9743 5.52e-002
+132.358 15.2703 5.52e-002
+129.346 13.2364 5.52e-002
+125.407 11.5324 5.52e-002
+120.702 10.8178 5.52e-002
+119.788 10.8753 5.52e-002
+117.382 11.278 5.52e-002
+113.99 12.3711 5.52e-002
+110.116 14.4996 5.52e-002
+106.267 18.0089 5.52e-002
+105.631 18.873 5.52e-002
+104.114 21.4697 5.52e-002
+102.304 25.806 5.52e-002
+100.787 31.8886 5.52e-002
+100.151 39.7244 5.52e-002
+152.489 2. 0
+152.489 106.249 0
+139.76 106.249 0
+139.76 68.9133 0
+139.37 69.4137 0
+138.242 70.7125 0
+136.441 72.5064 0
+134.031 74.4919 0
+131.077 76.3656 0
+130.467 76.6631 0
+128.759 77.3727 0
+126.139 78.2196 0
+122.791 78.9291 0
+118.9 79.2267 0
+117.869 79.1874 0
+115.133 78.9126 0
+111.224 78.1668 0
+106.676 76.7144 0
+102.022 74.32 0
+101.207 73.736 0
+99.1234 72.0035 0
+96.3152 69.1514 0
+93.3259 65.2087 0
+90.6989 60.2044 0
+90.3063 59.1563 0
+89.3703 56.2393 0
+88.253 51.7948 0
+87.317 46.1643 0
+86.9244 39.6889 0
+86.9578 38.412 0
+87.1911 35.0377 0
+87.8244 30.2502 0
+89.0578 24.7339 0
+91.0911 19.1733 0
+91.5851 18.2054 0
+93.0432 15.7134 0
+95.4293 12.3151 0
+98.7077 8.6284 0
+102.842 5.2711 0
+103.703 4.7534 0
+106.091 3.5189 0
+109.711 2.0455 0
+114.269 0.811 0
+119.471 0.2933 0
+120.98 0.3832 0
+124.845 1.0124 0
+130.068 2.7202 0
+135.657 6.0459 0
+140.613 11.5289 0
+140.613 2. 0
+100.151 39.7845 0
+100.151 40.2052 0
+100.151 41.3468 0
+100.151 43.5701 0
+100.151 47.2356 0
+100.197 48.0725 0
+100.518 50.326 0
+101.388 53.61 0
+103.082 57.5381 0
+105.876 61.7244 0
+106.539 62.4501 0
+108.437 64.1806 0
+111.428 66.246 0
+115.374 67.9765 0
+120.133 68.7022 0
+121.091 68.6441 0
+123.594 68.2374 0
+127.091 67.1336 0
+131.029 64.984 0
+134.853 61.44 0
+135.475 60.5606 0
+136.956 57.8903 0
+138.724 53.3813 0
+140.205 46.9857 0
+140.827 38.6556 0
+140.78 37.1347 0
+140.451 33.2542 0
+139.559 28.0375 0
+137.823 22.5079 0
+134.96 17.6889 0
+134.283 16.9743 0
+132.358 15.2703 0
+129.346 13.2364 0
+125.407 11.5324 0
+120.702 10.8178 0
+119.788 10.8753 0
+117.382 11.278 0
+113.99 12.3711 0
+110.116 14.4996 0
+106.267 18.0089 0
+105.631 18.873 0
+104.114 21.4697 0
+102.304 25.806 0
+100.787 31.8886 0
+100.151 39.7244 0
+152.489 2. -100.
+152.489 106.249 -100.
+139.76 106.249 -100.
+139.76 68.9133 -100.
+139.37 69.4137 -100.
+138.242 70.7125 -100.
+136.441 72.5064 -100.
+134.031 74.4919 -100.
+131.077 76.3656 -100.
+130.467 76.6631 -100.
+128.759 77.3727 -100.
+126.139 78.2196 -100.
+122.791 78.9291 -100.
+118.9 79.2267 -100.
+117.869 79.1874 -100.
+115.133 78.9126 -100.
+111.224 78.1668 -100.
+106.676 76.7144 -100.
+102.022 74.32 -100.
+101.207 73.736 -100.
+99.1234 72.0035 -100.
+96.3152 69.1514 -100.
+93.3259 65.2087 -100.
+90.6989 60.2044 -100.
+90.3063 59.1563 -100.
+89.3703 56.2393 -100.
+88.253 51.7948 -100.
+87.317 46.1643 -100.
+86.9244 39.6889 -100.
+86.9578 38.412 -100.
+87.1911 35.0377 -100.
+87.8244 30.2502 -100.
+89.0578 24.7339 -100.
+91.0911 19.1733 -100.
+91.5851 18.2054 -100.
+93.0432 15.7134 -100.
+95.4293 12.3151 -100.
+98.7077 8.6284 -100.
+102.842 5.2711 -100.
+103.703 4.7534 -100.
+106.091 3.5189 -100.
+109.711 2.0455 -100.
+114.269 0.811 -100.
+119.471 0.2933 -100.
+120.98 0.3832 -100.
+124.845 1.0124 -100.
+130.068 2.7202 -100.
+135.657 6.0459 -100.
+140.613 11.5289 -100.
+140.613 2. -100.
+100.151 39.7845 -100.
+100.151 40.2052 -100.
+100.151 41.3468 -100.
+100.151 43.5701 -100.
+100.151 47.2356 -100.
+100.197 48.0725 -100.
+100.518 50.326 -100.
+101.388 53.61 -100.
+103.082 57.5381 -100.
+105.876 61.7244 -100.
+106.539 62.4501 -100.
+108.437 64.1806 -100.
+111.428 66.246 -100.
+115.374 67.9765 -100.
+120.133 68.7022 -100.
+121.091 68.6441 -100.
+123.594 68.2374 -100.
+127.091 67.1336 -100.
+131.029 64.984 -100.
+134.853 61.44 -100.
+135.475 60.5606 -100.
+136.956 57.8903 -100.
+138.724 53.3813 -100.
+140.205 46.9857 -100.
+140.827 38.6556 -100.
+140.78 37.1347 -100.
+140.451 33.2542 -100.
+139.559 28.0375 -100.
+137.823 22.5079 -100.
+134.96 17.6889 -100.
+134.283 16.9743 -100.
+132.358 15.2703 -100.
+129.346 13.2364 -100.
+125.407 11.5324 -100.
+120.702 10.8178 -100.
+119.788 10.8753 -100.
+117.382 11.278 -100.
+113.99 12.3711 -100.
+110.116 14.4996 -100.
+106.267 18.0089 -100.
+105.631 18.873 -100.
+104.114 21.4697 -100.
+102.304 25.806 -100.
+100.787 31.8886 -100.
+100.151 39.7244 -100.
+222.869 8.8082 0.78
+223.005 8.0272 0.78
+223.634 5.777 0.78
+224.805 2.6494 0.78
+237.075 2.406 0.78
+236.649 2.4175 0.78
+235.709 4.4843 0.78
+234.611 7.4647 0.78
+233.739 10.9785 0.78
+233.602 12.0625 0.78
+233.318 15.6787 0.78
+233.036 22.6349 0.78
+232.908 33.7111 0.78
+232.908 50.7794 0.78
+232.898 52.1554 0.78
+232.829 55.4291 0.78
+232.641 59.294 0.78
+232.282 62.429 0.78
+231.905 63.8225 0.78
+230.659 67.1351 0.78
+228.445 70.7744 0.78
+227.583 71.6439 0.78
+224.746 73.8099 0.78
+219.873 76.2342 0.78
+218.043 76.7906 0.78
+212.706 77.8657 0.78
+204.414 78.4468 0.78
+201.679 78.3501 0.78
+195.142 77.6702 0.78
+187.51 75.8251 0.78
+186.371 75.3629 0.78
+183.463 73.9426 0.78
+179.855 71.6326 0.78
+176.547 68.4769 0.78
+175.542 67.0063 0.78
+173.265 62.6581 0.78
+170.988 56.4604 0.78
+182.423 54.9934 0.78
+182.497 55.8931 0.78
+183.707 59.0748 0.78
+185.767 62.9033 0.78
+188.718 66.1397 0.78
+189.666 66.7238 0.78
+192.236 67.8565 0.78
+196.521 68.9766 0.78
+202.53 69.4821 0.78
+204.197 69.4118 0.78
+208.143 68.9256 0.78
+213.072 67.5927 0.78
+217.608 64.9721 0.78
+218.305 64.2162 0.78
+219.632 62.1319 0.78
+220.939 58.5429 0.78
+221.525 53.386 0.78
+221.374 49.5369 0.78
+219.569 48.8205 0.78
+215.309 47.7284 0.78
+208.135 46.2914 0.78
+197.982 44.8183 0.78
+196.731 44.658 0.78
+193.712 44.2331 0.78
+190. 43.6237 0.78
+186.68 42.914 0.78
+185.865 42.6629 0.78
+183.699 41.8852 0.78
+180.787 40.5997 0.78
+177.697 38.8151 0.78
+177.078 38.3529 0.78
+175.448 36.9424 0.78
+173.36 34.6989 0.78
+171.325 31.7035 0.78
+170.969 30.975 0.78
+170.127 28.8587 0.78
+169.286 25.7354 0.78
+168.904 21.9335 0.78
+169.002 20.4689 0.78
+169.71 16.6637 0.78
+171.626 11.7693 0.78
+175.367 6.936 0.78
+176.489 6.0813 0.78
+180.044 4.0482 0.78
+185.895 2.0052 0.78
+194.003 1.0726 0.78
+195.208 1.1112 0.78
+198.472 1.3804 0.78
+202.945 2.1103 0.78
+207.842 3.5313 0.78
+208.916 3.9906 0.78
+211.909 5.4914 0.78
+216.226 8.1211 0.78
+222.122 12.1027 0.78
+221.526 35.2709 0.78
+221.493 33.8549 0.78
+221.263 30.4242 0.78
+220.635 26.1369 0.78
+219.396 22.1736 0.78
+218.83 21.1425 0.78
+217.216 18.7823 0.78
+214.482 15.7942 0.78
+210.608 12.9602 0.78
+209.503 12.4089 0.78
+206.636 11.2683 0.78
+202.347 10.1291 0.78
+197.045 9.6114 0.78
+195.729 9.6672 0.78
+192.646 10.0525 0.78
+188.773 11.1111 0.78
+185.174 13.1936 0.78
+184.035 14.4025 0.78
+182.062 17.5525 0.78
+180.999 22.2783 0.78
+181.07 23.4086 0.78
+181.562 25.862 0.78
+182.888 28.817 0.78
+183.556 29.6958 0.78
+185.366 31.4802 0.78
+188.277 33.2803 0.78
+189.524 33.7328 0.78
+193.215 34.7292 0.78
+199.672 35.9069 0.78
+201.964 36.2627 0.78
+207.502 37.2537 0.78
+214.326 38.7712 0.78
+221.207 40.6022 0.78
+222.815 8.8005 0.78
+222.951 8.015 0.78
+223.582 5.7589 0.78
+224.774 2.6035 0.78
+237.122 2.3773 0.78
+236.699 2.4416 0.78
+235.76 4.5053 0.78
+234.663 7.4809 0.78
+233.793 10.9886 0.78
+233.657 12.0681 0.78
+233.373 15.682 0.78
+233.091 22.6363 0.78
+232.963 33.7114 0.78
+232.963 50.7796 0.78
+232.953 52.1562 0.78
+232.884 55.431 0.78
+232.696 59.2985 0.78
+232.336 62.4394 0.78
+231.957 63.8394 0.78
+230.708 67.1593 0.78
+228.489 70.8084 0.78
+227.619 71.6853 0.78
+224.775 73.8567 0.78
+219.893 76.2855 0.78
+218.057 76.844 0.78
+212.713 77.9204 0.78
+204.415 78.5019 0.78
+201.676 78.4051 0.78
+195.133 77.7245 0.78
+187.493 75.8776 0.78
+186.349 75.4133 0.78
+183.436 73.9907 0.78
+179.821 71.676 0.78
+176.505 68.5126 0.78
+175.495 67.0347 0.78
+173.214 62.6794 0.78
+170.941 56.431 0.78
+182.453 54.9471 0.78
+182.549 55.8754 0.78
+183.757 59.0519 0.78
+185.812 62.8714 0.78
+188.753 66.0972 0.78
+189.691 66.6749 0.78
+192.254 67.8044 0.78
+196.53 68.9222 0.78
+202.531 69.4269 0.78
+204.193 69.3568 0.78
+208.132 68.8714 0.78
+213.051 67.5417 0.78
+217.574 64.9291 0.78
+218.262 64.1827 0.78
+219.583 62.1074 0.78
+220.885 58.5303 0.78
+221.469 53.3829 0.78
+221.329 49.5696 0.78
+219.554 48.8735 0.78
+215.297 47.7822 0.78
+208.126 46.3457 0.78
+197.975 44.8729 0.78
+196.724 44.7127 0.78
+193.704 44.2876 0.78
+189.989 43.6779 0.78
+186.666 42.9674 0.78
+185.848 42.7152 0.78
+183.679 41.9364 0.78
+180.762 40.6488 0.78
+177.667 38.8612 0.78
+177.043 38.3959 0.78
+175.41 36.9821 0.78
+173.317 34.7332 0.78
+171.277 31.7313 0.78
+170.918 30.9974 0.78
+170.075 28.8761 0.78
+169.231 25.7454 0.78
+168.848 21.9344 0.78
+168.947 20.462 0.78
+169.657 16.6485 0.78
+171.578 11.7421 0.78
+175.328 6.897 0.78
+176.459 6.0354 0.78
+180.021 3.998 0.78
+185.883 1.9514 0.78
+194.001 1.0175 0.78
+195.211 1.0561 0.78
+198.479 1.3257 0.78
+202.957 2.0565 0.78
+207.86 3.4794 0.78
+208.939 3.9406 0.78
+211.936 5.4432 0.78
+216.257 8.0756 0.78
+222.1 12.0521 0.78
+221.471 35.2716 0.78
+221.438 33.8574 0.78
+221.208 30.43 0.78
+220.581 26.1491 0.78
+219.346 22.1953 0.78
+218.783 21.1715 0.78
+217.173 18.8165 0.78
+214.445 15.8352 0.78
+210.579 13.0073 0.78
+209.481 12.4593 0.78
+206.619 11.3207 0.78
+202.337 10.1833 0.78
+197.043 9.6665 0.78
+195.733 9.7221 0.78
+192.657 10.1066 0.78
+188.794 11.1621 0.78
+185.208 13.2368 0.78
+184.079 14.4362 0.78
+182.113 17.5736 0.78
+181.054 22.2825 0.78
+181.124 23.4013 0.78
+181.614 25.8452 0.78
+182.935 28.7888 0.78
+183.597 29.6594 0.78
+185.4 31.4369 0.78
+188.301 33.2306 0.78
+189.541 33.6801 0.78
+193.227 34.6754 0.78
+199.681 35.8525 0.78
+201.973 36.2083 0.78
+207.513 37.1996 0.78
+214.34 38.7179 0.78
+221.175 40.5577 0.78
+222.323 8.7317 0.5515
+222.467 7.9053 0.5515
+223.113 5.5958 0.5515
+224.499 2.1902 0.5515
+237.546 2.1189 0.5515
+237.145 2.6582 0.5515
+236.219 4.6941 0.5515
+235.138 7.6268 0.5515
+234.281 11.0793 0.5515
+234.151 12.1184 0.5515
+233.869 15.7114 0.5515
+233.587 22.6492 0.5515
+233.46 33.7142 0.5515
+233.46 50.7814 0.5515
+233.45 52.1632 0.5515
+233.38 55.4484 0.5515
+233.19 59.3389 0.5515
+232.824 62.5326 0.5515
+232.43 63.9918 0.5515
+231.154 67.3768 0.5515
+228.88 71.1139 0.5515
+227.947 72.0579 0.5515
+225.037 74.2781 0.5515
+220.077 76.7466 0.5515
+218.178 77.3253 0.5515
+212.78 78.4123 0.5515
+204.424 78.9982 0.5515
+201.641 78.9003 0.5515
+195.048 78.2137 0.5515
+187.341 76.3503 0.5515
+186.146 75.8667 0.5515
+183.192 74.4234 0.5515
+179.514 72.0663 0.5515
+176.126 68.8342 0.5515
+175.07 67.2905 0.5515
+172.757 62.871 0.5515
+170.521 56.1663 0.5515
+182.722 54.5298 0.5515
+183.02 55.7161 0.5515
+184.209 58.8459 0.5515
+186.218 62.5847 0.5515
+189.068 65.7141 0.5515
+189.921 66.2348 0.5515
+192.418 67.3357 0.5515
+196.614 68.433 0.5515
+202.541 68.9306 0.5515
+204.152 68.8621 0.5515
+208.037 68.3842 0.5515
+212.861 67.0832 0.5515
+217.262 64.5424 0.5515
+217.867 63.881 0.5515
+219.137 61.8878 0.5515
+220.402 58.4167 0.5515
+220.974 53.3551 0.5515
+220.93 49.8644 0.5515
+219.419 49.3513 0.5515
+215.186 48.2662 0.5515
+208.041 46.8349 0.5515
+197.908 45.3648 0.5515
+196.658 45.2047 0.5515
+193.629 44.7783 0.5515
+189.897 44.1657 0.5515
+186.541 43.4478 0.5515
+185.691 43.1862 0.5515
+183.495 42.3973 0.5515
+180.537 41.0914 0.5515
+177.394 39.2758 0.5515
+176.732 38.7828 0.5515
+175.065 37.3392 0.5515
+172.929 35.0427 0.5515
+170.848 31.9807 0.5515
+170.464 31.1985 0.5515
+169.604 29.0325 0.5515
+168.743 25.8349 0.5515
+168.352 21.9428 0.5515
+168.455 20.3999 0.5515
+169.18 16.5117 0.5515
+171.146 11.4971 0.5515
+174.978 6.5452 0.5515
+176.184 5.622 0.5515
+179.816 3.5462 0.5515
+185.772 1.4676 0.5515
+193.98 0.5216 0.5515
+195.239 0.5605 0.5515
+198.539 0.833 0.5515
+203.066 1.5723 0.5515
+208.027 3.0118 0.5515
+209.148 3.4902 0.5515
+212.176 5.009 0.5515
+216.537 7.6654 0.5515
+221.903 11.5964 0.5515
+220.974 35.2773 0.5515
+220.942 33.8797 0.5515
+220.715 30.4825 0.5515
+220.097 26.2593 0.5515
+218.889 22.3903 0.5515
+218.361 21.4318 0.5515
+216.784 19.1248 0.5515
+214.114 16.2049 0.5515
+210.321 13.4315 0.5515
+209.278 12.9125 0.5515
+206.463 11.792 0.5515
+202.249 10.6718 0.5515
+197.03 10.1627 0.5515
+195.775 10.2168 0.5515
+192.753 10.5936 0.5515
+188.985 11.6202 0.5515
+185.517 13.6255 0.5515
+184.472 14.7395 0.5515
+182.572 17.7628 0.5515
+181.549 22.3204 0.5515
+181.616 23.3358 0.5515
+182.087 25.6942 0.5515
+183.362 28.5347 0.5515
+183.97 29.3313 0.5515
+185.707 31.0467 0.5515
+188.517 32.7836 0.5515
+189.69 33.2066 0.5515
+193.336 34.1912 0.5515
+199.763 35.3631 0.5515
+202.054 35.7187 0.5515
+207.61 36.7129 0.5515
+214.469 38.2385 0.5515
+220.881 40.1575 0.5515
+222.097 8.7 5.52e-002
+222.244 7.8548 5.52e-002
+222.898 5.5207 5.52e-002
+224.372 2. 5.52e-002
+237.741 2. 5.52e-002
+237.351 2.7578 5.52e-002
+236.43 4.781 5.52e-002
+235.356 7.6939 5.52e-002
+234.506 11.1211 5.52e-002
+234.378 12.1415 5.52e-002
+234.097 15.725 5.52e-002
+233.816 22.6552 5.52e-002
+233.688 33.7156 5.52e-002
+233.688 50.7822 5.52e-002
+233.678 52.1665 5.52e-002
+233.608 55.4564 5.52e-002
+233.418 59.3575 5.52e-002
+233.048 62.5756 5.52e-002
+232.647 64.0619 5.52e-002
+231.36 67.477 5.52e-002
+229.06 71.2544 5.52e-002
+228.098 72.2294 5.52e-002
+225.158 74.4721 5.52e-002
+220.161 76.9589 5.52e-002
+218.234 77.5468 5.52e-002
+212.81 78.6387 5.52e-002
+204.428 79.2267 5.52e-002
+201.625 79.1282 5.52e-002
+195.01 78.4388 5.52e-002
+187.271 76.5678 5.52e-002
+186.053 76.0753 5.52e-002
+183.08 74.6225 5.52e-002
+179.373 72.2459 5.52e-002
+175.952 68.9822 5.52e-002
+174.874 67.4082 5.52e-002
+172.546 62.9592 5.52e-002
+170.328 56.0444 5.52e-002
+182.846 54.3378 5.52e-002
+183.236 55.6428 5.52e-002
+184.417 58.7511 5.52e-002
+186.404 62.4528 5.52e-002
+189.214 65.5378 5.52e-002
+190.027 66.0322 5.52e-002
+192.493 67.12 5.52e-002
+196.653 68.2078 5.52e-002
+202.546 68.7022 5.52e-002
+204.133 68.6344 5.52e-002
+207.993 68.16 5.52e-002
+212.773 66.8722 5.52e-002
+217.119 64.3644 5.52e-002
+217.686 63.7422 5.52e-002
+218.932 61.7867 5.52e-002
+220.179 58.3644 5.52e-002
+220.746 53.3422 5.52e-002
+220.746 50. 5.52e-002
+219.357 49.5711 5.52e-002
+215.136 48.4889 5.52e-002
+208.002 47.06 5.52e-002
+197.877 45.5911 5.52e-002
+196.627 45.4311 5.52e-002
+193.594 45.0042 5.52e-002
+189.855 44.3902 5.52e-002
+186.484 43.6689 5.52e-002
+185.619 43.4029 5.52e-002
+183.41 42.6094 5.52e-002
+180.434 41.2951 5.52e-002
+177.268 39.4667 5.52e-002
+176.589 38.9609 5.52e-002
+174.907 37.5036 5.52e-002
+172.75 35.1851 5.52e-002
+170.65 32.0956 5.52e-002
+170.255 31.291 5.52e-002
+169.387 29.1044 5.52e-002
+168.518 25.8762 5.52e-002
+168.124 21.9467 5.52e-002
+168.228 20.3713 5.52e-002
+168.96 16.4488 5.52e-002
+170.947 11.3843 5.52e-002
+174.817 6.3833 5.52e-002
+176.057 5.4318 5.52e-002
+179.721 3.3383 5.52e-002
+185.721 1.2449 5.52e-002
+193.97 0.2933 5.52e-002
+195.252 0.3324 5.52e-002
+198.567 0.6062 5.52e-002
+203.117 1.3494 5.52e-002
+208.104 2.7967 5.52e-002
+209.244 3.2829 5.52e-002
+212.287 4.8092 5.52e-002
+216.666 7.4767 5.52e-002
+221.813 11.3867 5.52e-002
+220.746 35.28 5.52e-002
+220.714 33.89 5.52e-002
+220.488 30.5067 5.52e-002
+219.874 26.31 5.52e-002
+218.679 22.48 5.52e-002
+218.166 21.5517 5.52e-002
+216.605 19.2667 5.52e-002
+213.961 16.375 5.52e-002
+210.202 13.6267 5.52e-002
+209.185 13.1211 5.52e-002
+206.391 12.0089 5.52e-002
+202.208 10.8967 5.52e-002
+197.024 10.3911 5.52e-002
+195.794 10.4444 5.52e-002
+192.797 10.8178 5.52e-002
+189.073 11.8311 5.52e-002
+185.659 13.8044 5.52e-002
+184.653 14.879 5.52e-002
+182.783 17.8499 5.52e-002
+181.777 22.3378 5.52e-002
+181.843 23.3057 5.52e-002
+182.305 25.6247 5.52e-002
+183.558 28.4178 5.52e-002
+184.141 29.1802 5.52e-002
+185.848 30.8672 5.52e-002
+188.616 32.5778 5.52e-002
+189.758 32.9886 5.52e-002
+193.386 33.9684 5.52e-002
+199.801 35.1378 5.52e-002
+202.092 35.4933 5.52e-002
+207.655 36.4889 5.52e-002
+214.528 38.0178 5.52e-002
+220.746 39.9733 5.52e-002
+222.097 8.7 0
+222.244 7.8548 0
+222.898 5.5207 0
+224.372 2. 0
+237.741 2. 0
+237.351 2.7578 0
+236.43 4.781 0
+235.356 7.6939 0
+234.506 11.1211 0
+234.378 12.1415 0
+234.097 15.725 0
+233.816 22.6552 0
+233.688 33.7156 0
+233.688 50.7822 0
+233.678 52.1665 0
+233.608 55.4564 0
+233.418 59.3575 0
+233.048 62.5756 0
+232.647 64.0619 0
+231.36 67.477 0
+229.06 71.2544 0
+228.098 72.2294 0
+225.158 74.4721 0
+220.161 76.9589 0
+218.234 77.5468 0
+212.81 78.6387 0
+204.428 79.2267 0
+201.625 79.1282 0
+195.01 78.4388 0
+187.271 76.5678 0
+186.053 76.0753 0
+183.08 74.6225 0
+179.373 72.2459 0
+175.952 68.9822 0
+174.874 67.4082 0
+172.546 62.9592 0
+170.328 56.0444 0
+182.846 54.3378 0
+183.236 55.6428 0
+184.417 58.7511 0
+186.404 62.4528 0
+189.214 65.5378 0
+190.027 66.0322 0
+192.493 67.12 0
+196.653 68.2078 0
+202.546 68.7022 0
+204.133 68.6344 0
+207.993 68.16 0
+212.773 66.8722 0
+217.119 64.3644 0
+217.686 63.7422 0
+218.932 61.7867 0
+220.179 58.3644 0
+220.746 53.3422 0
+220.746 50. 0
+219.357 49.5711 0
+215.136 48.4889 0
+208.002 47.06 0
+197.877 45.5911 0
+196.627 45.4311 0
+193.594 45.0042 0
+189.855 44.3902 0
+186.484 43.6689 0
+185.619 43.4029 0
+183.41 42.6094 0
+180.434 41.2951 0
+177.268 39.4667 0
+176.589 38.9609 0
+174.907 37.5036 0
+172.75 35.1851 0
+170.65 32.0956 0
+170.255 31.291 0
+169.387 29.1044 0
+168.518 25.8762 0
+168.124 21.9467 0
+168.228 20.3713 0
+168.96 16.4488 0
+170.947 11.3843 0
+174.817 6.3833 0
+176.057 5.4318 0
+179.721 3.3383 0
+185.721 1.2449 0
+193.97 0.2933 0
+195.252 0.3324 0
+198.567 0.6062 0
+203.117 1.3494 0
+208.104 2.7967 0
+209.244 3.2829 0
+212.287 4.8092 0
+216.666 7.4767 0
+221.813 11.3867 0
+220.746 35.28 0
+220.714 33.89 0
+220.488 30.5067 0
+219.874 26.31 0
+218.679 22.48 0
+218.166 21.5517 0
+216.605 19.2667 0
+213.961 16.375 0
+210.202 13.6267 0
+209.185 13.1211 0
+206.391 12.0089 0
+202.208 10.8967 0
+197.024 10.3911 0
+195.794 10.4444 0
+192.797 10.8178 0
+189.073 11.8311 0
+185.659 13.8044 0
+184.653 14.879 0
+182.783 17.8499 0
+181.777 22.3378 0
+181.843 23.3057 0
+182.305 25.6247 0
+183.558 28.4178 0
+184.141 29.1802 0
+185.848 30.8672 0
+188.616 32.5778 0
+189.758 32.9886 0
+193.386 33.9684 0
+199.801 35.1378 0
+202.092 35.4933 0
+207.655 36.4889 0
+214.528 38.0178 0
+220.746 39.9733 0
+222.097 8.7 -100.
+222.244 7.8548 -100.
+222.898 5.5207 -100.
+224.372 2. -100.
+237.741 2. -100.
+237.351 2.7578 -100.
+236.43 4.781 -100.
+235.356 7.6939 -100.
+234.506 11.1211 -100.
+234.378 12.1415 -100.
+234.097 15.725 -100.
+233.816 22.6552 -100.
+233.688 33.7156 -100.
+233.688 50.7822 -100.
+233.678 52.1665 -100.
+233.608 55.4564 -100.
+233.418 59.3575 -100.
+233.048 62.5756 -100.
+232.647 64.0619 -100.
+231.36 67.477 -100.
+229.06 71.2544 -100.
+228.098 72.2294 -100.
+225.158 74.4721 -100.
+220.161 76.9589 -100.
+218.234 77.5468 -100.
+212.81 78.6387 -100.
+204.428 79.2267 -100.
+201.625 79.1282 -100.
+195.01 78.4388 -100.
+187.271 76.5678 -100.
+186.053 76.0753 -100.
+183.08 74.6225 -100.
+179.373 72.2459 -100.
+175.952 68.9822 -100.
+174.874 67.4082 -100.
+172.546 62.9592 -100.
+170.328 56.0444 -100.
+182.846 54.3378 -100.
+183.236 55.6428 -100.
+184.417 58.7511 -100.
+186.404 62.4528 -100.
+189.214 65.5378 -100.
+190.027 66.0322 -100.
+192.493 67.12 -100.
+196.653 68.2078 -100.
+202.546 68.7022 -100.
+204.133 68.6344 -100.
+207.993 68.16 -100.
+212.773 66.8722 -100.
+217.119 64.3644 -100.
+217.686 63.7422 -100.
+218.932 61.7867 -100.
+220.179 58.3644 -100.
+220.746 53.3422 -100.
+220.746 50. -100.
+219.357 49.5711 -100.
+215.136 48.4889 -100.
+208.002 47.06 -100.
+197.877 45.5911 -100.
+196.627 45.4311 -100.
+193.594 45.0042 -100.
+189.855 44.3902 -100.
+186.484 43.6689 -100.
+185.619 43.4029 -100.
+183.41 42.6094 -100.
+180.434 41.2951 -100.
+177.268 39.4667 -100.
+176.589 38.9609 -100.
+174.907 37.5036 -100.
+172.75 35.1851 -100.
+170.65 32.0956 -100.
+170.255 31.291 -100.
+169.387 29.1044 -100.
+168.518 25.8762 -100.
+168.124 21.9467 -100.
+168.228 20.3713 -100.
+168.96 16.4488 -100.
+170.947 11.3843 -100.
+174.817 6.3833 -100.
+176.057 5.4318 -100.
+179.721 3.3383 -100.
+185.721 1.2449 -100.
+193.97 0.2933 -100.
+195.252 0.3324 -100.
+198.567 0.6062 -100.
+203.117 1.3494 -100.
+208.104 2.7967 -100.
+209.244 3.2829 -100.
+212.287 4.8092 -100.
+216.666 7.4767 -100.
+221.813 11.3867 -100.
+220.746 35.28 -100.
+220.714 33.89 -100.
+220.488 30.5067 -100.
+219.874 26.31 -100.
+218.679 22.48 -100.
+218.166 21.5517 -100.
+216.605 19.2667 -100.
+213.961 16.375 -100.
+210.202 13.6267 -100.
+209.185 13.1211 -100.
+206.391 12.0089 -100.
+202.208 10.8967 -100.
+197.024 10.3911 -100.
+195.794 10.4444 -100.
+192.797 10.8178 -100.
+189.073 11.8311 -100.
+185.659 13.8044 -100.
+184.653 14.879 -100.
+182.783 17.8499 -100.
+181.777 22.3378 -100.
+181.843 23.3057 -100.
+182.305 25.6247 -100.
+183.558 28.4178 -100.
+184.141 29.1802 -100.
+185.848 30.8672 -100.
+188.616 32.5778 -100.
+189.758 32.9886 -100.
+193.386 33.9684 -100.
+199.801 35.1378 -100.
+202.092 35.4933 -100.
+207.655 36.4889 -100.
+214.528 38.0178 -100.
+220.746 39.9733 -100.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#collada-lib-Position-array" count="3366" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+        </source>
+        <source id="collada-lib-Normal">
+          <float_array id="collada-lib-Normal-array" count="60474">
+0 0 1.
+-0.202383 6.9482e-002 0.976838
+0 0 1.
+0 0 1.
+-0.207511 5.2278e-002 0.976835
+-0.202383 6.9482e-002 0.976838
+0 0 1.
+-0.193254 9.1818e-002 0.976843
+0 0 1.
+0 0 1.
+-0.202383 6.9482e-002 0.976838
+-0.193254 9.1818e-002 0.976843
+0 0 1.
+-0.179311 0.11671 0.976845
+0 0 1.
+0 0 1.
+-0.193254 9.1818e-002 0.976843
+-0.179311 0.11671 0.976845
+0 0 1.
+-0.160203 0.141708 0.976859
+0 0 1.
+0 0 1.
+-0.179311 0.11671 0.976845
+-0.160203 0.141708 0.976859
+-0.160203 0.141708 0.976859
+0 0 1.
+0 0 1.
+-0.160203 0.141708 0.976859
+-0.138919 0.162715 0.976845
+0 0 1.
+-0.138919 0.162715 0.976845
+0 0 1.
+0 0 1.
+-0.138919 0.162715 0.976845
+-0.121178 0.176473 0.976818
+0 0 1.
+0 0 1.
+-0.103142 0.187486 0.976837
+0 0 1.
+0 0 1.
+-0.121178 0.176473 0.976818
+-0.103142 0.187486 0.976837
+0 0 1.
+-7.7583e-002 0.199414 0.976839
+0 0 1.
+0 0 1.
+-0.103142 0.187486 0.976837
+-7.7583e-002 0.199414 0.976839
+0 0 1.
+-4.2811e-002 0.209416 0.976889
+0 0 1.
+0 0 1.
+-7.7583e-002 0.199414 0.976839
+-4.2811e-002 0.209416 0.976889
+-4.2811e-002 0.209416 0.976889
+0 0 1.
+0 0 1.
+-4.2811e-002 0.209416 0.976889
+-7.563e-003 0.213811 0.976846
+0 0 1.
+-7.563e-003 0.213811 0.976846
+0 0 1.
+0 0 1.
+-7.563e-003 0.213811 0.976846
+1.4266e-002 0.21363 0.976811
+0 0 1.
+0 0 1.
+2.9733e-002 0.211919 0.976835
+0 0 1.
+0 0 1.
+1.4266e-002 0.21363 0.976811
+2.9733e-002 0.211919 0.976835
+0 0 1.
+5.0507e-002 0.207951 0.976834
+0 0 1.
+0 0 1.
+2.9733e-002 0.211919 0.976835
+5.0507e-002 0.207951 0.976834
+0 0 1.
+7.7627e-002 0.199277 0.976864
+0 0 1.
+0 0 1.
+5.0507e-002 0.207951 0.976834
+7.7627e-002 0.199277 0.976864
+7.7627e-002 0.199277 0.976864
+0 0 1.
+0 0 1.
+7.7627e-002 0.199277 0.976864
+0.105979 0.185794 0.976857
+0 0 1.
+0.105979 0.185794 0.976857
+0 0 1.
+0 0 1.
+0.105979 0.185794 0.976857
+0.125888 0.17317 0.976813
+0 0 1.
+0 0 1.
+0.141553 0.160478 0.976837
+0 0 1.
+0 0 1.
+0.125888 0.17317 0.976813
+0.141553 0.160478 0.976837
+0 0 1.
+0.16044 0.141585 0.976838
+0 0 1.
+0 0 1.
+0.141553 0.160478 0.976837
+0.16044 0.141585 0.976838
+0 0 1.
+0.180765 0.114118 0.976883
+0 0 1.
+0 0 1.
+0.16044 0.141585 0.976838
+0.180765 0.114118 0.976883
+0.180765 0.114118 0.976883
+0 0 1.
+0 0 1.
+0.180765 0.114118 0.976883
+0.196443 8.4776e-002 0.976843
+0 0 1.
+0.196443 8.4776e-002 0.976843
+0 0 1.
+0 0 1.
+0.196443 8.4776e-002 0.976843
+0.203475 6.6578e-002 0.976814
+0 0 1.
+0 0 1.
+0.206838 5.4879e-002 0.976835
+0 0 1.
+0 0 1.
+0.203475 6.6578e-002 0.976814
+0.206838 5.4879e-002 0.976835
+0 0 1.
+0.210213 4.0044e-002 0.976835
+0 0 1.
+0 0 1.
+0.206838 5.4879e-002 0.976835
+0.210213 4.0044e-002 0.976835
+0 0 1.
+0.212844 2.1645e-002 0.976846
+0 0 1.
+0 0 1.
+0.210213 4.0044e-002 0.976835
+0.212844 2.1645e-002 0.976846
+0.212844 2.1645e-002 0.976846
+0 0 1.
+0 0 1.
+0.212844 2.1645e-002 0.976846
+0.213951 3.322e-003 0.976839
+0 0 1.
+0.213951 3.322e-003 0.976839
+0 0 1.
+0 0 1.
+0.213951 3.322e-003 0.976839
+0.213847 -8.726e-003 0.976828
+0 0 1.
+0 0 1.
+0.213235 -1.8001e-002 0.976835
+0 0 1.
+0 0 1.
+0.213847 -8.726e-003 0.976828
+0.213235 -1.8001e-002 0.976835
+0 0 1.
+0.211814 -3.0488e-002 0.976834
+0 0 1.
+0 0 1.
+0.213235 -1.8001e-002 0.976835
+0.211814 -3.0488e-002 0.976834
+0 0 1.
+0.208695 -4.7181e-002 0.976842
+0 0 1.
+0 0 1.
+0.211814 -3.0488e-002 0.976834
+0.208695 -4.7181e-002 0.976842
+0 0 1.
+0.203278 -6.6696e-002 0.976847
+0 0 1.
+0 0 1.
+0.208695 -4.7181e-002 0.976842
+0.203278 -6.6696e-002 0.976847
+0.203278 -6.6696e-002 0.976847
+0 0 1.
+0 0 1.
+0.203278 -6.6696e-002 0.976847
+0.197172 -8.3293e-002 0.976824
+0 0 1.
+0 0 1.
+0.189647 -9.91389e-002 0.976834
+0 0 1.
+0 0 1.
+0.197172 -8.3293e-002 0.976824
+0.189647 -9.91389e-002 0.976834
+0 0 1.
+0.17714 -0.120076 0.976833
+0 0 1.
+0 0 1.
+0.189647 -9.91389e-002 0.976834
+0.17714 -0.120076 0.976833
+0 0 1.
+0.156183 -0.145999 0.976878
+0 0 1.
+0 0 1.
+0.17714 -0.120076 0.976833
+0.156183 -0.145999 0.976878
+0.156183 -0.145999 0.976878
+0 0 1.
+0 0 1.
+0.156183 -0.145999 0.976878
+0.129396 -0.170294 0.976861
+0 0 1.
+0.129396 -0.170294 0.976861
+0 0 1.
+0 0 1.
+0.129396 -0.170294 0.976861
+0.108335 -0.184689 0.976808
+0 0 1.
+0 0 1.
+9.0623e-002 -0.193839 0.976839
+0 0 1.
+0 0 1.
+0.108335 -0.184689 0.976808
+9.0623e-002 -0.193839 0.976839
+0 0 1.
+6.6863e-002 -0.203255 0.97684
+0 0 1.
+0 0 1.
+9.0623e-002 -0.193839 0.976839
+6.6863e-002 -0.203255 0.97684
+0 0 1.
+3.6245e-002 -0.210731 0.976872
+0 0 1.
+0 0 1.
+6.6863e-002 -0.203255 0.97684
+3.6245e-002 -0.210731 0.976872
+3.6245e-002 -0.210731 0.976872
+0 0 1.
+0 0 1.
+3.6245e-002 -0.210731 0.976872
+5.728e-003 -0.213878 0.976844
+0 0 1.
+5.728e-003 -0.213878 0.976844
+0 0 1.
+0 0 1.
+5.728e-003 -0.213878 0.976844
+-1.4237e-002 -0.213609 0.976815
+0 0 1.
+0 0 1.
+-3.0473e-002 -0.211827 0.976832
+0 0 1.
+0 0 1.
+-1.4237e-002 -0.213609 0.976815
+-3.0473e-002 -0.211827 0.976832
+0 0 1.
+-5.3871e-002 -0.207139 0.976827
+0 0 1.
+0 0 1.
+-3.0473e-002 -0.211827 0.976832
+-5.3871e-002 -0.207139 0.976827
+0 0 1.
+-8.6933e-002 -0.195283 0.976887
+0 0 1.
+0 0 1.
+-5.3871e-002 -0.207139 0.976827
+-8.6933e-002 -0.195283 0.976887
+-8.6933e-002 -0.195283 0.976887
+0 0 1.
+0 0 1.
+-8.6933e-002 -0.195283 0.976887
+-0.122237 -0.175413 0.976877
+0 0 1.
+-0.122237 -0.175413 0.976877
+0 0 1.
+0 0 1.
+-0.122237 -0.175413 0.976877
+-0.145073 -0.157531 0.9768
+0 0 1.
+0 0 1.
+-0.159916 -0.142165 0.97684
+0 0 1.
+0 0 1.
+-0.145073 -0.157531 0.9768
+-0.159916 -0.142165 0.97684
+0 0 1.
+-0.175993 -0.121682 0.976842
+0 0 1.
+0 0 1.
+-0.159916 -0.142165 0.97684
+-0.175993 -0.121682 0.976842
+0 0 1.
+-0.204125 -9.8537e-002 0.973973
+0 0 1.
+0 0 1.
+-0.175993 -0.121682 0.976842
+-0.204125 -9.8537e-002 0.973973
+-0.204125 -9.8537e-002 0.973973
+0 0 1.
+0 0 1.
+-0.204125 -9.8537e-002 0.973973
+-5.3967e-002 -0.16371 0.985031
+0 0 1.
+0 0 1.
+8.3999e-002 -0.221837 0.971459
+0 0 1.
+0 0 1.
+-5.3967e-002 -0.16371 0.985031
+8.3999e-002 -0.221837 0.971459
+0 0 1.
+4.9075e-002 -0.208295 0.976834
+0 0 1.
+0 0 1.
+8.3999e-002 -0.221837 0.971459
+4.9075e-002 -0.208295 0.976834
+0 0 1.
+4.9075e-002 -0.208296 0.976834
+0 0 1.
+0 0 1.
+4.9075e-002 -0.208295 0.976834
+4.9075e-002 -0.208296 0.976834
+4.9075e-002 -0.208296 0.976834
+0 0 1.
+0 0 1.
+4.9075e-002 -0.208296 0.976834
+4.8446e-002 -0.228121 0.972427
+0 0 1.
+4.8446e-002 -0.228121 0.972427
+0 0 1.
+0 0 1.
+4.8446e-002 -0.228121 0.972427
+0.144799 -6.9845e-002 0.986993
+0 0 1.
+0 0 1.
+0.217142 9.6119e-002 0.971396
+0 0 1.
+0 0 1.
+0.144799 -6.9845e-002 0.986993
+0.217142 9.6119e-002 0.971396
+0.217142 9.6119e-002 0.971396
+0 0 1.
+0 0 1.
+0.217142 9.6119e-002 0.971396
+0.194187 8.9935e-002 0.976833
+0 0 1.
+0.194187 8.9935e-002 0.976833
+0 0 1.
+0 0 1.
+0.194187 8.9935e-002 0.976833
+0.182652 0.111542 0.97683
+0 0 1.
+0.182652 0.111542 0.97683
+0 0 1.
+0 0 1.
+0.182652 0.111542 0.97683
+0.161839 0.139637 0.976888
+0 0 1.
+0 0 1.
+0.133833 0.166776 0.97687
+0 0 1.
+0 0 1.
+0.161839 0.139637 0.976888
+0.133833 0.166776 0.97687
+0 0 1.
+0.112057 0.182501 0.976799
+0 0 1.
+0 0 1.
+0.133833 0.166776 0.97687
+0.112057 0.182501 0.976799
+0.112057 0.182501 0.976799
+0 0 1.
+0 0 1.
+0.112057 0.182501 0.976799
+9.4415e-002 0.192029 0.976837
+0 0 1.
+9.4415e-002 0.192029 0.976837
+0 0 1.
+0 0 1.
+9.4415e-002 0.192029 0.976837
+7.0125e-002 0.202155 0.97684
+0 0 1.
+7.0125e-002 0.202155 0.97684
+0 0 1.
+0 0 1.
+7.0125e-002 0.202155 0.97684
+3.8226e-002 0.210349 0.976879
+0 0 1.
+0 0 1.
+6.519e-003 0.213855 0.976844
+0 0 1.
+0 0 1.
+3.8226e-002 0.210349 0.976879
+6.519e-003 0.213855 0.976844
+0 0 1.
+-1.2831e-002 0.213703 0.976814
+0 0 1.
+0 0 1.
+6.519e-003 0.213855 0.976844
+-1.2831e-002 0.213703 0.976814
+-1.2831e-002 0.213703 0.976814
+0 0 1.
+0 0 1.
+-1.2831e-002 0.213703 0.976814
+-2.6581e-002 0.212341 0.976834
+0 0 1.
+-2.6581e-002 0.212341 0.976834
+0 0 1.
+0 0 1.
+-2.6581e-002 0.212341 0.976834
+-4.5571e-002 0.209097 0.976832
+0 0 1.
+-4.5571e-002 0.209097 0.976832
+0 0 1.
+0 0 1.
+-4.5571e-002 0.209097 0.976832
+-7.112e-002 0.201701 0.976862
+0 0 1.
+0 0 1.
+-9.8329e-002 0.189965 0.976855
+0 0 1.
+0 0 1.
+-7.112e-002 0.201701 0.976862
+-9.8329e-002 0.189965 0.976855
+0 0 1.
+-0.116879 0.179372 0.976814
+0 0 1.
+0 0 1.
+-9.8329e-002 0.189965 0.976855
+-0.116879 0.179372 0.976814
+-0.116879 0.179372 0.976814
+0 0 1.
+0 0 1.
+-0.116879 0.179372 0.976814
+-0.130965 0.169235 0.976836
+0 0 1.
+-0.130965 0.169235 0.976836
+0 0 1.
+0 0 1.
+-0.130965 0.169235 0.976836
+-0.148821 0.153767 0.976836
+0 0 1.
+-0.148821 0.153767 0.976836
+0 0 1.
+0 0 1.
+-0.148821 0.153767 0.976836
+-0.169513 0.130311 0.976875
+0 0 1.
+0 0 1.
+-0.187382 0.103198 0.976851
+0 0 1.
+0 0 1.
+-0.169513 0.130311 0.976875
+-0.187382 0.103198 0.976851
+0 0 1.
+-0.19678 8.4354e-002 0.976812
+0 0 1.
+0 0 1.
+-0.187382 0.103198 0.976851
+-0.19678 8.4354e-002 0.976812
+-0.19678 8.4354e-002 0.976812
+0 0 1.
+0 0 1.
+-0.19678 8.4354e-002 0.976812
+-0.202095 7.036e-002 0.976835
+0 0 1.
+-0.202095 7.036e-002 0.976835
+0 0 1.
+0 0 1.
+-0.202095 7.036e-002 0.976835
+-0.20761 5.1861e-002 0.976836
+0 0 1.
+-0.20761 5.1861e-002 0.976836
+0 0 1.
+0 0 1.
+-0.20761 5.1861e-002 0.976836
+-0.212024 2.8239e-002 0.976856
+0 0 1.
+0 0 1.
+-0.213919 4.631e-003 0.97684
+0 0 1.
+0 0 1.
+-0.212024 2.8239e-002 0.976856
+-0.213919 4.631e-003 0.97684
+0 0 1.
+-0.213801 -1.0309e-002 0.976823
+0 0 1.
+0 0 1.
+-0.213919 4.631e-003 0.97684
+-0.213801 -1.0309e-002 0.976823
+-0.213801 -1.0309e-002 0.976823
+0 0 1.
+0 0 1.
+-0.213801 -1.0309e-002 0.976823
+-0.21293 -2.1328e-002 0.976835
+0 0 1.
+-0.21293 -2.1328e-002 0.976835
+0 0 1.
+0 0 1.
+-0.21293 -2.1328e-002 0.976835
+-0.210866 -3.6497e-002 0.976833
+0 0 1.
+-0.210866 -3.6497e-002 0.976833
+0 0 1.
+0 0 1.
+-0.210866 -3.6497e-002 0.976833
+-0.206154 -5.7122e-002 0.976851
+0 0 1.
+0 0 1.
+-0.198464 -7.9865e-002 0.976849
+0 0 1.
+0 0 1.
+-0.206154 -5.7122e-002 0.976851
+-0.198464 -7.9865e-002 0.976849
+0 0 1.
+-0.191146 -9.63689e-002 0.976819
+0 0 1.
+0 0 1.
+-0.198464 -7.9865e-002 0.976849
+-0.191146 -9.63689e-002 0.976819
+-0.191146 -9.63689e-002 0.976819
+0 0 1.
+0 0 1.
+-0.191146 -9.63689e-002 0.976819
+-0.183502 -0.110108 0.976833
+0 0 1.
+-0.183502 -0.110108 0.976833
+0 0 1.
+0 0 1.
+-0.183502 -0.110108 0.976833
+-0.170951 -0.128754 0.976831
+0 0 1.
+-0.170951 -0.128754 0.976831
+0 0 1.
+0 0 1.
+-0.170951 -0.128754 0.976831
+-0.149704 -0.152645 0.976877
+0 0 1.
+0 0 1.
+-0.121741 -0.175801 0.976869
+0 0 1.
+0 0 1.
+-0.149704 -0.152645 0.976877
+-0.121741 -0.175801 0.976869
+0 0 1.
+-9.9784e-002 -0.189462 0.976805
+0 0 1.
+0 0 1.
+-0.121741 -0.175801 0.976869
+-9.9784e-002 -0.189462 0.976805
+-9.9784e-002 -0.189462 0.976805
+0 0 1.
+0 0 1.
+-9.9784e-002 -0.189462 0.976805
+-8.2216e-002 -0.197551 0.976839
+0 0 1.
+-8.2216e-002 -0.197551 0.976839
+0 0 1.
+0 0 1.
+-8.2216e-002 -0.197551 0.976839
+-5.9456e-002 -0.205542 0.976841
+0 0 1.
+-5.9456e-002 -0.205542 0.976841
+0 0 1.
+0 0 1.
+-5.9456e-002 -0.205542 0.976841
+-3.159e-002 -0.211531 0.976861
+0 0 1.
+0 0 1.
+-3.861e-003 -0.21392 0.976844
+0 0 1.
+0 0 1.
+-3.159e-002 -0.211531 0.976861
+-3.861e-003 -0.21392 0.976844
+0 0 1.
+1.5705e-002 -0.213497 0.976817
+0 0 1.
+0 0 1.
+-3.861e-003 -0.21392 0.976844
+1.5705e-002 -0.213497 0.976817
+1.5705e-002 -0.213497 0.976817
+0 0 1.
+0 0 1.
+1.5705e-002 -0.213497 0.976817
+3.3167e-002 -0.211418 0.976833
+0 0 1.
+3.3167e-002 -0.211418 0.976833
+0 0 1.
+0 0 1.
+3.3167e-002 -0.211418 0.976833
+5.7966e-002 -0.206019 0.97683
+0 0 1.
+5.7966e-002 -0.206019 0.97683
+0 0 1.
+0 0 1.
+5.7966e-002 -0.206019 0.97683
+9.1839e-002 -0.192996 0.976892
+0 0 1.
+0 0 1.
+0.12665 -0.17228 0.976872
+0 0 1.
+0 0 1.
+9.1839e-002 -0.192996 0.976892
+0.12665 -0.17228 0.976872
+0 0 1.
+0.148263 -0.154549 0.976797
+0 0 1.
+0 0 1.
+0.12665 -0.17228 0.976872
+0.148263 -0.154549 0.976797
+0.148263 -0.154549 0.976797
+0 0 1.
+0 0 1.
+0.148263 -0.154549 0.976797
+0.162419 -0.139308 0.976838
+0 0 1.
+0.162419 -0.139308 0.976838
+0 0 1.
+0 0 1.
+0.162419 -0.139308 0.976838
+0.178636 -0.117777 0.976841
+0 0 1.
+0.178636 -0.117777 0.976841
+0 0 1.
+0 0 1.
+0.178636 -0.117777 0.976841
+0.210795 -9.6756e-002 0.97273
+0 0 1.
+0.210795 -9.6756e-002 0.97273
+0 0 1.
+0 0 1.
+0.210795 -9.6756e-002 0.97273
+0.107782 0.105723 0.988537
+0 0 1.
+0 0 1.
+1.3242e-002 0.251895 0.967664
+0 0 1.
+0 0 1.
+0.107782 0.105723 0.988537
+1.3242e-002 0.251895 0.967664
+1.3242e-002 0.251895 0.967664
+0 0 1.
+0 0 1.
+1.3242e-002 0.251895 0.967664
+5.2406e-002 0.207483 0.976834
+0 0 1.
+0 0 1.
+5.2406e-002 0.207484 0.976834
+0 0 1.
+0 0 1.
+5.2406e-002 0.207483 0.976834
+5.2406e-002 0.207484 0.976834
+0 0 1.
+6.1268e-002 0.223498 0.972777
+0 0 1.
+0 0 1.
+5.2406e-002 0.207484 0.976834
+6.1268e-002 0.223498 0.972777
+6.1268e-002 0.223498 0.972777
+0 0 1.
+0 0 1.
+6.1268e-002 0.223498 0.972777
+7.0186e-002 0.239574 0.968338
+0 0 1.
+0 0 -1.
+0.179064 -0.144585 -0.973155
+0 0 -1.
+0 0 -1.
+0.179064 -0.144585 -0.973155
+0.179064 -0.144585 -0.973155
+0 0 1.
+-0.209168 4.5225e-002 0.976833
+0 0 1.
+0 0 1.
+-0.209167 4.5226e-002 0.976834
+-0.209168 4.5225e-002 0.976833
+0 0 1.
+-0.209168 4.5225e-002 0.976833
+0 0 1.
+0 0 1.
+-0.209168 4.5225e-002 0.976833
+-0.209168 4.5225e-002 0.976833
+-0.209168 4.5225e-002 0.976833
+0 0 1.
+0 0 1.
+-0.209168 4.5225e-002 0.976833
+-0.20919 4.524e-002 0.976828
+0 0 1.
+0 0 1.
+-0.207511 5.2278e-002 0.976835
+0 0 1.
+0 0 1.
+-0.20919 4.524e-002 0.976828
+-0.207511 5.2278e-002 0.976835
+-0.207511 5.2278e-002 0.976835
+-0.668724 0.229471 0.707213
+-0.202383 6.9482e-002 0.976838
+-0.207511 5.2278e-002 0.976835
+-0.685667 0.172641 0.707146
+-0.668724 0.229471 0.707213
+-0.202383 6.9482e-002 0.976838
+-0.638545 0.30333 0.707285
+-0.193254 9.1818e-002 0.976843
+-0.202383 6.9482e-002 0.976838
+-0.668724 0.229471 0.707213
+-0.638545 0.30333 0.707285
+-0.193254 9.1818e-002 0.976843
+-0.592461 0.385587 0.707328
+-0.179311 0.11671 0.976845
+-0.193254 9.1818e-002 0.976843
+-0.638545 0.30333 0.707285
+-0.592461 0.385587 0.707328
+-0.179311 0.11671 0.976845
+-0.529379 0.468274 0.707444
+-0.160203 0.141708 0.976859
+-0.179311 0.11671 0.976845
+-0.592461 0.385587 0.707328
+-0.529379 0.468274 0.707444
+-0.529379 0.468274 0.707444
+-0.138919 0.162715 0.976845
+-0.160203 0.141708 0.976859
+-0.529379 0.468274 0.707444
+-0.458923 0.537701 0.707296
+-0.138919 0.162715 0.976845
+-0.458923 0.537701 0.707296
+-0.121178 0.176473 0.976818
+-0.138919 0.162715 0.976845
+-0.458923 0.537701 0.707296
+-0.400248 0.582996 0.707048
+-0.121178 0.176473 0.976818
+-0.121178 0.176473 0.976818
+-0.340821 0.619416 0.707223
+-0.103142 0.187486 0.976837
+-0.121178 0.176473 0.976818
+-0.400248 0.582996 0.707048
+-0.340821 0.619416 0.707223
+-0.103142 0.187486 0.976837
+-0.256372 0.658782 0.707304
+-7.7583e-002 0.199414 0.976839
+-0.103142 0.187486 0.976837
+-0.340821 0.619416 0.707223
+-0.256372 0.658782 0.707304
+-7.7583e-002 0.199414 0.976839
+-0.141498 0.692164 0.707734
+-4.2811e-002 0.209416 0.976889
+-7.7583e-002 0.199414 0.976839
+-0.256372 0.658782 0.707304
+-0.141498 0.692164 0.707734
+-0.141498 0.692164 0.707734
+-7.563e-003 0.213811 0.976846
+-4.2811e-002 0.209416 0.976889
+-0.141498 0.692164 0.707734
+-2.4772e-002 0.706442 0.707337
+-7.563e-003 0.213811 0.976846
+-2.4772e-002 0.706442 0.707337
+1.4266e-002 0.21363 0.976811
+-7.563e-003 0.213811 0.976846
+-2.4772e-002 0.706442 0.707337
+4.7283e-002 0.705656 0.706976
+1.4266e-002 0.21363 0.976811
+1.4266e-002 0.21363 0.976811
+9.8206e-002 0.700196 0.707164
+2.9733e-002 0.211919 0.976835
+1.4266e-002 0.21363 0.976811
+4.7283e-002 0.705656 0.706976
+9.8206e-002 0.700196 0.707164
+2.9733e-002 0.211919 0.976835
+0.166821 0.687049 0.707202
+5.0507e-002 0.207951 0.976834
+2.9733e-002 0.211919 0.976835
+9.8206e-002 0.700196 0.707164
+0.166821 0.687049 0.707202
+5.0507e-002 0.207951 0.976834
+0.256508 0.658545 0.707476
+7.7627e-002 0.199277 0.976864
+5.0507e-002 0.207951 0.976834
+0.166821 0.687049 0.707202
+0.256508 0.658545 0.707476
+0.256508 0.658545 0.707476
+0.105979 0.185794 0.976857
+7.7627e-002 0.199277 0.976864
+0.256508 0.658545 0.707476
+0.350338 0.613874 0.707405
+0.105979 0.185794 0.976857
+0.350338 0.613874 0.707405
+0.125888 0.17317 0.976813
+0.105979 0.185794 0.976857
+0.350338 0.613874 0.707405
+0.415931 0.571954 0.707015
+0.125888 0.17317 0.976813
+0.125888 0.17317 0.976813
+0.467645 0.530241 0.707215
+0.141553 0.160478 0.976837
+0.125888 0.17317 0.976813
+0.415931 0.571954 0.707015
+0.467645 0.530241 0.707215
+0.141553 0.160478 0.976837
+0.530009 0.467803 0.707284
+0.16044 0.141585 0.976838
+0.141553 0.160478 0.976837
+0.467645 0.530241 0.707215
+0.530009 0.467803 0.707284
+0.16044 0.141585 0.976838
+0.597447 0.377168 0.707674
+0.180765 0.114118 0.976883
+0.16044 0.141585 0.976838
+0.530009 0.467803 0.707284
+0.597447 0.377168 0.707674
+0.597447 0.377168 0.707674
+0.196443 8.4776e-002 0.976843
+0.180765 0.114118 0.976883
+0.597447 0.377168 0.707674
+0.64912 0.279938 0.707303
+0.196443 8.4776e-002 0.976843
+0.64912 0.279938 0.707303
+0.203475 6.6578e-002 0.976814
+0.196443 8.4776e-002 0.976843
+0.64912 0.279938 0.707303
+0.672195 0.219807 0.706993
+0.203475 6.6578e-002 0.976814
+0.203475 6.6578e-002 0.976814
+0.683416 0.181339 0.707148
+0.206838 5.4879e-002 0.976835
+0.203475 6.6578e-002 0.976814
+0.672195 0.219807 0.706993
+0.683416 0.181339 0.707148
+0.206838 5.4879e-002 0.976835
+0.694558 0.132321 0.707164
+0.210213 4.0044e-002 0.976835
+0.206838 5.4879e-002 0.976835
+0.683416 0.181339 0.707148
+0.694558 0.132321 0.707164
+0.210213 4.0044e-002 0.976835
+0.703329 7.1524e-002 0.707257
+0.212844 2.1645e-002 0.976846
+0.210213 4.0044e-002 0.976835
+0.694558 0.132321 0.707164
+0.703329 7.1524e-002 0.707257
+0.703329 7.1524e-002 0.707257
+0.213951 3.322e-003 0.976839
+0.212844 2.1645e-002 0.976846
+0.703329 7.1524e-002 0.707257
+0.70695 1.0927e-002 0.707179
+0.213951 3.322e-003 0.976839
+0.70695 1.0927e-002 0.707179
+0.213847 -8.726e-003 0.976828
+0.213951 3.322e-003 0.976839
+0.70695 1.0927e-002 0.707179
+0.70655 -2.8867e-002 0.707074
+0.213847 -8.726e-003 0.976828
+0.213847 -8.726e-003 0.976828
+0.704581 -5.9471e-002 0.707127
+0.213235 -1.8001e-002 0.976835
+0.213847 -8.726e-003 0.976828
+0.70655 -2.8867e-002 0.707074
+0.704581 -5.9471e-002 0.707127
+0.213235 -1.8001e-002 0.976835
+0.699868 -0.100721 0.707135
+0.211814 -3.0488e-002 0.976834
+0.213235 -1.8001e-002 0.976835
+0.704581 -5.9471e-002 0.707127
+0.699868 -0.100721 0.707135
+0.211814 -3.0488e-002 0.976834
+0.689597 -0.155891 0.707216
+0.208695 -4.7181e-002 0.976842
+0.211814 -3.0488e-002 0.976834
+0.699868 -0.100721 0.707135
+0.689597 -0.155891 0.707216
+0.208695 -4.7181e-002 0.976842
+0.671708 -0.220437 0.70726
+0.203278 -6.6696e-002 0.976847
+0.208695 -4.7181e-002 0.976842
+0.689597 -0.155891 0.707216
+0.671708 -0.220437 0.70726
+0.671708 -0.220437 0.70726
+0.197172 -8.3293e-002 0.976824
+0.203278 -6.6696e-002 0.976847
+0.671708 -0.220437 0.70726
+0.65139 -0.275204 0.707074
+0.197172 -8.3293e-002 0.976824
+0.197172 -8.3293e-002 0.976824
+0.626606 -0.327513 0.707178
+0.189647 -9.91389e-002 0.976834
+0.197172 -8.3293e-002 0.976824
+0.65139 -0.275204 0.707074
+0.626606 -0.327513 0.707178
+0.189647 -9.91389e-002 0.976834
+0.585244 -0.396633 0.707228
+0.17714 -0.120076 0.976833
+0.189647 -9.91389e-002 0.976834
+0.626606 -0.327513 0.707178
+0.585244 -0.396633 0.707228
+0.17714 -0.120076 0.976833
+0.516184 -0.482492 0.707641
+0.156183 -0.145999 0.976878
+0.17714 -0.120076 0.976833
+0.585244 -0.396633 0.707228
+0.516184 -0.482492 0.707641
+0.516184 -0.482492 0.707641
+0.129396 -0.170294 0.976861
+0.156183 -0.145999 0.976878
+0.516184 -0.482492 0.707641
+0.427412 -0.562851 0.707473
+0.129396 -0.170294 0.976861
+0.427412 -0.562851 0.707473
+0.108335 -0.184689 0.976808
+0.129396 -0.170294 0.976861
+0.427412 -0.562851 0.707473
+0.357691 -0.610118 0.706975
+0.108335 -0.184689 0.976808
+0.108335 -0.184689 0.976808
+0.299462 -0.640445 0.707215
+9.0623e-002 -0.193839 0.976839
+0.108335 -0.184689 0.976808
+0.357691 -0.610118 0.706975
+0.299462 -0.640445 0.707215
+9.0623e-002 -0.193839 0.976839
+0.22095 -0.671524 0.707274
+6.6863e-002 -0.203255 0.97684
+9.0623e-002 -0.193839 0.976839
+0.299462 -0.640445 0.707215
+0.22095 -0.671524 0.707274
+6.6863e-002 -0.203255 0.97684
+0.119782 -0.69644 0.707548
+3.6245e-002 -0.210731 0.976872
+6.6863e-002 -0.203255 0.97684
+0.22095 -0.671524 0.707274
+0.119782 -0.69644 0.707548
+0.119782 -0.69644 0.707548
+5.728e-003 -0.213878 0.976844
+3.6245e-002 -0.210731 0.976872
+0.119782 -0.69644 0.707548
+1.8785e-002 -0.706679 0.707285
+5.728e-003 -0.213878 0.976844
+1.8785e-002 -0.706679 0.707285
+-1.4237e-002 -0.213609 0.976815
+5.728e-003 -0.213878 0.976844
+1.8785e-002 -0.706679 0.707285
+-4.7124e-002 -0.705632 0.707009
+-1.4237e-002 -0.213609 0.976815
+-1.4237e-002 -0.213609 0.976815
+-0.100632 -0.699859 0.707156
+-3.0473e-002 -0.211827 0.976832
+-1.4237e-002 -0.213609 0.976815
+-4.7124e-002 -0.705632 0.707009
+-0.100632 -0.699859 0.707156
+-3.0473e-002 -0.211827 0.976832
+-0.17787 -0.684283 0.707191
+-5.3871e-002 -0.207139 0.976827
+-3.0473e-002 -0.211827 0.976832
+-0.100632 -0.699859 0.707156
+-0.17787 -0.684283 0.707191
+-5.3871e-002 -0.207139 0.976827
+-0.287268 -0.645434 0.707738
+-8.6933e-002 -0.195283 0.976887
+-5.3871e-002 -0.207139 0.976827
+-0.17787 -0.684283 0.707191
+-0.287268 -0.645434 0.707738
+-0.287268 -0.645434 0.707738
+-0.122237 -0.175413 0.976877
+-8.6933e-002 -0.195283 0.976887
+-0.287268 -0.645434 0.707738
+-0.404223 -0.57952 0.707645
+-0.122237 -0.175413 0.976877
+-0.404223 -0.57952 0.707645
+-0.145073 -0.157531 0.9768
+-0.122237 -0.175413 0.976877
+-0.404223 -0.57952 0.707645
+-0.479322 -0.520095 0.706931
+-0.145073 -0.157531 0.9768
+-0.145073 -0.157531 0.9768
+-0.528344 -0.469749 0.70724
+-0.159916 -0.142165 0.97684
+-0.145073 -0.157531 0.9768
+-0.479322 -0.520095 0.706931
+-0.528344 -0.469749 0.70724
+-0.159916 -0.142165 0.97684
+-0.581457 -0.402059 0.707288
+-0.175993 -0.121682 0.976842
+-0.159916 -0.142165 0.97684
+-0.528344 -0.469749 0.70724
+-0.581457 -0.402059 0.707288
+-0.175993 -0.121682 0.976842
+-0.649838 -0.319498 0.68966
+-0.204125 -9.8537e-002 0.973973
+-0.175993 -0.121682 0.976842
+-0.581457 -0.402059 0.707288
+-0.649838 -0.319498 0.68966
+-0.649838 -0.319498 0.68966
+-5.3967e-002 -0.16371 0.985031
+-0.204125 -9.8537e-002 0.973973
+-0.649838 -0.319498 0.68966
+-0.415649 -0.378277 0.827129
+-5.3967e-002 -0.16371 0.985031
+-5.3967e-002 -0.16371 0.985031
+0.208094 -0.702468 0.680615
+8.3999e-002 -0.221837 0.971459
+-5.3967e-002 -0.16371 0.985031
+1.6377e-002 -0.582756 0.812482
+0.208094 -0.702468 0.680615
+8.3999e-002 -0.221837 0.971459
+0.162155 -0.688262 0.707107
+4.9075e-002 -0.208295 0.976834
+8.3999e-002 -0.221837 0.971459
+0.208094 -0.702468 0.680615
+0.162155 -0.688262 0.707107
+0.162155 -0.688262 0.707107
+4.9075e-002 -0.208296 0.976834
+4.9075e-002 -0.208295 0.976834
+0.162155 -0.688262 0.707107
+0.162156 -0.688262 0.707108
+4.9075e-002 -0.208296 0.976834
+0.162156 -0.688262 0.707108
+4.8446e-002 -0.228121 0.972427
+4.9075e-002 -0.208296 0.976834
+0.162156 -0.688262 0.707108
+0.160465 -0.71435 0.681143
+4.8446e-002 -0.228121 0.972427
+0.160465 -0.71435 0.681143
+0.144799 -6.9845e-002 0.986993
+4.8446e-002 -0.228121 0.972427
+0.160465 -0.71435 0.681143
+0.299505 -0.466851 0.832074
+0.144799 -6.9845e-002 0.986993
+0.144799 -6.9845e-002 0.986993
+0.682299 0.274645 0.677523
+0.217142 9.6119e-002 0.971396
+0.144799 -6.9845e-002 0.986993
+0.563416 2.0561e-002 0.825918
+0.682299 0.274645 0.677523
+0.682299 0.274645 0.677523
+0.194187 8.9935e-002 0.976833
+0.217142 9.6119e-002 0.971396
+0.682299 0.274645 0.677523
+0.641568 0.297159 0.707168
+0.194187 8.9935e-002 0.976833
+0.641568 0.297159 0.707168
+0.182652 0.111542 0.97683
+0.194187 8.9935e-002 0.976833
+0.641568 0.297159 0.707168
+0.603373 0.3685 0.707212
+0.182652 0.111542 0.97683
+0.603373 0.3685 0.707212
+0.161839 0.139637 0.976888
+0.182652 0.111542 0.97683
+0.603373 0.3685 0.707212
+0.534894 0.461522 0.707733
+0.161839 0.139637 0.976888
+0.161839 0.139637 0.976888
+0.442405 0.551042 0.707553
+0.133833 0.166776 0.97687
+0.161839 0.139637 0.976888
+0.534894 0.461522 0.707733
+0.442405 0.551042 0.707553
+0.133833 0.166776 0.97687
+0.370216 0.602653 0.706929
+0.112057 0.182501 0.976799
+0.133833 0.166776 0.97687
+0.442405 0.551042 0.707553
+0.370216 0.602653 0.706929
+0.370216 0.602653 0.706929
+9.4415e-002 0.192029 0.976837
+0.112057 0.182501 0.976799
+0.370216 0.602653 0.706929
+0.311925 0.634467 0.707216
+9.4415e-002 0.192029 0.976837
+0.311925 0.634467 0.707216
+7.0125e-002 0.202155 0.97684
+9.4415e-002 0.192029 0.976837
+0.311925 0.634467 0.707216
+0.231665 0.667893 0.707284
+7.0125e-002 0.202155 0.97684
+0.231665 0.667893 0.707284
+3.8226e-002 0.210349 0.976879
+7.0125e-002 0.202155 0.97684
+0.231665 0.667893 0.707284
+0.126337 0.695215 0.707612
+3.8226e-002 0.210349 0.976879
+3.8226e-002 0.210349 0.976879
+2.1639e-002 0.7066 0.707283
+6.519e-003 0.213855 0.976844
+3.8226e-002 0.210349 0.976879
+0.126337 0.695215 0.707612
+2.1639e-002 0.7066 0.707283
+6.519e-003 0.213855 0.976844
+-4.2296e-002 0.705952 0.706995
+-1.2831e-002 0.213703 0.976814
+6.519e-003 0.213855 0.976844
+2.1639e-002 0.7066 0.707283
+-4.2296e-002 0.705952 0.706995
+-4.2296e-002 0.705952 0.706995
+-2.6581e-002 0.212341 0.976834
+-1.2831e-002 0.213703 0.976814
+-4.2296e-002 0.705952 0.706995
+-8.784e-002 0.701586 0.70715
+-2.6581e-002 0.212341 0.976834
+-8.784e-002 0.701586 0.70715
+-4.5571e-002 0.209097 0.976832
+-2.6581e-002 0.212341 0.976834
+-8.784e-002 0.701586 0.70715
+-0.150574 0.690814 0.70718
+-4.5571e-002 0.209097 0.976832
+-0.150574 0.690814 0.70718
+-7.112e-002 0.201701 0.976862
+-4.5571e-002 0.209097 0.976832
+-0.150574 0.690814 0.70718
+-0.235029 0.666542 0.707449
+-7.112e-002 0.201701 0.976862
+-7.112e-002 0.201701 0.976862
+-0.324841 0.627775 0.707373
+-9.8329e-002 0.189965 0.976855
+-7.112e-002 0.201701 0.976862
+-0.235029 0.666542 0.707449
+-0.324841 0.627775 0.707373
+-9.8329e-002 0.189965 0.976855
+-0.386015 0.592565 0.707008
+-0.116879 0.179372 0.976814
+-9.8329e-002 0.189965 0.976855
+-0.324841 0.627775 0.707373
+-0.386015 0.592565 0.707008
+-0.386015 0.592565 0.707008
+-0.130965 0.169235 0.976836
+-0.116879 0.179372 0.976814
+-0.386015 0.592565 0.707008
+-0.432726 0.559143 0.707182
+-0.130965 0.169235 0.976836
+-0.432726 0.559143 0.707182
+-0.148821 0.153767 0.976836
+-0.130965 0.169235 0.976836
+-0.432726 0.559143 0.707182
+-0.49169 0.508001 0.707232
+-0.148821 0.153767 0.976836
+-0.49169 0.508001 0.707232
+-0.169513 0.130311 0.976875
+-0.148821 0.153767 0.976836
+-0.49169 0.508001 0.707232
+-0.560233 0.430666 0.707577
+-0.169513 0.130311 0.976875
+-0.169513 0.130311 0.976875
+-0.619115 0.341095 0.707355
+-0.187382 0.103198 0.976851
+-0.169513 0.130311 0.976875
+-0.560233 0.430666 0.707577
+-0.619115 0.341095 0.707355
+-0.187382 0.103198 0.976851
+-0.649975 0.278737 0.706993
+-0.19678 8.4354e-002 0.976812
+-0.187382 0.103198 0.976851
+-0.619115 0.341095 0.707355
+-0.649975 0.278737 0.706993
+-0.649975 0.278737 0.706993
+-0.202095 7.036e-002 0.976835
+-0.19678 8.4354e-002 0.976812
+-0.649975 0.278737 0.706993
+-0.667736 0.232462 0.70717
+-0.202095 7.036e-002 0.976835
+-0.667736 0.232462 0.70717
+-0.20761 5.1861e-002 0.976836
+-0.202095 7.036e-002 0.976835
+-0.667736 0.232462 0.70717
+-0.68594 0.171336 0.707199
+-0.20761 5.1861e-002 0.976836
+-0.68594 0.171336 0.707199
+-0.212024 2.8239e-002 0.976856
+-0.20761 5.1861e-002 0.976836
+-0.68594 0.171336 0.707199
+-0.700658 9.33199e-002 0.707369
+-0.212024 2.8239e-002 0.976856
+-0.212024 2.8239e-002 0.976856
+-0.706829 1.5352e-002 0.707217
+-0.213919 4.631e-003 0.97684
+-0.212024 2.8239e-002 0.976856
+-0.700658 9.33199e-002 0.707369
+-0.706829 1.5352e-002 0.707217
+-0.213919 4.631e-003 0.97684
+-0.706349 -3.4013e-002 0.707046
+-0.213801 -1.0309e-002 0.976823
+-0.213919 4.631e-003 0.97684
+-0.706829 1.5352e-002 0.707217
+-0.706349 -3.4013e-002 0.707046
+-0.706349 -3.4013e-002 0.707046
+-0.21293 -2.1328e-002 0.976835
+-0.213801 -1.0309e-002 0.976823
+-0.706349 -3.4013e-002 0.707046
+-0.703558 -7.0479e-002 0.707135
+-0.21293 -2.1328e-002 0.976835
+-0.703558 -7.0479e-002 0.707135
+-0.210866 -3.6497e-002 0.976833
+-0.21293 -2.1328e-002 0.976835
+-0.703558 -7.0479e-002 0.707135
+-0.696702 -0.120598 0.707151
+-0.210866 -3.6497e-002 0.976833
+-0.696702 -0.120598 0.707151
+-0.206154 -5.7122e-002 0.976851
+-0.210866 -3.6497e-002 0.976833
+-0.696702 -0.120598 0.707151
+-0.681229 -0.188764 0.707315
+-0.206154 -5.7122e-002 0.976851
+-0.206154 -5.7122e-002 0.976851
+-0.655834 -0.263858 0.707291
+-0.198464 -7.9865e-002 0.976849
+-0.206154 -5.7122e-002 0.976851
+-0.681229 -0.188764 0.707315
+-0.655834 -0.263858 0.707291
+-0.198464 -7.9865e-002 0.976849
+-0.63148 -0.318318 0.70704
+-0.191146 -9.63689e-002 0.976819
+-0.198464 -7.9865e-002 0.976849
+-0.655834 -0.263858 0.707291
+-0.63148 -0.318318 0.70704
+-0.63148 -0.318318 0.70704
+-0.183502 -0.110108 0.976833
+-0.191146 -9.63689e-002 0.976819
+-0.63148 -0.318318 0.70704
+-0.606275 -0.363809 0.707159
+-0.183502 -0.110108 0.976833
+-0.606275 -0.363809 0.707159
+-0.170951 -0.128754 0.976831
+-0.183502 -0.110108 0.976833
+-0.606275 -0.363809 0.707159
+-0.56474 -0.425374 0.707196
+-0.170951 -0.128754 0.976831
+-0.56474 -0.425374 0.707196
+-0.149704 -0.152645 0.976877
+-0.170951 -0.128754 0.976831
+-0.56474 -0.425374 0.707196
+-0.494751 -0.504486 0.707612
+-0.149704 -0.152645 0.976877
+-0.149704 -0.152645 0.976877
+-0.40245 -0.580897 0.707525
+-0.121741 -0.175801 0.976869
+-0.149704 -0.152645 0.976877
+-0.494751 -0.504486 0.707612
+-0.40245 -0.580897 0.707525
+-0.121741 -0.175801 0.976869
+-0.329703 -0.625699 0.706963
+-9.9784e-002 -0.189462 0.976805
+-0.121741 -0.175801 0.976869
+-0.40245 -0.580897 0.707525
+-0.329703 -0.625699 0.706963
+-0.329703 -0.625699 0.706963
+-8.2216e-002 -0.197551 0.976839
+-9.9784e-002 -0.189462 0.976805
+-0.329703 -0.625699 0.706963
+-0.271635 -0.652733 0.707216
+-8.2216e-002 -0.197551 0.976839
+-0.271635 -0.652733 0.707216
+-5.9456e-002 -0.205542 0.976841
+-8.2216e-002 -0.197551 0.976839
+-0.271635 -0.652733 0.707216
+-0.196434 -0.679117 0.707258
+-5.9456e-002 -0.205542 0.976841
+-0.196434 -0.679117 0.707258
+-3.159e-002 -0.211531 0.976861
+-5.9456e-002 -0.205542 0.976841
+-0.196434 -0.679117 0.707258
+-0.104392 -0.699029 0.707432
+-3.159e-002 -0.211531 0.976861
+-3.159e-002 -0.211531 0.976861
+-1.2813e-002 -0.706829 0.707269
+-3.861e-003 -0.21392 0.976844
+-3.159e-002 -0.211531 0.976861
+-0.104392 -0.699029 0.707432
+-1.2813e-002 -0.706829 0.707269
+-3.861e-003 -0.21392 0.976844
+5.1838e-002 -0.705279 0.707032
+1.5705e-002 -0.213497 0.976817
+-3.861e-003 -0.21392 0.976844
+-1.2813e-002 -0.706829 0.707269
+5.1838e-002 -0.705279 0.707032
+5.1838e-002 -0.705279 0.707032
+3.3167e-002 -0.211418 0.976833
+1.5705e-002 -0.213497 0.976817
+5.1838e-002 -0.705279 0.707032
+0.109601 -0.698497 0.70717
+3.3167e-002 -0.211418 0.976833
+0.109601 -0.698497 0.70717
+5.7966e-002 -0.206019 0.97683
+3.3167e-002 -0.211418 0.976833
+0.109601 -0.698497 0.70717
+0.191509 -0.680562 0.70722
+5.7966e-002 -0.206019 0.97683
+0.191509 -0.680562 0.70722
+9.1839e-002 -0.192996 0.976892
+5.7966e-002 -0.206019 0.97683
+0.191509 -0.680562 0.70722
+0.303552 -0.637888 0.707782
+9.1839e-002 -0.192996 0.976892
+9.1839e-002 -0.192996 0.976892
+0.418412 -0.569431 0.707588
+0.12665 -0.17228 0.976872
+9.1839e-002 -0.192996 0.976892
+0.303552 -0.637888 0.707782
+0.418412 -0.569431 0.707588
+0.12665 -0.17228 0.976872
+0.489534 -0.510513 0.706918
+0.148263 -0.154549 0.976797
+0.12665 -0.17228 0.976872
+0.418412 -0.569431 0.707588
+0.489534 -0.510513 0.706918
+0.489534 -0.510513 0.706918
+0.162419 -0.139308 0.976838
+0.148263 -0.154549 0.976797
+0.489534 -0.510513 0.706918
+0.536646 -0.460262 0.707227
+0.162419 -0.139308 0.976838
+0.536646 -0.460262 0.707227
+0.178636 -0.117777 0.976841
+0.162419 -0.139308 0.976838
+0.536646 -0.460262 0.707227
+0.590195 -0.389107 0.707295
+0.178636 -0.117777 0.976841
+0.590195 -0.389107 0.707295
+0.210795 -9.6756e-002 0.97273
+0.178636 -0.117777 0.976841
+0.590195 -0.389107 0.707295
+0.664553 -0.304062 0.68258
+0.210795 -9.6756e-002 0.97273
+0.664553 -0.304062 0.68258
+0.107782 0.105723 0.988537
+0.210795 -9.6756e-002 0.97273
+0.664553 -0.304062 0.68258
+0.528777 3.2355e-002 0.848144
+0.107782 0.105723 0.988537
+0.107782 0.105723 0.988537
+0.120983 0.736855 0.665137
+1.3242e-002 0.251895 0.967664
+0.107782 0.105723 0.988537
+0.233513 0.52492 0.818493
+0.120983 0.736855 0.665137
+0.120983 0.736855 0.665137
+5.2406e-002 0.207483 0.976834
+1.3242e-002 0.251895 0.967664
+0.120983 0.736855 0.665137
+0.173161 0.685578 0.707106
+5.2406e-002 0.207483 0.976834
+0.173161 0.685578 0.707106
+5.2406e-002 0.207484 0.976834
+5.2406e-002 0.207483 0.976834
+0.173161 0.685578 0.707106
+0.173162 0.685578 0.707105
+5.2406e-002 0.207484 0.976834
+0.173162 0.685578 0.707105
+6.1268e-002 0.223498 0.972777
+5.2406e-002 0.207484 0.976834
+0.173162 0.685578 0.707105
+0.185579 0.706418 0.683033
+6.1268e-002 0.223498 0.972777
+0.185579 0.706418 0.683033
+7.0186e-002 0.239574 0.968338
+6.1268e-002 0.223498 0.972777
+0.185579 0.706418 0.683033
+0.197751 0.72639 0.658219
+7.0186e-002 0.239574 0.968338
+0.179064 -0.144585 -0.973155
+0.41915 -0.60633 -0.675779
+0.179064 -0.144585 -0.973155
+0.179064 -0.144585 -0.973155
+0.41915 -0.60633 -0.675779
+0.41915 -0.60633 -0.675779
+-0.691135 0.149432 0.707109
+-0.209168 4.5225e-002 0.976833
+-0.209167 4.5226e-002 0.976834
+-0.691135 0.149432 0.707109
+-0.691135 0.149432 0.707108
+-0.209168 4.5225e-002 0.976833
+-0.209168 4.5225e-002 0.976833
+-0.691136 0.149434 0.707107
+-0.209168 4.5225e-002 0.976833
+-0.209168 4.5225e-002 0.976833
+-0.691135 0.149432 0.707108
+-0.691136 0.149434 0.707107
+-0.691136 0.149434 0.707107
+-0.20919 4.524e-002 0.976828
+-0.209168 4.5225e-002 0.976833
+-0.691136 0.149434 0.707107
+-0.691171 0.149458 0.707068
+-0.20919 4.524e-002 0.976828
+-0.20919 4.524e-002 0.976828
+-0.685667 0.172641 0.707146
+-0.207511 5.2278e-002 0.976835
+-0.20919 4.524e-002 0.976828
+-0.691171 0.149458 0.707068
+-0.685667 0.172641 0.707146
+-0.685667 0.172641 0.707146
+-0.923979 0.316949 0.214024
+-0.668724 0.229471 0.707213
+-0.685667 0.172641 0.707146
+-0.94729 0.23842 0.214003
+-0.923979 0.316949 0.214024
+-0.668724 0.229471 0.707213
+-0.882351 0.419095 0.214045
+-0.638545 0.30333 0.707285
+-0.668724 0.229471 0.707213
+-0.923979 0.316949 0.214024
+-0.882351 0.419095 0.214045
+-0.638545 0.30333 0.707285
+-0.818716 0.532808 0.214055
+-0.592461 0.385587 0.707328
+-0.638545 0.30333 0.707285
+-0.882351 0.419095 0.214045
+-0.818716 0.532808 0.214055
+-0.592461 0.385587 0.707328
+-0.731636 0.647196 0.214118
+-0.529379 0.468274 0.707444
+-0.592461 0.385587 0.707328
+-0.818716 0.532808 0.214055
+-0.731636 0.647196 0.214118
+-0.731636 0.647196 0.214118
+-0.458923 0.537701 0.707296
+-0.529379 0.468274 0.707444
+-0.731636 0.647196 0.214118
+-0.634061 0.743067 0.214052
+-0.458923 0.537701 0.707296
+-0.634061 0.743067 0.214052
+-0.400248 0.582996 0.707048
+-0.458923 0.537701 0.707296
+-0.634061 0.743067 0.214052
+-0.552835 0.805363 0.213927
+-0.400248 0.582996 0.707048
+-0.400248 0.582996 0.707048
+-0.470947 0.855807 0.214016
+-0.340821 0.619416 0.707223
+-0.400248 0.582996 0.707048
+-0.552835 0.805363 0.213927
+-0.470947 0.855807 0.214016
+-0.340821 0.619416 0.707223
+-0.35432 0.910303 0.214023
+-0.256372 0.658782 0.707304
+-0.340821 0.619416 0.707223
+-0.470947 0.855807 0.214016
+-0.35432 0.910303 0.214023
+-0.256372 0.658782 0.707304
+-0.195635 0.956986 0.214252
+-0.141498 0.692164 0.707734
+-0.256372 0.658782 0.707304
+-0.35432 0.910303 0.214023
+-0.195635 0.956986 0.214252
+-0.195635 0.956986 0.214252
+-2.4772e-002 0.706442 0.707337
+-0.141498 0.692164 0.707734
+-0.195635 0.956986 0.214252
+-3.4021e-002 0.976229 0.214057
+-2.4772e-002 0.706442 0.707337
+-3.4021e-002 0.976229 0.214057
+4.7283e-002 0.705656 0.706976
+-2.4772e-002 0.706442 0.707337
+-3.4021e-002 0.976229 0.214057
+6.5464e-002 0.974662 0.213888
+4.7283e-002 0.705656 0.706976
+4.7283e-002 0.705656 0.706976
+0.135647 0.967369 0.214003
+9.8206e-002 0.700196 0.707164
+4.7283e-002 0.705656 0.706976
+6.5464e-002 0.974662 0.213888
+0.135647 0.967369 0.214003
+9.8206e-002 0.700196 0.707164
+0.230442 0.949263 0.214001
+0.166821 0.687049 0.707202
+9.8206e-002 0.700196 0.707164
+0.135647 0.967369 0.214003
+0.230442 0.949263 0.214001
+0.166821 0.687049 0.707202
+0.354509 0.910203 0.214136
+0.256508 0.658545 0.707476
+0.166821 0.687049 0.707202
+0.230442 0.949263 0.214001
+0.354509 0.910203 0.214136
+0.354509 0.910203 0.214136
+0.350338 0.613874 0.707405
+0.256508 0.658545 0.707476
+0.354509 0.910203 0.214136
+0.484299 0.8483 0.214108
+0.350338 0.613874 0.707405
+0.484299 0.8483 0.214108
+0.415931 0.571954 0.707015
+0.350338 0.613874 0.707405
+0.484299 0.8483 0.214108
+0.574619 0.789972 0.213908
+0.415931 0.571954 0.707015
+0.415931 0.571954 0.707015
+0.646089 0.732643 0.214019
+0.467645 0.530241 0.707215
+0.415931 0.571954 0.707015
+0.574619 0.789972 0.213908
+0.646089 0.732643 0.214019
+0.467645 0.530241 0.707215
+0.732323 0.646449 0.214026
+0.530009 0.467803 0.707284
+0.467645 0.530241 0.707215
+0.646089 0.732643 0.214019
+0.732323 0.646449 0.214026
+0.530009 0.467803 0.707284
+0.825963 0.521428 0.214237
+0.597447 0.377168 0.707674
+0.530009 0.467803 0.707284
+0.732323 0.646449 0.214026
+0.825963 0.521428 0.214237
+0.825963 0.521428 0.214237
+0.64912 0.279938 0.707303
+0.597447 0.377168 0.707674
+0.825963 0.521428 0.214237
+0.897035 0.386666 0.214052
+0.64912 0.279938 0.707303
+0.897035 0.386666 0.214052
+0.672195 0.219807 0.706993
+0.64912 0.279938 0.707303
+0.897035 0.386666 0.214052
+0.928513 0.30349 0.213909
+0.672195 0.219807 0.706993
+0.672195 0.219807 0.706993
+0.944156 0.250535 0.214013
+0.683416 0.181339 0.707148
+0.672195 0.219807 0.706993
+0.928513 0.30349 0.213909
+0.944156 0.250535 0.214013
+0.683416 0.181339 0.707148
+0.95957 0.18282 0.214013
+0.694558 0.132321 0.707164
+0.683416 0.181339 0.707148
+0.944156 0.250535 0.214013
+0.95957 0.18282 0.214013
+0.694558 0.132321 0.707164
+0.971809 9.8826e-002 0.214059
+0.703329 7.1524e-002 0.707257
+0.694558 0.132321 0.707164
+0.95957 0.18282 0.214013
+0.971809 9.8826e-002 0.214059
+0.971809 9.8826e-002 0.214059
+0.70695 1.0927e-002 0.707179
+0.703329 7.1524e-002 0.707257
+0.971809 9.8826e-002 0.214059
+0.976714 1.5048e-002 0.214019
+0.70695 1.0927e-002 0.707179
+0.976714 1.5048e-002 0.214019
+0.70655 -2.8867e-002 0.707074
+0.70695 1.0927e-002 0.707179
+0.976714 1.5048e-002 0.214019
+0.976025 -3.9914e-002 0.213967
+0.70655 -2.8867e-002 0.707074
+0.70655 -2.8867e-002 0.707074
+0.973374 -8.2149e-002 0.213995
+0.704581 -5.9471e-002 0.707127
+0.70655 -2.8867e-002 0.707074
+0.976025 -3.9914e-002 0.213967
+0.973374 -8.2149e-002 0.213995
+0.704581 -5.9471e-002 0.707127
+0.966877 -0.139133 0.21399
+0.699868 -0.100721 0.707135
+0.704581 -5.9471e-002 0.707127
+0.973374 -8.2149e-002 0.213995
+0.966877 -0.139133 0.21399
+0.699868 -0.100721 0.707135
+0.952788 -0.215377 0.214028
+0.689597 -0.155891 0.707216
+0.699868 -0.100721 0.707135
+0.966877 -0.139133 0.21399
+0.952788 -0.215377 0.214028
+0.689597 -0.155891 0.707216
+0.928106 -0.304631 0.214053
+0.671708 -0.220437 0.70726
+0.689597 -0.155891 0.707216
+0.952788 -0.215377 0.214028
+0.928106 -0.304631 0.214053
+0.928106 -0.304631 0.214053
+0.65139 -0.275204 0.707074
+0.671708 -0.220437 0.70726
+0.928106 -0.304631 0.214053
+0.89982 -0.380195 0.213954
+0.65139 -0.275204 0.707074
+0.65139 -0.275204 0.707074
+0.865733 -0.452451 0.213998
+0.626606 -0.327513 0.707178
+0.65139 -0.275204 0.707074
+0.89982 -0.380195 0.213954
+0.865733 -0.452451 0.213998
+0.626606 -0.327513 0.707178
+0.808663 -0.547972 0.213987
+0.585244 -0.396633 0.707228
+0.626606 -0.327513 0.707178
+0.865733 -0.452451 0.213998
+0.808663 -0.547972 0.213987
+0.585244 -0.396633 0.707228
+0.713608 -0.666996 0.214196
+0.516184 -0.482492 0.707641
+0.585244 -0.396633 0.707228
+0.808663 -0.547972 0.213987
+0.713608 -0.666996 0.214196
+0.713608 -0.666996 0.214196
+0.427412 -0.562851 0.707473
+0.516184 -0.482492 0.707641
+0.713608 -0.666996 0.214196
+0.590573 -0.778057 0.21413
+0.427412 -0.562851 0.707473
+0.590573 -0.778057 0.21413
+0.357691 -0.610118 0.706975
+0.427412 -0.562851 0.707473
+0.590573 -0.778057 0.21413
+0.493914 -0.842796 0.213879
+0.357691 -0.610118 0.706975
+0.357691 -0.610118 0.706975
+0.413788 -0.884862 0.214005
+0.299462 -0.640445 0.707215
+0.357691 -0.610118 0.706975
+0.493914 -0.842796 0.213879
+0.413788 -0.884862 0.214005
+0.299462 -0.640445 0.707215
+0.30534 -0.927881 0.214017
+0.22095 -0.671524 0.707274
+0.299462 -0.640445 0.707215
+0.413788 -0.884862 0.214005
+0.30534 -0.927881 0.214017
+0.22095 -0.671524 0.707274
+0.165569 -0.962663 0.214164
+0.119782 -0.69644 0.707548
+0.22095 -0.671524 0.707274
+0.30534 -0.927881 0.214017
+0.165569 -0.962663 0.214164
+0.165569 -0.962663 0.214164
+1.8785e-002 -0.706679 0.707285
+0.119782 -0.69644 0.707548
+0.165569 -0.962663 0.214164
+2.5819e-002 -0.976484 0.214037
+1.8785e-002 -0.706679 0.707285
+2.5819e-002 -0.976484 0.214037
+-4.7124e-002 -0.705632 0.707009
+1.8785e-002 -0.706679 0.707285
+2.5819e-002 -0.976484 0.214037
+-6.5186e-002 -0.974678 0.213903
+-4.7124e-002 -0.705632 0.707009
+-4.7124e-002 -0.705632 0.707009
+-0.138985 -0.9669 0.213978
+-0.100632 -0.699859 0.707156
+-4.7124e-002 -0.705632 0.707009
+-6.5186e-002 -0.974678 0.213903
+-0.138985 -0.9669 0.213978
+-0.100632 -0.699859 0.707156
+-0.245666 -0.945448 0.213952
+-0.17787 -0.684283 0.707191
+-0.100632 -0.699859 0.707156
+-0.138985 -0.9669 0.213978
+-0.245666 -0.945448 0.213952
+-0.17787 -0.684283 0.707191
+-0.397134 -0.892408 0.214227
+-0.287268 -0.645434 0.707738
+-0.17787 -0.684283 0.707191
+-0.245666 -0.945448 0.213952
+-0.397134 -0.892408 0.214227
+-0.397134 -0.892408 0.214227
+-0.404223 -0.57952 0.707645
+-0.287268 -0.645434 0.707738
+-0.397134 -0.892408 0.214227
+-0.559067 -0.800974 0.214206
+-0.404223 -0.57952 0.707645
+-0.559067 -0.800974 0.214206
+-0.479322 -0.520095 0.706931
+-0.404223 -0.57952 0.707645
+-0.559067 -0.800974 0.214206
+-0.662214 -0.718158 0.213825
+-0.479322 -0.520095 0.706931
+-0.479322 -0.520095 0.706931
+-0.729993 -0.649084 0.214009
+-0.528344 -0.469749 0.70724
+-0.479322 -0.520095 0.706931
+-0.662214 -0.718158 0.213825
+-0.729993 -0.649084 0.214009
+-0.528344 -0.469749 0.70724
+-0.803439 -0.555588 0.214029
+-0.581457 -0.402059 0.707288
+-0.528344 -0.469749 0.70724
+-0.729993 -0.649084 0.214009
+-0.803439 -0.555588 0.214029
+-0.581457 -0.402059 0.707288
+-0.876622 -0.436427 0.202646
+-0.649838 -0.319498 0.68966
+-0.581457 -0.402059 0.707288
+-0.803439 -0.555588 0.214029
+-0.876622 -0.436427 0.202646
+-0.876622 -0.436427 0.202646
+-0.689587 -0.274503 0.670163
+-0.649838 -0.319498 0.68966
+-0.876622 -0.436427 0.202646
+-0.909576 -0.369219 0.190654
+-0.689587 -0.274503 0.670163
+0.253119 -0.714484 0.65226
+0.233553 -0.951268 0.201349
+0.208094 -0.702468 0.680615
+0.253119 -0.714484 0.65226
+0.242988 -0.951494 0.188721
+0.233553 -0.951268 0.201349
+0.233553 -0.951268 0.201349
+0.162155 -0.688262 0.707107
+0.208094 -0.702468 0.680615
+0.233553 -0.951268 0.201349
+0.22401 -0.950804 0.213988
+0.162155 -0.688262 0.707107
+0.22401 -0.950804 0.213988
+0.162156 -0.688262 0.707108
+0.162155 -0.688262 0.707107
+0.22401 -0.950804 0.213988
+0.224011 -0.950802 0.213999
+0.162156 -0.688262 0.707108
+0.224011 -0.950802 0.213999
+0.160465 -0.71435 0.681143
+0.162156 -0.688262 0.707108
+0.224011 -0.950802 0.213999
+0.222648 -0.954564 0.198079
+0.160465 -0.71435 0.681143
+0.222648 -0.954564 0.198079
+0.158562 -0.739404 0.654324
+0.160465 -0.71435 0.681143
+0.222648 -0.954564 0.198079
+0.221236 -0.958049 0.182198
+0.158562 -0.739404 0.654324
+0.708147 0.282282 0.647182
+0.91759 0.344982 0.197524
+0.682299 0.274645 0.677523
+0.708147 0.282282 0.647182
+0.929361 0.321691 0.181117
+0.91759 0.344982 0.197524
+0.91759 0.344982 0.197524
+0.641568 0.297159 0.707168
+0.682299 0.274645 0.677523
+0.91759 0.344982 0.197524
+0.886364 0.410567 0.213996
+0.641568 0.297159 0.707168
+0.886364 0.410567 0.213996
+0.603373 0.3685 0.707212
+0.641568 0.297159 0.707168
+0.886364 0.410567 0.213996
+0.833645 0.509166 0.213975
+0.603373 0.3685 0.707212
+0.833645 0.509166 0.213975
+0.534894 0.461522 0.707733
+0.603373 0.3685 0.707212
+0.833645 0.509166 0.213975
+0.739542 0.638107 0.214235
+0.534894 0.461522 0.707733
+0.534894 0.461522 0.707733
+0.611649 0.761595 0.214145
+0.442405 0.551042 0.707553
+0.534894 0.461522 0.707733
+0.739542 0.638107 0.214235
+0.611649 0.761595 0.214145
+0.442405 0.551042 0.707553
+0.511455 0.83228 0.21383
+0.370216 0.602653 0.706929
+0.442405 0.551042 0.707553
+0.611649 0.761595 0.214145
+0.511455 0.83228 0.21383
+0.511455 0.83228 0.21383
+0.311925 0.634467 0.707216
+0.370216 0.602653 0.706929
+0.511455 0.83228 0.21383
+0.430957 0.876628 0.214007
+0.311925 0.634467 0.707216
+0.430957 0.876628 0.214007
+0.231665 0.667893 0.707284
+0.311925 0.634467 0.707216
+0.430957 0.876628 0.214007
+0.320097 0.922892 0.214027
+0.231665 0.667893 0.707284
+0.320097 0.922892 0.214027
+0.126337 0.695215 0.707612
+0.231665 0.667893 0.707284
+0.320097 0.922892 0.214027
+0.174644 0.961047 0.214217
+0.126337 0.695215 0.707612
+0.126337 0.695215 0.707612
+2.9996e-002 0.976367 0.214029
+2.1639e-002 0.7066 0.707283
+0.126337 0.695215 0.707612
+0.174644 0.961047 0.214217
+2.9996e-002 0.976367 0.214029
+2.1639e-002 0.7066 0.707283
+-5.8337e-002 0.975116 0.213883
+-4.2296e-002 0.705952 0.706995
+2.1639e-002 0.7066 0.707283
+2.9996e-002 0.976367 0.214029
+-5.8337e-002 0.975116 0.213883
+-5.8337e-002 0.975116 0.213883
+-8.784e-002 0.701586 0.70715
+-4.2296e-002 0.705952 0.706995
+-5.8337e-002 0.975116 0.213883
+-0.121368 0.969263 0.214009
+-8.784e-002 0.701586 0.70715
+-0.121368 0.969263 0.214009
+-0.150574 0.690814 0.70718
+-8.784e-002 0.701586 0.70715
+-0.121368 0.969263 0.214009
+-0.20805 0.954423 0.21399
+-0.150574 0.690814 0.70718
+-0.20805 0.954423 0.21399
+-0.235029 0.666542 0.707449
+-0.150574 0.690814 0.70718
+-0.20805 0.954423 0.21399
+-0.324834 0.92121 0.214138
+-0.235029 0.666542 0.707449
+-0.235029 0.666542 0.707449
+-0.448828 0.867584 0.214128
+-0.324841 0.627775 0.707373
+-0.235029 0.666542 0.707449
+-0.324834 0.92121 0.214138
+-0.448828 0.867584 0.214128
+-0.324841 0.627775 0.707373
+-0.533127 0.818543 0.213921
+-0.386015 0.592565 0.707008
+-0.324841 0.627775 0.707373
+-0.448828 0.867584 0.214128
+-0.533127 0.818543 0.213921
+-0.533127 0.818543 0.213921
+-0.432726 0.559143 0.707182
+-0.386015 0.592565 0.707008
+-0.533127 0.818543 0.213921
+-0.59787 0.7725 0.213999
+-0.432726 0.559143 0.707182
+-0.59787 0.7725 0.213999
+-0.49169 0.508001 0.707232
+-0.432726 0.559143 0.707182
+-0.59787 0.7725 0.213999
+-0.67938 0.701888 0.214002
+-0.49169 0.508001 0.707232
+-0.67938 0.701888 0.214002
+-0.560233 0.430666 0.707577
+-0.49169 0.508001 0.707232
+-0.67938 0.701888 0.214002
+-0.77442 0.595313 0.214185
+-0.560233 0.430666 0.707577
+-0.560233 0.430666 0.707577
+-0.855514 0.471456 0.214066
+-0.619115 0.341095 0.707355
+-0.560233 0.430666 0.707577
+-0.77442 0.595313 0.214185
+-0.855514 0.471456 0.214066
+-0.619115 0.341095 0.707355
+-0.897744 0.385097 0.213906
+-0.649975 0.278737 0.706993
+-0.619115 0.341095 0.707355
+-0.855514 0.471456 0.214066
+-0.897744 0.385097 0.213906
+-0.897744 0.385097 0.213906
+-0.667736 0.232462 0.70717
+-0.649975 0.278737 0.706993
+-0.897744 0.385097 0.213906
+-0.922528 0.321152 0.214019
+-0.667736 0.232462 0.70717
+-0.922528 0.321152 0.214019
+-0.68594 0.171336 0.707199
+-0.667736 0.232462 0.70717
+-0.922528 0.321152 0.214019
+-0.947715 0.236713 0.214017
+-0.68594 0.171336 0.707199
+-0.947715 0.236713 0.214017
+-0.700658 9.33199e-002 0.707369
+-0.68594 0.171336 0.707199
+-0.947715 0.236713 0.214017
+-0.968261 0.128961 0.214104
+-0.700658 9.33199e-002 0.707369
+-0.700658 9.33199e-002 0.707369
+-0.976596 2.1261e-002 0.214029
+-0.706829 1.5352e-002 0.707217
+-0.700658 9.33199e-002 0.707369
+-0.968261 0.128961 0.214104
+-0.976596 2.1261e-002 0.214029
+-0.706829 1.5352e-002 0.707217
+-0.975717 -4.6941e-002 0.213947
+-0.706349 -3.4013e-002 0.707046
+-0.706829 1.5352e-002 0.707217
+-0.976596 2.1261e-002 0.214029
+-0.975717 -4.6941e-002 0.213947
+-0.975717 -4.6941e-002 0.213947
+-0.703558 -7.0479e-002 0.707135
+-0.706349 -3.4013e-002 0.707046
+-0.975717 -4.6941e-002 0.213947
+-0.971969 -9.7375e-002 0.213997
+-0.703558 -7.0479e-002 0.707135
+-0.971969 -9.7375e-002 0.213997
+-0.696702 -0.120598 0.707151
+-0.703558 -7.0479e-002 0.707135
+-0.971969 -9.7375e-002 0.213997
+-0.96252 -0.166621 0.213993
+-0.696702 -0.120598 0.707151
+-0.96252 -0.166621 0.213993
+-0.681229 -0.188764 0.707315
+-0.696702 -0.120598 0.707151
+-0.96252 -0.166621 0.213993
+-0.941346 -0.260845 0.214075
+-0.681229 -0.188764 0.707315
+-0.681229 -0.188764 0.707315
+-0.906246 -0.364545 0.214066
+-0.655834 -0.263858 0.707291
+-0.681229 -0.188764 0.707315
+-0.941346 -0.260845 0.214075
+-0.906246 -0.364545 0.214066
+-0.655834 -0.263858 0.707291
+-0.872311 -0.439665 0.213936
+-0.63148 -0.318318 0.70704
+-0.655834 -0.263858 0.707291
+-0.906246 -0.364545 0.214066
+-0.872311 -0.439665 0.213936
+-0.872311 -0.439665 0.213936
+-0.606275 -0.363809 0.707159
+-0.63148 -0.318318 0.70704
+-0.872311 -0.439665 0.213936
+-0.837591 -0.502639 0.213998
+-0.606275 -0.363809 0.707159
+-0.837591 -0.502639 0.213998
+-0.56474 -0.425374 0.707196
+-0.606275 -0.363809 0.707159
+-0.837591 -0.502639 0.213998
+-0.780246 -0.58773 0.213986
+-0.56474 -0.425374 0.707196
+-0.780246 -0.58773 0.213986
+-0.494751 -0.504486 0.707612
+-0.56474 -0.425374 0.707196
+-0.780246 -0.58773 0.213986
+-0.683928 -0.697399 0.21419
+-0.494751 -0.504486 0.707612
+-0.494751 -0.504486 0.707612
+-0.556396 -0.802846 0.214151
+-0.40245 -0.580897 0.707525
+-0.494751 -0.504486 0.707612
+-0.683928 -0.697399 0.21419
+-0.556396 -0.802846 0.214151
+-0.40245 -0.580897 0.707525
+-0.455513 -0.864157 0.21387
+-0.329703 -0.625699 0.706963
+-0.40245 -0.580897 0.707525
+-0.556396 -0.802846 0.214151
+-0.455513 -0.864157 0.21387
+-0.455513 -0.864157 0.21387
+-0.271635 -0.652733 0.707216
+-0.329703 -0.625699 0.706963
+-0.455513 -0.864157 0.21387
+-0.375291 -0.90186 0.214021
+-0.271635 -0.652733 0.707216
+-0.375291 -0.90186 0.214021
+-0.196434 -0.679117 0.707258
+-0.271635 -0.652733 0.707216
+-0.375291 -0.90186 0.214021
+-0.271411 -0.938365 0.214028
+-0.196434 -0.679117 0.707258
+-0.271411 -0.938365 0.214028
+-0.104392 -0.699029 0.707432
+-0.196434 -0.679117 0.707258
+-0.271411 -0.938365 0.214028
+-0.144275 -0.966094 0.21412
+-0.104392 -0.699029 0.707432
+-0.104392 -0.699029 0.707432
+-1.776e-002 -0.976663 0.214043
+-1.2813e-002 -0.706829 0.707269
+-0.104392 -0.699029 0.707432
+-0.144275 -0.966094 0.21412
+-1.776e-002 -0.976663 0.214043
+-1.2813e-002 -0.706829 0.707269
+7.1562e-002 -0.974225 0.213926
+5.1838e-002 -0.705279 0.707032
+-1.2813e-002 -0.706829 0.707269
+-1.776e-002 -0.976663 0.214043
+7.1562e-002 -0.974225 0.213926
+7.1562e-002 -0.974225 0.213926
+0.109601 -0.698497 0.70717
+5.1838e-002 -0.705279 0.707032
+7.1562e-002 -0.974225 0.213926
+0.151442 -0.965024 0.213995
+0.109601 -0.698497 0.70717
+0.151442 -0.965024 0.213995
+0.191509 -0.680562 0.70722
+0.109601 -0.698497 0.70717
+0.151442 -0.965024 0.213995
+0.264628 -0.940311 0.21398
+0.191509 -0.680562 0.70722
+0.264628 -0.940311 0.21398
+0.303552 -0.637888 0.707782
+0.191509 -0.680562 0.70722
+0.264628 -0.940311 0.21398
+0.419725 -0.881999 0.214263
+0.303552 -0.637888 0.707782
+0.303552 -0.637888 0.707782
+0.578264 -0.787237 0.214171
+0.418412 -0.569431 0.707588
+0.303552 -0.637888 0.707782
+0.419725 -0.881999 0.214263
+0.578264 -0.787237 0.214171
+0.418412 -0.569431 0.707588
+0.676004 -0.705189 0.213837
+0.489534 -0.510513 0.706918
+0.418412 -0.569431 0.707588
+0.578264 -0.787237 0.214171
+0.676004 -0.705189 0.213837
+0.676004 -0.705189 0.213837
+0.536646 -0.460262 0.707227
+0.489534 -0.510513 0.706918
+0.676004 -0.705189 0.213837
+0.741486 -0.63592 0.214019
+0.536646 -0.460262 0.707227
+0.741486 -0.63592 0.214019
+0.590195 -0.389107 0.707295
+0.536646 -0.460262 0.707227
+0.741486 -0.63592 0.214019
+0.815545 -0.53766 0.214029
+0.590195 -0.389107 0.707295
+0.815545 -0.53766 0.214029
+0.664553 -0.304062 0.68258
+0.590195 -0.389107 0.707295
+0.815545 -0.53766 0.214029
+0.891668 -0.406893 0.198408
+0.664553 -0.304062 0.68258
+0.891668 -0.406893 0.198408
+0.709058 -0.259398 0.655705
+0.664553 -0.304062 0.68258
+0.891668 -0.406893 0.198408
+0.925533 -0.332014 0.182084
+0.709058 -0.259398 0.655705
+6.8545e-002 0.782404 0.618987
+0.227964 0.953671 0.196327
+0.120983 0.736855 0.665137
+6.8545e-002 0.782404 0.618987
+0.216684 0.95975 0.178686
+0.227964 0.953671 0.196327
+0.120983 0.736855 0.665137
+0.239214 0.947091 0.213998
+0.173161 0.685578 0.707106
+0.120983 0.736855 0.665137
+0.227964 0.953671 0.196327
+0.239214 0.947091 0.213998
+0.173161 0.685578 0.707106
+0.239214 0.947091 0.213998
+0.173162 0.685578 0.707105
+0.173161 0.685578 0.707106
+0.239214 0.947091 0.213998
+0.239214 0.947091 0.213998
+0.173162 0.685578 0.707105
+0.24193 0.949646 0.199104
+0.185579 0.706418 0.683033
+0.173162 0.685578 0.707105
+0.239214 0.947091 0.213998
+0.24193 0.949646 0.199104
+0.24193 0.949646 0.199104
+0.197751 0.72639 0.658219
+0.185579 0.706418 0.683033
+0.24193 0.949646 0.199104
+0.244572 0.951963 0.184257
+0.197751 0.72639 0.658219
+0.41915 -0.60633 -0.675779
+0.423472 -0.835324 -0.350578
+0.423472 -0.835324 -0.350578
+0.41915 -0.60633 -0.675779
+-0.967476 0.209149 0.142292
+-0.691135 0.149432 0.707108
+-0.691135 0.149432 0.707109
+-0.967476 0.209149 0.142292
+-0.954771 0.206433 0.214005
+-0.691135 0.149432 0.707108
+-0.954771 0.206433 0.214005
+-0.691136 0.149434 0.707107
+-0.691135 0.149432 0.707108
+-0.954771 0.206433 0.214005
+-0.954771 0.206435 0.214
+-0.691136 0.149434 0.707107
+-0.691136 0.149434 0.707107
+-0.954776 0.206445 0.213971
+-0.691171 0.149458 0.707068
+-0.691136 0.149434 0.707107
+-0.954771 0.206435 0.214
+-0.954776 0.206445 0.213971
+-0.691171 0.149458 0.707068
+-0.94729 0.23842 0.214003
+-0.685667 0.172641 0.707146
+-0.691171 0.149458 0.707068
+-0.954776 0.206445 0.213971
+-0.94729 0.23842 0.214003
+-0.969764 0.244046 -1.e-006
+-0.923979 0.316949 0.214024
+-0.94729 0.23842 0.214003
+-0.969764 0.244046 -1.e-006
+-0.945908 0.324434 -1.e-006
+-0.923979 0.316949 0.214024
+-0.945908 0.324434 -1.e-006
+-0.882351 0.419095 0.214045
+-0.923979 0.316949 0.214024
+-0.945908 0.324434 -1.e-006
+-0.903293 0.429025 1.e-006
+-0.882351 0.419095 0.214045
+-0.903293 0.429025 1.e-006
+-0.818716 0.532808 0.214055
+-0.882351 0.419095 0.214045
+-0.903293 0.429025 1.e-006
+-0.838147 0.545444 3.e-006
+-0.818716 0.532808 0.214055
+-0.838147 0.545444 3.e-006
+-0.731636 0.647196 0.214118
+-0.818716 0.532808 0.214055
+-0.838147 0.545444 3.e-006
+-0.749005 0.662564 2.e-006
+-0.731636 0.647196 0.214118
+-0.731636 0.647196 0.214118
+-0.64908 0.76072 3.e-006
+-0.634061 0.743067 0.214052
+-0.731636 0.647196 0.214118
+-0.749005 0.662564 2.e-006
+-0.64908 0.76072 3.e-006
+-0.634061 0.743067 0.214052
+-0.565919 0.824461 4.e-006
+-0.552835 0.805363 0.213927
+-0.634061 0.743067 0.214052
+-0.64908 0.76072 3.e-006
+-0.565919 0.824461 4.e-006
+-0.552835 0.805363 0.213927
+-0.482132 0.876099 1.e-006
+-0.470947 0.855807 0.214016
+-0.552835 0.805363 0.213927
+-0.565919 0.824461 4.e-006
+-0.482132 0.876099 1.e-006
+-0.482132 0.876099 1.e-006
+-0.35432 0.910303 0.214023
+-0.470947 0.855807 0.214016
+-0.482132 0.876099 1.e-006
+-0.362743 0.931889 -1.e-006
+-0.35432 0.910303 0.214023
+-0.35432 0.910303 0.214023
+-0.200286 0.979737 0
+-0.195635 0.956986 0.214252
+-0.35432 0.910303 0.214023
+-0.362743 0.931889 -1.e-006
+-0.200286 0.979737 0
+-0.200286 0.979737 0
+-3.4021e-002 0.976229 0.214057
+-0.195635 0.956986 0.214252
+-0.200286 0.979737 0
+-3.476e-002 0.999396 0
+-3.4021e-002 0.976229 0.214057
+-3.4021e-002 0.976229 0.214057
+6.7066e-002 0.997749 -1.e-006
+6.5464e-002 0.974662 0.213888
+-3.4021e-002 0.976229 0.214057
+-3.476e-002 0.999396 0
+6.7066e-002 0.997749 -1.e-006
+6.5464e-002 0.974662 0.213888
+0.138854 0.990313 0
+0.135647 0.967369 0.214003
+6.5464e-002 0.974662 0.213888
+6.7066e-002 0.997749 -1.e-006
+0.138854 0.990313 0
+0.138854 0.990313 0
+0.230442 0.949263 0.214001
+0.135647 0.967369 0.214003
+0.138854 0.990313 0
+0.235893 0.971779 1.e-006
+0.230442 0.949263 0.214001
+0.230442 0.949263 0.214001
+0.362921 0.93182 -1.e-006
+0.354509 0.910203 0.214136
+0.230442 0.949263 0.214001
+0.235893 0.971779 1.e-006
+0.362921 0.93182 -1.e-006
+0.354509 0.910203 0.214136
+0.49584 0.868414 1.e-006
+0.484299 0.8483 0.214108
+0.354509 0.910203 0.214136
+0.362921 0.93182 -1.e-006
+0.49584 0.868414 1.e-006
+0.484299 0.8483 0.214108
+0.588266 0.808668 5.e-006
+0.574619 0.789972 0.213908
+0.484299 0.8483 0.214108
+0.49584 0.868414 1.e-006
+0.588266 0.808668 5.e-006
+0.588266 0.808668 5.e-006
+0.646089 0.732643 0.214019
+0.574619 0.789972 0.213908
+0.588266 0.808668 5.e-006
+0.661403 0.750031 2.e-006
+0.646089 0.732643 0.214019
+0.661403 0.750031 2.e-006
+0.732323 0.646449 0.214026
+0.646089 0.732643 0.214019
+0.661403 0.750031 2.e-006
+0.749683 0.661798 0
+0.732323 0.646449 0.214026
+0.749683 0.661798 0
+0.825963 0.521428 0.214237
+0.732323 0.646449 0.214026
+0.749683 0.661798 0
+0.845597 0.533822 3.e-006
+0.825963 0.521428 0.214237
+0.825963 0.521428 0.214237
+0.918341 0.39579 2.e-006
+0.897035 0.386666 0.214052
+0.825963 0.521428 0.214237
+0.845597 0.533822 3.e-006
+0.918341 0.39579 2.e-006
+0.897035 0.386666 0.214052
+0.950527 0.310642 0
+0.928513 0.30349 0.213909
+0.897035 0.386666 0.214052
+0.918341 0.39579 2.e-006
+0.950527 0.310642 0
+0.950527 0.310642 0
+0.944156 0.250535 0.214013
+0.928513 0.30349 0.213909
+0.950527 0.310642 0
+0.966549 0.256481 3.e-006
+0.944156 0.250535 0.214013
+0.944156 0.250535 0.214013
+0.982329 0.18716 2.e-006
+0.95957 0.18282 0.214013
+0.944156 0.250535 0.214013
+0.966549 0.256481 3.e-006
+0.982329 0.18716 2.e-006
+0.95957 0.18282 0.214013
+0.994869 0.101172 1.e-006
+0.971809 9.8826e-002 0.214059
+0.95957 0.18282 0.214013
+0.982329 0.18716 2.e-006
+0.994869 0.101172 1.e-006
+0.971809 9.8826e-002 0.214059
+0.999882 1.539e-002 1.e-006
+0.976714 1.5048e-002 0.214019
+0.971809 9.8826e-002 0.214059
+0.994869 0.101172 1.e-006
+0.999882 1.539e-002 1.e-006
+0.976714 1.5048e-002 0.214019
+0.999164 -4.0872e-002 1.e-006
+0.976025 -3.9914e-002 0.213967
+0.976714 1.5048e-002 0.214019
+0.999882 1.539e-002 1.e-006
+0.999164 -4.0872e-002 1.e-006
+0.999164 -4.0872e-002 1.e-006
+0.973374 -8.2149e-002 0.213995
+0.976025 -3.9914e-002 0.213967
+0.999164 -4.0872e-002 1.e-006
+0.996458 -8.4094e-002 -1.e-006
+0.973374 -8.2149e-002 0.213995
+0.973374 -8.2149e-002 0.213995
+0.989805 -0.142428 -1.e-006
+0.966877 -0.139133 0.21399
+0.973374 -8.2149e-002 0.213995
+0.996458 -8.4094e-002 -1.e-006
+0.989805 -0.142428 -1.e-006
+0.966877 -0.139133 0.21399
+0.975391 -0.220483 0
+0.952788 -0.215377 0.214028
+0.966877 -0.139133 0.21399
+0.989805 -0.142428 -1.e-006
+0.975391 -0.220483 0
+0.975391 -0.220483 0
+0.928106 -0.304631 0.214053
+0.952788 -0.215377 0.214028
+0.975391 -0.220483 0
+0.950123 -0.311875 -2.e-006
+0.928106 -0.304631 0.214053
+0.928106 -0.304631 0.214053
+0.921146 -0.389218 1.e-006
+0.89982 -0.380195 0.213954
+0.928106 -0.304631 0.214053
+0.950123 -0.311875 -2.e-006
+0.921146 -0.389218 1.e-006
+0.921146 -0.389218 1.e-006
+0.865733 -0.452451 0.213998
+0.89982 -0.380195 0.213954
+0.921146 -0.389218 1.e-006
+0.88627 -0.463169 -3.e-006
+0.865733 -0.452451 0.213998
+0.88627 -0.463169 -3.e-006
+0.808663 -0.547972 0.213987
+0.865733 -0.452451 0.213998
+0.88627 -0.463169 -3.e-006
+0.82785 -0.560949 -1.e-005
+0.808663 -0.547972 0.213987
+0.82785 -0.560949 -1.e-005
+0.713608 -0.666996 0.214196
+0.808663 -0.547972 0.213987
+0.82785 -0.560949 -1.e-005
+0.730569 -0.682839 -1.2e-005
+0.713608 -0.666996 0.214196
+0.730569 -0.682839 -1.2e-005
+0.590573 -0.778057 0.21413
+0.713608 -0.666996 0.214196
+0.730569 -0.682839 -1.2e-005
+0.604543 -0.796572 1.e-006
+0.590573 -0.778057 0.21413
+0.604543 -0.796572 1.e-006
+0.493914 -0.842796 0.213879
+0.590573 -0.778057 0.21413
+0.604543 -0.796572 1.e-006
+0.505569 -0.862786 7.e-006
+0.493914 -0.842796 0.213879
+0.493914 -0.842796 0.213879
+0.423613 -0.905843 -9.e-006
+0.413788 -0.884862 0.214005
+0.493914 -0.842796 0.213879
+0.505569 -0.862786 7.e-006
+0.423613 -0.905843 -9.e-006
+0.413788 -0.884862 0.214005
+0.312595 -0.949887 -7.e-006
+0.30534 -0.927881 0.214017
+0.413788 -0.884862 0.214005
+0.423613 -0.905843 -9.e-006
+0.312595 -0.949887 -7.e-006
+0.30534 -0.927881 0.214017
+0.169501 -0.98553 -6.e-006
+0.165569 -0.962663 0.214164
+0.30534 -0.927881 0.214017
+0.312595 -0.949887 -7.e-006
+0.169501 -0.98553 -6.e-006
+0.165569 -0.962663 0.214164
+2.6387e-002 -0.999652 -6.e-006
+2.5819e-002 -0.976484 0.214037
+0.165569 -0.962663 0.214164
+0.169501 -0.98553 -6.e-006
+2.6387e-002 -0.999652 -6.e-006
+2.5819e-002 -0.976484 0.214037
+-6.6762e-002 -0.997769 -9.e-006
+-6.5186e-002 -0.974678 0.213903
+2.5819e-002 -0.976484 0.214037
+2.6387e-002 -0.999652 -6.e-006
+-6.6762e-002 -0.997769 -9.e-006
+-6.5186e-002 -0.974678 0.213903
+-0.142267 -0.989828 -1.5e-005
+-0.138985 -0.9669 0.213978
+-6.5186e-002 -0.974678 0.213903
+-6.6762e-002 -0.997769 -9.e-006
+-0.142267 -0.989828 -1.5e-005
+-0.142267 -0.989828 -1.5e-005
+-0.245666 -0.945448 0.213952
+-0.138985 -0.9669 0.213978
+-0.142267 -0.989828 -1.5e-005
+-0.251463 -0.967867 -2.e-005
+-0.245666 -0.945448 0.213952
+-0.251463 -0.967867 -2.e-005
+-0.397134 -0.892408 0.214227
+-0.245666 -0.945448 0.213952
+-0.251463 -0.967867 -2.e-005
+-0.406559 -0.913625 -1.5e-005
+-0.397134 -0.892408 0.214227
+-0.397134 -0.892408 0.214227
+-0.572436 -0.819949 1.e-006
+-0.559067 -0.800974 0.214206
+-0.397134 -0.892408 0.214227
+-0.406559 -0.913625 -1.5e-005
+-0.572436 -0.819949 1.e-006
+-0.559067 -0.800974 0.214206
+-0.677957 -0.735102 -1.2e-005
+-0.662214 -0.718158 0.213825
+-0.559067 -0.800974 0.214206
+-0.572436 -0.819949 1.e-006
+-0.677957 -0.735102 -1.2e-005
+-0.662214 -0.718158 0.213825
+-0.7473 -0.664487 -2.2e-005
+-0.729993 -0.649084 0.214009
+-0.662214 -0.718158 0.213825
+-0.677957 -0.735102 -1.2e-005
+-0.7473 -0.664487 -2.2e-005
+-0.7473 -0.664487 -2.2e-005
+-0.803439 -0.555588 0.214029
+-0.729993 -0.649084 0.214009
+-0.7473 -0.664487 -2.2e-005
+-0.822493 -0.568775 -1.1e-005
+-0.803439 -0.555588 0.214029
+-0.803439 -0.555588 0.214029
+-0.894582 -0.446903 -9.e-006
+-0.876622 -0.436427 0.202646
+-0.803439 -0.555588 0.214029
+-0.822493 -0.568775 -1.1e-005
+-0.894582 -0.446903 -9.e-006
+-0.894582 -0.446903 -9.e-006
+-0.909576 -0.369219 0.190654
+-0.876622 -0.436427 0.202646
+-0.894582 -0.446903 -9.e-006
+-0.925818 -0.37797 -1.e-005
+-0.909576 -0.369219 0.190654
+0.242988 -0.951494 0.188721
+0.229324 -0.97335 7.e-006
+0.233553 -0.951268 0.201349
+0.242988 -0.951494 0.188721
+0.229325 -0.97335 2.1e-005
+0.229324 -0.97335 7.e-006
+0.233553 -0.951268 0.201349
+0.229322 -0.973351 -1.1e-005
+0.22401 -0.950804 0.213988
+0.233553 -0.951268 0.201349
+0.229324 -0.97335 7.e-006
+0.229322 -0.973351 -1.1e-005
+0.22401 -0.950804 0.213988
+0.229323 -0.97335 -1.e-006
+0.224011 -0.950802 0.213999
+0.22401 -0.950804 0.213988
+0.229322 -0.973351 -1.1e-005
+0.229323 -0.97335 -1.e-006
+0.224011 -0.950802 0.213999
+0.229324 -0.97335 1.5e-005
+0.222648 -0.954564 0.198079
+0.224011 -0.950802 0.213999
+0.229323 -0.97335 -1.e-006
+0.229324 -0.97335 1.5e-005
+0.229324 -0.97335 1.5e-005
+0.221236 -0.958049 0.182198
+0.222648 -0.954564 0.198079
+0.229324 -0.97335 1.5e-005
+0.229324 -0.97335 1.6e-005
+0.221236 -0.958049 0.182198
+0.929361 0.321691 0.181117
+0.937974 0.346706 1.e-006
+0.91759 0.344982 0.197524
+0.929361 0.321691 0.181117
+0.948683 0.316228 -1.e-006
+0.937974 0.346706 1.e-006
+0.937974 0.346706 1.e-006
+0.886364 0.410567 0.213996
+0.91759 0.344982 0.197524
+0.937974 0.346706 1.e-006
+0.907381 0.42031 0
+0.886364 0.410567 0.213996
+0.886364 0.410567 0.213996
+0.853406 0.521246 -7.e-006
+0.833645 0.509166 0.213975
+0.886364 0.410567 0.213996
+0.907381 0.42031 0
+0.853406 0.521246 -7.e-006
+0.853406 0.521246 -7.e-006
+0.739542 0.638107 0.214235
+0.833645 0.509166 0.213975
+0.853406 0.521246 -7.e-006
+0.757119 0.653277 -1.e-005
+0.739542 0.638107 0.214235
+0.739542 0.638107 0.214235
+0.626214 0.779652 -1.2e-005
+0.611649 0.761595 0.214145
+0.739542 0.638107 0.214235
+0.757119 0.653277 -1.e-005
+0.626214 0.779652 -1.2e-005
+0.611649 0.761595 0.214145
+0.523605 0.851961 -1.9e-005
+0.511455 0.83228 0.21383
+0.611649 0.761595 0.214145
+0.626214 0.779652 -1.2e-005
+0.523605 0.851961 -1.9e-005
+0.523605 0.851961 -1.9e-005
+0.430957 0.876628 0.214007
+0.511455 0.83228 0.21383
+0.523605 0.851961 -1.9e-005
+0.441172 0.897423 -1.1e-005
+0.430957 0.876628 0.214007
+0.430957 0.876628 0.214007
+0.327685 0.944787 0
+0.320097 0.922892 0.214027
+0.430957 0.876628 0.214007
+0.441172 0.897423 -1.1e-005
+0.327685 0.944787 0
+0.320097 0.922892 0.214027
+0.178795 0.983886 1.8e-005
+0.174644 0.961047 0.214217
+0.320097 0.922892 0.214027
+0.327685 0.944787 0
+0.178795 0.983886 1.8e-005
+0.174644 0.961047 0.214217
+3.0738e-002 0.999527 -6.e-006
+2.9996e-002 0.976367 0.214029
+0.174644 0.961047 0.214217
+0.178795 0.983886 1.8e-005
+3.0738e-002 0.999527 -6.e-006
+2.9996e-002 0.976367 0.214029
+-5.9692e-002 0.998217 -2.3e-005
+-5.8337e-002 0.975116 0.213883
+2.9996e-002 0.976367 0.214029
+3.0738e-002 0.999527 -6.e-006
+-5.9692e-002 0.998217 -2.3e-005
+-5.9692e-002 0.998217 -2.3e-005
+-0.121368 0.969263 0.214009
+-5.8337e-002 0.975116 0.213883
+-5.9692e-002 0.998217 -2.3e-005
+-0.124251 0.992251 1.e-005
+-0.121368 0.969263 0.214009
+-0.121368 0.969263 0.214009
+-0.212989 0.977055 -9.e-006
+-0.20805 0.954423 0.21399
+-0.121368 0.969263 0.214009
+-0.124251 0.992251 1.e-005
+-0.212989 0.977055 -9.e-006
+-0.212989 0.977055 -9.e-006
+-0.324834 0.92121 0.214138
+-0.20805 0.954423 0.21399
+-0.212989 0.977055 -9.e-006
+-0.33255 0.943086 3.e-006
+-0.324834 0.92121 0.214138
+-0.324834 0.92121 0.214138
+-0.459461 0.888198 3.1e-005
+-0.448828 0.867584 0.214128
+-0.324834 0.92121 0.214138
+-0.33255 0.943086 3.e-006
+-0.459461 0.888198 3.1e-005
+-0.448828 0.867584 0.214128
+-0.54574 0.837954 1.3e-005
+-0.533127 0.818543 0.213921
+-0.448828 0.867584 0.214128
+-0.459461 0.888198 3.1e-005
+-0.54574 0.837954 1.3e-005
+-0.533127 0.818543 0.213921
+-0.612054 0.790816 -7.e-006
+-0.59787 0.7725 0.213999
+-0.533127 0.818543 0.213921
+-0.54574 0.837954 1.3e-005
+-0.612054 0.790816 -7.e-006
+-0.612054 0.790816 -7.e-006
+-0.67938 0.701888 0.214002
+-0.59787 0.7725 0.213999
+-0.612054 0.790816 -7.e-006
+-0.695497 0.718529 -2.e-006
+-0.67938 0.701888 0.214002
+-0.67938 0.701888 0.214002
+-0.79282 0.609456 1.e-006
+-0.77442 0.595313 0.214185
+-0.67938 0.701888 0.214002
+-0.695497 0.718529 -2.e-006
+-0.79282 0.609456 1.e-006
+-0.79282 0.609456 1.e-006
+-0.855514 0.471456 0.214066
+-0.77442 0.595313 0.214185
+-0.79282 0.609456 1.e-006
+-0.8758 0.482673 -9.00001e-006
+-0.855514 0.471456 0.214066
+-0.855514 0.471456 0.214066
+-0.919003 0.39425 1.e-006
+-0.897744 0.385097 0.213906
+-0.855514 0.471456 0.214066
+-0.8758 0.482673 -9.00001e-006
+-0.919003 0.39425 1.e-006
+-0.897744 0.385097 0.213906
+-0.944411 0.328766 4.e-006
+-0.922528 0.321152 0.214019
+-0.897744 0.385097 0.213906
+-0.919003 0.39425 1.e-006
+-0.944411 0.328766 4.e-006
+-0.944411 0.328766 4.e-006
+-0.947715 0.236713 0.214017
+-0.922528 0.321152 0.214019
+-0.944411 0.328766 4.e-006
+-0.970195 0.242324 1.e-006
+-0.947715 0.236713 0.214017
+-0.947715 0.236713 0.214017
+-0.991247 0.132022 2.e-006
+-0.968261 0.128961 0.214104
+-0.947715 0.236713 0.214017
+-0.970195 0.242324 1.e-006
+-0.991247 0.132022 2.e-006
+-0.968261 0.128961 0.214104
+-0.999763 2.1781e-002 1.e-006
+-0.976596 2.1261e-002 0.214029
+-0.968261 0.128961 0.214104
+-0.991247 0.132022 2.e-006
+-0.999763 2.1781e-002 1.e-006
+-0.976596 2.1261e-002 0.214029
+-0.998845 -4.804e-002 1.e-006
+-0.975717 -4.6941e-002 0.213947
+-0.976596 2.1261e-002 0.214029
+-0.999763 2.1781e-002 1.e-006
+-0.998845 -4.804e-002 1.e-006
+-0.998845 -4.804e-002 1.e-006
+-0.971969 -9.7375e-002 0.213997
+-0.975717 -4.6941e-002 0.213947
+-0.998845 -4.804e-002 1.e-006
+-0.995019 -9.9686e-002 0
+-0.971969 -9.7375e-002 0.213997
+-0.971969 -9.7375e-002 0.213997
+-0.985345 -0.170576 -2.e-006
+-0.96252 -0.166621 0.213993
+-0.971969 -9.7375e-002 0.213997
+-0.995019 -9.9686e-002 0
+-0.985345 -0.170576 -2.e-006
+-0.985345 -0.170576 -2.e-006
+-0.941346 -0.260845 0.214075
+-0.96252 -0.166621 0.213993
+-0.985345 -0.170576 -2.e-006
+-0.963686 -0.267037 -2.e-006
+-0.941346 -0.260845 0.214075
+-0.963686 -0.267037 -2.e-006
+-0.906246 -0.364545 0.214066
+-0.941346 -0.260845 0.214075
+-0.963686 -0.267037 -2.e-006
+-0.927759 -0.37318 -1.e-006
+-0.906246 -0.364545 0.214066
+-0.927759 -0.37318 -1.e-006
+-0.872311 -0.439665 0.213936
+-0.906246 -0.364545 0.214066
+-0.927759 -0.37318 -1.e-006
+-0.892992 -0.450072 -1.e-006
+-0.872311 -0.439665 0.213936
+-0.872311 -0.439665 0.213936
+-0.857451 -0.514565 9.99999e-007
+-0.837591 -0.502639 0.213998
+-0.872311 -0.439665 0.213936
+-0.892992 -0.450072 -1.e-006
+-0.857451 -0.514565 9.99999e-007
+-0.857451 -0.514565 9.99999e-007
+-0.780246 -0.58773 0.213986
+-0.837591 -0.502639 0.213998
+-0.857451 -0.514565 9.99999e-007
+-0.798742 -0.601673 0
+-0.780246 -0.58773 0.213986
+-0.780246 -0.58773 0.213986
+-0.700176 -0.713971 0
+-0.683928 -0.697399 0.21419
+-0.780246 -0.58773 0.213986
+-0.798742 -0.601673 0
+-0.700176 -0.713971 0
+-0.683928 -0.697399 0.21419
+-0.569649 -0.821888 0
+-0.556396 -0.802846 0.214151
+-0.683928 -0.697399 0.21419
+-0.700176 -0.713971 0
+-0.569649 -0.821888 0
+-0.556396 -0.802846 0.214151
+-0.466342 -0.884605 -1.e-006
+-0.455513 -0.864157 0.21387
+-0.556396 -0.802846 0.214151
+-0.569649 -0.821888 0
+-0.466342 -0.884605 -1.e-006
+-0.455513 -0.864157 0.21387
+-0.384188 -0.923255 -1.e-006
+-0.375291 -0.90186 0.214021
+-0.455513 -0.864157 0.21387
+-0.466342 -0.884605 -1.e-006
+-0.384188 -0.923255 -1.e-006
+-0.384188 -0.923255 -1.e-006
+-0.271411 -0.938365 0.214028
+-0.375291 -0.90186 0.214021
+-0.384188 -0.923255 -1.e-006
+-0.277846 -0.960626 0
+-0.271411 -0.938365 0.214028
+-0.271411 -0.938365 0.214028
+-0.1477 -0.989032 0
+-0.144275 -0.966094 0.21412
+-0.271411 -0.938365 0.214028
+-0.277846 -0.960626 0
+-0.1477 -0.989032 0
+-0.1477 -0.989032 0
+-1.776e-002 -0.976663 0.214043
+-0.144275 -0.966094 0.21412
+-0.1477 -0.989032 0
+-1.8199e-002 -0.999834 0
+-1.776e-002 -0.976663 0.214043
+-1.8199e-002 -0.999834 0
+7.1562e-002 -0.974225 0.213926
+-1.776e-002 -0.976663 0.214043
+-1.8199e-002 -0.999834 0
+7.3245e-002 -0.997314 0
+7.1562e-002 -0.974225 0.213926
+7.1562e-002 -0.974225 0.213926
+0.15504 -0.987908 0
+0.151442 -0.965024 0.213995
+7.1562e-002 -0.974225 0.213926
+7.3245e-002 -0.997314 0
+0.15504 -0.987908 0
+0.151442 -0.965024 0.213995
+0.270911 -0.962604 -1.e-006
+0.264628 -0.940311 0.21398
+0.151442 -0.965024 0.213995
+0.15504 -0.987908 0
+0.270911 -0.962604 -1.e-006
+0.264628 -0.940311 0.21398
+0.429706 -0.902969 -1.e-006
+0.419725 -0.881999 0.214263
+0.264628 -0.940311 0.21398
+0.270911 -0.962604 -1.e-006
+0.429706 -0.902969 -1.e-006
+0.429706 -0.902969 -1.e-006
+0.578264 -0.787237 0.214171
+0.419725 -0.881999 0.214263
+0.429706 -0.902969 -1.e-006
+0.591961 -0.805966 1.e-006
+0.578264 -0.787237 0.214171
+0.578264 -0.787237 0.214171
+0.691978 -0.721919 0
+0.676004 -0.705189 0.213837
+0.578264 -0.787237 0.214171
+0.591961 -0.805966 1.e-006
+0.691978 -0.721919 0
+0.676004 -0.705189 0.213837
+0.759078 -0.651 0
+0.741486 -0.63592 0.214019
+0.676004 -0.705189 0.213837
+0.691978 -0.721919 0
+0.759078 -0.651 0
+0.741486 -0.63592 0.214019
+0.834894 -0.550411 -1.e-006
+0.815545 -0.53766 0.214029
+0.741486 -0.63592 0.214019
+0.759078 -0.651 0
+0.834894 -0.550411 -1.e-006
+0.834894 -0.550411 -1.e-006
+0.891668 -0.406893 0.198408
+0.815545 -0.53766 0.214029
+0.834894 -0.550411 -1.e-006
+0.909912 -0.414801 -2.e-006
+0.891668 -0.406893 0.198408
+0.909912 -0.414801 -2.e-006
+0.925533 -0.332014 0.182084
+0.891668 -0.406893 0.198408
+0.909912 -0.414801 -2.e-006
+0.941889 -0.335925 1.e-006
+0.925533 -0.332014 0.182084
+0.216684 0.95975 0.178686
+0.244888 0.969551 0
+0.227964 0.953671 0.196327
+0.216684 0.95975 0.178686
+0.24489 0.969551 3.e-006
+0.244888 0.969551 0
+0.227964 0.953671 0.196327
+0.244887 0.969552 0
+0.239214 0.947091 0.213998
+0.227964 0.953671 0.196327
+0.244888 0.969551 0
+0.244887 0.969552 0
+0.244887 0.969552 0
+0.239214 0.947091 0.213998
+0.239214 0.947091 0.213998
+0.244887 0.969552 0
+0.244887 0.969552 1.e-006
+0.239214 0.947091 0.213998
+0.239214 0.947091 0.213998
+0.244887 0.969552 -2.e-006
+0.24193 0.949646 0.199104
+0.239214 0.947091 0.213998
+0.244887 0.969552 1.e-006
+0.244887 0.969552 -2.e-006
+0.244887 0.969552 -2.e-006
+0.244572 0.951963 0.184257
+0.24193 0.949646 0.199104
+0.244887 0.969552 -2.e-006
+0.244886 0.969552 -2.e-006
+0.244572 0.951963 0.184257
+-0.977434 0.211241 1.e-006
+-0.977424 0.211286 2.e-006
+-0.967476 0.209149 0.142292
+-0.977434 0.211241 1.e-006
+-0.977434 0.211241 1.e-006
+-0.977424 0.211286 2.e-006
+-0.967476 0.209149 0.142292
+-0.977415 0.21133 1.e-006
+-0.954771 0.206433 0.214005
+-0.967476 0.209149 0.142292
+-0.977424 0.211286 2.e-006
+-0.977415 0.21133 1.e-006
+-0.954771 0.206433 0.214005
+-0.977415 0.211331 -2.e-006
+-0.954771 0.206435 0.214
+-0.954771 0.206433 0.214005
+-0.977415 0.21133 1.e-006
+-0.977415 0.211331 -2.e-006
+-0.954771 0.206435 0.214
+-0.977414 0.211335 -1.e-006
+-0.954776 0.206445 0.213971
+-0.954771 0.206435 0.214
+-0.977415 0.211331 -2.e-006
+-0.977414 0.211335 -1.e-006
+-0.977414 0.211335 -1.e-006
+-0.94729 0.23842 0.214003
+-0.954776 0.206445 0.213971
+-0.977414 0.211335 -1.e-006
+-0.969764 0.244046 -1.e-006
+-0.94729 0.23842 0.214003
+-0.969764 0.244046 -1.e-006
+-0.945908 0.324434 0
+-0.945908 0.324434 -1.e-006
+-0.969764 0.244046 -1.e-006
+-0.969764 0.244046 0
+-0.945908 0.324434 0
+-0.945908 0.324434 0
+-0.903293 0.429025 1.e-006
+-0.945908 0.324434 -1.e-006
+-0.945908 0.324434 0
+-0.903293 0.429025 0
+-0.903293 0.429025 1.e-006
+-0.903293 0.429025 1.e-006
+-0.838147 0.545444 0
+-0.838147 0.545444 3.e-006
+-0.903293 0.429025 1.e-006
+-0.903293 0.429025 0
+-0.838147 0.545444 0
+-0.838147 0.545444 3.e-006
+-0.749005 0.662564 0
+-0.749005 0.662564 2.e-006
+-0.838147 0.545444 3.e-006
+-0.838147 0.545444 0
+-0.749005 0.662564 0
+-0.749005 0.662564 0
+-0.64908 0.76072 3.e-006
+-0.749005 0.662564 2.e-006
+-0.749005 0.662564 0
+-0.64908 0.76072 0
+-0.64908 0.76072 3.e-006
+-0.64908 0.76072 3.e-006
+-0.565919 0.824461 0
+-0.565919 0.824461 4.e-006
+-0.64908 0.76072 3.e-006
+-0.64908 0.76072 0
+-0.565919 0.824461 0
+-0.565919 0.824461 4.e-006
+-0.482132 0.876099 0
+-0.482132 0.876099 1.e-006
+-0.565919 0.824461 4.e-006
+-0.565919 0.824461 0
+-0.482132 0.876099 0
+-0.482132 0.876099 0
+-0.362743 0.931889 -1.e-006
+-0.482132 0.876099 1.e-006
+-0.482132 0.876099 0
+-0.362743 0.931889 0
+-0.362743 0.931889 -1.e-006
+-0.362743 0.931889 -1.e-006
+-0.200286 0.979737 0
+-0.200286 0.979737 0
+-0.362743 0.931889 -1.e-006
+-0.362743 0.931889 0
+-0.200286 0.979737 0
+-0.200286 0.979737 0
+-3.476e-002 0.999396 0
+-0.200286 0.979737 0
+-0.200286 0.979737 0
+-3.476e-002 0.999396 0
+-3.476e-002 0.999396 0
+-3.476e-002 0.999396 0
+6.7066e-002 0.997749 0
+6.7066e-002 0.997749 -1.e-006
+-3.476e-002 0.999396 0
+-3.476e-002 0.999396 0
+6.7066e-002 0.997749 0
+6.7066e-002 0.997749 -1.e-006
+0.138854 0.990313 0
+0.138854 0.990313 0
+6.7066e-002 0.997749 -1.e-006
+6.7066e-002 0.997749 0
+0.138854 0.990313 0
+0.138854 0.990313 0
+0.235893 0.971779 0
+0.235893 0.971779 1.e-006
+0.138854 0.990313 0
+0.138854 0.990313 0
+0.235893 0.971779 0
+0.235893 0.971779 0
+0.362921 0.93182 -1.e-006
+0.235893 0.971779 1.e-006
+0.235893 0.971779 0
+0.362921 0.93182 0
+0.362921 0.93182 -1.e-006
+0.362921 0.93182 -1.e-006
+0.49584 0.868414 0
+0.49584 0.868414 1.e-006
+0.362921 0.93182 -1.e-006
+0.362921 0.93182 0
+0.49584 0.868414 0
+0.49584 0.868414 1.e-006
+0.588266 0.808668 0
+0.588266 0.808668 5.e-006
+0.49584 0.868414 1.e-006
+0.49584 0.868414 0
+0.588266 0.808668 0
+0.588266 0.808668 5.e-006
+0.661403 0.750031 0
+0.661403 0.750031 2.e-006
+0.588266 0.808668 5.e-006
+0.588266 0.808668 0
+0.661403 0.750031 0
+0.661403 0.750031 0
+0.749683 0.661798 0
+0.661403 0.750031 2.e-006
+0.661403 0.750031 0
+0.749683 0.661798 0
+0.749683 0.661798 0
+0.749683 0.661798 0
+0.845597 0.533822 0
+0.845597 0.533822 3.e-006
+0.749683 0.661798 0
+0.749683 0.661798 0
+0.845597 0.533822 0
+0.845597 0.533822 3.e-006
+0.918341 0.39579 0
+0.918341 0.39579 2.e-006
+0.845597 0.533822 3.e-006
+0.845597 0.533822 0
+0.918341 0.39579 0
+0.918341 0.39579 2.e-006
+0.950527 0.310642 0
+0.950527 0.310642 0
+0.918341 0.39579 2.e-006
+0.918341 0.39579 0
+0.950527 0.310642 0
+0.950527 0.310642 0
+0.966549 0.256481 0
+0.966549 0.256481 3.e-006
+0.950527 0.310642 0
+0.950527 0.310642 0
+0.966549 0.256481 0
+0.966549 0.256481 0
+0.982329 0.18716 2.e-006
+0.966549 0.256481 3.e-006
+0.966549 0.256481 0
+0.982329 0.18716 0
+0.982329 0.18716 2.e-006
+0.982329 0.18716 2.e-006
+0.994869 0.101172 0
+0.994869 0.101172 1.e-006
+0.982329 0.18716 2.e-006
+0.982329 0.18716 0
+0.994869 0.101172 0
+0.994869 0.101172 1.e-006
+0.999882 1.539e-002 0
+0.999882 1.539e-002 1.e-006
+0.994869 0.101172 1.e-006
+0.994869 0.101172 0
+0.999882 1.539e-002 0
+0.999882 1.539e-002 1.e-006
+0.999164 -4.0872e-002 0
+0.999164 -4.0872e-002 1.e-006
+0.999882 1.539e-002 1.e-006
+0.999882 1.539e-002 0
+0.999164 -4.0872e-002 0
+0.999164 -4.0872e-002 1.e-006
+0.996458 -8.4094e-002 0
+0.996458 -8.4094e-002 -1.e-006
+0.999164 -4.0872e-002 1.e-006
+0.999164 -4.0872e-002 0
+0.996458 -8.4094e-002 0
+0.996458 -8.4094e-002 0
+0.989805 -0.142428 -1.e-006
+0.996458 -8.4094e-002 -1.e-006
+0.996458 -8.4094e-002 0
+0.989805 -0.142428 0
+0.989805 -0.142428 -1.e-006
+0.989805 -0.142428 -1.e-006
+0.975391 -0.220483 0
+0.975391 -0.220483 0
+0.989805 -0.142428 -1.e-006
+0.989805 -0.142428 0
+0.975391 -0.220483 0
+0.975391 -0.220483 0
+0.950123 -0.311875 0
+0.950123 -0.311875 -2.e-006
+0.975391 -0.220483 0
+0.975391 -0.220483 0
+0.950123 -0.311875 0
+0.950123 -0.311875 0
+0.921146 -0.389218 1.e-006
+0.950123 -0.311875 -2.e-006
+0.950123 -0.311875 0
+0.921146 -0.389218 0
+0.921146 -0.389218 1.e-006
+0.921146 -0.389218 0
+0.88627 -0.463169 -3.e-006
+0.921146 -0.389218 1.e-006
+0.921146 -0.389218 0
+0.88627 -0.463169 0
+0.88627 -0.463169 -3.e-006
+0.88627 -0.463169 -3.e-006
+0.82785 -0.560949 0
+0.82785 -0.560949 -1.e-005
+0.88627 -0.463169 -3.e-006
+0.88627 -0.463169 0
+0.82785 -0.560949 0
+0.82785 -0.560949 0
+0.730569 -0.682839 -1.2e-005
+0.82785 -0.560949 -1.e-005
+0.82785 -0.560949 0
+0.730569 -0.682839 0
+0.730569 -0.682839 -1.2e-005
+0.730569 -0.682839 0
+0.604543 -0.796572 1.e-006
+0.730569 -0.682839 -1.2e-005
+0.730569 -0.682839 0
+0.604543 -0.796572 0
+0.604543 -0.796572 1.e-006
+0.604543 -0.796572 1.e-006
+0.505569 -0.862786 0
+0.505569 -0.862786 7.e-006
+0.604543 -0.796572 1.e-006
+0.604543 -0.796572 0
+0.505569 -0.862786 0
+0.505569 -0.862786 7.e-006
+0.423613 -0.905843 0
+0.423613 -0.905843 -9.e-006
+0.505569 -0.862786 7.e-006
+0.505569 -0.862786 0
+0.423613 -0.905843 0
+0.423613 -0.905843 0
+0.312595 -0.949887 -7.e-006
+0.423613 -0.905843 -9.e-006
+0.423613 -0.905843 0
+0.312595 -0.949887 0
+0.312595 -0.949887 -7.e-006
+0.312595 -0.949887 -7.e-006
+0.169501 -0.98553 0
+0.169501 -0.98553 -6.e-006
+0.312595 -0.949887 -7.e-006
+0.312595 -0.949887 0
+0.169501 -0.98553 0
+0.169501 -0.98553 -6.e-006
+2.6387e-002 -0.999652 0
+2.6387e-002 -0.999652 -6.e-006
+0.169501 -0.98553 -6.e-006
+0.169501 -0.98553 0
+2.6387e-002 -0.999652 0
+2.6387e-002 -0.999652 0
+-6.6762e-002 -0.997769 -9.e-006
+2.6387e-002 -0.999652 -6.e-006
+2.6387e-002 -0.999652 0
+-6.6762e-002 -0.997769 0
+-6.6762e-002 -0.997769 -9.e-006
+-6.6762e-002 -0.997769 0
+-0.142267 -0.989828 -1.5e-005
+-6.6762e-002 -0.997769 -9.e-006
+-6.6762e-002 -0.997769 0
+-0.142267 -0.989828 0
+-0.142267 -0.989828 -1.5e-005
+-0.142267 -0.989828 0
+-0.251463 -0.967867 -2.e-005
+-0.142267 -0.989828 -1.5e-005
+-0.142267 -0.989828 0
+-0.251463 -0.967867 0
+-0.251463 -0.967867 -2.e-005
+-0.251463 -0.967867 0
+-0.406559 -0.913625 -1.5e-005
+-0.251463 -0.967867 -2.e-005
+-0.251463 -0.967867 0
+-0.406559 -0.913625 0
+-0.406559 -0.913625 -1.5e-005
+-0.406559 -0.913625 -1.5e-005
+-0.572436 -0.819949 0
+-0.572436 -0.819949 1.e-006
+-0.406559 -0.913625 -1.5e-005
+-0.406559 -0.913625 0
+-0.572436 -0.819949 0
+-0.572436 -0.819949 1.e-006
+-0.677957 -0.735102 0
+-0.677957 -0.735102 -1.2e-005
+-0.572436 -0.819949 1.e-006
+-0.572436 -0.819949 0
+-0.677957 -0.735102 0
+-0.677957 -0.735102 0
+-0.7473 -0.664487 -2.2e-005
+-0.677957 -0.735102 -1.2e-005
+-0.677957 -0.735102 0
+-0.7473 -0.664487 0
+-0.7473 -0.664487 -2.2e-005
+-0.7473 -0.664487 -2.2e-005
+-0.822493 -0.568775 0
+-0.822493 -0.568775 -1.1e-005
+-0.7473 -0.664487 -2.2e-005
+-0.7473 -0.664487 0
+-0.822493 -0.568775 0
+-0.822493 -0.568775 -1.1e-005
+-0.894582 -0.446903 0
+-0.894582 -0.446903 -9.e-006
+-0.822493 -0.568775 -1.1e-005
+-0.822493 -0.568775 0
+-0.894582 -0.446903 0
+-0.894582 -0.446903 -9.e-006
+-0.925818 -0.37797 0
+-0.925818 -0.37797 -1.e-005
+-0.894582 -0.446903 -9.e-006
+-0.894582 -0.446903 0
+-0.925818 -0.37797 0
+0.229325 -0.97335 2.1e-005
+0.229324 -0.97335 0
+0.229324 -0.97335 7.e-006
+0.229325 -0.97335 2.1e-005
+0.229325 -0.97335 0
+0.229324 -0.97335 0
+0.229324 -0.97335 0
+0.229322 -0.973351 -1.1e-005
+0.229324 -0.97335 7.e-006
+0.229324 -0.97335 0
+0.229322 -0.973351 0
+0.229322 -0.973351 -1.1e-005
+0.229322 -0.973351 0
+0.229323 -0.97335 -1.e-006
+0.229322 -0.973351 -1.1e-005
+0.229322 -0.973351 0
+0.229323 -0.97335 0
+0.229323 -0.97335 -1.e-006
+0.229323 -0.97335 -1.e-006
+0.229324 -0.97335 0
+0.229324 -0.97335 1.5e-005
+0.229323 -0.97335 -1.e-006
+0.229323 -0.97335 0
+0.229324 -0.97335 0
+0.229324 -0.97335 1.5e-005
+0.229324 -0.97335 0
+0.229324 -0.97335 1.6e-005
+0.229324 -0.97335 1.5e-005
+0.229324 -0.97335 0
+0.229324 -0.97335 0
+0.948683 0.316228 -1.e-006
+0.937974 0.346706 0
+0.937974 0.346706 1.e-006
+0.948683 0.316228 -1.e-006
+0.948683 0.316228 0
+0.937974 0.346706 0
+0.937974 0.346706 0
+0.907381 0.42031 0
+0.937974 0.346706 1.e-006
+0.937974 0.346706 0
+0.907381 0.42031 0
+0.907381 0.42031 0
+0.907381 0.42031 0
+0.853406 0.521246 0
+0.853406 0.521246 -7.e-006
+0.907381 0.42031 0
+0.907381 0.42031 0
+0.853406 0.521246 0
+0.853406 0.521246 -7.e-006
+0.757119 0.653277 0
+0.757119 0.653277 -1.e-005
+0.853406 0.521246 -7.e-006
+0.853406 0.521246 0
+0.757119 0.653277 0
+0.757119 0.653277 -1.e-005
+0.626214 0.779652 0
+0.626214 0.779652 -1.2e-005
+0.757119 0.653277 -1.e-005
+0.757119 0.653277 0
+0.626214 0.779652 0
+0.626214 0.779652 0
+0.523605 0.851961 -1.9e-005
+0.626214 0.779652 -1.2e-005
+0.626214 0.779652 0
+0.523605 0.851961 0
+0.523605 0.851961 -1.9e-005
+0.523605 0.851961 0
+0.441172 0.897423 -1.1e-005
+0.523605 0.851961 -1.9e-005
+0.523605 0.851961 0
+0.441172 0.897423 0
+0.441172 0.897423 -1.1e-005
+0.441172 0.897423 0
+0.327685 0.944787 0
+0.441172 0.897423 -1.1e-005
+0.441172 0.897423 0
+0.327685 0.944787 0
+0.327685 0.944787 0
+0.327685 0.944787 0
+0.178795 0.983886 0
+0.178795 0.983886 1.8e-005
+0.327685 0.944787 0
+0.327685 0.944787 0
+0.178795 0.983886 0
+0.178795 0.983886 1.8e-005
+3.0738e-002 0.999527 0
+3.0738e-002 0.999527 -6.e-006
+0.178795 0.983886 1.8e-005
+0.178795 0.983886 0
+3.0738e-002 0.999527 0
+3.0738e-002 0.999527 -6.e-006
+-5.9692e-002 0.998217 0
+-5.9692e-002 0.998217 -2.3e-005
+3.0738e-002 0.999527 -6.e-006
+3.0738e-002 0.999527 0
+-5.9692e-002 0.998217 0
+-5.9692e-002 0.998217 -2.3e-005
+-0.124251 0.992251 0
+-0.124251 0.992251 1.e-005
+-5.9692e-002 0.998217 -2.3e-005
+-5.9692e-002 0.998217 0
+-0.124251 0.992251 0
+-0.124251 0.992251 0
+-0.212989 0.977055 -9.e-006
+-0.124251 0.992251 1.e-005
+-0.124251 0.992251 0
+-0.212989 0.977055 0
+-0.212989 0.977055 -9.e-006
+-0.212989 0.977055 -9.e-006
+-0.33255 0.943086 0
+-0.33255 0.943086 3.e-006
+-0.212989 0.977055 -9.e-006
+-0.212989 0.977055 0
+-0.33255 0.943086 0
+-0.33255 0.943086 3.e-006
+-0.459461 0.888198 0
+-0.459461 0.888198 3.1e-005
+-0.33255 0.943086 3.e-006
+-0.33255 0.943086 0
+-0.459461 0.888198 0
+-0.459461 0.888198 3.1e-005
+-0.54574 0.837954 0
+-0.54574 0.837954 1.3e-005
+-0.459461 0.888198 3.1e-005
+-0.459461 0.888198 0
+-0.54574 0.837954 0
+-0.54574 0.837954 1.3e-005
+-0.612054 0.790816 0
+-0.612054 0.790816 -7.e-006
+-0.54574 0.837954 1.3e-005
+-0.54574 0.837954 0
+-0.612054 0.790816 0
+-0.612054 0.790816 -7.e-006
+-0.695497 0.718529 0
+-0.695497 0.718529 -2.e-006
+-0.612054 0.790816 -7.e-006
+-0.612054 0.790816 0
+-0.695497 0.718529 0
+-0.695497 0.718529 0
+-0.79282 0.609456 1.e-006
+-0.695497 0.718529 -2.e-006
+-0.695497 0.718529 0
+-0.79282 0.609456 0
+-0.79282 0.609456 1.e-006
+-0.79282 0.609456 1.e-006
+-0.8758 0.482673 0
+-0.8758 0.482673 -9.00001e-006
+-0.79282 0.609456 1.e-006
+-0.79282 0.609456 0
+-0.8758 0.482673 0
+-0.8758 0.482673 0
+-0.919003 0.39425 1.e-006
+-0.8758 0.482673 -9.00001e-006
+-0.8758 0.482673 0
+-0.919003 0.39425 0
+-0.919003 0.39425 1.e-006
+-0.919003 0.39425 0
+-0.944411 0.328766 4.e-006
+-0.919003 0.39425 1.e-006
+-0.919003 0.39425 0
+-0.944411 0.328766 0
+-0.944411 0.328766 4.e-006
+-0.944411 0.328766 0
+-0.970195 0.242324 1.e-006
+-0.944411 0.328766 4.e-006
+-0.944411 0.328766 0
+-0.970195 0.242324 0
+-0.970195 0.242324 1.e-006
+-0.970195 0.242324 1.e-006
+-0.991247 0.132022 0
+-0.991247 0.132022 2.e-006
+-0.970195 0.242324 1.e-006
+-0.970195 0.242324 0
+-0.991247 0.132022 0
+-0.991247 0.132022 0
+-0.999763 2.1781e-002 1.e-006
+-0.991247 0.132022 2.e-006
+-0.991247 0.132022 0
+-0.999763 2.1781e-002 0
+-0.999763 2.1781e-002 1.e-006
+-0.999763 2.1781e-002 0
+-0.998845 -4.804e-002 1.e-006
+-0.999763 2.1781e-002 1.e-006
+-0.999763 2.1781e-002 0
+-0.998845 -4.804e-002 0
+-0.998845 -4.804e-002 1.e-006
+-0.998845 -4.804e-002 1.e-006
+-0.995019 -9.9686e-002 0
+-0.995019 -9.9686e-002 0
+-0.998845 -4.804e-002 1.e-006
+-0.998845 -4.804e-002 0
+-0.995019 -9.9686e-002 0
+-0.995019 -9.9686e-002 0
+-0.985345 -0.170576 0
+-0.985345 -0.170576 -2.e-006
+-0.995019 -9.9686e-002 0
+-0.995019 -9.9686e-002 0
+-0.985345 -0.170576 0
+-0.985345 -0.170576 0
+-0.963686 -0.267037 -2.e-006
+-0.985345 -0.170576 -2.e-006
+-0.985345 -0.170576 0
+-0.963686 -0.267037 0
+-0.963686 -0.267037 -2.e-006
+-0.963686 -0.267037 0
+-0.927759 -0.37318 -1.e-006
+-0.963686 -0.267037 -2.e-006
+-0.963686 -0.267037 0
+-0.927759 -0.37318 0
+-0.927759 -0.37318 -1.e-006
+-0.927759 -0.37318 -1.e-006
+-0.892992 -0.450072 0
+-0.892992 -0.450072 -1.e-006
+-0.927759 -0.37318 -1.e-006
+-0.927759 -0.37318 0
+-0.892992 -0.450072 0
+-0.892992 -0.450072 -1.e-006
+-0.857451 -0.514565 0
+-0.857451 -0.514565 9.99999e-007
+-0.892992 -0.450072 -1.e-006
+-0.892992 -0.450072 0
+-0.857451 -0.514565 0
+-0.857451 -0.514565 9.99999e-007
+-0.798742 -0.601673 0
+-0.798742 -0.601673 0
+-0.857451 -0.514565 9.99999e-007
+-0.857451 -0.514565 0
+-0.798742 -0.601673 0
+-0.798742 -0.601673 0
+-0.700176 -0.713971 0
+-0.700176 -0.713971 0
+-0.798742 -0.601673 0
+-0.798742 -0.601673 0
+-0.700176 -0.713971 0
+-0.700176 -0.713971 0
+-0.569649 -0.821888 0
+-0.700176 -0.713971 0
+-0.700176 -0.713971 0
+-0.569649 -0.821888 0
+-0.569649 -0.821888 0
+-0.569649 -0.821888 0
+-0.466342 -0.884605 0
+-0.466342 -0.884605 -1.e-006
+-0.569649 -0.821888 0
+-0.569649 -0.821888 0
+-0.466342 -0.884605 0
+-0.466342 -0.884605 0
+-0.384188 -0.923255 -1.e-006
+-0.466342 -0.884605 -1.e-006
+-0.466342 -0.884605 0
+-0.384188 -0.923255 0
+-0.384188 -0.923255 -1.e-006
+-0.384188 -0.923255 0
+-0.277846 -0.960626 0
+-0.384188 -0.923255 -1.e-006
+-0.384188 -0.923255 0
+-0.277846 -0.960626 0
+-0.277846 -0.960626 0
+-0.277846 -0.960626 0
+-0.1477 -0.989032 0
+-0.277846 -0.960626 0
+-0.277846 -0.960626 0
+-0.1477 -0.989032 0
+-0.1477 -0.989032 0
+-0.1477 -0.989032 0
+-1.8199e-002 -0.999834 0
+-1.8199e-002 -0.999834 0
+-0.1477 -0.989032 0
+-0.1477 -0.989032 0
+-1.8199e-002 -0.999834 0
+-1.8199e-002 -0.999834 0
+7.3245e-002 -0.997314 0
+-1.8199e-002 -0.999834 0
+-1.8199e-002 -0.999834 0
+7.3245e-002 -0.997314 0
+7.3245e-002 -0.997314 0
+7.3245e-002 -0.997314 0
+0.15504 -0.987908 0
+0.15504 -0.987908 0
+7.3245e-002 -0.997314 0
+7.3245e-002 -0.997314 0
+0.15504 -0.987908 0
+0.15504 -0.987908 0
+0.270911 -0.962604 0
+0.270911 -0.962604 -1.e-006
+0.15504 -0.987908 0
+0.15504 -0.987908 0
+0.270911 -0.962604 0
+0.270911 -0.962604 -1.e-006
+0.429706 -0.902969 0
+0.429706 -0.902969 -1.e-006
+0.270911 -0.962604 -1.e-006
+0.270911 -0.962604 0
+0.429706 -0.902969 0
+0.429706 -0.902969 0
+0.591961 -0.805966 1.e-006
+0.429706 -0.902969 -1.e-006
+0.429706 -0.902969 0
+0.591961 -0.805966 0
+0.591961 -0.805966 1.e-006
+0.591961 -0.805966 1.e-006
+0.691978 -0.721919 0
+0.691978 -0.721919 0
+0.591961 -0.805966 1.e-006
+0.591961 -0.805966 0
+0.691978 -0.721919 0
+0.691978 -0.721919 0
+0.759078 -0.651 0
+0.759078 -0.651 0
+0.691978 -0.721919 0
+0.691978 -0.721919 0
+0.759078 -0.651 0
+0.759078 -0.651 0
+0.834894 -0.550411 0
+0.834894 -0.550411 -1.e-006
+0.759078 -0.651 0
+0.759078 -0.651 0
+0.834894 -0.550411 0
+0.834894 -0.550411 0
+0.909912 -0.414801 -2.e-006
+0.834894 -0.550411 -1.e-006
+0.834894 -0.550411 0
+0.909912 -0.414801 0
+0.909912 -0.414801 -2.e-006
+0.909912 -0.414801 -2.e-006
+0.941889 -0.335925 0
+0.941889 -0.335925 1.e-006
+0.909912 -0.414801 -2.e-006
+0.909912 -0.414801 0
+0.941889 -0.335925 0
+0.24489 0.969551 0
+0.244888 0.969551 0
+0.24489 0.969551 3.e-006
+0.24489 0.969551 0
+0.244888 0.969551 0
+0.244888 0.969551 0
+0.244888 0.969551 0
+0.244887 0.969552 0
+0.244888 0.969551 0
+0.244888 0.969551 0
+0.244887 0.969552 0
+0.244887 0.969552 0
+0.244887 0.969552 0
+0.244887 0.969552 1.e-006
+0.244887 0.969552 0
+0.244887 0.969552 0
+0.244887 0.969552 0
+0.244887 0.969552 1.e-006
+0.244887 0.969552 1.e-006
+0.244887 0.969552 0
+0.244887 0.969552 -2.e-006
+0.244887 0.969552 1.e-006
+0.244887 0.969552 0
+0.244887 0.969552 0
+0.244887 0.969552 0
+0.244886 0.969552 -2.e-006
+0.244887 0.969552 -2.e-006
+0.244887 0.969552 0
+0.244886 0.969552 0
+0.244886 0.969552 -2.e-006
+-0.977434 0.211241 1.e-006
+-0.977424 0.211286 0
+-0.977424 0.211286 2.e-006
+-0.977434 0.211241 1.e-006
+-0.977434 0.211241 0
+-0.977424 0.211286 0
+-0.977424 0.211286 2.e-006
+-0.977415 0.21133 0
+-0.977415 0.21133 1.e-006
+-0.977424 0.211286 2.e-006
+-0.977424 0.211286 0
+-0.977415 0.21133 0
+-0.977415 0.21133 1.e-006
+-0.977415 0.211331 0
+-0.977415 0.211331 -2.e-006
+-0.977415 0.21133 1.e-006
+-0.977415 0.21133 0
+-0.977415 0.211331 0
+-0.977415 0.211331 -2.e-006
+-0.977414 0.211335 0
+-0.977414 0.211335 -1.e-006
+-0.977415 0.211331 -2.e-006
+-0.977415 0.211331 0
+-0.977414 0.211335 0
+-0.977414 0.211335 -1.e-006
+-0.969764 0.244046 0
+-0.969764 0.244046 -1.e-006
+-0.977414 0.211335 -1.e-006
+-0.977414 0.211335 0
+-0.969764 0.244046 0
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+-0.213861 -7.721e-003 0.976834
+0 0 1.
+0 0 1.
+-0.213861 -7.721e-003 0.976834
+-0.212218 -2.7349e-002 0.97684
+0 0 1.
+-0.212218 -2.7349e-002 0.97684
+0 0 1.
+0 0 1.
+-0.212218 -2.7349e-002 0.97684
+-0.206978 -5.4141e-002 0.976846
+0 0 1.
+-0.206978 -5.4141e-002 0.976846
+0 0 1.
+0 0 1.
+-0.206978 -5.4141e-002 0.976846
+-0.196135 -8.5409e-002 0.97685
+0 0 1.
+-0.196135 -8.5409e-002 0.97685
+0 0 1.
+0 0 1.
+-0.196135 -8.5409e-002 0.97685
+-0.178287 -0.118044 0.976872
+0 0 1.
+0 0 1.
+-0.15643 -0.145933 0.976849
+0 0 1.
+0 0 1.
+-0.178287 -0.118044 0.976872
+-0.15643 -0.145933 0.976849
+0 0 1.
+-0.137568 -0.164067 0.97681
+0 0 1.
+0 0 1.
+-0.15643 -0.145933 0.976849
+-0.137568 -0.164067 0.97681
+-0.137568 -0.164067 0.97681
+0 0 1.
+0 0 1.
+-0.137568 -0.164067 0.97681
+-0.117805 -0.178631 0.976838
+0 0 1.
+-0.117805 -0.178631 0.976838
+0 0 1.
+0 0 1.
+-0.117805 -0.178631 0.976838
+-8.88e-002 -0.194657 0.976843
+0 0 1.
+-8.88e-002 -0.194657 0.976843
+0 0 1.
+0 0 1.
+-8.88e-002 -0.194657 0.976843
+-4.873e-002 -0.208004 0.976913
+0 0 1.
+0 0 1.
+-9.111e-003 -0.213769 0.976842
+0 0 1.
+0 0 1.
+-4.873e-002 -0.208004 0.976913
+-9.111e-003 -0.213769 0.976842
+0 0 1.
+1.318e-002 -0.21373 0.976804
+0 0 1.
+0 0 1.
+-9.111e-003 -0.213769 0.976842
+1.318e-002 -0.21373 0.976804
+1.318e-002 -0.21373 0.976804
+0 0 1.
+0 0 1.
+1.318e-002 -0.21373 0.976804
+2.7104e-002 -0.212274 0.976834
+0 0 1.
+2.7104e-002 -0.212274 0.976834
+0 0 1.
+0 0 1.
+2.7104e-002 -0.212274 0.976834
+4.632e-002 -0.20893 0.976833
+0 0 1.
+4.632e-002 -0.20893 0.976833
+0 0 1.
+0 0 1.
+4.632e-002 -0.20893 0.976833
+7.1959e-002 -0.201396 0.976863
+0 0 1.
+0 0 1.
+9.8829e-002 -0.189713 0.976853
+0 0 1.
+0 0 1.
+7.1959e-002 -0.201396 0.976863
+9.8829e-002 -0.189713 0.976853
+0 0 1.
+0.116678 -0.179502 0.976814
+0 0 1.
+0 0 1.
+9.8829e-002 -0.189713 0.976853
+0.116678 -0.179502 0.976814
+0.116678 -0.179502 0.976814
+0 0 1.
+0 0 1.
+0.116678 -0.179502 0.976814
+0.130051 -0.169944 0.976835
+0 0 1.
+0.130051 -0.169944 0.976835
+0 0 1.
+0 0 1.
+0.130051 -0.169944 0.976835
+0.147385 -0.155156 0.976834
+0 0 1.
+0.147385 -0.155156 0.976834
+0 0 1.
+0 0 1.
+0.147385 -0.155156 0.976834
+0.168077 -0.132184 0.976871
+0 0 1.
+0 0 1.
+0.186926 -0.103923 0.976862
+0 0 1.
+0 0 1.
+0.168077 -0.132184 0.976871
+0.186926 -0.103923 0.976862
+0 0 1.
+0.197566 -8.2524e-002 0.97681
+0 0 1.
+0 0 1.
+0.186926 -0.103923 0.976862
+0.197566 -8.2524e-002 0.97681
+0.197566 -8.2524e-002 0.97681
+0 0 1.
+0 0 1.
+0.197566 -8.2524e-002 0.97681
+0.203475 -6.6214e-002 0.976839
+0 0 1.
+0.203475 -6.6214e-002 0.976839
+0 0 1.
+0 0 1.
+0.203475 -6.6214e-002 0.976839
+0.208865 -4.649e-002 0.976839
+0 0 1.
+0.208865 -4.649e-002 0.976839
+0 0 1.
+0 0 1.
+0.208865 -4.649e-002 0.976839
+0.212584 -2.4054e-002 0.976847
+0 0 1.
+0 0 1.
+0.213959 -1.745e-003 0.976841
+0 0 1.
+0 0 1.
+0.212584 -2.4054e-002 0.976847
+0.213959 -1.745e-003 0.976841
+0 0 1.
+0.21345 1.6064e-002 0.976822
+0 0 1.
+0 0 1.
+0.213959 -1.745e-003 0.976841
+0.21345 1.6064e-002 0.976822
+0.21345 1.6064e-002 0.976822
+0 0 1.
+0 0 1.
+0.21345 1.6064e-002 0.976822
+0.2112 3.4607e-002 0.97683
+0 0 1.
+0.2112 3.4607e-002 0.97683
+0 0 1.
+0 0 1.
+0.2112 3.4607e-002 0.97683
+0.204864 6.2054e-002 0.976821
+0 0 1.
+0.204864 6.2054e-002 0.976821
+0 0 1.
+0 0 1.
+0.204864 6.2054e-002 0.976821
+0.188107 0.101182 0.976923
+0 0 1.
+0 0 1.
+0.160526 0.141125 0.976891
+0 0 1.
+0 0 1.
+0.188107 0.101182 0.976923
+0.160526 0.141125 0.976891
+0 0 1.
+0.137429 0.164371 0.976778
+0 0 1.
+0 0 1.
+0.160526 0.141125 0.976891
+0.137429 0.164371 0.976778
+0.137429 0.164371 0.976778
+0 0 1.
+0 0 1.
+0.137429 0.164371 0.976778
+0.118039 0.17848 0.976838
+0 0 1.
+0.118039 0.17848 0.976838
+0 0 1.
+0 0 1.
+0.118039 0.17848 0.976838
+8.9398e-002 0.19439 0.976842
+0 0 1.
+8.9398e-002 0.19439 0.976842
+0 0 1.
+0 0 1.
+8.9398e-002 0.19439 0.976842
+4.9342e-002 0.20787 0.976911
+0 0 1.
+0 0 1.
+8.314e-003 0.213766 0.97685
+0 0 1.
+0 0 1.
+4.9342e-002 0.20787 0.976911
+8.314e-003 0.213766 0.97685
+0 0 1.
+-1.7189e-002 0.213468 0.976799
+0 0 1.
+0 0 1.
+8.314e-003 0.213766 0.97685
+-1.7189e-002 0.213468 0.976799
+-1.7189e-002 0.213468 0.976799
+0 0 1.
+0 0 1.
+-1.7189e-002 0.213468 0.976799
+-3.6075e-002 0.210939 0.976833
+0 0 1.
+-3.6075e-002 0.210939 0.976833
+0 0 1.
+0 0 1.
+-3.6075e-002 0.210939 0.976833
+-6.2688e-002 0.204623 0.976831
+0 0 1.
+-6.2688e-002 0.204623 0.976831
+0 0 1.
+0 0 1.
+-6.2688e-002 0.204623 0.976831
+-9.8173e-002 0.189874 0.976888
+0 0 1.
+0 0 1.
+-0.135252 0.165508 0.97689
+0 0 1.
+0 0 1.
+-9.8173e-002 0.189874 0.976888
+-0.135252 0.165508 0.97689
+0 0 1.
+-0.160357 0.142017 0.976789
+0 0 1.
+0 0 1.
+-0.135252 0.165508 0.97689
+-0.160357 0.142017 0.976789
+-0.160357 0.142017 0.976789
+0 0 1.
+0 0 1.
+-0.160357 0.142017 0.976789
+-0.177964 0.118748 0.976846
+0 0 1.
+-0.177964 0.118748 0.976846
+0 0 1.
+0 0 1.
+-0.177964 0.118748 0.976846
+-0.195715 8.6323e-002 0.976854
+0 0 1.
+-0.195715 8.6323e-002 0.976854
+0 0 1.
+0 0 1.
+-0.195715 8.6323e-002 0.976854
+-0.208763 4.5362e-002 0.976914
+0 0 1.
+0 0 1.
+-0.213834 1.0032e-002 0.976819
+0 0 1.
+0 0 1.
+-0.208763 4.5362e-002 0.976914
+-0.213834 1.0032e-002 0.976819
+0 0 1.
+-0.214098 -1.427e-003 0.976811
+0 0 1.
+0 0 1.
+-0.213834 1.0032e-002 0.976819
+-0.214098 -1.427e-003 0.976811
+0 0 1.
+-0.214 0 0.976834
+0 0 1.
+0 0 1.
+-0.214098 -1.427e-003 0.976811
+-0.214 0 0.976834
+0 0 1.
+-0.214 0 0.976834
+0 0 1.
+0 0 1.
+-0.214 0 0.976834
+-0.214 0 0.976834
+0 0 1.
+-0.214031 7.e-006 0.976827
+0 0 1.
+0 0 1.
+-0.214 0 0.976834
+-0.214031 7.e-006 0.976827
+-0.214031 7.e-006 0.976827
+0 0 1.
+0 0 1.
+-0.214031 7.e-006 0.976827
+-0.213861 -7.721e-003 0.976834
+0 0 1.
+-0.706606 -2.5596e-002 0.707144
+-0.212218 -2.7349e-002 0.97684
+-0.213861 -7.721e-003 0.976834
+-0.706606 -2.5596e-002 0.707144
+-0.701171 -9.0459e-002 0.707232
+-0.212218 -2.7349e-002 0.97684
+-0.701171 -9.0459e-002 0.707232
+-0.206978 -5.4141e-002 0.976846
+-0.212218 -2.7349e-002 0.97684
+-0.701171 -9.0459e-002 0.707232
+-0.68386 -0.178922 0.707335
+-0.206978 -5.4141e-002 0.976846
+-0.68386 -0.178922 0.707335
+-0.196135 -8.5409e-002 0.97685
+-0.206978 -5.4141e-002 0.976846
+-0.68386 -0.178922 0.707335
+-0.648018 -0.282206 0.707413
+-0.196135 -8.5409e-002 0.97685
+-0.648018 -0.282206 0.707413
+-0.178287 -0.118044 0.976872
+-0.196135 -8.5409e-002 0.97685
+-0.648018 -0.282206 0.707413
+-0.589178 -0.390095 0.707598
+-0.178287 -0.118044 0.976872
+-0.178287 -0.118044 0.976872
+-0.516924 -0.482105 0.707365
+-0.15643 -0.145933 0.976849
+-0.178287 -0.118044 0.976872
+-0.589178 -0.390095 0.707598
+-0.516924 -0.482105 0.707365
+-0.15643 -0.145933 0.976849
+-0.454437 -0.541864 0.707015
+-0.137568 -0.164067 0.97681
+-0.15643 -0.145933 0.976849
+-0.516924 -0.482105 0.707365
+-0.454437 -0.541864 0.707015
+-0.454437 -0.541864 0.707015
+-0.117805 -0.178631 0.976838
+-0.137568 -0.164067 0.97681
+-0.454437 -0.541864 0.707015
+-0.38918 -0.590181 0.707266
+-0.117805 -0.178631 0.976838
+-0.38918 -0.590181 0.707266
+-8.88e-002 -0.194657 0.976843
+-0.117805 -0.178631 0.976838
+-0.38918 -0.590181 0.707266
+-0.293338 -0.643077 0.707393
+-8.88e-002 -0.194657 0.976843
+-0.293338 -0.643077 0.707393
+-4.873e-002 -0.208004 0.976913
+-8.88e-002 -0.194657 0.976843
+-0.293338 -0.643077 0.707393
+-0.161089 -0.687614 0.707981
+-4.873e-002 -0.208004 0.976913
+-4.873e-002 -0.208004 0.976913
+-3.0317e-002 -0.706235 0.707328
+-9.111e-003 -0.213769 0.976842
+-4.873e-002 -0.208004 0.976913
+-0.161089 -0.687614 0.707981
+-3.0317e-002 -0.706235 0.707328
+-9.111e-003 -0.213769 0.976842
+4.333e-002 -0.705951 0.706934
+1.318e-002 -0.21373 0.976804
+-9.111e-003 -0.213769 0.976842
+-3.0317e-002 -0.706235 0.707328
+4.333e-002 -0.705951 0.706934
+4.333e-002 -0.705951 0.706934
+2.7104e-002 -0.212274 0.976834
+1.318e-002 -0.21373 0.976804
+4.333e-002 -0.705951 0.706934
+8.9574e-002 -0.701364 0.707153
+2.7104e-002 -0.212274 0.976834
+8.9574e-002 -0.701364 0.707153
+4.632e-002 -0.20893 0.976833
+2.7104e-002 -0.212274 0.976834
+8.9574e-002 -0.701364 0.707153
+0.15306 -0.690265 0.707182
+4.632e-002 -0.20893 0.976833
+0.15306 -0.690265 0.707182
+7.1959e-002 -0.201396 0.976863
+4.632e-002 -0.20893 0.976833
+0.15306 -0.690265 0.707182
+0.237811 -0.66555 0.707452
+7.1959e-002 -0.201396 0.976863
+7.1959e-002 -0.201396 0.976863
+0.326456 -0.626961 0.707352
+9.8829e-002 -0.189713 0.976853
+7.1959e-002 -0.201396 0.976863
+0.237811 -0.66555 0.707452
+0.326456 -0.626961 0.707352
+9.8829e-002 -0.189713 0.976853
+0.385325 -0.593013 0.707008
+0.116678 -0.179502 0.976814
+9.8829e-002 -0.189713 0.976853
+0.326456 -0.626961 0.707352
+0.385325 -0.593013 0.707008
+0.385325 -0.593013 0.707008
+0.130051 -0.169944 0.976835
+0.116678 -0.179502 0.976814
+0.385325 -0.593013 0.707008
+0.429713 -0.561475 0.707172
+0.130051 -0.169944 0.976835
+0.429713 -0.561475 0.707172
+0.147385 -0.155156 0.976834
+0.130051 -0.169944 0.976835
+0.429713 -0.561475 0.707172
+0.486947 -0.51257 0.707216
+0.147385 -0.155156 0.976834
+0.486947 -0.51257 0.707216
+0.168077 -0.132184 0.976871
+0.147385 -0.155156 0.976834
+0.486947 -0.51257 0.707216
+0.555467 -0.436832 0.707555
+0.168077 -0.132184 0.976871
+0.168077 -0.132184 0.976871
+0.617626 -0.343581 0.707453
+0.186926 -0.103923 0.976862
+0.168077 -0.132184 0.976871
+0.555467 -0.436832 0.707555
+0.617626 -0.343581 0.707453
+0.186926 -0.103923 0.976862
+0.652513 -0.272743 0.706992
+0.197566 -8.2524e-002 0.97681
+0.186926 -0.103923 0.976862
+0.617626 -0.343581 0.707453
+0.652513 -0.272743 0.706992
+0.652513 -0.272743 0.706992
+0.203475 -6.6214e-002 0.976839
+0.197566 -8.2524e-002 0.97681
+0.652513 -0.272743 0.706992
+0.672318 -0.218769 0.707197
+0.203475 -6.6214e-002 0.976839
+0.672318 -0.218769 0.707197
+0.208865 -4.649e-002 0.976839
+0.203475 -6.6214e-002 0.976839
+0.672318 -0.218769 0.707197
+0.690111 -0.1536 0.707215
+0.208865 -4.649e-002 0.976839
+0.690111 -0.1536 0.707215
+0.212584 -2.4054e-002 0.976847
+0.208865 -4.649e-002 0.976839
+0.690111 -0.1536 0.707215
+0.70245 -7.9482e-002 0.707281
+0.212584 -2.4054e-002 0.976847
+0.212584 -2.4054e-002 0.976847
+0.706966 -5.792e-003 0.707224
+0.213959 -1.745e-003 0.976841
+0.212584 -2.4054e-002 0.976847
+0.70245 -7.9482e-002 0.707281
+0.706966 -5.792e-003 0.707224
+0.213959 -1.745e-003 0.976841
+0.705157 5.3055e-002 0.707063
+0.21345 1.6064e-002 0.976822
+0.213959 -1.745e-003 0.976841
+0.706966 -5.792e-003 0.707224
+0.705157 5.3055e-002 0.707063
+0.705157 5.3055e-002 0.707063
+0.2112 3.4607e-002 0.97683
+0.21345 1.6064e-002 0.976822
+0.705157 5.3055e-002 0.707063
+0.697741 0.114355 0.707164
+0.2112 3.4607e-002 0.97683
+0.697741 0.114355 0.707164
+0.204864 6.2054e-002 0.976821
+0.2112 3.4607e-002 0.97683
+0.697741 0.114355 0.707164
+0.676637 0.204988 0.707208
+0.204864 6.2054e-002 0.976821
+0.676637 0.204988 0.707208
+0.188107 0.101182 0.976923
+0.204864 6.2054e-002 0.976821
+0.676637 0.204988 0.707208
+0.621846 0.334493 0.708112
+0.188107 0.101182 0.976923
+0.188107 0.101182 0.976923
+0.530693 0.46624 0.707803
+0.160526 0.141125 0.976891
+0.188107 0.101182 0.976923
+0.621846 0.334493 0.708112
+0.530693 0.46624 0.707803
+0.160526 0.141125 0.976891
+0.453932 0.542557 0.706808
+0.137429 0.164371 0.976778
+0.160526 0.141125 0.976891
+0.530693 0.46624 0.707803
+0.453932 0.542557 0.706808
+0.453932 0.542557 0.706808
+0.118039 0.17848 0.976838
+0.137429 0.164371 0.976778
+0.453932 0.542557 0.706808
+0.389951 0.589682 0.707257
+0.118039 0.17848 0.976838
+0.389951 0.589682 0.707257
+8.9398e-002 0.19439 0.976842
+0.118039 0.17848 0.976838
+0.389951 0.589682 0.707257
+0.295309 0.642187 0.707381
+8.9398e-002 0.19439 0.976842
+0.295309 0.642187 0.707381
+4.9342e-002 0.20787 0.976911
+8.9398e-002 0.19439 0.976842
+0.295309 0.642187 0.707381
+0.163104 0.687149 0.707972
+4.9342e-002 0.20787 0.976911
+4.9342e-002 0.20787 0.976911
+2.7628e-002 0.706265 0.707408
+8.314e-003 0.213766 0.97685
+4.9342e-002 0.20787 0.976911
+0.163104 0.687149 0.707972
+2.7628e-002 0.706265 0.707408
+8.314e-003 0.213766 0.97685
+-5.6626e-002 0.705025 0.706918
+-1.7189e-002 0.213468 0.976799
+8.314e-003 0.213766 0.97685
+2.7628e-002 0.706265 0.707408
+-5.6626e-002 0.705025 0.706918
+-5.6626e-002 0.705025 0.706918
+-3.6075e-002 0.210939 0.976833
+-1.7189e-002 0.213468 0.976799
+-5.6626e-002 0.705025 0.706918
+-0.119216 0.696907 0.707183
+-3.6075e-002 0.210939 0.976833
+-0.119216 0.696907 0.707183
+-6.2688e-002 0.204623 0.976831
+-3.6075e-002 0.210939 0.976833
+-0.119216 0.696907 0.707183
+-0.207116 0.675944 0.70725
+-6.2688e-002 0.204623 0.976831
+-0.207116 0.675944 0.70725
+-9.8173e-002 0.189874 0.976888
+-6.2688e-002 0.204623 0.976831
+-0.207116 0.675944 0.70725
+-0.324462 0.62751 0.707782
+-9.8173e-002 0.189874 0.976888
+-9.8173e-002 0.189874 0.976888
+-0.446893 0.547119 0.707776
+-0.135252 0.165508 0.97689
+-9.8173e-002 0.189874 0.976888
+-0.324462 0.62751 0.707782
+-0.446893 0.547119 0.707776
+-0.135252 0.165508 0.97689
+-0.529393 0.469052 0.706918
+-0.160357 0.142017 0.976789
+-0.135252 0.165508 0.97689
+-0.446893 0.547119 0.707776
+-0.529393 0.469052 0.706918
+-0.529393 0.469052 0.706918
+-0.177964 0.118748 0.976846
+-0.160357 0.142017 0.976789
+-0.529393 0.469052 0.706918
+-0.587987 0.392307 0.707366
+-0.177964 0.118748 0.976846
+-0.587987 0.392307 0.707366
+-0.195715 8.6323e-002 0.976854
+-0.177964 0.118748 0.976846
+-0.587987 0.392307 0.707366
+-0.646615 0.285189 0.7075
+-0.195715 8.6323e-002 0.976854
+-0.646615 0.285189 0.7075
+-0.208763 4.5362e-002 0.976914
+-0.195715 8.6323e-002 0.976854
+-0.646615 0.285189 0.7075
+-0.690145 0.149956 0.707964
+-0.208763 4.5362e-002 0.976914
+-0.208763 4.5362e-002 0.976914
+-0.706245 3.5818e-002 0.707061
+-0.213834 1.0032e-002 0.976819
+-0.208763 4.5362e-002 0.976914
+-0.690145 0.149956 0.707964
+-0.706245 3.5818e-002 0.707061
+-0.213834 1.0032e-002 0.976819
+-0.707231 -2.04e-003 0.706979
+-0.214098 -1.427e-003 0.976811
+-0.213834 1.0032e-002 0.976819
+-0.706245 3.5818e-002 0.707061
+-0.707231 -2.04e-003 0.706979
+-0.214098 -1.427e-003 0.976811
+-0.707109 0 0.707104
+-0.214 0 0.976834
+-0.214098 -1.427e-003 0.976811
+-0.707231 -2.04e-003 0.706979
+-0.707109 0 0.707104
+-0.214 0 0.976834
+-0.70711 0 0.707104
+-0.214 0 0.976834
+-0.214 0 0.976834
+-0.707109 0 0.707104
+-0.70711 0 0.707104
+-0.214 0 0.976834
+-0.707153 1.1e-005 0.70706
+-0.214031 7.e-006 0.976827
+-0.214 0 0.976834
+-0.70711 0 0.707104
+-0.707153 1.1e-005 0.70706
+-0.707153 1.1e-005 0.70706
+-0.213861 -7.721e-003 0.976834
+-0.214031 7.e-006 0.976827
+-0.707153 1.1e-005 0.70706
+-0.706606 -2.5596e-002 0.707144
+-0.213861 -7.721e-003 0.976834
+-0.97619 -3.5443e-002 0.214
+-0.701171 -9.0459e-002 0.707232
+-0.706606 -2.5596e-002 0.707144
+-0.97619 -3.5443e-002 0.214
+-0.968788 -0.125081 0.214021
+-0.701171 -9.0459e-002 0.707232
+-0.968788 -0.125081 0.214021
+-0.68386 -0.178922 0.707335
+-0.701171 -9.0459e-002 0.707232
+-0.968788 -0.125081 0.214021
+-0.945004 -0.247284 0.214052
+-0.68386 -0.178922 0.707335
+-0.945004 -0.247284 0.214052
+-0.648018 -0.282206 0.707413
+-0.68386 -0.178922 0.707335
+-0.945004 -0.247284 0.214052
+-0.895572 -0.390032 0.21407
+-0.648018 -0.282206 0.707413
+-0.895572 -0.390032 0.21407
+-0.589178 -0.390095 0.707598
+-0.648018 -0.282206 0.707413
+-0.895572 -0.390032 0.21407
+-0.814457 -0.53925 0.21417
+-0.589178 -0.390095 0.707598
+-0.589178 -0.390095 0.707598
+-0.714417 -0.666171 0.214065
+-0.516924 -0.482105 0.707365
+-0.589178 -0.390095 0.707598
+-0.814457 -0.53925 0.21417
+-0.714417 -0.666171 0.214065
+-0.516924 -0.482105 0.707365
+-0.627768 -0.748437 0.213891
+-0.454437 -0.541864 0.707015
+-0.516924 -0.482105 0.707365
+-0.714417 -0.666171 0.214065
+-0.627768 -0.748437 0.213891
+-0.627768 -0.748437 0.213891
+-0.38918 -0.590181 0.707266
+-0.454437 -0.541864 0.707015
+-0.627768 -0.748437 0.213891
+-0.537725 -0.815505 0.214018
+-0.38918 -0.590181 0.707266
+-0.537725 -0.815505 0.214018
+-0.293338 -0.643077 0.707393
+-0.38918 -0.590181 0.707266
+-0.537725 -0.815505 0.214018
+-0.405372 -0.88874 0.214043
+-0.293338 -0.643077 0.707393
+-0.405372 -0.88874 0.214043
+-0.161089 -0.687614 0.707981
+-0.293338 -0.643077 0.707393
+-0.405372 -0.88874 0.214043
+-0.222792 -0.951007 0.214359
+-0.161089 -0.687614 0.707981
+-0.161089 -0.687614 0.707981
+-4.2102e-002 -0.975919 0.214031
+-3.0317e-002 -0.706235 0.707328
+-0.161089 -0.687614 0.707981
+-0.222792 -0.951007 0.214359
+-4.2102e-002 -0.975919 0.214031
+-3.0317e-002 -0.706235 0.707328
+5.9652e-002 -0.97504 0.213868
+4.333e-002 -0.705951 0.706934
+-3.0317e-002 -0.706235 0.707328
+-4.2102e-002 -0.975919 0.214031
+5.9652e-002 -0.97504 0.213868
+5.9652e-002 -0.97504 0.213868
+8.9574e-002 -0.701364 0.707153
+4.333e-002 -0.705951 0.706934
+5.9652e-002 -0.97504 0.213868
+0.123771 -0.96896 0.214001
+8.9574e-002 -0.701364 0.707153
+0.123771 -0.96896 0.214001
+0.15306 -0.690265 0.707182
+8.9574e-002 -0.701364 0.707153
+0.123771 -0.96896 0.214001
+0.211493 -0.953665 0.213996
+0.15306 -0.690265 0.707182
+0.211493 -0.953665 0.213996
+0.237811 -0.66555 0.707452
+0.15306 -0.690265 0.707182
+0.211493 -0.953665 0.213996
+0.328684 -0.919845 0.214132
+0.237811 -0.66555 0.707452
+0.237811 -0.66555 0.707452
+0.451016 -0.86646 0.214085
+0.326456 -0.626961 0.707352
+0.237811 -0.66555 0.707452
+0.328684 -0.919845 0.214132
+0.451016 -0.86646 0.214085
+0.326456 -0.626961 0.707352
+0.53215 -0.819181 0.213914
+0.385325 -0.593013 0.707008
+0.326456 -0.626961 0.707352
+0.451016 -0.86646 0.214085
+0.53215 -0.819181 0.213914
+0.53215 -0.819181 0.213914
+0.429713 -0.561475 0.707172
+0.385325 -0.593013 0.707008
+0.53215 -0.819181 0.213914
+0.593705 -0.775704 0.214003
+0.429713 -0.561475 0.707172
+0.593705 -0.775704 0.214003
+0.486947 -0.51257 0.707216
+0.429713 -0.561475 0.707172
+0.593705 -0.775704 0.214003
+0.672823 -0.708176 0.213999
+0.486947 -0.51257 0.707216
+0.672823 -0.708176 0.213999
+0.555467 -0.436832 0.707555
+0.486947 -0.51257 0.707216
+0.672823 -0.708176 0.213999
+0.767816 -0.603812 0.214172
+0.555467 -0.436832 0.707555
+0.555467 -0.436832 0.707555
+0.853531 -0.47501 0.214126
+0.617626 -0.343581 0.707453
+0.555467 -0.436832 0.707555
+0.767816 -0.603812 0.214172
+0.853531 -0.47501 0.214126
+0.617626 -0.343581 0.707453
+0.901228 -0.376878 0.213896
+0.652513 -0.272743 0.706992
+0.617626 -0.343581 0.707453
+0.853531 -0.47501 0.214126
+0.901228 -0.376878 0.213896
+0.901228 -0.376878 0.213896
+0.672318 -0.218769 0.707197
+0.652513 -0.272743 0.706992
+0.901228 -0.376878 0.213896
+0.928894 -0.302245 0.21402
+0.672318 -0.218769 0.707197
+0.928894 -0.302245 0.21402
+0.690111 -0.1536 0.707215
+0.672318 -0.218769 0.707197
+0.928894 -0.302245 0.21402
+0.953498 -0.212217 0.214023
+0.690111 -0.1536 0.707215
+0.953498 -0.212217 0.214023
+0.70245 -7.9482e-002 0.707281
+0.690111 -0.1536 0.707215
+0.953498 -0.212217 0.214023
+0.970627 -0.109826 0.214058
+0.70245 -7.9482e-002 0.707281
+0.70245 -7.9482e-002 0.707281
+0.976794 -8.029e-003 0.214032
+0.706966 -5.792e-003 0.707224
+0.70245 -7.9482e-002 0.707281
+0.970627 -0.109826 0.214058
+0.976794 -8.029e-003 0.214032
+0.706966 -5.792e-003 0.707224
+0.974093 7.3276e-002 0.213947
+0.705157 5.3055e-002 0.707063
+0.706966 -5.792e-003 0.707224
+0.976794 -8.029e-003 0.214032
+0.974093 7.3276e-002 0.213947
+0.974093 7.3276e-002 0.213947
+0.697741 0.114355 0.707164
+0.705157 5.3055e-002 0.707063
+0.974093 7.3276e-002 0.213947
+0.963972 0.158014 0.213984
+0.697741 0.114355 0.707164
+0.963972 0.158014 0.213984
+0.676637 0.204988 0.707208
+0.697741 0.114355 0.707164
+0.963972 0.158014 0.213984
+0.934877 0.283256 0.213941
+0.676637 0.204988 0.707208
+0.934877 0.283256 0.213941
+0.621846 0.334493 0.708112
+0.676637 0.204988 0.707208
+0.934877 0.283256 0.213941
+0.860196 0.462708 0.214394
+0.621846 0.334493 0.708112
+0.621846 0.334493 0.708112
+0.73396 0.644516 0.214245
+0.530693 0.46624 0.707803
+0.621846 0.334493 0.708112
+0.860196 0.462708 0.214394
+0.73396 0.644516 0.214245
+0.530693 0.46624 0.707803
+0.627028 0.749096 0.213756
+0.453932 0.542557 0.706808
+0.530693 0.46624 0.707803
+0.73396 0.644516 0.214245
+0.627028 0.749096 0.213756
+0.627028 0.749096 0.213756
+0.389951 0.589682 0.707257
+0.453932 0.542557 0.706808
+0.627028 0.749096 0.213756
+0.538784 0.814805 0.214022
+0.389951 0.589682 0.707257
+0.538784 0.814805 0.214022
+0.295309 0.642187 0.707381
+0.389951 0.589682 0.707257
+0.538784 0.814805 0.214022
+0.408087 0.887494 0.214055
+0.295309 0.642187 0.707381
+0.408087 0.887494 0.214055
+0.163104 0.687149 0.707972
+0.295309 0.642187 0.707381
+0.408087 0.887494 0.214055
+0.225576 0.950354 0.214343
+0.163104 0.687149 0.707972
+0.163104 0.687149 0.707972
+3.8335e-002 0.97607 0.214049
+2.7628e-002 0.706265 0.707408
+0.163104 0.687149 0.707972
+0.225576 0.950354 0.214343
+3.8335e-002 0.97607 0.214049
+2.7628e-002 0.706265 0.707408
+-7.807e-002 0.97374 0.21386
+-5.6626e-002 0.705025 0.706918
+2.7628e-002 0.706265 0.707408
+3.8335e-002 0.97607 0.214049
+-7.807e-002 0.97374 0.21386
+-7.807e-002 0.97374 0.21386
+-0.119216 0.696907 0.707183
+-5.6626e-002 0.705025 0.706918
+-7.807e-002 0.97374 0.21386
+-0.164736 0.96284 0.214012
+-0.119216 0.696907 0.707183
+-0.164736 0.96284 0.214012
+-0.207116 0.675944 0.70725
+-0.119216 0.696907 0.707183
+-0.164736 0.96284 0.214012
+-0.28621 0.933965 0.213994
+-0.207116 0.675944 0.70725
+-0.28621 0.933965 0.213994
+-0.324462 0.62751 0.707782
+-0.207116 0.675944 0.70725
+-0.28621 0.933965 0.213994
+-0.448642 0.867648 0.214258
+-0.324462 0.62751 0.707782
+-0.324462 0.62751 0.707782
+-0.61779 0.756592 0.214252
+-0.446893 0.547119 0.707776
+-0.324462 0.62751 0.707782
+-0.448642 0.867648 0.214258
+-0.61779 0.756592 0.214252
+-0.446893 0.547119 0.707776
+-0.73107 0.647938 0.213806
+-0.529393 0.469052 0.706918
+-0.446893 0.547119 0.707776
+-0.61779 0.756592 0.214252
+-0.73107 0.647938 0.213806
+-0.73107 0.647938 0.213806
+-0.587987 0.392307 0.707366
+-0.529393 0.469052 0.706918
+-0.73107 0.647938 0.213806
+-0.812577 0.542123 0.21406
+-0.587987 0.392307 0.707366
+-0.812577 0.542123 0.21406
+-0.646615 0.285189 0.7075
+-0.587987 0.392307 0.707366
+-0.812577 0.542123 0.21406
+-0.89375 0.394176 0.214094
+-0.646615 0.285189 0.7075
+-0.89375 0.394176 0.214094
+-0.690145 0.149956 0.707964
+-0.646615 0.285189 0.7075
+-0.89375 0.394176 0.214094
+-0.954483 0.207389 0.214364
+-0.690145 0.149956 0.707964
+-0.690145 0.149956 0.707964
+-0.975484 5.1773e-002 0.213894
+-0.706245 3.5818e-002 0.707061
+-0.690145 0.149956 0.707964
+-0.954483 0.207389 0.214364
+-0.975484 5.1773e-002 0.213894
+-0.706245 3.5818e-002 0.707061
+-0.97685 -5.32e-004 0.213926
+-0.707231 -2.04e-003 0.706979
+-0.706245 3.5818e-002 0.707061
+-0.975484 5.1773e-002 0.213894
+-0.97685 -5.32e-004 0.213926
+-0.707231 -2.04e-003 0.706979
+-0.976835 0 0.213996
+-0.707109 0 0.707104
+-0.707231 -2.04e-003 0.706979
+-0.97685 -5.32e-004 0.213926
+-0.976835 0 0.213996
+-0.707109 0 0.707104
+-0.976835 0 0.213996
+-0.70711 0 0.707104
+-0.707109 0 0.707104
+-0.976835 0 0.213996
+-0.976835 0 0.213996
+-0.70711 0 0.707104
+-0.976841 4.e-006 0.213967
+-0.707153 1.1e-005 0.70706
+-0.70711 0 0.707104
+-0.976835 0 0.213996
+-0.976841 4.e-006 0.213967
+-0.976841 4.e-006 0.213967
+-0.706606 -2.5596e-002 0.707144
+-0.707153 1.1e-005 0.70706
+-0.976841 4.e-006 0.213967
+-0.97619 -3.5443e-002 0.214
+-0.706606 -2.5596e-002 0.707144
+-0.999341 -3.6309e-002 0
+-0.968788 -0.125081 0.214021
+-0.97619 -3.5443e-002 0.214
+-0.999341 -3.6309e-002 0
+-0.991764 -0.128079 0
+-0.968788 -0.125081 0.214021
+-0.991764 -0.128079 0
+-0.945004 -0.247284 0.214052
+-0.968788 -0.125081 0.214021
+-0.991764 -0.128079 0
+-0.967424 -0.253162 0
+-0.945004 -0.247284 0.214052
+-0.967424 -0.253162 0
+-0.895572 -0.390032 0.21407
+-0.945004 -0.247284 0.214052
+-0.967424 -0.253162 0
+-0.916823 -0.399293 -1.e-006
+-0.895572 -0.390032 0.21407
+-0.895572 -0.390032 0.21407
+-0.833804 -0.55206 -1.e-006
+-0.814457 -0.53925 0.21417
+-0.895572 -0.390032 0.21407
+-0.916823 -0.399293 -1.e-006
+-0.833804 -0.55206 -1.e-006
+-0.814457 -0.53925 0.21417
+-0.73139 -0.681959 0
+-0.714417 -0.666171 0.214065
+-0.814457 -0.53925 0.21417
+-0.833804 -0.55206 -1.e-006
+-0.73139 -0.681959 0
+-0.73139 -0.681959 0
+-0.627768 -0.748437 0.213891
+-0.714417 -0.666171 0.214065
+-0.73139 -0.681959 0
+-0.642657 -0.766154 0
+-0.627768 -0.748437 0.213891
+-0.627768 -0.748437 0.213891
+-0.550471 -0.834854 -1.e-006
+-0.537725 -0.815505 0.214018
+-0.627768 -0.748437 0.213891
+-0.642657 -0.766154 0
+-0.550471 -0.834854 -1.e-006
+-0.537725 -0.815505 0.214018
+-0.414982 -0.90983 0
+-0.405372 -0.88874 0.214043
+-0.537725 -0.815505 0.214018
+-0.550471 -0.834854 -1.e-006
+-0.414982 -0.90983 0
+-0.405372 -0.88874 0.214043
+-0.228094 -0.973639 0
+-0.222792 -0.951007 0.214359
+-0.405372 -0.88874 0.214043
+-0.414982 -0.90983 0
+-0.228094 -0.973639 0
+-0.222792 -0.951007 0.214359
+-4.3166e-002 -0.999068 0
+-4.2102e-002 -0.975919 0.214031
+-0.222792 -0.951007 0.214359
+-0.228094 -0.973639 0
+-4.3166e-002 -0.999068 0
+-4.2102e-002 -0.975919 0.214031
+6.1006e-002 -0.998137 0
+5.9652e-002 -0.97504 0.213868
+-4.2102e-002 -0.975919 0.214031
+-4.3166e-002 -0.999068 0
+6.1006e-002 -0.998137 0
+5.9652e-002 -0.97504 0.213868
+0.126713 -0.991939 0
+0.123771 -0.96896 0.214001
+5.9652e-002 -0.97504 0.213868
+6.1006e-002 -0.998137 0
+0.126713 -0.991939 0
+0.123771 -0.96896 0.214001
+0.216517 -0.976279 0
+0.211493 -0.953665 0.213996
+0.123771 -0.96896 0.214001
+0.126713 -0.991939 0
+0.216517 -0.976279 0
+0.216517 -0.976279 0
+0.328684 -0.919845 0.214132
+0.211493 -0.953665 0.213996
+0.216517 -0.976279 0
+0.336491 -0.941687 0
+0.328684 -0.919845 0.214132
+0.328684 -0.919845 0.214132
+0.461685 -0.887044 1.e-006
+0.451016 -0.86646 0.214085
+0.328684 -0.919845 0.214132
+0.336491 -0.941687 0
+0.461685 -0.887044 1.e-006
+0.451016 -0.86646 0.214085
+0.54473 -0.838611 1.e-006
+0.53215 -0.819181 0.213914
+0.451016 -0.86646 0.214085
+0.461685 -0.887044 1.e-006
+0.54473 -0.838611 1.e-006
+0.54473 -0.838611 1.e-006
+0.593705 -0.775704 0.214003
+0.53215 -0.819181 0.213914
+0.54473 -0.838611 1.e-006
+0.607793 -0.794095 -1.e-006
+0.593705 -0.775704 0.214003
+0.593705 -0.775704 0.214003
+0.688787 -0.724964 0
+0.672823 -0.708176 0.213999
+0.593705 -0.775704 0.214003
+0.607793 -0.794095 -1.e-006
+0.688787 -0.724964 0
+0.672823 -0.708176 0.213999
+0.786058 -0.618153 2.e-006
+0.767816 -0.603812 0.214172
+0.672823 -0.708176 0.213999
+0.688787 -0.724964 0
+0.786058 -0.618153 2.e-006
+0.786058 -0.618153 2.e-006
+0.853531 -0.47501 0.214126
+0.767816 -0.603812 0.214172
+0.786058 -0.618153 2.e-006
+0.873772 -0.486336 2.e-006
+0.853531 -0.47501 0.214126
+0.873772 -0.486336 2.e-006
+0.901228 -0.376878 0.213896
+0.853531 -0.47501 0.214126
+0.873772 -0.486336 2.e-006
+0.92256 -0.385854 -1.e-006
+0.901228 -0.376878 0.213896
+0.92256 -0.385854 -1.e-006
+0.928894 -0.302245 0.21402
+0.901228 -0.376878 0.213896
+0.92256 -0.385854 -1.e-006
+0.950929 -0.30941 -2.e-006
+0.928894 -0.302245 0.21402
+0.928894 -0.302245 0.21402
+0.976116 -0.217249 -1.e-006
+0.953498 -0.212217 0.214023
+0.928894 -0.302245 0.21402
+0.950929 -0.30941 -2.e-006
+0.976116 -0.217249 -1.e-006
+0.976116 -0.217249 -1.e-006
+0.970627 -0.109826 0.214058
+0.953498 -0.212217 0.214023
+0.976116 -0.217249 -1.e-006
+0.993659 -0.112432 0
+0.970627 -0.109826 0.214058
+0.970627 -0.109826 0.214058
+0.999966 -8.228e-003 0
+0.976794 -8.029e-003 0.214032
+0.970627 -0.109826 0.214058
+0.993659 -0.112432 0
+0.999966 -8.228e-003 0
+0.976794 -8.029e-003 0.214032
+0.997183 7.5009e-002 1.e-006
+0.974093 7.3276e-002 0.213947
+0.976794 -8.029e-003 0.214032
+0.999966 -8.228e-003 0
+0.997183 7.5009e-002 1.e-006
+0.974093 7.3276e-002 0.213947
+0.986829 0.161769 0
+0.963972 0.158014 0.213984
+0.974093 7.3276e-002 0.213947
+0.997183 7.5009e-002 1.e-006
+0.986829 0.161769 0
+0.963972 0.158014 0.213984
+0.957033 0.28998 -5.e-006
+0.934877 0.283256 0.213941
+0.963972 0.158014 0.213984
+0.986829 0.161769 0
+0.957033 0.28998 -5.e-006
+0.934877 0.283256 0.213941
+0.880672 0.473726 -7.e-006
+0.860196 0.462708 0.214394
+0.934877 0.283256 0.213941
+0.957033 0.28998 -5.e-006
+0.880672 0.473726 -7.e-006
+0.880672 0.473726 -7.e-006
+0.73396 0.644516 0.214245
+0.860196 0.462708 0.214394
+0.880672 0.473726 -7.e-006
+0.751455 0.659784 -1.e-006
+0.73396 0.644516 0.214245
+0.73396 0.644516 0.214245
+0.641916 0.766775 2.e-006
+0.627028 0.749096 0.213756
+0.73396 0.644516 0.214245
+0.751455 0.659784 -1.e-006
+0.641916 0.766775 2.e-006
+0.627028 0.749096 0.213756
+0.551555 0.834138 7.e-006
+0.538784 0.814805 0.214022
+0.627028 0.749096 0.213756
+0.641916 0.766775 2.e-006
+0.551555 0.834138 7.e-006
+0.538784 0.814805 0.214022
+0.417762 0.908556 1.9e-005
+0.408087 0.887494 0.214055
+0.538784 0.814805 0.214022
+0.551555 0.834138 7.e-006
+0.417762 0.908556 1.9e-005
+0.408087 0.887494 0.214055
+0.230943 0.972967 -7.e-006
+0.225576 0.950354 0.214343
+0.408087 0.887494 0.214055
+0.417762 0.908556 1.9e-005
+0.230943 0.972967 -7.e-006
+0.230943 0.972967 -7.e-006
+3.8335e-002 0.97607 0.214049
+0.225576 0.950354 0.214343
+0.230943 0.972967 -7.e-006
+3.9293e-002 0.999228 -2.e-005
+3.8335e-002 0.97607 0.214049
+3.8335e-002 0.97607 0.214049
+-7.9876e-002 0.996805 1.4e-005
+-7.807e-002 0.97374 0.21386
+3.8335e-002 0.97607 0.214049
+3.9293e-002 0.999228 -2.e-005
+-7.9876e-002 0.996805 1.4e-005
+-7.807e-002 0.97374 0.21386
+-0.168652 0.985676 1.9e-005
+-0.164736 0.96284 0.214012
+-7.807e-002 0.97374 0.21386
+-7.9876e-002 0.996805 1.4e-005
+-0.168652 0.985676 1.9e-005
+-0.164736 0.96284 0.214012
+-0.293008 0.95611 1.1e-005
+-0.28621 0.933965 0.213994
+-0.164736 0.96284 0.214012
+-0.168652 0.985676 1.9e-005
+-0.293008 0.95611 1.1e-005
+-0.28621 0.933965 0.213994
+-0.459312 0.888275 1.6e-005
+-0.448642 0.867648 0.214258
+-0.28621 0.933965 0.213994
+-0.293008 0.95611 1.1e-005
+-0.459312 0.888275 1.6e-005
+-0.448642 0.867648 0.214258
+-0.632438 0.774611 4.e-006
+-0.61779 0.756592 0.214252
+-0.448642 0.867648 0.214258
+-0.459312 0.888275 1.6e-005
+-0.632438 0.774611 4.e-006
+-0.632438 0.774611 4.e-006
+-0.73107 0.647938 0.213806
+-0.61779 0.756592 0.214252
+-0.632438 0.774611 4.e-006
+-0.748345 0.66331 0
+-0.73107 0.647938 0.213806
+-0.73107 0.647938 0.213806
+-0.831864 0.55498 3.e-006
+-0.812577 0.542123 0.21406
+-0.73107 0.647938 0.213806
+-0.748345 0.66331 0
+-0.831864 0.55498 3.e-006
+-0.812577 0.542123 0.21406
+-0.914967 0.403529 2.e-006
+-0.89375 0.394176 0.214094
+-0.812577 0.542123 0.21406
+-0.831864 0.55498 3.e-006
+-0.914967 0.403529 2.e-006
+-0.89375 0.394176 0.214094
+-0.977199 0.212325 3.e-006
+-0.954483 0.207389 0.214364
+-0.89375 0.394176 0.214094
+-0.914967 0.403529 2.e-006
+-0.977199 0.212325 3.e-006
+-0.977199 0.212325 3.e-006
+-0.975484 5.1773e-002 0.213894
+-0.954483 0.207389 0.214364
+-0.977199 0.212325 3.e-006
+-0.998565 5.3547e-002 -1.e-006
+-0.975484 5.1773e-002 0.213894
+-0.975484 5.1773e-002 0.213894
+-1. 0 0
+-0.97685 -5.32e-004 0.213926
+-0.975484 5.1773e-002 0.213894
+-0.998565 5.3547e-002 -1.e-006
+-1. 0 0
+-0.97685 -5.32e-004 0.213926
+-1. 0 0
+-0.976835 0 0.213996
+-0.97685 -5.32e-004 0.213926
+-1. 0 0
+-1. 0 0
+-0.976835 0 0.213996
+-1. 0 0
+-0.976835 0 0.213996
+-0.976835 0 0.213996
+-1. 0 0
+-1. 0 0
+-0.976835 0 0.213996
+-1. 0 0
+-0.976841 4.e-006 0.213967
+-0.976835 0 0.213996
+-1. 0 0
+-1. 0 0
+-0.976841 4.e-006 0.213967
+-0.999341 -3.6309e-002 0
+-0.97619 -3.5443e-002 0.214
+-0.976841 4.e-006 0.213967
+-1. 0 0
+-0.999341 -3.6309e-002 0
+-0.999341 -3.6309e-002 0
+-0.991764 -0.128079 0
+-0.991764 -0.128079 0
+-0.999341 -3.6309e-002 0
+-0.999341 -3.6309e-002 0
+-0.991764 -0.128079 0
+-0.991764 -0.128079 0
+-0.967424 -0.253162 0
+-0.991764 -0.128079 0
+-0.991764 -0.128079 0
+-0.967424 -0.253162 0
+-0.967424 -0.253162 0
+-0.967424 -0.253162 0
+-0.916823 -0.399293 0
+-0.916823 -0.399293 -1.e-006
+-0.967424 -0.253162 0
+-0.967424 -0.253162 0
+-0.916823 -0.399293 0
+-0.916823 -0.399293 -1.e-006
+-0.833804 -0.55206 0
+-0.833804 -0.55206 -1.e-006
+-0.916823 -0.399293 -1.e-006
+-0.916823 -0.399293 0
+-0.833804 -0.55206 0
+-0.833804 -0.55206 -1.e-006
+-0.73139 -0.681959 0
+-0.73139 -0.681959 0
+-0.833804 -0.55206 -1.e-006
+-0.833804 -0.55206 0
+-0.73139 -0.681959 0
+-0.73139 -0.681959 0
+-0.642657 -0.766154 0
+-0.73139 -0.681959 0
+-0.73139 -0.681959 0
+-0.642657 -0.766154 0
+-0.642657 -0.766154 0
+-0.642657 -0.766154 0
+-0.550471 -0.834854 0
+-0.550471 -0.834854 -1.e-006
+-0.642657 -0.766154 0
+-0.642657 -0.766154 0
+-0.550471 -0.834854 0
+-0.550471 -0.834854 -1.e-006
+-0.414982 -0.90983 0
+-0.414982 -0.90983 0
+-0.550471 -0.834854 -1.e-006
+-0.550471 -0.834854 0
+-0.414982 -0.90983 0
+-0.414982 -0.90983 0
+-0.228094 -0.973639 0
+-0.414982 -0.90983 0
+-0.414982 -0.90983 0
+-0.228094 -0.973639 0
+-0.228094 -0.973639 0
+-0.228094 -0.973639 0
+-4.3166e-002 -0.999068 0
+-4.3166e-002 -0.999068 0
+-0.228094 -0.973639 0
+-0.228094 -0.973639 0
+-4.3166e-002 -0.999068 0
+-4.3166e-002 -0.999068 0
+6.1006e-002 -0.998137 0
+-4.3166e-002 -0.999068 0
+-4.3166e-002 -0.999068 0
+6.1006e-002 -0.998137 0
+6.1006e-002 -0.998137 0
+6.1006e-002 -0.998137 0
+0.126713 -0.991939 0
+6.1006e-002 -0.998137 0
+6.1006e-002 -0.998137 0
+0.126713 -0.991939 0
+0.126713 -0.991939 0
+0.126713 -0.991939 0
+0.216517 -0.976279 0
+0.126713 -0.991939 0
+0.126713 -0.991939 0
+0.216517 -0.976279 0
+0.216517 -0.976279 0
+0.216517 -0.976279 0
+0.336491 -0.941687 0
+0.216517 -0.976279 0
+0.216517 -0.976279 0
+0.336491 -0.941687 0
+0.336491 -0.941687 0
+0.336491 -0.941687 0
+0.461685 -0.887044 1.e-006
+0.336491 -0.941687 0
+0.336491 -0.941687 0
+0.461685 -0.887044 0
+0.461685 -0.887044 1.e-006
+0.461685 -0.887044 1.e-006
+0.54473 -0.838611 0
+0.54473 -0.838611 1.e-006
+0.461685 -0.887044 1.e-006
+0.461685 -0.887044 0
+0.54473 -0.838611 0
+0.54473 -0.838611 0
+0.607793 -0.794095 -1.e-006
+0.54473 -0.838611 1.e-006
+0.54473 -0.838611 0
+0.607793 -0.794095 0
+0.607793 -0.794095 -1.e-006
+0.607793 -0.794095 0
+0.688787 -0.724964 0
+0.607793 -0.794095 -1.e-006
+0.607793 -0.794095 0
+0.688787 -0.724964 0
+0.688787 -0.724964 0
+0.688787 -0.724964 0
+0.786058 -0.618153 0
+0.786058 -0.618153 2.e-006
+0.688787 -0.724964 0
+0.688787 -0.724964 0
+0.786058 -0.618153 0
+0.786058 -0.618153 2.e-006
+0.873772 -0.486336 0
+0.873772 -0.486336 2.e-006
+0.786058 -0.618153 2.e-006
+0.786058 -0.618153 0
+0.873772 -0.486336 0
+0.873772 -0.486336 2.e-006
+0.92256 -0.385854 0
+0.92256 -0.385854 -1.e-006
+0.873772 -0.486336 2.e-006
+0.873772 -0.486336 0
+0.92256 -0.385854 0
+0.92256 -0.385854 0
+0.950929 -0.30941 -2.e-006
+0.92256 -0.385854 -1.e-006
+0.92256 -0.385854 0
+0.950929 -0.30941 0
+0.950929 -0.30941 -2.e-006
+0.950929 -0.30941 -2.e-006
+0.976116 -0.217249 0
+0.976116 -0.217249 -1.e-006
+0.950929 -0.30941 -2.e-006
+0.950929 -0.30941 0
+0.976116 -0.217249 0
+0.976116 -0.217249 -1.e-006
+0.993659 -0.112432 0
+0.993659 -0.112432 0
+0.976116 -0.217249 -1.e-006
+0.976116 -0.217249 0
+0.993659 -0.112432 0
+0.993659 -0.112432 0
+0.999966 -8.228e-003 0
+0.993659 -0.112432 0
+0.993659 -0.112432 0
+0.999966 -8.228e-003 0
+0.999966 -8.228e-003 0
+0.999966 -8.228e-003 0
+0.997183 7.5009e-002 0
+0.997183 7.5009e-002 1.e-006
+0.999966 -8.228e-003 0
+0.999966 -8.228e-003 0
+0.997183 7.5009e-002 0
+0.997183 7.5009e-002 1.e-006
+0.986829 0.161769 0
+0.986829 0.161769 0
+0.997183 7.5009e-002 1.e-006
+0.997183 7.5009e-002 0
+0.986829 0.161769 0
+0.986829 0.161769 0
+0.957033 0.28998 0
+0.957033 0.28998 -5.e-006
+0.986829 0.161769 0
+0.986829 0.161769 0
+0.957033 0.28998 0
+0.957033 0.28998 -5.e-006
+0.880672 0.473726 0
+0.880672 0.473726 -7.e-006
+0.957033 0.28998 -5.e-006
+0.957033 0.28998 0
+0.880672 0.473726 0
+0.880672 0.473726 0
+0.751455 0.659784 -1.e-006
+0.880672 0.473726 -7.e-006
+0.880672 0.473726 0
+0.751455 0.659784 0
+0.751455 0.659784 -1.e-006
+0.751455 0.659784 -1.e-006
+0.641916 0.766775 0
+0.641916 0.766775 2.e-006
+0.751455 0.659784 -1.e-006
+0.751455 0.659784 0
+0.641916 0.766775 0
+0.641916 0.766775 0
+0.551555 0.834138 7.e-006
+0.641916 0.766775 2.e-006
+0.641916 0.766775 0
+0.551555 0.834138 0
+0.551555 0.834138 7.e-006
+0.551555 0.834138 7.e-006
+0.417762 0.908556 0
+0.417762 0.908556 1.9e-005
+0.551555 0.834138 7.e-006
+0.551555 0.834138 0
+0.417762 0.908556 0
+0.417762 0.908556 0
+0.230943 0.972967 -7.e-006
+0.417762 0.908556 1.9e-005
+0.417762 0.908556 0
+0.230943 0.972967 0
+0.230943 0.972967 -7.e-006
+0.230943 0.972967 -7.e-006
+3.9293e-002 0.999228 0
+3.9293e-002 0.999228 -2.e-005
+0.230943 0.972967 -7.e-006
+0.230943 0.972967 0
+3.9293e-002 0.999228 0
+3.9293e-002 0.999228 0
+-7.9876e-002 0.996805 1.4e-005
+3.9293e-002 0.999228 -2.e-005
+3.9293e-002 0.999228 0
+-7.9876e-002 0.996805 0
+-7.9876e-002 0.996805 1.4e-005
+-7.9876e-002 0.996805 0
+-0.168652 0.985676 1.9e-005
+-7.9876e-002 0.996805 1.4e-005
+-7.9876e-002 0.996805 0
+-0.168652 0.985676 0
+-0.168652 0.985676 1.9e-005
+-0.168652 0.985676 0
+-0.293008 0.95611 1.1e-005
+-0.168652 0.985676 1.9e-005
+-0.168652 0.985676 0
+-0.293008 0.95611 0
+-0.293008 0.95611 1.1e-005
+-0.293008 0.95611 0
+-0.459312 0.888275 1.6e-005
+-0.293008 0.95611 1.1e-005
+-0.293008 0.95611 0
+-0.459312 0.888275 0
+-0.459312 0.888275 1.6e-005
+-0.459312 0.888275 1.6e-005
+-0.632438 0.774611 0
+-0.632438 0.774611 4.e-006
+-0.459312 0.888275 1.6e-005
+-0.459312 0.888275 0
+-0.632438 0.774611 0
+-0.632438 0.774611 0
+-0.748345 0.66331 0
+-0.632438 0.774611 4.e-006
+-0.632438 0.774611 0
+-0.748345 0.66331 0
+-0.748345 0.66331 0
+-0.748345 0.66331 0
+-0.831864 0.55498 3.e-006
+-0.748345 0.66331 0
+-0.748345 0.66331 0
+-0.831864 0.55498 0
+-0.831864 0.55498 3.e-006
+-0.831864 0.55498 0
+-0.914967 0.403529 2.e-006
+-0.831864 0.55498 3.e-006
+-0.831864 0.55498 0
+-0.914967 0.403529 0
+-0.914967 0.403529 2.e-006
+-0.914967 0.403529 0
+-0.977199 0.212325 3.e-006
+-0.914967 0.403529 2.e-006
+-0.914967 0.403529 0
+-0.977199 0.212325 0
+-0.977199 0.212325 3.e-006
+-0.977199 0.212325 0
+-0.998565 5.3547e-002 -1.e-006
+-0.977199 0.212325 3.e-006
+-0.977199 0.212325 0
+-0.998565 5.3547e-002 0
+-0.998565 5.3547e-002 -1.e-006
+-0.998565 5.3547e-002 -1.e-006
+-1. 0 0
+-1. 0 0
+-0.998565 5.3547e-002 -1.e-006
+-0.998565 5.3547e-002 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-0.999341 -3.6309e-002 0
+-0.999341 -3.6309e-002 0
+-1. 0 0
+-1. 0 0
+-0.999341 -3.6309e-002 0
+0 0 1.
+0.214 0 0.976834
+0 0 1.
+0 0 1.
+0.21403 5.64e-004 0.976827
+0.214 0 0.976834
+0 0 1.
+0.214 0 0.976834
+0 0 1.
+0 0 1.
+0.214 0 0.976834
+0.214 0 0.976834
+0 0 1.
+0.214022 -7.e-006 0.976829
+0 0 1.
+0 0 1.
+0.214 0 0.976834
+0.214022 -7.e-006 0.976829
+0 0 1.
+0.213894 -6.694e-003 0.976834
+0 0 1.
+0 0 1.
+0.214022 -7.e-006 0.976829
+0.213894 -6.694e-003 0.976834
+0 0 1.
+0.212669 -2.3696e-002 0.976837
+0 0 1.
+0 0 1.
+0.213894 -6.694e-003 0.976834
+0.212669 -2.3696e-002 0.976837
+0 0 1.
+0.208628 -4.7481e-002 0.976842
+0 0 1.
+0 0 1.
+0.212669 -2.3696e-002 0.976837
+0.208628 -4.7481e-002 0.976842
+0 0 1.
+0.199754 -7.662e-002 0.976846
+0 0 1.
+0 0 1.
+0.208628 -4.7481e-002 0.976842
+0.199754 -7.662e-002 0.976846
+0 0 1.
+0.183919 -0.109036 0.976875
+0 0 1.
+0 0 1.
+0.199754 -7.662e-002 0.976846
+0.183919 -0.109036 0.976875
+0.183919 -0.109036 0.976875
+0 0 1.
+0 0 1.
+0.183919 -0.109036 0.976875
+0.163552 -0.137899 0.976849
+0 0 1.
+0.163552 -0.137899 0.976849
+0 0 1.
+0 0 1.
+0.163552 -0.137899 0.976849
+0.145834 -0.156764 0.97681
+0 0 1.
+0 0 1.
+0.127087 -0.172168 0.976835
+0 0 1.
+0 0 1.
+0.145834 -0.156764 0.97681
+0.127087 -0.172168 0.976835
+0 0 1.
+9.8158e-002 -0.190135 0.976839
+0 0 1.
+0 0 1.
+0.127087 -0.172168 0.976835
+9.8158e-002 -0.190135 0.976839
+0 0 1.
+5.5315e-002 -0.206295 0.976925
+0 0 1.
+0 0 1.
+9.8158e-002 -0.190135 0.976839
+5.5315e-002 -0.206295 0.976925
+5.5315e-002 -0.206295 0.976925
+0 0 1.
+0 0 1.
+5.5315e-002 -0.206295 0.976925
+9.137e-003 -0.21368 0.976861
+0 0 1.
+9.137e-003 -0.21368 0.976861
+0 0 1.
+0 0 1.
+9.137e-003 -0.21368 0.976861
+-2.1746e-002 -0.213086 0.976791
+0 0 1.
+0 0 1.
+-4.6033e-002 -0.208981 0.976836
+0 0 1.
+0 0 1.
+-2.1746e-002 -0.213086 0.976791
+-4.6033e-002 -0.208981 0.976836
+0 0 1.
+-7.8752e-002 -0.198953 0.97684
+0 0 1.
+0 0 1.
+-4.6033e-002 -0.208981 0.976836
+-7.8752e-002 -0.198953 0.97684
+0 0 1.
+-0.118982 -0.177416 0.976917
+0 0 1.
+0 0 1.
+-7.8752e-002 -0.198953 0.97684
+-0.118982 -0.177416 0.976917
+-0.118982 -0.177416 0.976917
+0 0 1.
+0 0 1.
+-0.118982 -0.177416 0.976917
+-0.155469 -0.146808 0.976871
+0 0 1.
+-0.155469 -0.146808 0.976871
+0 0 1.
+0 0 1.
+-0.155469 -0.146808 0.976871
+-0.176571 -0.121232 0.976793
+0 0 1.
+0 0 1.
+-0.189613 -9.9111e-002 0.976844
+0 0 1.
+0 0 1.
+-0.176571 -0.121232 0.976793
+-0.189613 -9.9111e-002 0.976844
+0 0 1.
+-0.201911 -7.072e-002 0.976847
+0 0 1.
+0 0 1.
+-0.189613 -9.9111e-002 0.976844
+-0.201911 -7.072e-002 0.976847
+0 0 1.
+-0.210616 -3.681e-002 0.976876
+0 0 1.
+0 0 1.
+-0.201911 -7.072e-002 0.976847
+-0.210616 -3.681e-002 0.976876
+-0.210616 -3.681e-002 0.976876
+0 0 1.
+0 0 1.
+-0.210616 -3.681e-002 0.976876
+-0.213912 -5.981e-003 0.976835
+0 0 1.
+-0.213912 -5.981e-003 0.976835
+0 0 1.
+0 0 1.
+-0.213912 -5.981e-003 0.976835
+-0.213711 1.2547e-002 0.976816
+0 0 1.
+0 0 1.
+-0.212229 2.7639e-002 0.976829
+0 0 1.
+0 0 1.
+-0.213711 1.2547e-002 0.976816
+-0.212229 2.7639e-002 0.976829
+0 0 1.
+-0.207878 5.1226e-002 0.976812
+0 0 1.
+0 0 1.
+-0.212229 2.7639e-002 0.976829
+-0.207878 5.1226e-002 0.976812
+0 0 1.
+-0.194412 8.8576e-002 0.976913
+0 0 1.
+0 0 1.
+-0.207878 5.1226e-002 0.976812
+-0.194412 8.8576e-002 0.976913
+-0.194412 8.8576e-002 0.976913
+0 0 1.
+0 0 1.
+-0.194412 8.8576e-002 0.976913
+-0.169282 0.13038 0.976906
+0 0 1.
+-0.169282 0.13038 0.976906
+0 0 1.
+0 0 1.
+-0.169282 0.13038 0.976906
+-0.146932 0.155951 0.976775
+0 0 1.
+0 0 1.
+-0.128098 0.171422 0.976834
+0 0 1.
+0 0 1.
+-0.146932 0.155951 0.976775
+-0.128098 0.171422 0.976834
+0 0 1.
+-9.9208e-002 0.189593 0.976838
+0 0 1.
+0 0 1.
+-0.128098 0.171422 0.976834
+-9.9208e-002 0.189593 0.976838
+0 0 1.
+-5.6072e-002 0.206076 0.976928
+0 0 1.
+0 0 1.
+-9.9208e-002 0.189593 0.976838
+-5.6072e-002 0.206076 0.976928
+-5.6072e-002 0.206076 0.976928
+0 0 1.
+0 0 1.
+-5.6072e-002 0.206076 0.976928
+-9.466e-003 0.213666 0.976861
+0 0 1.
+-9.466e-003 0.213666 0.976861
+0 0 1.
+0 0 1.
+-9.466e-003 0.213666 0.976861
+2.1471e-002 0.213119 0.97679
+0 0 1.
+0 0 1.
+4.5575e-002 0.209085 0.976835
+0 0 1.
+0 0 1.
+2.1471e-002 0.213119 0.97679
+4.5575e-002 0.209085 0.976835
+0 0 1.
+7.8263e-002 0.199151 0.976839
+0 0 1.
+0 0 1.
+4.5575e-002 0.209085 0.976835
+7.8263e-002 0.199151 0.976839
+0 0 1.
+0.1188 0.177531 0.976918
+0 0 1.
+0 0 1.
+7.8263e-002 0.199151 0.976839
+0.1188 0.177531 0.976918
+0.1188 0.177531 0.976918
+0 0 1.
+0 0 1.
+0.1188 0.177531 0.976918
+0.155836 0.146395 0.976874
+0 0 1.
+0.155836 0.146395 0.976874
+0 0 1.
+0 0 1.
+0.155836 0.146395 0.976874
+0.177305 0.120164 0.976792
+0 0 1.
+0 0 1.
+0.190382 9.7616e-002 0.976845
+0 0 1.
+0 0 1.
+0.177305 0.120164 0.976792
+0.190382 9.7616e-002 0.976845
+0 0 1.
+0.202462 6.9121e-002 0.976848
+0 0 1.
+0 0 1.
+0.190382 9.7616e-002 0.976845
+0.202462 6.9121e-002 0.976848
+0 0 1.
+0.210782 3.5708e-002 0.976881
+0 0 1.
+0 0 1.
+0.202462 6.9121e-002 0.976848
+0.210782 3.5708e-002 0.976881
+0.210782 3.5708e-002 0.976881
+0 0 1.
+0 0 1.
+0.210782 3.5708e-002 0.976881
+0.213866 9.537e-003 0.976816
+0 0 1.
+0.213866 9.537e-003 0.976816
+0 0 1.
+0 0 1.
+0.213866 9.537e-003 0.976816
+0.21403 5.64e-004 0.976827
+0 0 1.
+0.21403 5.64e-004 0.976827
+0.70711 0 0.707104
+0.214 0 0.976834
+0.21403 5.64e-004 0.976827
+0.707157 9.55e-004 0.707056
+0.70711 0 0.707104
+0.214 0 0.976834
+0.70711 0 0.707104
+0.214 0 0.976834
+0.214 0 0.976834
+0.70711 0 0.707104
+0.70711 0 0.707104
+0.214 0 0.976834
+0.707141 -1.1e-005 0.707072
+0.214022 -7.e-006 0.976829
+0.214 0 0.976834
+0.70711 0 0.707104
+0.707141 -1.1e-005 0.707072
+0.214022 -7.e-006 0.976829
+0.706737 -2.2033e-002 0.707133
+0.213894 -6.694e-003 0.976834
+0.214022 -7.e-006 0.976829
+0.707141 -1.1e-005 0.707072
+0.706737 -2.2033e-002 0.707133
+0.213894 -6.694e-003 0.976834
+0.702685 -7.8182e-002 0.707193
+0.212669 -2.3696e-002 0.976837
+0.213894 -6.694e-003 0.976834
+0.706737 -2.2033e-002 0.707133
+0.702685 -7.8182e-002 0.707193
+0.212669 -2.3696e-002 0.976837
+0.689326 -0.156812 0.707277
+0.208628 -4.7481e-002 0.976842
+0.212669 -2.3696e-002 0.976837
+0.702685 -7.8182e-002 0.707193
+0.689326 -0.156812 0.707277
+0.208628 -4.7481e-002 0.976842
+0.659991 -0.25309 0.70736
+0.199754 -7.662e-002 0.976846
+0.208628 -4.7481e-002 0.976842
+0.689326 -0.156812 0.707277
+0.659991 -0.25309 0.70736
+0.199754 -7.662e-002 0.976846
+0.607809 -0.360339 0.707619
+0.183919 -0.109036 0.976875
+0.199754 -7.662e-002 0.976846
+0.659991 -0.25309 0.70736
+0.607809 -0.360339 0.707619
+0.607809 -0.360339 0.707619
+0.163552 -0.137899 0.976849
+0.183919 -0.109036 0.976875
+0.607809 -0.360339 0.707619
+0.540278 -0.455769 0.707372
+0.163552 -0.137899 0.976849
+0.540278 -0.455769 0.707372
+0.145834 -0.156764 0.97681
+0.163552 -0.137899 0.976849
+0.540278 -0.455769 0.707372
+0.481621 -0.517868 0.707003
+0.145834 -0.156764 0.97681
+0.145834 -0.156764 0.97681
+0.419938 -0.568736 0.707243
+0.127087 -0.172168 0.976835
+0.145834 -0.156764 0.97681
+0.481621 -0.517868 0.707003
+0.419938 -0.568736 0.707243
+0.127087 -0.172168 0.976835
+0.32437 -0.628009 0.707382
+9.8158e-002 -0.190135 0.976839
+0.127087 -0.172168 0.976835
+0.419938 -0.568736 0.707243
+0.32437 -0.628009 0.707382
+9.8158e-002 -0.190135 0.976839
+0.182879 -0.681966 0.708151
+5.5315e-002 -0.206295 0.976925
+9.8158e-002 -0.190135 0.976839
+0.32437 -0.628009 0.707382
+0.182879 -0.681966 0.708151
+0.182879 -0.681966 0.708151
+9.137e-003 -0.21368 0.976861
+5.5315e-002 -0.206295 0.976925
+0.182879 -0.681966 0.708151
+2.9806e-002 -0.706018 0.707566
+9.137e-003 -0.21368 0.976861
+2.9806e-002 -0.706018 0.707566
+-2.1746e-002 -0.213086 0.976791
+9.137e-003 -0.21368 0.976861
+2.9806e-002 -0.706018 0.707566
+-7.207e-002 -0.70365 0.706882
+-2.1746e-002 -0.213086 0.976791
+-2.1746e-002 -0.213086 0.976791
+-0.151984 -0.690433 0.707251
+-4.6033e-002 -0.208981 0.976836
+-2.1746e-002 -0.213086 0.976791
+-7.207e-002 -0.70365 0.706882
+-0.151984 -0.690433 0.707251
+-4.6033e-002 -0.208981 0.976836
+-0.260018 -0.657259 0.707391
+-7.8752e-002 -0.198953 0.97684
+-4.6033e-002 -0.208981 0.976836
+-0.151984 -0.690433 0.707251
+-0.260018 -0.657259 0.707391
+-7.8752e-002 -0.198953 0.97684
+-0.393269 -0.586471 0.708089
+-0.118982 -0.177416 0.976917
+-7.8752e-002 -0.198953 0.97684
+-0.260018 -0.657259 0.707391
+-0.393269 -0.586471 0.708089
+-0.393269 -0.586471 0.708089
+-0.155469 -0.146808 0.976871
+-0.118982 -0.177416 0.976917
+-0.393269 -0.586471 0.708089
+-0.513965 -0.48482 0.707664
+-0.155469 -0.146808 0.976871
+-0.513965 -0.48482 0.707664
+-0.176571 -0.121232 0.976793
+-0.155469 -0.146808 0.976871
+-0.513965 -0.48482 0.707664
+-0.58325 -0.400119 0.706912
+-0.176571 -0.121232 0.976793
+-0.176571 -0.121232 0.976793
+-0.626465 -0.32751 0.707304
+-0.189613 -9.9111e-002 0.976844
+-0.176571 -0.121232 0.976793
+-0.58325 -0.400119 0.706912
+-0.626465 -0.32751 0.707304
+-0.189613 -9.9111e-002 0.976844
+-0.667095 -0.233688 0.707371
+-0.201911 -7.072e-002 0.976847
+-0.189613 -9.9111e-002 0.976844
+-0.626465 -0.32751 0.707304
+-0.667095 -0.233688 0.707371
+-0.201911 -7.072e-002 0.976847
+-0.696066 -0.121631 0.7076
+-0.210616 -3.681e-002 0.976876
+-0.201911 -7.072e-002 0.976847
+-0.667095 -0.233688 0.707371
+-0.696066 -0.121631 0.7076
+-0.696066 -0.121631 0.7076
+-0.213912 -5.981e-003 0.976835
+-0.210616 -3.681e-002 0.976876
+-0.696066 -0.121631 0.7076
+-0.706726 -1.9649e-002 0.707214
+-0.213912 -5.981e-003 0.976835
+-0.706726 -1.9649e-002 0.707214
+-0.213711 1.2547e-002 0.976816
+-0.213912 -5.981e-003 0.976835
+-0.706726 -1.9649e-002 0.707214
+-0.705984 4.1513e-002 0.70701
+-0.213711 1.2547e-002 0.976816
+-0.213711 1.2547e-002 0.976816
+-0.70117 9.1275e-002 0.707128
+-0.212229 2.7639e-002 0.976829
+-0.213711 1.2547e-002 0.976816
+-0.705984 4.1513e-002 0.70701
+-0.70117 9.1275e-002 0.707128
+-0.212229 2.7639e-002 0.976829
+-0.686602 0.169075 0.7071
+-0.207878 5.1226e-002 0.976812
+-0.212229 2.7639e-002 0.976829
+-0.70117 9.1275e-002 0.707128
+-0.686602 0.169075 0.7071
+-0.207878 5.1226e-002 0.976812
+-0.642668 0.292703 0.708027
+-0.194412 8.8576e-002 0.976913
+-0.207878 5.1226e-002 0.976812
+-0.686602 0.169075 0.7071
+-0.642668 0.292703 0.708027
+-0.642668 0.292703 0.708027
+-0.169282 0.13038 0.976906
+-0.194412 8.8576e-002 0.976913
+-0.642668 0.292703 0.708027
+-0.559244 0.431317 0.707963
+-0.169282 0.13038 0.976906
+-0.559244 0.431317 0.707963
+-0.146932 0.155951 0.976775
+-0.169282 0.13038 0.976906
+-0.559244 0.431317 0.707963
+-0.484845 0.515169 0.706772
+-0.146932 0.155951 0.976775
+-0.146932 0.155951 0.976775
+-0.423273 0.56626 0.707241
+-0.128098 0.171422 0.976834
+-0.146932 0.155951 0.976775
+-0.484845 0.515169 0.706772
+-0.423273 0.56626 0.707241
+-0.128098 0.171422 0.976834
+-0.327839 0.626206 0.707381
+-9.9208e-002 0.189593 0.976838
+-0.128098 0.171422 0.976834
+-0.423273 0.56626 0.707241
+-0.327839 0.626206 0.707381
+-9.9208e-002 0.189593 0.976838
+-0.185386 0.681257 0.708182
+-5.6072e-002 0.206076 0.976928
+-9.9208e-002 0.189593 0.976838
+-0.327839 0.626206 0.707381
+-0.185386 0.681257 0.708182
+-0.185386 0.681257 0.708182
+-9.466e-003 0.213666 0.976861
+-5.6072e-002 0.206076 0.976928
+-0.185386 0.681257 0.708182
+-3.0887e-002 0.705966 0.707572
+-9.466e-003 0.213666 0.976861
+-3.0887e-002 0.705966 0.707572
+2.1471e-002 0.213119 0.97679
+-9.466e-003 0.213666 0.976861
+-3.0887e-002 0.705966 0.707572
+7.1165e-002 0.703752 0.706873
+2.1471e-002 0.213119 0.97679
+2.1471e-002 0.213119 0.97679
+0.150468 0.690771 0.707245
+4.5575e-002 0.209085 0.976835
+2.1471e-002 0.213119 0.97679
+7.1165e-002 0.703752 0.706873
+0.150468 0.690771 0.707245
+4.5575e-002 0.209085 0.976835
+0.258394 0.657904 0.707386
+7.8263e-002 0.199151 0.976839
+4.5575e-002 0.209085 0.976835
+0.150468 0.690771 0.707245
+0.258394 0.657904 0.707386
+7.8263e-002 0.199151 0.976839
+0.392664 0.586852 0.70811
+0.1188 0.177531 0.976918
+7.8263e-002 0.199151 0.976839
+0.258394 0.657904 0.707386
+0.392664 0.586852 0.70811
+0.392664 0.586852 0.70811
+0.155836 0.146395 0.976874
+0.1188 0.177531 0.976918
+0.392664 0.586852 0.70811
+0.515198 0.483454 0.707703
+0.155836 0.146395 0.976874
+0.515198 0.483454 0.707703
+0.177305 0.120164 0.976792
+0.155836 0.146395 0.976874
+0.515198 0.483454 0.707703
+0.585673 0.39657 0.706908
+0.177305 0.120164 0.976792
+0.177305 0.120164 0.976792
+0.629014 0.322571 0.707311
+0.190382 9.7616e-002 0.976845
+0.177305 0.120164 0.976792
+0.585673 0.39657 0.706908
+0.629014 0.322571 0.707311
+0.190382 9.7616e-002 0.976845
+0.668924 0.228403 0.70737
+0.202462 6.9121e-002 0.976848
+0.190382 9.7616e-002 0.976845
+0.629014 0.322571 0.707311
+0.668924 0.228403 0.70737
+0.202462 6.9121e-002 0.976848
+0.696672 0.117984 0.707621
+0.210782 3.5708e-002 0.976881
+0.202462 6.9121e-002 0.976848
+0.668924 0.228403 0.70737
+0.696672 0.117984 0.707621
+0.696672 0.117984 0.707621
+0.213866 9.537e-003 0.976816
+0.210782 3.5708e-002 0.976881
+0.696672 0.117984 0.707621
+0.706503 3.0553e-002 0.707051
+0.213866 9.537e-003 0.976816
+0.706503 3.0553e-002 0.707051
+0.21403 5.64e-004 0.976827
+0.213866 9.537e-003 0.976816
+0.706503 3.0553e-002 0.707051
+0.707157 9.55e-004 0.707056
+0.21403 5.64e-004 0.976827
+0.707157 9.55e-004 0.707056
+0.976835 0 0.213996
+0.70711 0 0.707104
+0.707157 9.55e-004 0.707056
+0.976842 3.53e-004 0.213961
+0.976835 0 0.213996
+0.70711 0 0.707104
+0.976835 0 0.213996
+0.70711 0 0.707104
+0.70711 0 0.707104
+0.976835 0 0.213996
+0.976835 0 0.213996
+0.70711 0 0.707104
+0.976839 -4.e-006 0.213974
+0.707141 -1.1e-005 0.707072
+0.70711 0 0.707104
+0.976835 0 0.213996
+0.976839 -4.e-006 0.213974
+0.707141 -1.1e-005 0.707072
+0.976363 -3.0355e-002 0.213996
+0.706737 -2.2033e-002 0.707133
+0.707141 -1.1e-005 0.707072
+0.976839 -4.e-006 0.213974
+0.976363 -3.0355e-002 0.213996
+0.706737 -2.2033e-002 0.707133
+0.970853 -0.10791 0.214011
+0.702685 -7.8182e-002 0.707193
+0.706737 -2.2033e-002 0.707133
+0.976363 -3.0355e-002 0.213996
+0.970853 -0.10791 0.214011
+0.702685 -7.8182e-002 0.707193
+0.952507 -0.216613 0.214032
+0.689326 -0.156812 0.707277
+0.702685 -7.8182e-002 0.707193
+0.970853 -0.10791 0.214011
+0.952507 -0.216613 0.214032
+0.689326 -0.156812 0.707277
+0.912081 -0.3497 0.214052
+0.659991 -0.25309 0.70736
+0.689326 -0.156812 0.707277
+0.952507 -0.216613 0.214032
+0.912081 -0.3497 0.214052
+0.659991 -0.25309 0.70736
+0.840229 -0.498132 0.214197
+0.607809 -0.360339 0.707619
+0.659991 -0.25309 0.70736
+0.912081 -0.3497 0.214052
+0.840229 -0.498132 0.214197
+0.840229 -0.498132 0.214197
+0.540278 -0.455769 0.707372
+0.607809 -0.360339 0.707619
+0.840229 -0.498132 0.214197
+0.746523 -0.629981 0.214075
+0.540278 -0.455769 0.707372
+0.746523 -0.629981 0.214075
+0.481621 -0.517868 0.707003
+0.540278 -0.455769 0.707372
+0.746523 -0.629981 0.214075
+0.665183 -0.715394 0.213876
+0.481621 -0.517868 0.707003
+0.481621 -0.517868 0.707003
+0.580311 -0.785776 0.213997
+0.419938 -0.568736 0.707243
+0.481621 -0.517868 0.707003
+0.665183 -0.715394 0.213876
+0.580311 -0.785776 0.213997
+0.419938 -0.568736 0.707243
+0.448394 -0.867836 0.21402
+0.32437 -0.628009 0.707382
+0.419938 -0.568736 0.707243
+0.580311 -0.785776 0.213997
+0.448394 -0.867836 0.21402
+0.32437 -0.628009 0.707382
+0.253007 -0.943404 0.214421
+0.182879 -0.681966 0.708151
+0.32437 -0.628009 0.707382
+0.448394 -0.867836 0.21402
+0.253007 -0.943404 0.214421
+0.253007 -0.943404 0.214421
+2.9806e-002 -0.706018 0.707566
+0.182879 -0.681966 0.708151
+0.253007 -0.943404 0.214421
+4.0827e-002 -0.975953 0.214122
+2.9806e-002 -0.706018 0.707566
+4.0827e-002 -0.975953 0.214122
+-7.207e-002 -0.70365 0.706882
+2.9806e-002 -0.706018 0.707566
+4.0827e-002 -0.975953 0.214122
+-9.979e-002 -0.971766 0.213805
+-7.207e-002 -0.70365 0.706882
+-7.207e-002 -0.70365 0.706882
+-0.209907 -0.954011 0.214015
+-0.151984 -0.690433 0.707251
+-7.207e-002 -0.70365 0.706882
+-9.979e-002 -0.971766 0.213805
+-0.209907 -0.954011 0.214015
+-0.151984 -0.690433 0.707251
+-0.359221 -0.90838 0.214022
+-0.260018 -0.657259 0.707391
+-0.151984 -0.690433 0.707251
+-0.209907 -0.954011 0.214015
+-0.359221 -0.90838 0.214022
+-0.260018 -0.657259 0.707391
+-0.543966 -0.811256 0.214394
+-0.393269 -0.586471 0.708089
+-0.260018 -0.657259 0.707391
+-0.359221 -0.90838 0.214022
+-0.543966 -0.811256 0.214394
+-0.543966 -0.811256 0.214394
+-0.513965 -0.48482 0.707664
+-0.393269 -0.586471 0.708089
+-0.543966 -0.811256 0.214394
+-0.710799 -0.669989 0.214195
+-0.513965 -0.48482 0.707664
+-0.710799 -0.669989 0.214195
+-0.58325 -0.400119 0.706912
+-0.513965 -0.48482 0.707664
+-0.710799 -0.669989 0.214195
+-0.8057 -0.552389 0.213808
+-0.58325 -0.400119 0.706912
+-0.58325 -0.400119 0.706912
+-0.865644 -0.452603 0.214036
+-0.626465 -0.32751 0.707304
+-0.58325 -0.400119 0.706912
+-0.8057 -0.552389 0.213808
+-0.865644 -0.452603 0.214036
+-0.626465 -0.32751 0.707304
+-0.921882 -0.322975 0.214058
+-0.667095 -0.233688 0.707371
+-0.626465 -0.32751 0.707304
+-0.865644 -0.452603 0.214036
+-0.921882 -0.322975 0.214058
+-0.667095 -0.233688 0.707371
+-0.962215 -0.168117 0.214194
+-0.696066 -0.121631 0.7076
+-0.667095 -0.233688 0.707371
+-0.921882 -0.322975 0.214058
+-0.962215 -0.168117 0.214194
+-0.962215 -0.168117 0.214194
+-0.706726 -1.9649e-002 0.707214
+-0.696066 -0.121631 0.7076
+-0.962215 -0.168117 0.214194
+-0.976458 -2.704e-002 0.214005
+-0.706726 -1.9649e-002 0.707214
+-0.976458 -2.704e-002 0.214005
+-0.705984 4.1513e-002 0.70701
+-0.706726 -1.9649e-002 0.707214
+-0.976458 -2.704e-002 0.214005
+-0.975164 5.7402e-002 0.213915
+-0.705984 4.1513e-002 0.70701
+-0.705984 4.1513e-002 0.70701
+-0.968671 0.126057 0.213975
+-0.70117 9.1275e-002 0.707128
+-0.705984 4.1513e-002 0.70701
+-0.975164 5.7402e-002 0.213915
+-0.968671 0.126057 0.213975
+-0.70117 9.1275e-002 0.707128
+-0.948548 0.233462 0.213898
+-0.686602 0.169075 0.7071
+-0.70117 9.1275e-002 0.707128
+-0.968671 0.126057 0.213975
+-0.948548 0.233462 0.213898
+-0.686602 0.169075 0.7071
+-0.888938 0.404769 0.214361
+-0.642668 0.292703 0.708027
+-0.686602 0.169075 0.7071
+-0.948548 0.233462 0.213898
+-0.888938 0.404769 0.214361
+-0.888938 0.404769 0.214361
+-0.559244 0.431317 0.707963
+-0.642668 0.292703 0.708027
+-0.888938 0.404769 0.214361
+-0.773165 0.596887 0.214343
+-0.559244 0.431317 0.707963
+-0.773165 0.596887 0.214343
+-0.484845 0.515169 0.706772
+-0.559244 0.431317 0.707963
+-0.773165 0.596887 0.214343
+-0.669236 0.711652 0.213717
+-0.484845 0.515169 0.706772
+-0.484845 0.515169 0.706772
+-0.584918 0.782352 0.214001
+-0.423273 0.56626 0.707241
+-0.484845 0.515169 0.706772
+-0.669236 0.711652 0.213717
+-0.584918 0.782352 0.214001
+-0.423273 0.56626 0.707241
+-0.453192 0.865341 0.214016
+-0.327839 0.626206 0.707381
+-0.423273 0.56626 0.707241
+-0.584918 0.782352 0.214001
+-0.453192 0.865341 0.214016
+-0.327839 0.626206 0.707381
+-0.256487 0.942461 0.214435
+-0.185386 0.681257 0.708182
+-0.327839 0.626206 0.707381
+-0.453192 0.865341 0.214016
+-0.256487 0.942461 0.214435
+-0.256487 0.942461 0.214435
+-3.0887e-002 0.705966 0.707572
+-0.185386 0.681257 0.708182
+-0.256487 0.942461 0.214435
+-4.2314e-002 0.975888 0.214129
+-3.0887e-002 0.705966 0.707572
+-4.2314e-002 0.975888 0.214129
+7.1165e-002 0.703752 0.706873
+-3.0887e-002 0.705966 0.707572
+-4.2314e-002 0.975888 0.214129
+9.8544e-002 0.971897 0.213788
+7.1165e-002 0.703752 0.706873
+7.1165e-002 0.703752 0.706873
+0.207813 0.954472 0.214002
+0.150468 0.690771 0.707245
+7.1165e-002 0.703752 0.706873
+9.8544e-002 0.971897 0.213788
+0.207813 0.954472 0.214002
+0.150468 0.690771 0.707245
+0.356971 0.909267 0.214021
+0.258394 0.657904 0.707386
+0.150468 0.690771 0.707245
+0.207813 0.954472 0.214002
+0.356971 0.909267 0.214021
+0.258394 0.657904 0.707386
+0.543139 0.811809 0.214395
+0.392664 0.586852 0.70811
+0.258394 0.657904 0.707386
+0.356971 0.909267 0.214021
+0.543139 0.811809 0.214395
+0.543139 0.811809 0.214395
+0.515198 0.483454 0.707703
+0.392664 0.586852 0.70811
+0.543139 0.811809 0.214395
+0.712549 0.668126 0.2142
+0.515198 0.483454 0.707703
+0.712549 0.668126 0.2142
+0.585673 0.39657 0.706908
+0.515198 0.483454 0.707703
+0.712549 0.668126 0.2142
+0.80905 0.547474 0.213801
+0.585673 0.39657 0.706908
+0.585673 0.39657 0.706908
+0.869175 0.445779 0.214049
+0.629014 0.322571 0.707311
+0.585673 0.39657 0.706908
+0.80905 0.547474 0.213801
+0.869175 0.445779 0.214049
+0.629014 0.322571 0.707311
+0.924409 0.315666 0.214062
+0.668924 0.228403 0.70737
+0.629014 0.322571 0.707311
+0.869175 0.445779 0.214049
+0.924409 0.315666 0.214062
+0.668924 0.228403 0.70737
+0.963079 0.163066 0.214214
+0.696672 0.117984 0.707621
+0.668924 0.228403 0.70737
+0.924409 0.315666 0.214062
+0.963079 0.163066 0.214214
+0.963079 0.163066 0.214214
+0.706503 3.0553e-002 0.707051
+0.696672 0.117984 0.707621
+0.963079 0.163066 0.214214
+0.975979 4.12e-002 0.213933
+0.706503 3.0553e-002 0.707051
+0.975979 4.12e-002 0.213933
+0.707157 9.55e-004 0.707056
+0.706503 3.0553e-002 0.707051
+0.975979 4.12e-002 0.213933
+0.976842 3.53e-004 0.213961
+0.707157 9.55e-004 0.707056
+0.976842 3.53e-004 0.213961
+1. 0 0
+0.976835 0 0.213996
+0.976842 3.53e-004 0.213961
+1. 0 0
+1. 0 0
+0.976835 0 0.213996
+1. 0 0
+0.976835 0 0.213996
+0.976835 0 0.213996
+1. 0 0
+1. 0 0
+0.976835 0 0.213996
+1. 0 0
+0.976839 -4.e-006 0.213974
+0.976835 0 0.213996
+1. 0 0
+1. 0 0
+0.976839 -4.e-006 0.213974
+0.999518 -3.1048e-002 0
+0.976363 -3.0355e-002 0.213996
+0.976839 -4.e-006 0.213974
+1. 0 0
+0.999518 -3.1048e-002 0
+0.999518 -3.1048e-002 0
+0.970853 -0.10791 0.214011
+0.976363 -3.0355e-002 0.213996
+0.999518 -3.1048e-002 0
+0.993883 -0.110434 0
+0.970853 -0.10791 0.214011
+0.970853 -0.10791 0.214011
+0.975108 -0.221731 0
+0.952507 -0.216613 0.214032
+0.970853 -0.10791 0.214011
+0.993883 -0.110434 0
+0.975108 -0.221731 0
+0.952507 -0.216613 0.214032
+0.933729 -0.357981 2.e-006
+0.912081 -0.3497 0.214052
+0.952507 -0.216613 0.214032
+0.975108 -0.221731 0
+0.933729 -0.357981 2.e-006
+0.912081 -0.3497 0.214052
+0.860193 -0.509969 1.e-005
+0.840229 -0.498132 0.214197
+0.912081 -0.3497 0.214052
+0.933729 -0.357981 2.e-006
+0.860193 -0.509969 1.e-005
+0.840229 -0.498132 0.214197
+0.764204 -0.644975 6.e-006
+0.746523 -0.629981 0.214075
+0.840229 -0.498132 0.214197
+0.860193 -0.509969 1.e-005
+0.764204 -0.644975 6.e-006
+0.746523 -0.629981 0.214075
+0.680915 -0.732363 -5.e-006
+0.665183 -0.715394 0.213876
+0.746523 -0.629981 0.214075
+0.764204 -0.644975 6.e-006
+0.680915 -0.732363 -5.e-006
+0.665183 -0.715394 0.213876
+0.594097 -0.804393 -4.e-006
+0.580311 -0.785776 0.213997
+0.665183 -0.715394 0.213876
+0.680915 -0.732363 -5.e-006
+0.594097 -0.804393 -4.e-006
+0.580311 -0.785776 0.213997
+0.459067 -0.888402 4.e-006
+0.448394 -0.867836 0.21402
+0.580311 -0.785776 0.213997
+0.594097 -0.804393 -4.e-006
+0.459067 -0.888402 4.e-006
+0.459067 -0.888402 4.e-006
+0.253007 -0.943404 0.214421
+0.448394 -0.867836 0.21402
+0.459067 -0.888402 4.e-006
+0.259037 -0.965867 0
+0.253007 -0.943404 0.214421
+0.253007 -0.943404 0.214421
+4.1674e-002 -0.999131 -7.e-006
+4.0827e-002 -0.975953 0.214122
+0.253007 -0.943404 0.214421
+0.259037 -0.965867 0
+4.1674e-002 -0.999131 -7.e-006
+4.1674e-002 -0.999131 -7.e-006
+-9.979e-002 -0.971766 0.213805
+4.0827e-002 -0.975953 0.214122
+4.1674e-002 -0.999131 -7.e-006
+-0.102238 -0.99476 9.e-006
+-9.979e-002 -0.971766 0.213805
+-0.102238 -0.99476 9.e-006
+-0.209907 -0.954011 0.214015
+-9.979e-002 -0.971766 0.213805
+-0.102238 -0.99476 9.e-006
+-0.214857 -0.976646 8.e-006
+-0.209907 -0.954011 0.214015
+-0.209907 -0.954011 0.214015
+-0.367704 -0.929943 -1.e-006
+-0.359221 -0.90838 0.214022
+-0.209907 -0.954011 0.214015
+-0.214857 -0.976646 8.e-006
+-0.367704 -0.929943 -1.e-006
+-0.367704 -0.929943 -1.e-006
+-0.543966 -0.811256 0.214394
+-0.359221 -0.90838 0.214022
+-0.367704 -0.929943 -1.e-006
+-0.556907 -0.830575 1.1e-005
+-0.543966 -0.811256 0.214394
+-0.543966 -0.811256 0.214394
+-0.72777 -0.685821 1.7e-005
+-0.710799 -0.669989 0.214195
+-0.543966 -0.811256 0.214394
+-0.556907 -0.830575 1.1e-005
+-0.72777 -0.685821 1.7e-005
+-0.72777 -0.685821 1.7e-005
+-0.8057 -0.552389 0.213808
+-0.710799 -0.669989 0.214195
+-0.72777 -0.685821 1.7e-005
+-0.824824 -0.565389 3.e-006
+-0.8057 -0.552389 0.213808
+-0.8057 -0.552389 0.213808
+-0.886173 -0.463354 -1.e-005
+-0.865644 -0.452603 0.214036
+-0.8057 -0.552389 0.213808
+-0.824824 -0.565389 3.e-006
+-0.886173 -0.463354 -1.e-005
+-0.865644 -0.452603 0.214036
+-0.943754 -0.330648 -3.e-006
+-0.921882 -0.322975 0.214058
+-0.865644 -0.452603 0.214036
+-0.886173 -0.463354 -1.e-005
+-0.943754 -0.330648 -3.e-006
+-0.921882 -0.322975 0.214058
+-0.985078 -0.172106 9.99999e-007
+-0.962215 -0.168117 0.214194
+-0.921882 -0.322975 0.214058
+-0.943754 -0.330648 -3.e-006
+-0.985078 -0.172106 9.99999e-007
+-0.985078 -0.172106 9.99999e-007
+-0.976458 -2.704e-002 0.214005
+-0.962215 -0.168117 0.214194
+-0.985078 -0.172106 9.99999e-007
+-0.999618 -2.7648e-002 0
+-0.976458 -2.704e-002 0.214005
+-0.976458 -2.704e-002 0.214005
+-0.998271 5.8782e-002 0
+-0.975164 5.7402e-002 0.213915
+-0.976458 -2.704e-002 0.214005
+-0.999618 -2.7648e-002 0
+-0.998271 5.8782e-002 0
+-0.975164 5.7402e-002 0.213915
+-0.99164 0.129034 0
+-0.968671 0.126057 0.213975
+-0.975164 5.7402e-002 0.213915
+-0.998271 5.8782e-002 0
+-0.99164 0.129034 0
+-0.968671 0.126057 0.213975
+-0.97103 0.238959 0
+-0.948548 0.233462 0.213898
+-0.968671 0.126057 0.213975
+-0.99164 0.129034 0
+-0.97103 0.238959 0
+-0.948548 0.233462 0.213898
+-0.910106 0.414376 1.e-006
+-0.888938 0.404769 0.214361
+-0.948548 0.233462 0.213898
+-0.97103 0.238959 0
+-0.910106 0.414376 1.e-006
+-0.910106 0.414376 1.e-006
+-0.773165 0.596887 0.214343
+-0.888938 0.404769 0.214361
+-0.910106 0.414376 1.e-006
+-0.791469 0.611209 -1.e-006
+-0.773165 0.596887 0.214343
+-0.773165 0.596887 0.214343
+-0.684971 0.72857 -2.e-006
+-0.669236 0.711652 0.213717
+-0.773165 0.596887 0.214343
+-0.791469 0.611209 -1.e-006
+-0.684971 0.72857 -2.e-006
+-0.669236 0.711652 0.213717
+-0.598814 0.800888 -2.e-006
+-0.584918 0.782352 0.214001
+-0.669236 0.711652 0.213717
+-0.684971 0.72857 -2.e-006
+-0.598814 0.800888 -2.e-006
+-0.598814 0.800888 -2.e-006
+-0.453192 0.865341 0.214016
+-0.584918 0.782352 0.214001
+-0.598814 0.800888 -2.e-006
+-0.46398 0.885846 -1.e-006
+-0.453192 0.865341 0.214016
+-0.46398 0.885846 -1.e-006
+-0.256487 0.942461 0.214435
+-0.453192 0.865341 0.214016
+-0.46398 0.885846 -1.e-006
+-0.262602 0.964904 0
+-0.256487 0.942461 0.214435
+-0.256487 0.942461 0.214435
+-4.3194e-002 0.999067 -3.e-006
+-4.2314e-002 0.975888 0.214129
+-0.256487 0.942461 0.214435
+-0.262602 0.964904 0
+-4.3194e-002 0.999067 -3.e-006
+-4.2314e-002 0.975888 0.214129
+0.100963 0.99489 -2.e-006
+9.8544e-002 0.971897 0.213788
+-4.2314e-002 0.975888 0.214129
+-4.3194e-002 0.999067 -3.e-006
+0.100963 0.99489 -2.e-006
+9.8544e-002 0.971897 0.213788
+0.212712 0.977115 -1.e-006
+0.207813 0.954472 0.214002
+9.8544e-002 0.971897 0.213788
+0.100963 0.99489 -2.e-006
+0.212712 0.977115 -1.e-006
+0.212712 0.977115 -1.e-006
+0.356971 0.909267 0.214021
+0.207813 0.954472 0.214002
+0.212712 0.977115 -1.e-006
+0.365399 0.930851 1.e-006
+0.356971 0.909267 0.214021
+0.365399 0.930851 1.e-006
+0.543139 0.811809 0.214395
+0.356971 0.909267 0.214021
+0.365399 0.930851 1.e-006
+0.55606 0.831142 2.e-006
+0.543139 0.811809 0.214395
+0.543139 0.811809 0.214395
+0.729565 0.683911 3.e-006
+0.712549 0.668126 0.2142
+0.543139 0.811809 0.214395
+0.55606 0.831142 2.e-006
+0.729565 0.683911 3.e-006
+0.712549 0.668126 0.2142
+0.828253 0.560354 2.e-006
+0.80905 0.547474 0.213801
+0.712549 0.668126 0.2142
+0.729565 0.683911 3.e-006
+0.828253 0.560354 2.e-006
+0.828253 0.560354 2.e-006
+0.869175 0.445779 0.214049
+0.80905 0.547474 0.213801
+0.828253 0.560354 2.e-006
+0.889791 0.456368 0
+0.869175 0.445779 0.214049
+0.889791 0.456368 0
+0.924409 0.315666 0.214062
+0.869175 0.445779 0.214049
+0.889791 0.456368 0
+0.946343 0.323165 1.e-006
+0.924409 0.315666 0.214062
+0.924409 0.315666 0.214062
+0.985969 0.166931 1.e-006
+0.963079 0.163066 0.214214
+0.924409 0.315666 0.214062
+0.946343 0.323165 1.e-006
+0.985969 0.166931 1.e-006
+0.985969 0.166931 1.e-006
+0.975979 4.12e-002 0.213933
+0.963079 0.163066 0.214214
+0.985969 0.166931 1.e-006
+0.999126 4.1804e-002 -1.e-006
+0.975979 4.12e-002 0.213933
+0.975979 4.12e-002 0.213933
+1. 0 0
+0.976842 3.53e-004 0.213961
+0.975979 4.12e-002 0.213933
+0.999126 4.1804e-002 -1.e-006
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+0.999518 -3.1048e-002 0
+0.999518 -3.1048e-002 0
+1. 0 0
+1. 0 0
+0.999518 -3.1048e-002 0
+0.999518 -3.1048e-002 0
+0.993883 -0.110434 0
+0.993883 -0.110434 0
+0.999518 -3.1048e-002 0
+0.999518 -3.1048e-002 0
+0.993883 -0.110434 0
+0.993883 -0.110434 0
+0.975108 -0.221731 0
+0.993883 -0.110434 0
+0.993883 -0.110434 0
+0.975108 -0.221731 0
+0.975108 -0.221731 0
+0.975108 -0.221731 0
+0.933729 -0.357981 0
+0.933729 -0.357981 2.e-006
+0.975108 -0.221731 0
+0.975108 -0.221731 0
+0.933729 -0.357981 0
+0.933729 -0.357981 0
+0.860193 -0.509969 1.e-005
+0.933729 -0.357981 2.e-006
+0.933729 -0.357981 0
+0.860193 -0.509969 0
+0.860193 -0.509969 1.e-005
+0.860193 -0.509969 0
+0.764204 -0.644975 6.e-006
+0.860193 -0.509969 1.e-005
+0.860193 -0.509969 0
+0.764204 -0.644975 0
+0.764204 -0.644975 6.e-006
+0.764204 -0.644975 6.e-006
+0.680915 -0.732363 0
+0.680915 -0.732363 -5.e-006
+0.764204 -0.644975 6.e-006
+0.764204 -0.644975 0
+0.680915 -0.732363 0
+0.680915 -0.732363 -5.e-006
+0.594097 -0.804393 0
+0.594097 -0.804393 -4.e-006
+0.680915 -0.732363 -5.e-006
+0.680915 -0.732363 0
+0.594097 -0.804393 0
+0.594097 -0.804393 -4.e-006
+0.459067 -0.888402 0
+0.459067 -0.888402 4.e-006
+0.594097 -0.804393 -4.e-006
+0.594097 -0.804393 0
+0.459067 -0.888402 0
+0.459067 -0.888402 0
+0.259037 -0.965867 0
+0.459067 -0.888402 4.e-006
+0.459067 -0.888402 0
+0.259037 -0.965867 0
+0.259037 -0.965867 0
+0.259037 -0.965867 0
+4.1674e-002 -0.999131 -7.e-006
+0.259037 -0.965867 0
+0.259037 -0.965867 0
+4.1674e-002 -0.999131 0
+4.1674e-002 -0.999131 -7.e-006
+4.1674e-002 -0.999131 -7.e-006
+-0.102238 -0.99476 0
+-0.102238 -0.99476 9.e-006
+4.1674e-002 -0.999131 -7.e-006
+4.1674e-002 -0.999131 0
+-0.102238 -0.99476 0
+-0.102238 -0.99476 9.e-006
+-0.214857 -0.976646 0
+-0.214857 -0.976646 8.e-006
+-0.102238 -0.99476 9.e-006
+-0.102238 -0.99476 0
+-0.214857 -0.976646 0
+-0.214857 -0.976646 8.e-006
+-0.367704 -0.929943 0
+-0.367704 -0.929943 -1.e-006
+-0.214857 -0.976646 8.e-006
+-0.214857 -0.976646 0
+-0.367704 -0.929943 0
+-0.367704 -0.929943 0
+-0.556907 -0.830575 1.1e-005
+-0.367704 -0.929943 -1.e-006
+-0.367704 -0.929943 0
+-0.556907 -0.830575 0
+-0.556907 -0.830575 1.1e-005
+-0.556907 -0.830575 1.1e-005
+-0.72777 -0.685821 0
+-0.72777 -0.685821 1.7e-005
+-0.556907 -0.830575 1.1e-005
+-0.556907 -0.830575 0
+-0.72777 -0.685821 0
+-0.72777 -0.685821 1.7e-005
+-0.824824 -0.565389 0
+-0.824824 -0.565389 3.e-006
+-0.72777 -0.685821 1.7e-005
+-0.72777 -0.685821 0
+-0.824824 -0.565389 0
+-0.824824 -0.565389 3.e-006
+-0.886173 -0.463354 0
+-0.886173 -0.463354 -1.e-005
+-0.824824 -0.565389 3.e-006
+-0.824824 -0.565389 0
+-0.886173 -0.463354 0
+-0.886173 -0.463354 -1.e-005
+-0.943754 -0.330648 0
+-0.943754 -0.330648 -3.e-006
+-0.886173 -0.463354 -1.e-005
+-0.886173 -0.463354 0
+-0.943754 -0.330648 0
+-0.943754 -0.330648 0
+-0.985078 -0.172106 9.99999e-007
+-0.943754 -0.330648 -3.e-006
+-0.943754 -0.330648 0
+-0.985078 -0.172106 0
+-0.985078 -0.172106 9.99999e-007
+-0.985078 -0.172106 9.99999e-007
+-0.999618 -2.7648e-002 0
+-0.999618 -2.7648e-002 0
+-0.985078 -0.172106 9.99999e-007
+-0.985078 -0.172106 0
+-0.999618 -2.7648e-002 0
+-0.999618 -2.7648e-002 0
+-0.998271 5.8782e-002 0
+-0.998271 5.8782e-002 0
+-0.999618 -2.7648e-002 0
+-0.999618 -2.7648e-002 0
+-0.998271 5.8782e-002 0
+-0.998271 5.8782e-002 0
+-0.99164 0.129034 0
+-0.998271 5.8782e-002 0
+-0.998271 5.8782e-002 0
+-0.99164 0.129034 0
+-0.99164 0.129034 0
+-0.99164 0.129034 0
+-0.97103 0.238959 0
+-0.97103 0.238959 0
+-0.99164 0.129034 0
+-0.99164 0.129034 0
+-0.97103 0.238959 0
+-0.97103 0.238959 0
+-0.910106 0.414376 0
+-0.910106 0.414376 1.e-006
+-0.97103 0.238959 0
+-0.97103 0.238959 0
+-0.910106 0.414376 0
+-0.910106 0.414376 0
+-0.791469 0.611209 -1.e-006
+-0.910106 0.414376 1.e-006
+-0.910106 0.414376 0
+-0.791469 0.611209 0
+-0.791469 0.611209 -1.e-006
+-0.791469 0.611209 0
+-0.684971 0.72857 -2.e-006
+-0.791469 0.611209 -1.e-006
+-0.791469 0.611209 0
+-0.684971 0.72857 0
+-0.684971 0.72857 -2.e-006
+-0.684971 0.72857 0
+-0.598814 0.800888 -2.e-006
+-0.684971 0.72857 -2.e-006
+-0.684971 0.72857 0
+-0.598814 0.800888 0
+-0.598814 0.800888 -2.e-006
+-0.598814 0.800888 -2.e-006
+-0.46398 0.885846 0
+-0.46398 0.885846 -1.e-006
+-0.598814 0.800888 -2.e-006
+-0.598814 0.800888 0
+-0.46398 0.885846 0
+-0.46398 0.885846 0
+-0.262602 0.964904 0
+-0.46398 0.885846 -1.e-006
+-0.46398 0.885846 0
+-0.262602 0.964904 0
+-0.262602 0.964904 0
+-0.262602 0.964904 0
+-4.3194e-002 0.999067 0
+-4.3194e-002 0.999067 -3.e-006
+-0.262602 0.964904 0
+-0.262602 0.964904 0
+-4.3194e-002 0.999067 0
+-4.3194e-002 0.999067 -3.e-006
+0.100963 0.99489 0
+0.100963 0.99489 -2.e-006
+-4.3194e-002 0.999067 -3.e-006
+-4.3194e-002 0.999067 0
+0.100963 0.99489 0
+0.100963 0.99489 0
+0.212712 0.977115 -1.e-006
+0.100963 0.99489 -2.e-006
+0.100963 0.99489 0
+0.212712 0.977115 0
+0.212712 0.977115 -1.e-006
+0.212712 0.977115 -1.e-006
+0.365399 0.930851 0
+0.365399 0.930851 1.e-006
+0.212712 0.977115 -1.e-006
+0.212712 0.977115 0
+0.365399 0.930851 0
+0.365399 0.930851 1.e-006
+0.55606 0.831142 0
+0.55606 0.831142 2.e-006
+0.365399 0.930851 1.e-006
+0.365399 0.930851 0
+0.55606 0.831142 0
+0.55606 0.831142 2.e-006
+0.729565 0.683911 0
+0.729565 0.683911 3.e-006
+0.55606 0.831142 2.e-006
+0.55606 0.831142 0
+0.729565 0.683911 0
+0.729565 0.683911 0
+0.828253 0.560354 2.e-006
+0.729565 0.683911 3.e-006
+0.729565 0.683911 0
+0.828253 0.560354 0
+0.828253 0.560354 2.e-006
+0.828253 0.560354 2.e-006
+0.889791 0.456368 0
+0.889791 0.456368 0
+0.828253 0.560354 2.e-006
+0.828253 0.560354 0
+0.889791 0.456368 0
+0.889791 0.456368 0
+0.946343 0.323165 0
+0.946343 0.323165 1.e-006
+0.889791 0.456368 0
+0.889791 0.456368 0
+0.946343 0.323165 0
+0.946343 0.323165 0
+0.985969 0.166931 1.e-006
+0.946343 0.323165 1.e-006
+0.946343 0.323165 0
+0.985969 0.166931 0
+0.985969 0.166931 1.e-006
+0.985969 0.166931 0
+0.999126 4.1804e-002 -1.e-006
+0.985969 0.166931 1.e-006
+0.985969 0.166931 0
+0.999126 4.1804e-002 0
+0.999126 4.1804e-002 -1.e-006
+0.999126 4.1804e-002 -1.e-006
+1. 0 0
+1. 0 0
+0.999126 4.1804e-002 -1.e-006
+0.999126 4.1804e-002 0
+1. 0 0
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0.145224 -0.145224 0.978683
+0 0 1.
+0 0 1.
+0.145224 -0.145224 0.978683
+0.145224 0.145224 0.978683
+0 0 1.
+0 0 1.
+-0.145224 0.145224 0.978683
+0 0 1.
+0 0 1.
+0.145224 0.145224 0.978683
+-0.145224 0.145224 0.978683
+0 0 1.
+-0.145224 -0.145224 0.978683
+0 0 1.
+0 0 1.
+-0.145224 0.145224 0.978683
+-0.145224 -0.145224 0.978683
+0 0 1.
+0.145224 -0.145224 0.978683
+0 0 1.
+0 0 1.
+-0.145224 -0.145224 0.978683
+0.145224 -0.145224 0.978683
+0.145224 -0.145224 0.978683
+0.587859 0.214298 0.780063
+0.145224 0.145224 0.978683
+0.145224 -0.145224 0.978683
+0.587858 -0.214298 0.780063
+0.587859 0.214298 0.780063
+0.145224 0.145224 0.978683
+-0.214299 0.587864 0.780059
+-0.145224 0.145224 0.978683
+0.145224 0.145224 0.978683
+0.214299 0.587864 0.780059
+-0.214299 0.587864 0.780059
+-0.145224 0.145224 0.978683
+-0.58786 -0.214298 0.780062
+-0.145224 -0.145224 0.978683
+-0.145224 0.145224 0.978683
+-0.58786 0.214299 0.780062
+-0.58786 -0.214298 0.780062
+-0.145224 -0.145224 0.978683
+0.214298 -0.587858 0.780063
+0.145224 -0.145224 0.978683
+-0.145224 -0.145224 0.978683
+-0.214298 -0.587858 0.780063
+0.214298 -0.587858 0.780063
+0.987652 0 0.156666
+0.793525 0 0.608538
+0.793525 0 0.608538
+0.987652 0 0.156666
+0.987652 0 0.156666
+0.793525 0 0.608538
+0 0.793531 0.60853
+0 0.987658 0.156628
+0 0.793531 0.60853
+0 0.793531 0.60853
+0 0.987658 0.156628
+0 0.987658 0.156628
+-0.793526 0 0.608536
+-0.987652 0 0.156663
+-0.793526 0 0.608536
+-0.793526 0 0.608536
+-0.987652 0 0.156663
+-0.987652 0 0.156663
+0 -0.987652 0.156666
+0 -0.793525 0.608538
+0 -0.793525 0.608538
+0 -0.987652 0.156666
+0 -0.987652 0.156666
+0 -0.793525 0.608538
+0.987652 0 0.156666
+1. 0 0
+0.987652 0 0.156666
+0.987652 0 0.156666
+1. 0 0
+1. 0 0
+0 0.987658 0.156628
+0 1. -2.8e-005
+0 0.987658 0.156628
+0 0.987658 0.156628
+0 1. -2.8e-005
+0 1. -2.8e-005
+-0.987652 0 0.156663
+-1. 0 0
+-0.987652 0 0.156663
+-0.987652 0 0.156663
+-1. 0 0
+-1. 0 0
+0 -0.987652 0.156666
+0 -1. 0
+0 -0.987652 0.156666
+0 -0.987652 0.156666
+0 -1. 0
+0 -1. 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+0 1. -2.8e-005
+0 1. 0
+0 1. -2.8e-005
+0 1. -2.8e-005
+0 1. 0
+0 1. 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0.145224 -0.145224 0.978683
+0 0 1.
+0 0 1.
+0.145224 -0.145224 0.978683
+0.145224 0.145226 0.978683
+0 0 1.
+0 0 1.
+-0.145224 0.145226 0.978683
+0 0 1.
+0 0 1.
+0.145224 0.145226 0.978683
+-0.145224 0.145226 0.978683
+0 0 1.
+-0.145224 -0.145224 0.978683
+0 0 1.
+0 0 1.
+-0.145224 0.145226 0.978683
+-0.145224 -0.145224 0.978683
+-0.145224 -0.145224 0.978683
+0 0 1.
+0 0 1.
+-0.145224 -0.145224 0.978683
+0.145224 -0.145224 0.978683
+0 0 1.
+0.145224 -0.145224 0.978683
+0.587859 0.214301 0.780062
+0.145224 0.145226 0.978683
+0.145224 -0.145224 0.978683
+0.587858 -0.214298 0.780063
+0.587859 0.214301 0.780062
+0.145224 0.145226 0.978683
+-0.214298 0.587862 0.78006
+-0.145224 0.145226 0.978683
+0.145224 0.145226 0.978683
+0.214298 0.587862 0.78006
+-0.214298 0.587862 0.78006
+-0.145224 0.145226 0.978683
+-0.587858 -0.214298 0.780063
+-0.145224 -0.145224 0.978683
+-0.145224 0.145226 0.978683
+-0.587859 0.214301 0.780062
+-0.587858 -0.214298 0.780063
+-0.145224 -0.145224 0.978683
+0.214298 -0.587858 0.780063
+0.145224 -0.145224 0.978683
+-0.145224 -0.145224 0.978683
+-0.214298 -0.587858 0.780063
+0.214298 -0.587858 0.780063
+0.987652 0 0.156666
+0.793525 0 0.608538
+0.793525 0 0.608538
+0.987652 0 0.156666
+0.987652 0 0.156666
+0.793525 0 0.608538
+0 0.987648 0.156687
+0 0.793529 0.608533
+0 0.793529 0.608533
+0 0.987648 0.156687
+0 0.987648 0.156687
+0 0.793529 0.608533
+-0.793525 0 0.608538
+-0.987652 0 0.156666
+-0.793525 0 0.608538
+-0.793525 0 0.608538
+-0.987652 0 0.156666
+-0.987652 0 0.156666
+0 -0.793525 0.608538
+0 -0.987652 0.156665
+0 -0.793525 0.608538
+0 -0.793525 0.608538
+0 -0.987652 0.156665
+0 -0.987652 0.156665
+0.987652 0 0.156666
+1. 0 0
+0.987652 0 0.156666
+0.987652 0 0.156666
+1. 0 0
+1. 0 0
+0 0.987648 0.156687
+0 1. 2.4e-005
+0 0.987648 0.156687
+0 0.987648 0.156687
+0 1. 2.4e-005
+0 1. 2.4e-005
+-0.987652 0 0.156666
+-1. 0 0
+-0.987652 0 0.156666
+-0.987652 0 0.156666
+-1. 0 0
+-1. 0 0
+0 -0.987652 0.156665
+0 -1. 0
+0 -0.987652 0.156665
+0 -0.987652 0.156665
+0 -1. 0
+0 -1. 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+0 1. 2.4e-005
+0 1. 0
+0 1. 2.4e-005
+0 1. 2.4e-005
+0 1. 0
+0 1. 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+-0.235143 -4.2415e-002 0.971035
+0 0 1.
+0 0 1.
+-0.235143 -4.2415e-002 0.971035
+-0.208696 -4.7229e-002 0.976839
+0 0 1.
+-0.208696 -4.7229e-002 0.976839
+0 0 1.
+0 0 1.
+-0.208696 -4.7229e-002 0.976839
+-0.211202 -7.1268e-002 0.974841
+0 0 1.
+-0.211202 -7.1268e-002 0.974841
+0 0 1.
+0 0 1.
+-0.211202 -7.1268e-002 0.974841
+-0.111935 -0.191061 0.975175
+0 0 1.
+-0.111935 -0.191061 0.975175
+0 0 1.
+0 0 1.
+-0.111935 -0.191061 0.975175
+0.112061 -2.002e-003 0.993699
+0 0 1.
+0 0 1.
+0.207943 0.192571 0.958997
+0 0 1.
+0 0 1.
+0.112061 -2.002e-003 0.993699
+0.207943 0.192571 0.958997
+0 0 1.
+0.197938 8.1363e-002 0.976832
+0 0 1.
+0 0 1.
+0.207943 0.192571 0.958997
+0.197938 8.1363e-002 0.976832
+0 0 1.
+0.204506 6.2845e-002 0.976846
+0 0 1.
+0 0 1.
+0.197938 8.1363e-002 0.976832
+0.204506 6.2845e-002 0.976846
+0 0 1.
+0.210268 3.9187e-002 0.976858
+0 0 1.
+0 0 1.
+0.204506 6.2845e-002 0.976846
+0.210268 3.9187e-002 0.976858
+0.210268 3.9187e-002 0.976858
+0 0 1.
+0 0 1.
+0.210268 3.9187e-002 0.976858
+0.212949 2.1749e-002 0.976821
+0 0 1.
+0.212949 2.1749e-002 0.976821
+0 0 1.
+0 0 1.
+0.212949 2.1749e-002 0.976821
+0.21362 1.2709e-002 0.976834
+0 0 1.
+0.21362 1.2709e-002 0.976834
+0 0 1.
+0 0 1.
+0.21362 1.2709e-002 0.976834
+0.213924 5.574e-003 0.976834
+0 0 1.
+0.213924 5.574e-003 0.976834
+0 0 1.
+0 0 1.
+0.213924 5.574e-003 0.976834
+0.213999 1.237e-003 0.976833
+0 0 1.
+0.213999 1.237e-003 0.976833
+0 0 1.
+0 0 1.
+0.213999 1.237e-003 0.976833
+0.213999 7.73e-004 0.976834
+0 0 1.
+0.213999 7.73e-004 0.976834
+0 0 1.
+0 0 1.
+0.213999 7.73e-004 0.976834
+0.213979 3.048e-003 0.976834
+0 0 1.
+0.213979 3.048e-003 0.976834
+0 0 1.
+0 0 1.
+0.213979 3.048e-003 0.976834
+0.213883 7.476e-003 0.976831
+0 0 1.
+0.213883 7.476e-003 0.976831
+0 0 1.
+0 0 1.
+0.213883 7.476e-003 0.976831
+0.213364 1.7405e-002 0.976818
+0 0 1.
+0.213364 1.7405e-002 0.976818
+0 0 1.
+0 0 1.
+0.213364 1.7405e-002 0.976818
+0.209953 4.0183e-002 0.976885
+0 0 1.
+0 0 1.
+0.20386 6.5764e-002 0.976789
+0 0 1.
+0 0 1.
+0.209953 4.0183e-002 0.976885
+0.20386 6.5764e-002 0.976789
+0.20386 6.5764e-002 0.976789
+0 0 1.
+0 0 1.
+0.20386 6.5764e-002 0.976789
+0.192271 9.3687e-002 0.97686
+0 0 1.
+0.192271 9.3687e-002 0.97686
+0 0 1.
+0 0 1.
+0.192271 9.3687e-002 0.97686
+0.168241 0.131517 0.976933
+0 0 1.
+0 0 1.
+0.141465 0.160924 0.976776
+0 0 1.
+0 0 1.
+0.168241 0.131517 0.976933
+0.141465 0.160924 0.976776
+0.141465 0.160924 0.976776
+0 0 1.
+0 0 1.
+0.141465 0.160924 0.976776
+0.11297 0.181477 0.976885
+0 0 1.
+0 0 1.
+7.907e-002 0.198725 0.97686
+0 0 1.
+0 0 1.
+0.11297 0.181477 0.976885
+7.907e-002 0.198725 0.97686
+0 0 1.
+5.2384e-002 0.20762 0.976806
+0 0 1.
+0 0 1.
+7.907e-002 0.198725 0.97686
+5.2384e-002 0.20762 0.976806
+5.2384e-002 0.20762 0.976806
+0 0 1.
+0 0 1.
+5.2384e-002 0.20762 0.976806
+2.8652e-002 0.211959 0.976858
+0 0 1.
+0 0 1.
+3.719e-003 0.213936 0.976841
+0 0 1.
+0 0 1.
+2.8652e-002 0.211959 0.976858
+3.719e-003 0.213936 0.976841
+0 0 1.
+-1.4866e-002 0.213585 0.976811
+0 0 1.
+0 0 1.
+3.719e-003 0.213936 0.976841
+-1.4866e-002 0.213585 0.976811
+-1.4866e-002 0.213585 0.976811
+0 0 1.
+0 0 1.
+-1.4866e-002 0.213585 0.976811
+-3.6292e-002 0.210801 0.976855
+0 0 1.
+-3.6292e-002 0.210801 0.976855
+0 0 1.
+0 0 1.
+-3.6292e-002 0.210801 0.976855
+-6.5449e-002 0.203562 0.976872
+0 0 1.
+0 0 1.
+-8.7255e-002 0.195555 0.976803
+0 0 1.
+0 0 1.
+-6.5449e-002 0.203562 0.976872
+-8.7255e-002 0.195555 0.976803
+-8.7255e-002 0.195555 0.976803
+0 0 1.
+0 0 1.
+-8.7255e-002 0.195555 0.976803
+-0.104891 0.186597 0.976821
+0 0 1.
+-0.104891 0.186597 0.976821
+0 0 1.
+0 0 1.
+-0.104891 0.186597 0.976821
+-0.132082 0.168137 0.976875
+0 0 1.
+-0.132082 0.168137 0.976875
+0 0 1.
+0 0 1.
+-0.132082 0.168137 0.976875
+-0.162825 0.138374 0.976904
+0 0 1.
+0 0 1.
+-0.183635 0.11034 0.976782
+0 0 1.
+0 0 1.
+-0.162825 0.138374 0.976904
+-0.183635 0.11034 0.976782
+-0.183635 0.11034 0.976782
+0 0 1.
+0 0 1.
+-0.183635 0.11034 0.976782
+-0.215506 9.1775e-002 0.97218
+0 0 1.
+-0.215506 9.1775e-002 0.97218
+0 0 1.
+0 0 1.
+-0.215506 9.1775e-002 0.97218
+-0.142883 -0.101472 0.984524
+0 0 1.
+0 0 1.
+0.106039 -0.166952 0.980246
+0 0 1.
+0 0 1.
+-0.142883 -0.101472 0.984524
+0.106039 -0.166952 0.980246
+0 0 1.
+0.222257 -6.0893e-002 0.973085
+0 0 1.
+0 0 1.
+0.106039 -0.166952 0.980246
+0.222257 -6.0893e-002 0.973085
+0 0 1.
+0.194792 -8.89541e-002 0.976803
+0 0 1.
+0 0 1.
+0.222257 -6.0893e-002 0.973085
+0.194792 -8.89541e-002 0.976803
+0 0 1.
+0.1744 -0.123549 0.976893
+0 0 1.
+0 0 1.
+0.194792 -8.89541e-002 0.976803
+0.1744 -0.123549 0.976893
+0 0 1.
+0.135981 -0.164404 0.976975
+0 0 1.
+0 0 1.
+0.1744 -0.123549 0.976893
+0.135981 -0.164404 0.976975
+0.135981 -0.164404 0.976975
+0 0 1.
+0 0 1.
+0.135981 -0.164404 0.976975
+9.9491e-002 -0.189857 0.976758
+0 0 1.
+0 0 1.
+7.0419e-002 -0.201994 0.976852
+0 0 1.
+0 0 1.
+9.9491e-002 -0.189857 0.976758
+7.0419e-002 -0.201994 0.976852
+0 0 1.
+3.6135e-002 -0.210754 0.976871
+0 0 1.
+0 0 1.
+7.0419e-002 -0.201994 0.976852
+3.6135e-002 -0.210754 0.976871
+3.6135e-002 -0.210754 0.976871
+0 0 1.
+0 0 1.
+3.6135e-002 -0.210754 0.976871
+4.45e-003 -0.213942 0.976836
+0 0 1.
+4.45e-003 -0.213942 0.976836
+0 0 1.
+0 0 1.
+4.45e-003 -0.213942 0.976836
+-1.7627e-002 -0.213391 0.976808
+0 0 1.
+0 0 1.
+-4.1123e-002 -0.210162 0.976801
+0 0 1.
+0 0 1.
+-1.7627e-002 -0.213391 0.976808
+-4.1123e-002 -0.210162 0.976801
+0 0 1.
+-8.2037e-002 -0.197352 0.976894
+0 0 1.
+0 0 1.
+-4.1123e-002 -0.210162 0.976801
+-8.2037e-002 -0.197352 0.976894
+0 0 1.
+-0.133392 -0.166425 0.97699
+0 0 1.
+0 0 1.
+-8.2037e-002 -0.197352 0.976894
+-0.133392 -0.166425 0.97699
+-0.133392 -0.166425 0.97699
+0 0 1.
+0 0 1.
+-0.133392 -0.166425 0.97699
+-0.169996 -0.130592 0.976753
+0 0 1.
+0 0 1.
+-0.191788 -9.4561e-002 0.97687
+0 0 1.
+0 0 1.
+-0.169996 -0.130592 0.976753
+-0.191788 -9.4561e-002 0.97687
+0 0 1.
+-0.207891 -4.8927e-002 0.976928
+0 0 1.
+0 0 1.
+-0.191788 -9.4561e-002 0.97687
+-0.207891 -4.8927e-002 0.976928
+-0.207891 -4.8927e-002 0.976928
+0 0 1.
+0 0 1.
+-0.207891 -4.8927e-002 0.976928
+-0.222897 -9.19e-003 0.974799
+0 0 1.
+0 0 1.
+-0.157317 0.112165 0.981158
+0 0 1.
+0 0 1.
+-0.222897 -9.19e-003 0.974799
+-0.157317 0.112165 0.981158
+-0.157317 0.112165 0.981158
+0 0 1.
+0 0 1.
+-0.157317 0.112165 0.981158
+-6.6392e-002 0.211942 0.975024
+0 0 1.
+0 0 1.
+-4.7604e-002 0.208628 0.976836
+0 0 1.
+0 0 1.
+-6.6392e-002 0.211942 0.975024
+-4.7604e-002 0.208628 0.976836
+0 0 1.
+-3.6389e-002 0.210861 0.976839
+0 0 1.
+0 0 1.
+-4.7604e-002 0.208628 0.976836
+-3.6389e-002 0.210861 0.976839
+-3.6389e-002 0.210861 0.976839
+0 0 1.
+0 0 1.
+-3.6389e-002 0.210861 0.976839
+-2.8956e-002 0.212046 0.976831
+0 0 1.
+-2.8956e-002 0.212046 0.976831
+0 0 1.
+0 0 1.
+-2.8956e-002 0.212046 0.976831
+-2.8505e-002 0.212095 0.976833
+0 0 1.
+-2.8505e-002 0.212095 0.976833
+0 0 1.
+0 0 1.
+-2.8505e-002 0.212095 0.976833
+-3.2251e-002 0.211561 0.976833
+0 0 1.
+-3.2251e-002 0.211561 0.976833
+0 0 1.
+0 0 1.
+-3.2251e-002 0.211561 0.976833
+-3.9725e-002 0.210295 0.976831
+0 0 1.
+-3.9725e-002 0.210295 0.976831
+0 0 1.
+0 0 1.
+-3.9725e-002 0.210295 0.976831
+-5.3907e-002 0.207013 0.976852
+0 0 1.
+0 0 1.
+-6.7695e-002 0.203058 0.976824
+0 0 1.
+0 0 1.
+-5.3907e-002 0.207013 0.976852
+-6.7695e-002 0.203058 0.976824
+-6.7695e-002 0.203058 0.976824
+0 0 1.
+0 0 1.
+-6.7695e-002 0.203058 0.976824
+-7.9434e-002 0.198722 0.976831
+0 0 1.
+-7.9434e-002 0.198722 0.976831
+0 0 1.
+0 0 1.
+-7.9434e-002 0.198722 0.976831
+-9.6844e-002 0.190771 0.976846
+0 0 1.
+-9.6844e-002 0.190771 0.976846
+0 0 1.
+0 0 1.
+-9.6844e-002 0.190771 0.976846
+-0.117651 0.178644 0.976854
+0 0 1.
+0 0 1.
+-0.13416 0.166821 0.976817
+0 0 1.
+0 0 1.
+-0.117651 0.178644 0.976854
+-0.13416 0.166821 0.976817
+-0.13416 0.166821 0.976817
+0 0 1.
+0 0 1.
+-0.13416 0.166821 0.976817
+-0.14859 0.154008 0.976833
+0 0 1.
+-0.14859 0.154008 0.976833
+0 0 1.
+0 0 1.
+-0.14859 0.154008 0.976833
+-0.167206 0.133329 0.976865
+0 0 1.
+0 0 1.
+-0.184963 0.107407 0.976858
+0 0 1.
+0 0 1.
+-0.167206 0.133329 0.976865
+-0.184963 0.107407 0.976858
+0 0 1.
+-0.195785 8.6673e-002 0.976809
+0 0 1.
+0 0 1.
+-0.184963 0.107407 0.976858
+-0.195785 8.6673e-002 0.976809
+-0.195785 8.6673e-002 0.976809
+0 0 1.
+0 0 1.
+-0.195785 8.6673e-002 0.976809
+-0.203096 6.7449e-002 0.976833
+0 0 1.
+-0.203096 6.7449e-002 0.976833
+0 0 1.
+0 0 1.
+-0.203096 6.7449e-002 0.976833
+-0.21035 3.862e-002 0.976863
+0 0 1.
+-0.21035 3.862e-002 0.976863
+0 0 1.
+0 0 1.
+-0.21035 3.862e-002 0.976863
+-0.213814 3.568e-003 0.976868
+0 0 1.
+0 0 1.
+-0.212495 -2.6813e-002 0.976794
+0 0 1.
+0 0 1.
+-0.213814 3.568e-003 0.976868
+-0.212495 -2.6813e-002 0.976794
+-0.212495 -2.6813e-002 0.976794
+0 0 1.
+0 0 1.
+-0.212495 -2.6813e-002 0.976794
+-0.20578 -5.894e-002 0.976822
+0 0 1.
+-0.20578 -5.894e-002 0.976822
+0 0 1.
+0 0 1.
+-0.20578 -5.894e-002 0.976822
+-0.185645 -0.105346 0.976954
+0 0 1.
+0 0 1.
+-0.150613 -0.151501 0.976915
+0 0 1.
+0 0 1.
+-0.185645 -0.105346 0.976954
+-0.150613 -0.151501 0.976915
+0 0 1.
+-0.118527 -0.178594 0.976758
+0 0 1.
+0 0 1.
+-0.150613 -0.151501 0.976915
+-0.118527 -0.178594 0.976758
+-0.118527 -0.178594 0.976758
+0 0 1.
+0 0 1.
+-0.118527 -0.178594 0.976758
+-8.8695e-002 -0.194665 0.976851
+0 0 1.
+-8.8695e-002 -0.194665 0.976851
+0 0 1.
+0 0 1.
+-8.8695e-002 -0.194665 0.976851
+-4.7722e-002 -0.208234 0.976914
+0 0 1.
+0 0 1.
+-8.92399e-003 -0.213815 0.976833
+0 0 1.
+0 0 1.
+-4.7722e-002 -0.208234 0.976914
+-8.92399e-003 -0.213815 0.976833
+0 0 1.
+1.2169e-002 -0.213779 0.976806
+0 0 1.
+0 0 1.
+-8.92399e-003 -0.213815 0.976833
+1.2169e-002 -0.213779 0.976806
+1.2169e-002 -0.213779 0.976806
+0 0 1.
+0 0 1.
+1.2169e-002 -0.213779 0.976806
+2.6065e-002 -0.212418 0.976831
+0 0 1.
+2.6065e-002 -0.212418 0.976831
+0 0 1.
+0 0 1.
+2.6065e-002 -0.212418 0.976831
+4.713e-002 -0.208661 0.976852
+0 0 1.
+0 0 1.
+7.1934e-002 -0.201442 0.976855
+0 0 1.
+0 0 1.
+4.713e-002 -0.208661 0.976852
+7.1934e-002 -0.201442 0.976855
+0 0 1.
+9.0054e-002 -0.194209 0.976818
+0 0 1.
+0 0 1.
+7.1934e-002 -0.201442 0.976855
+9.0054e-002 -0.194209 0.976818
+9.0054e-002 -0.194209 0.976818
+0 0 1.
+0 0 1.
+9.0054e-002 -0.194209 0.976818
+0.103712 -0.187175 0.976836
+0 0 1.
+0.103712 -0.187175 0.976836
+0 0 1.
+0 0 1.
+0.103712 -0.187175 0.976836
+0.133074 -0.201209 0.970467
+0 0 1.
+0 0 1.
+-5.3782e-002 -0.137292 0.989069
+0 0 1.
+0 0 1.
+0.133074 -0.201209 0.970467
+-5.3782e-002 -0.137292 0.989069
+-5.3782e-002 -0.137292 0.989069
+0 0 1.
+0 0 1.
+-5.3782e-002 -0.137292 0.989069
+-0.235143 -4.2415e-002 0.971035
+0 0 1.
+-0.732246 -0.11729 0.670864
+-0.208696 -4.7229e-002 0.976839
+-0.235143 -4.2415e-002 0.971035
+-0.732246 -0.11729 0.670864
+-0.68954 -0.156143 0.707215
+-0.208696 -4.7229e-002 0.976839
+-0.68954 -0.156143 0.707215
+-0.211202 -7.1268e-002 0.974841
+-0.208696 -4.7229e-002 0.976839
+-0.68954 -0.156143 0.707215
+-0.680182 -0.233237 0.694949
+-0.211202 -7.1268e-002 0.974841
+-0.680182 -0.233237 0.694949
+-0.111935 -0.191061 0.975175
+-0.211202 -7.1268e-002 0.974841
+-0.680182 -0.233237 0.694949
+-0.475301 -0.401563 0.782839
+-0.111935 -0.191061 0.975175
+-0.376869 -0.598595 0.706862
+-2.29e-003 -0.195523 0.980696
+-0.111935 -0.191061 0.975175
+-0.376869 -0.598595 0.706862
+-4.859e-003 -0.803901 0.594744
+-2.29e-003 -0.195523 0.980696
+0.144825 0.197947 0.969455
+0.646903 0.426912 0.631872
+0.207943 0.192571 0.958997
+0.144825 0.197947 0.969455
+0.63519 0.548421 0.543846
+0.646903 0.426912 0.631872
+0.207943 0.192571 0.958997
+0.653968 0.26886 0.707135
+0.197938 8.1363e-002 0.976832
+0.207943 0.192571 0.958997
+0.646903 0.426912 0.631872
+0.653968 0.26886 0.707135
+0.197938 8.1363e-002 0.976832
+0.675742 0.207691 0.707274
+0.204506 6.2845e-002 0.976846
+0.197938 8.1363e-002 0.976832
+0.653968 0.26886 0.707135
+0.675742 0.207691 0.707274
+0.204506 6.2845e-002 0.976846
+0.6949 0.129383 0.707371
+0.210268 3.9187e-002 0.976858
+0.204506 6.2845e-002 0.976846
+0.675742 0.207691 0.707274
+0.6949 0.129383 0.707371
+0.6949 0.129383 0.707371
+0.212949 2.1749e-002 0.976821
+0.210268 3.9187e-002 0.976858
+0.6949 0.129383 0.707371
+0.703529 7.1726e-002 0.707038
+0.212949 2.1749e-002 0.976821
+0.703529 7.1726e-002 0.707038
+0.21362 1.2709e-002 0.976834
+0.212949 2.1749e-002 0.976821
+0.703529 7.1726e-002 0.707038
+0.705845 4.1988e-002 0.707121
+0.21362 1.2709e-002 0.976834
+0.705845 4.1988e-002 0.707121
+0.213924 5.574e-003 0.976834
+0.21362 1.2709e-002 0.976834
+0.705845 4.1988e-002 0.707121
+0.706856 1.8417e-002 0.707117
+0.213924 5.574e-003 0.976834
+0.706856 1.8417e-002 0.707117
+0.213999 1.237e-003 0.976833
+0.213924 5.574e-003 0.976834
+0.706856 1.8417e-002 0.707117
+0.707099 4.085e-003 0.707103
+0.213999 1.237e-003 0.976833
+0.707099 4.085e-003 0.707103
+0.213999 7.73e-004 0.976834
+0.213999 1.237e-003 0.976833
+0.707099 4.085e-003 0.707103
+0.707104 2.554e-003 0.707105
+0.213999 7.73e-004 0.976834
+0.707104 2.554e-003 0.707105
+0.213979 3.048e-003 0.976834
+0.213999 7.73e-004 0.976834
+0.707104 2.554e-003 0.707105
+0.707036 1.0073e-002 0.707106
+0.213979 3.048e-003 0.976834
+0.707036 1.0073e-002 0.707106
+0.213883 7.476e-003 0.976831
+0.213979 3.048e-003 0.976834
+0.707036 1.0073e-002 0.707106
+0.706692 2.4712e-002 0.70709
+0.213883 7.476e-003 0.976831
+0.706692 2.4712e-002 0.70709
+0.213364 1.7405e-002 0.976818
+0.213883 7.476e-003 0.976831
+0.706692 2.4712e-002 0.70709
+0.704836 5.7562e-002 0.707031
+0.213364 1.7405e-002 0.976818
+0.704836 5.7562e-002 0.707031
+0.209953 4.0183e-002 0.976885
+0.213364 1.7405e-002 0.976818
+0.704836 5.7562e-002 0.707031
+0.694019 0.132789 0.707604
+0.209953 4.0183e-002 0.976885
+0.209953 4.0183e-002 0.976885
+0.67318 0.217138 0.70688
+0.20386 6.5764e-002 0.976789
+0.209953 4.0183e-002 0.976885
+0.694019 0.132789 0.707604
+0.67318 0.217138 0.70688
+0.67318 0.217138 0.70688
+0.192271 9.3687e-002 0.97686
+0.20386 6.5764e-002 0.976789
+0.67318 0.217138 0.70688
+0.635245 0.309627 0.707528
+0.192271 9.3687e-002 0.97686
+0.635245 0.309627 0.707528
+0.168241 0.131517 0.976933
+0.192271 9.3687e-002 0.97686
+0.635245 0.309627 0.707528
+0.556415 0.434666 0.708143
+0.168241 0.131517 0.976933
+0.168241 0.131517 0.976933
+0.467187 0.531095 0.706877
+0.141465 0.160924 0.976776
+0.168241 0.131517 0.976933
+0.556415 0.434666 0.708143
+0.467187 0.531095 0.706877
+0.467187 0.531095 0.706877
+0.11297 0.181477 0.976885
+0.141465 0.160924 0.976776
+0.467187 0.531095 0.706877
+0.373352 0.599806 0.707701
+0.11297 0.181477 0.976885
+0.11297 0.181477 0.976885
+0.261368 0.65663 0.707477
+7.907e-002 0.198725 0.97686
+0.11297 0.181477 0.976885
+0.373352 0.599806 0.707701
+0.261368 0.65663 0.707477
+7.907e-002 0.198725 0.97686
+0.173093 0.685711 0.706993
+5.2384e-002 0.20762 0.976806
+7.907e-002 0.198725 0.97686
+0.261368 0.65663 0.707477
+0.173093 0.685711 0.706993
+0.173093 0.685711 0.706993
+2.8652e-002 0.211959 0.976858
+5.2384e-002 0.20762 0.976806
+0.173093 0.685711 0.706993
+9.4678e-002 0.700455 0.707389
+2.8652e-002 0.211959 0.976858
+2.8652e-002 0.211959 0.976858
+1.2314e-002 0.706876 0.707231
+3.719e-003 0.213936 0.976841
+2.8652e-002 0.211959 0.976858
+9.4678e-002 0.700455 0.707389
+1.2314e-002 0.706876 0.707231
+3.719e-003 0.213936 0.976841
+-4.9099e-002 0.705515 0.706993
+-1.4866e-002 0.213585 0.976811
+3.719e-003 0.213936 0.976841
+1.2314e-002 0.706876 0.707231
+-4.9099e-002 0.705515 0.706993
+-4.9099e-002 0.705515 0.706993
+-3.6292e-002 0.210801 0.976855
+-1.4866e-002 0.213585 0.976811
+-4.9099e-002 0.705515 0.706993
+-0.119941 0.696589 0.707374
+-3.6292e-002 0.210801 0.976855
+-0.119941 0.696589 0.707374
+-6.5449e-002 0.203562 0.976872
+-3.6292e-002 0.210801 0.976855
+-0.119941 0.696589 0.707374
+-0.216188 0.672824 0.707511
+-6.5449e-002 0.203562 0.976872
+-6.5449e-002 0.203562 0.976872
+-0.288086 0.645939 0.706944
+-8.7255e-002 0.195555 0.976803
+-6.5449e-002 0.203562 0.976872
+-0.216188 0.672824 0.707511
+-0.288086 0.645939 0.706944
+-0.288086 0.645939 0.706944
+-0.104891 0.186597 0.976821
+-8.7255e-002 0.195555 0.976803
+-0.288086 0.645939 0.706944
+-0.346545 0.61635 0.70712
+-0.104891 0.186597 0.976821
+-0.346545 0.61635 0.70712
+-0.132082 0.168137 0.976875
+-0.104891 0.186597 0.976821
+-0.346545 0.61635 0.70712
+-0.436519 0.555601 0.707643
+-0.132082 0.168137 0.976875
+-0.436519 0.555601 0.707643
+-0.162825 0.138374 0.976904
+-0.132082 0.168137 0.976875
+-0.436519 0.555601 0.707643
+-0.538139 0.457511 0.707877
+-0.162825 0.138374 0.976904
+-0.162825 0.138374 0.976904
+-0.606238 0.364423 0.706874
+-0.183635 0.11034 0.976782
+-0.162825 0.138374 0.976904
+-0.538139 0.457511 0.707877
+-0.606238 0.364423 0.706874
+-0.606238 0.364423 0.706874
+-0.215506 9.1775e-002 0.97218
+-0.183635 0.11034 0.976782
+-0.606238 0.364423 0.706874
+-0.675758 0.285252 0.679693
+-0.215506 9.1775e-002 0.97218
+-0.675758 0.285252 0.679693
+-0.142883 -0.101472 0.984524
+-0.215506 9.1775e-002 0.97218
+-0.675758 0.285252 0.679693
+-0.569586 -3.634e-002 0.821128
+-0.142883 -0.101472 0.984524
+-0.142883 -0.101472 0.984524
+0.106387 -0.611576 0.784
+0.106039 -0.166952 0.980246
+-0.142883 -0.101472 0.984524
+-0.266153 -0.530038 0.805122
+0.106387 -0.611576 0.784
+0.106039 -0.166952 0.980246
+0.695051 -0.214898 0.686093
+0.222257 -6.0893e-002 0.973085
+0.106039 -0.166952 0.980246
+0.497066 -0.337161 0.79953
+0.695051 -0.214898 0.686093
+0.222257 -6.0893e-002 0.973085
+0.643368 -0.2936 0.707019
+0.194792 -8.89541e-002 0.976803
+0.222257 -6.0893e-002 0.973085
+0.695051 -0.214898 0.686093
+0.643368 -0.2936 0.707019
+0.194792 -8.89541e-002 0.976803
+0.576453 -0.408074 0.707939
+0.1744 -0.123549 0.976893
+0.194792 -8.89541e-002 0.976803
+0.643368 -0.2936 0.707019
+0.576453 -0.408074 0.707939
+0.1744 -0.123549 0.976893
+0.449171 -0.544099 0.708662
+0.135981 -0.164404 0.976975
+0.1744 -0.123549 0.976893
+0.576453 -0.408074 0.707939
+0.449171 -0.544099 0.708662
+0.449171 -0.544099 0.708662
+9.9491e-002 -0.189857 0.976758
+0.135981 -0.164404 0.976975
+0.449171 -0.544099 0.708662
+0.327811 -0.626977 0.706711
+9.9491e-002 -0.189857 0.976758
+9.9491e-002 -0.189857 0.976758
+0.232721 -0.667388 0.707414
+7.0419e-002 -0.201994 0.976852
+9.9491e-002 -0.189857 0.976758
+0.327811 -0.626977 0.706711
+0.232721 -0.667388 0.707414
+7.0419e-002 -0.201994 0.976852
+0.119393 -0.696483 0.707571
+3.6135e-002 -0.210754 0.976871
+7.0419e-002 -0.201994 0.976852
+0.232721 -0.667388 0.707414
+0.119393 -0.696483 0.707571
+0.119393 -0.696483 0.707571
+4.45e-003 -0.213942 0.976836
+3.6135e-002 -0.210754 0.976871
+0.119393 -0.696483 0.707571
+1.4599e-002 -0.706823 0.70724
+4.45e-003 -0.213942 0.976836
+1.4599e-002 -0.706823 0.70724
+-1.7627e-002 -0.213391 0.976808
+4.45e-003 -0.213942 0.976836
+1.4599e-002 -0.706823 0.70724
+-5.8246e-002 -0.704832 0.706979
+-1.7627e-002 -0.213391 0.976808
+-1.7627e-002 -0.213391 0.976808
+-0.135622 -0.694056 0.707031
+-4.1123e-002 -0.210162 0.976801
+-1.7627e-002 -0.213391 0.976808
+-5.8246e-002 -0.704832 0.706979
+-0.135622 -0.694056 0.707031
+-4.1123e-002 -0.210162 0.976801
+-0.270839 -0.652217 0.707996
+-8.2037e-002 -0.197352 0.976894
+-4.1123e-002 -0.210162 0.976801
+-0.135622 -0.694056 0.707031
+-0.270839 -0.652217 0.707996
+-8.2037e-002 -0.197352 0.976894
+-0.441705 -0.549914 0.708866
+-0.133392 -0.166425 0.97699
+-8.2037e-002 -0.197352 0.976894
+-0.270839 -0.652217 0.707996
+-0.441705 -0.549914 0.708866
+-0.441705 -0.549914 0.708866
+-0.169996 -0.130592 0.976753
+-0.133392 -0.166425 0.97699
+-0.441705 -0.549914 0.708866
+-0.561446 -0.430437 0.706755
+-0.169996 -0.130592 0.976753
+-0.169996 -0.130592 0.976753
+-0.633623 -0.31256 0.707693
+-0.191788 -9.4561e-002 0.97687
+-0.169996 -0.130592 0.976753
+-0.561446 -0.430437 0.706755
+-0.633623 -0.31256 0.707693
+-0.191788 -9.4561e-002 0.97687
+-0.687321 -0.161649 0.708138
+-0.207891 -4.8927e-002 0.976928
+-0.191788 -9.4561e-002 0.97687
+-0.633623 -0.31256 0.707693
+-0.687321 -0.161649 0.708138
+-0.687321 -0.161649 0.708138
+-0.222897 -9.19e-003 0.974799
+-0.207891 -4.8927e-002 0.976928
+-0.687321 -0.161649 0.708138
+-0.71928 -3.5191e-002 0.693828
+-0.222897 -9.19e-003 0.974799
+-0.222897 -9.19e-003 0.974799
+-0.568716 0.163049 0.806211
+-0.157317 0.112165 0.981158
+-0.222897 -9.19e-003 0.974799
+-0.71928 -3.5191e-002 0.693828
+-0.568716 0.163049 0.806211
+-0.331898 0.48759 0.807527
+-6.6392e-002 0.211942 0.975024
+-0.157317 0.112165 0.981158
+-0.331898 0.48759 0.807527
+-0.20528 0.689292 0.694792
+-6.6392e-002 0.211942 0.975024
+-6.6392e-002 0.211942 0.975024
+-0.157296 0.689356 0.707139
+-4.7604e-002 0.208628 0.976836
+-6.6392e-002 0.211942 0.975024
+-0.20528 0.689292 0.694792
+-0.157296 0.689356 0.707139
+-4.7604e-002 0.208628 0.976836
+-0.120239 0.696756 0.707159
+-3.6389e-002 0.210861 0.976839
+-4.7604e-002 0.208628 0.976836
+-0.157296 0.689356 0.707139
+-0.120239 0.696756 0.707159
+-0.120239 0.696756 0.707159
+-2.8956e-002 0.212046 0.976831
+-3.6389e-002 0.210861 0.976839
+-0.120239 0.696756 0.707159
+-9.5669e-002 0.700622 0.70709
+-2.8956e-002 0.212046 0.976831
+-9.5669e-002 0.700622 0.70709
+-2.8505e-002 0.212095 0.976833
+-2.8956e-002 0.212046 0.976831
+-9.5669e-002 0.700622 0.70709
+-9.4189e-002 0.700807 0.707105
+-2.8505e-002 0.212095 0.976833
+-9.4189e-002 0.700807 0.707105
+-3.2251e-002 0.211561 0.976833
+-2.8505e-002 0.212095 0.976833
+-9.4189e-002 0.700807 0.707105
+-0.106568 0.699036 0.707101
+-3.2251e-002 0.211561 0.976833
+-0.106568 0.699036 0.707101
+-3.9725e-002 0.210295 0.976831
+-3.2251e-002 0.211561 0.976833
+-0.106568 0.699036 0.707101
+-0.131272 0.69482 0.707101
+-3.9725e-002 0.210295 0.976831
+-0.131272 0.69482 0.707101
+-5.3907e-002 0.207013 0.976852
+-3.9725e-002 0.210295 0.976831
+-0.131272 0.69482 0.707101
+-0.178096 0.684131 0.707281
+-5.3907e-002 0.207013 0.976852
+-5.3907e-002 0.207013 0.976852
+-0.223595 0.670876 0.707058
+-6.7695e-002 0.203058 0.976824
+-5.3907e-002 0.207013 0.976852
+-0.178096 0.684131 0.707281
+-0.223595 0.670876 0.707058
+-0.223595 0.670876 0.707058
+-7.9434e-002 0.198722 0.976831
+-6.7695e-002 0.203058 0.976824
+-0.223595 0.670876 0.707058
+-0.262478 0.656562 0.70713
+-7.9434e-002 0.198722 0.976831
+-0.262478 0.656562 0.70713
+-9.6844e-002 0.190771 0.976846
+-7.9434e-002 0.198722 0.976831
+-0.262478 0.656562 0.70713
+-0.320025 0.630359 0.70727
+-9.6844e-002 0.190771 0.976846
+-0.320025 0.630359 0.70727
+-0.117651 0.178644 0.976854
+-9.6844e-002 0.190771 0.976846
+-0.320025 0.630359 0.70727
+-0.388702 0.590407 0.70734
+-0.117651 0.178644 0.976854
+-0.117651 0.178644 0.976854
+-0.44312 0.551127 0.707039
+-0.13416 0.166821 0.976817
+-0.117651 0.178644 0.976854
+-0.388702 0.590407 0.70734
+-0.44312 0.551127 0.707039
+-0.44312 0.551127 0.707039
+-0.14859 0.154008 0.976833
+-0.13416 0.166821 0.976817
+-0.44312 0.551127 0.707039
+-0.49096 0.50877 0.707186
+-0.14859 0.154008 0.976833
+-0.49096 0.50877 0.707186
+-0.167206 0.133329 0.976865
+-0.14859 0.154008 0.976833
+-0.49096 0.50877 0.707186
+-0.552584 0.440594 0.70748
+-0.167206 0.133329 0.976865
+-0.167206 0.133329 0.976865
+-0.611134 0.355089 0.707409
+-0.184963 0.107407 0.976858
+-0.167206 0.133329 0.976865
+-0.552584 0.440594 0.70748
+-0.611134 0.355089 0.707409
+-0.184963 0.107407 0.976858
+-0.646629 0.286418 0.706991
+-0.195785 8.6673e-002 0.976809
+-0.184963 0.107407 0.976858
+-0.611134 0.355089 0.707409
+-0.646629 0.286418 0.706991
+-0.646629 0.286418 0.706991
+-0.203096 6.7449e-002 0.976833
+-0.195785 8.6673e-002 0.976809
+-0.646629 0.286418 0.706991
+-0.671004 0.222771 0.707197
+-0.203096 6.7449e-002 0.976833
+-0.671004 0.222771 0.707197
+-0.21035 3.862e-002 0.976863
+-0.203096 6.7449e-002 0.976833
+-0.671004 0.222771 0.707197
+-0.695112 0.127584 0.70749
+-0.21035 3.862e-002 0.976863
+-0.695112 0.127584 0.70749
+-0.213814 3.568e-003 0.976868
+-0.21035 3.862e-002 0.976863
+-0.695112 0.127584 0.70749
+-0.706583 1.1879e-002 0.70753
+-0.213814 3.568e-003 0.976868
+-0.213814 3.568e-003 0.976868
+-0.701704 -8.8497e-002 0.706951
+-0.212495 -2.6813e-002 0.976794
+-0.213814 3.568e-003 0.976868
+-0.706583 1.1879e-002 0.70753
+-0.701704 -8.8497e-002 0.706951
+-0.701704 -8.8497e-002 0.706951
+-0.20578 -5.894e-002 0.976822
+-0.212495 -2.6813e-002 0.976794
+-0.701704 -8.8497e-002 0.706951
+-0.679572 -0.194739 0.70729
+-0.20578 -5.894e-002 0.976822
+-0.679572 -0.194739 0.70729
+-0.185645 -0.105346 0.976954
+-0.20578 -5.894e-002 0.976822
+-0.679572 -0.194739 0.70729
+-0.613781 -0.348324 0.70848
+-0.185645 -0.105346 0.976954
+-0.185645 -0.105346 0.976954
+-0.498037 -0.500533 0.708114
+-0.150613 -0.151501 0.976915
+-0.185645 -0.105346 0.976954
+-0.613781 -0.348324 0.70848
+-0.498037 -0.500533 0.708114
+-0.150613 -0.151501 0.976915
+-0.391458 -0.589293 0.706749
+-0.118527 -0.178594 0.976758
+-0.150613 -0.151501 0.976915
+-0.498037 -0.500533 0.708114
+-0.391458 -0.589293 0.706749
+-0.391458 -0.589293 0.706749
+-8.8695e-002 -0.194665 0.976851
+-0.118527 -0.178594 0.976758
+-0.391458 -0.589293 0.706749
+-0.292997 -0.643151 0.707467
+-8.8695e-002 -0.194665 0.976851
+-0.292997 -0.643151 0.707467
+-4.7722e-002 -0.208234 0.976914
+-8.8695e-002 -0.194665 0.976851
+-0.292997 -0.643151 0.707467
+-0.157754 -0.688379 0.707989
+-4.7722e-002 -0.208234 0.976914
+-4.7722e-002 -0.208234 0.976914
+-2.9651e-002 -0.706336 0.707256
+-8.92399e-003 -0.213815 0.976833
+-4.7722e-002 -0.208234 0.976914
+-0.157754 -0.688379 0.707989
+-2.9651e-002 -0.706336 0.707256
+-8.92399e-003 -0.213815 0.976833
+4.0045e-002 -0.706133 0.706946
+1.2169e-002 -0.213779 0.976806
+-8.92399e-003 -0.213815 0.976833
+-2.9651e-002 -0.706336 0.707256
+4.0045e-002 -0.706133 0.706946
+4.0045e-002 -0.706133 0.706946
+2.6065e-002 -0.212418 0.976831
+1.2169e-002 -0.213779 0.976806
+4.0045e-002 -0.706133 0.706946
+8.6143e-002 -0.701811 0.707135
+2.6065e-002 -0.212418 0.976831
+8.6143e-002 -0.701811 0.707135
+4.713e-002 -0.208661 0.976852
+2.6065e-002 -0.212418 0.976831
+8.6143e-002 -0.701811 0.707135
+0.155753 -0.68951 0.70733
+4.713e-002 -0.208661 0.976852
+4.713e-002 -0.208661 0.976852
+0.237629 -0.66572 0.707354
+7.1934e-002 -0.201442 0.976855
+4.713e-002 -0.208661 0.976852
+0.155753 -0.68951 0.70733
+0.237629 -0.66572 0.707354
+7.1934e-002 -0.201442 0.976855
+0.297413 -0.641602 0.707031
+9.0054e-002 -0.194209 0.976818
+7.1934e-002 -0.201442 0.976855
+0.237629 -0.66572 0.707354
+0.297413 -0.641602 0.707031
+0.297413 -0.641602 0.707031
+0.103712 -0.187175 0.976836
+9.0054e-002 -0.194209 0.976818
+0.297413 -0.641602 0.707031
+0.342691 -0.618442 0.707172
+0.103712 -0.187175 0.976836
+0.342691 -0.618442 0.707172
+0.133074 -0.201209 0.970467
+0.103712 -0.187175 0.976836
+0.342691 -0.618442 0.707172
+0.414489 -0.617216 0.668763
+0.133074 -0.201209 0.970467
+0.133074 -0.201209 0.970467
+0.149197 -0.523277 0.839
+-5.3782e-002 -0.137292 0.989069
+0.133074 -0.201209 0.970467
+0.414489 -0.617216 0.668763
+0.149197 -0.523277 0.839
+-0.469804 -0.261783 0.843062
+-0.235143 -4.2415e-002 0.971035
+-5.3782e-002 -0.137292 0.989069
+-0.469804 -0.261783 0.843062
+-0.732246 -0.11729 0.670864
+-0.235143 -4.2415e-002 0.971035
+-0.971621 -0.140765 0.190102
+-0.68954 -0.156143 0.707215
+-0.732246 -0.11729 0.670864
+-0.971621 -0.140765 0.190102
+-0.952688 -0.215824 0.214023
+-0.68954 -0.156143 0.707215
+-0.952688 -0.215824 0.214023
+-0.680182 -0.233237 0.694949
+-0.68954 -0.156143 0.707215
+-0.952688 -0.215824 0.214023
+-0.924528 -0.320575 0.206108
+-0.680182 -0.233237 0.694949
+-0.924528 -0.320575 0.206108
+-0.475301 -0.401563 0.782839
+-0.680182 -0.233237 0.694949
+-0.924528 -0.320575 0.206108
+-0.90503 -0.376559 0.197797
+-0.475301 -0.401563 0.782839
+-1.303e-003 -0.988644 0.150274
+-4.859e-003 -0.803901 0.594744
+-4.859e-003 -0.803901 0.594744
+-1.303e-003 -0.988644 0.150274
+-1.303e-003 -0.988644 0.150274
+-4.859e-003 -0.803901 0.594744
+0.63519 0.548421 0.543846
+0.876035 0.444336 0.187424
+0.646903 0.426912 0.631872
+0.63519 0.548421 0.543846
+0.860936 0.482651 0.160742
+0.876035 0.444336 0.187424
+0.646903 0.426912 0.631872
+0.903448 0.371469 0.213992
+0.653968 0.26886 0.707135
+0.646903 0.426912 0.631872
+0.876035 0.444336 0.187424
+0.903448 0.371469 0.213992
+0.653968 0.26886 0.707135
+0.933705 0.287011 0.214054
+0.675742 0.207691 0.707274
+0.653968 0.26886 0.707135
+0.903448 0.371469 0.213992
+0.933705 0.287011 0.214054
+0.675742 0.207691 0.707274
+0.960327 0.178682 0.214113
+0.6949 0.129383 0.707371
+0.675742 0.207691 0.707274
+0.933705 0.287011 0.214054
+0.960327 0.178682 0.214113
+0.960327 0.178682 0.214113
+0.703529 7.1726e-002 0.707038
+0.6949 0.129383 0.707371
+0.960327 0.178682 0.214113
+0.971822 9.8953e-002 0.21394
+0.703529 7.1726e-002 0.707038
+0.971822 9.8953e-002 0.21394
+0.705845 4.1988e-002 0.707121
+0.703529 7.1726e-002 0.707038
+0.971822 9.8953e-002 0.21394
+0.97511 5.8003e-002 0.214002
+0.705845 4.1988e-002 0.707121
+0.97511 5.8003e-002 0.214002
+0.706856 1.8417e-002 0.707117
+0.705845 4.1988e-002 0.707121
+0.97511 5.8003e-002 0.214002
+0.976502 2.5441e-002 0.214003
+0.706856 1.8417e-002 0.707117
+0.976502 2.5441e-002 0.214003
+0.707099 4.085e-003 0.707103
+0.706856 1.8417e-002 0.707117
+0.976502 2.5441e-002 0.214003
+0.976818 5.643e-003 0.213996
+0.707099 4.085e-003 0.707103
+0.976818 5.643e-003 0.213996
+0.707104 2.554e-003 0.707105
+0.707099 4.085e-003 0.707103
+0.976818 5.643e-003 0.213996
+0.976828 3.529e-003 0.213997
+0.707104 2.554e-003 0.707105
+0.976828 3.529e-003 0.213997
+0.707036 1.0073e-002 0.707106
+0.707104 2.554e-003 0.707105
+0.976828 3.529e-003 0.213997
+0.976735 1.3918e-002 0.213997
+0.707036 1.0073e-002 0.707106
+0.976735 1.3918e-002 0.213997
+0.706692 2.4712e-002 0.70709
+0.707036 1.0073e-002 0.707106
+0.976735 1.3918e-002 0.213997
+0.97624 3.4149e-002 0.213983
+0.706692 2.4712e-002 0.70709
+0.97624 3.4149e-002 0.213983
+0.704836 5.7562e-002 0.707031
+0.706692 2.4712e-002 0.70709
+0.97624 3.4149e-002 0.213983
+0.973603 7.9575e-002 0.213926
+0.704836 5.7562e-002 0.707031
+0.973603 7.9575e-002 0.213926
+0.694019 0.132789 0.707604
+0.704836 5.7562e-002 0.707031
+0.973603 7.9575e-002 0.213926
+0.959387 0.183527 0.214229
+0.694019 0.132789 0.707604
+0.694019 0.132789 0.707604
+0.929716 0.299862 0.213801
+0.67318 0.217138 0.70688
+0.694019 0.132789 0.707604
+0.959387 0.183527 0.214229
+0.929716 0.299862 0.213801
+0.929716 0.299862 0.213801
+0.635245 0.309627 0.707528
+0.67318 0.217138 0.70688
+0.929716 0.299862 0.213801
+0.878024 0.428054 0.214111
+0.635245 0.309627 0.707528
+0.878024 0.428054 0.214111
+0.556415 0.434666 0.708143
+0.635245 0.309627 0.707528
+0.878024 0.428054 0.214111
+0.769851 0.601121 0.214436
+0.556415 0.434666 0.708143
+0.556415 0.434666 0.708143
+0.645388 0.733336 0.213758
+0.467187 0.531095 0.706877
+0.556415 0.434666 0.708143
+0.769851 0.601121 0.214436
+0.645388 0.733336 0.213758
+0.645388 0.733336 0.213758
+0.373352 0.599806 0.707701
+0.467187 0.531095 0.706877
+0.645388 0.733336 0.213758
+0.516155 0.829272 0.214225
+0.373352 0.599806 0.707701
+0.373352 0.599806 0.707701
+0.361336 0.907522 0.214105
+0.261368 0.65663 0.707477
+0.373352 0.599806 0.707701
+0.516155 0.829272 0.214225
+0.361336 0.907522 0.214105
+0.261368 0.65663 0.707477
+0.239165 0.947131 0.213876
+0.173093 0.685711 0.706993
+0.261368 0.65663 0.707477
+0.361336 0.907522 0.214105
+0.239165 0.947131 0.213876
+0.239165 0.947131 0.213876
+9.4678e-002 0.700455 0.707389
+0.173093 0.685711 0.706993
+0.239165 0.947131 0.213876
+0.130837 0.968006 0.214117
+9.4678e-002 0.700455 0.707389
+9.4678e-002 0.700455 0.707389
+1.704e-002 0.97668 0.214022
+1.2314e-002 0.706876 0.707231
+9.4678e-002 0.700455 0.707389
+0.130837 0.968006 0.214117
+1.704e-002 0.97668 0.214022
+1.2314e-002 0.706876 0.707231
+-6.7814e-002 0.974501 0.213889
+-4.9099e-002 0.705515 0.706993
+1.2314e-002 0.706876 0.707231
+1.704e-002 0.97668 0.214022
+-6.7814e-002 0.974501 0.213889
+-6.7814e-002 0.974501 0.213889
+-0.119941 0.696589 0.707374
+-4.9099e-002 0.705515 0.706993
+-6.7814e-002 0.974501 0.213889
+-0.165767 0.962644 0.214098
+-0.119941 0.696589 0.707374
+-0.165767 0.962644 0.214098
+-0.216188 0.672824 0.707511
+-0.119941 0.696589 0.707374
+-0.165767 0.962644 0.214098
+-0.298693 0.93001 0.21416
+-0.216188 0.672824 0.707511
+-0.216188 0.672824 0.707511
+-0.397798 0.892203 0.213845
+-0.288086 0.645939 0.706944
+-0.216188 0.672824 0.707511
+-0.298693 0.93001 0.21416
+-0.397798 0.892203 0.213845
+-0.397798 0.892203 0.213845
+-0.346545 0.61635 0.70712
+-0.288086 0.645939 0.706944
+-0.397798 0.892203 0.213845
+-0.478811 0.851452 0.213938
+-0.346545 0.61635 0.70712
+-0.478811 0.851452 0.213938
+-0.436519 0.555601 0.707643
+-0.346545 0.61635 0.70712
+-0.478811 0.851452 0.213938
+-0.6035 0.76806 0.214177
+-0.436519 0.555601 0.707643
+-0.6035 0.76806 0.214177
+-0.538139 0.457511 0.707877
+-0.436519 0.555601 0.707643
+-0.6035 0.76806 0.214177
+-0.744089 0.632778 0.2143
+-0.538139 0.457511 0.707877
+-0.538139 0.457511 0.707877
+-0.837191 0.503403 0.213767
+-0.606238 0.364423 0.706874
+-0.538139 0.457511 0.707877
+-0.744089 0.632778 0.2143
+-0.837191 0.503403 0.213767
+-0.837191 0.503403 0.213767
+-0.675758 0.285252 0.679693
+-0.606238 0.364423 0.706874
+-0.837191 0.503403 0.213767
+-0.904167 0.379105 0.196879
+-0.675758 0.285252 0.679693
+-0.904167 0.379105 0.196879
+-0.720959 0.240949 0.649739
+-0.675758 0.285252 0.679693
+-0.904167 0.379105 0.196879
+-0.936027 0.303019 0.178978
+-0.720959 0.240949 0.649739
+-0.105583 -0.788464 0.605952
+-0.132936 -0.97886 0.15544
+-0.105583 -0.788464 0.605952
+-0.105583 -0.788464 0.605952
+-0.132936 -0.97886 0.15544
+-0.132936 -0.97886 0.15544
+0.726654 -0.177987 0.663547
+0.929237 -0.309465 0.201868
+0.695051 -0.214898 0.686093
+0.726654 -0.177987 0.663547
+0.943526 -0.271614 0.189697
+0.929237 -0.309465 0.201868
+0.695051 -0.214898 0.686093
+0.888775 -0.405395 0.213855
+0.643368 -0.2936 0.707019
+0.695051 -0.214898 0.686093
+0.929237 -0.309465 0.201868
+0.888775 -0.405395 0.213855
+0.643368 -0.2936 0.707019
+0.797368 -0.564174 0.214272
+0.576453 -0.408074 0.707939
+0.643368 -0.2936 0.707019
+0.888775 -0.405395 0.213855
+0.797368 -0.564174 0.214272
+0.576453 -0.408074 0.707939
+0.621268 -0.753613 0.214694
+0.449171 -0.544099 0.708662
+0.576453 -0.408074 0.707939
+0.797368 -0.564174 0.214272
+0.621268 -0.753613 0.214694
+0.621268 -0.753613 0.214694
+0.327811 -0.626977 0.706711
+0.449171 -0.544099 0.708662
+0.621268 -0.753613 0.214694
+0.452054 -0.866029 0.213637
+0.327811 -0.626977 0.706711
+0.327811 -0.626977 0.706711
+0.321674 -0.922331 0.214083
+0.232721 -0.667388 0.707414
+0.327811 -0.626977 0.706711
+0.452054 -0.866029 0.213637
+0.321674 -0.922331 0.214083
+0.232721 -0.667388 0.707414
+0.165016 -0.962759 0.214162
+0.119393 -0.696483 0.707571
+0.232721 -0.667388 0.707414
+0.321674 -0.922331 0.214083
+0.165016 -0.962759 0.214162
+0.165016 -0.962759 0.214162
+1.4599e-002 -0.706823 0.70724
+0.119393 -0.696483 0.707571
+0.165016 -0.962759 0.214162
+2.0072e-002 -0.976625 0.21401
+1.4599e-002 -0.706823 0.70724
+2.0072e-002 -0.976625 0.21401
+-5.8246e-002 -0.704832 0.706979
+1.4599e-002 -0.706823 0.70724
+2.0072e-002 -0.976625 0.21401
+-8.0476e-002 -0.97354 0.213878
+-5.8246e-002 -0.704832 0.706979
+-5.8246e-002 -0.704832 0.706979
+-0.187169 -0.958772 0.213831
+-0.135622 -0.694056 0.707031
+-5.8246e-002 -0.704832 0.706979
+-8.0476e-002 -0.97354 0.213878
+-0.187169 -0.958772 0.213831
+-0.135622 -0.694056 0.707031
+-0.374372 -0.902183 0.214272
+-0.270839 -0.652217 0.707996
+-0.135622 -0.694056 0.707031
+-0.187169 -0.958772 0.213831
+-0.374372 -0.902183 0.214272
+-0.270839 -0.652217 0.707996
+-0.612193 -0.760982 0.214771
+-0.441705 -0.549914 0.708866
+-0.270839 -0.652217 0.707996
+-0.374372 -0.902183 0.214272
+-0.612193 -0.760982 0.214771
+-0.612193 -0.760982 0.214771
+-0.561446 -0.430437 0.706755
+-0.441705 -0.549914 0.708866
+-0.612193 -0.760982 0.214771
+-0.775721 -0.593832 0.213589
+-0.561446 -0.430437 0.706755
+-0.561446 -0.430437 0.706755
+-0.875953 -0.432246 0.214173
+-0.633623 -0.31256 0.707693
+-0.561446 -0.430437 0.706755
+-0.775721 -0.593832 0.213589
+-0.875953 -0.432246 0.214173
+-0.633623 -0.31256 0.707693
+-0.95082 -0.223514 0.214435
+-0.687321 -0.161649 0.708138
+-0.633623 -0.31256 0.707693
+-0.875953 -0.432246 0.214173
+-0.95082 -0.223514 0.214435
+-0.95082 -0.223514 0.214435
+-0.71928 -3.5191e-002 0.693828
+-0.687321 -0.161649 0.708138
+-0.95082 -0.223514 0.214435
+-0.977358 -5.3257e-002 0.204781
+-0.71928 -3.5191e-002 0.693828
+-0.71928 -3.5191e-002 0.693828
+-0.980655 3.05e-003 0.19572
+-0.73309 9.28e-003 0.680069
+-0.71928 -3.5191e-002 0.693828
+-0.977358 -5.3257e-002 0.204781
+-0.980655 3.05e-003 0.19572
+-0.295815 0.934858 0.196301
+-0.20528 0.689292 0.694792
+-0.234727 0.692825 0.681833
+-0.295815 0.934858 0.196301
+-0.269369 0.940925 0.205182
+-0.20528 0.689292 0.694792
+-0.20528 0.689292 0.694792
+-0.217307 0.952354 0.21401
+-0.157296 0.689356 0.707139
+-0.20528 0.689292 0.694792
+-0.269369 0.940925 0.205182
+-0.217307 0.952354 0.21401
+-0.157296 0.689356 0.707139
+-0.166112 0.9626 0.214026
+-0.120239 0.696756 0.707159
+-0.157296 0.689356 0.707139
+-0.217307 0.952354 0.21401
+-0.166112 0.9626 0.214026
+-0.166112 0.9626 0.214026
+-9.5669e-002 0.700622 0.70709
+-0.120239 0.696756 0.707159
+-0.166112 0.9626 0.214026
+-0.132156 0.967854 0.213992
+-9.5669e-002 0.700622 0.70709
+-0.132156 0.967854 0.213992
+-9.4189e-002 0.700807 0.707105
+-9.5669e-002 0.700622 0.70709
+-0.132156 0.967854 0.213992
+-0.130117 0.968128 0.214003
+-9.4189e-002 0.700807 0.707105
+-0.130117 0.968128 0.214003
+-0.106568 0.699036 0.707101
+-9.4189e-002 0.700807 0.707105
+-0.130117 0.968128 0.214003
+-0.147223 0.96568 0.21398
+-0.106568 0.699036 0.707101
+-0.147223 0.96568 0.21398
+-0.131272 0.69482 0.707101
+-0.106568 0.699036 0.707101
+-0.147223 0.96568 0.21398
+-0.181366 0.959856 0.213969
+-0.131272 0.69482 0.707101
+-0.181366 0.959856 0.213969
+-0.178096 0.684131 0.707281
+-0.131272 0.69482 0.707101
+-0.181366 0.959856 0.213969
+-0.246039 0.945325 0.21407
+-0.178096 0.684131 0.707281
+-0.178096 0.684131 0.707281
+-0.308816 0.926745 0.213955
+-0.223595 0.670876 0.707058
+-0.178096 0.684131 0.707281
+-0.246039 0.945325 0.21407
+-0.308816 0.926745 0.213955
+-0.308816 0.926745 0.213955
+-0.262478 0.656562 0.70713
+-0.223595 0.670876 0.707058
+-0.308816 0.926745 0.213955
+-0.362643 0.907027 0.213989
+-0.262478 0.656562 0.70713
+-0.362643 0.907027 0.213989
+-0.320025 0.630359 0.70727
+-0.262478 0.656562 0.70713
+-0.362643 0.907027 0.213989
+-0.442217 0.870991 0.214052
+-0.320025 0.630359 0.70727
+-0.442217 0.870991 0.214052
+-0.388702 0.590407 0.70734
+-0.320025 0.630359 0.70727
+-0.442217 0.870991 0.214052
+-0.537056 0.815926 0.214092
+-0.388702 0.590407 0.70734
+-0.388702 0.590407 0.70734
+-0.61204 0.761343 0.213923
+-0.44312 0.551127 0.707039
+-0.388702 0.590407 0.70734
+-0.537056 0.815926 0.214092
+-0.61204 0.761343 0.213923
+-0.61204 0.761343 0.213923
+-0.49096 0.50877 0.707186
+-0.44312 0.551127 0.707039
+-0.61204 0.761343 0.213923
+-0.678357 0.702877 0.213999
+-0.49096 0.50877 0.707186
+-0.678357 0.702877 0.213999
+-0.552584 0.440594 0.70748
+-0.49096 0.50877 0.707186
+-0.678357 0.702877 0.213999
+-0.763761 0.608942 0.214147
+-0.552584 0.440594 0.70748
+-0.552584 0.440594 0.70748
+-0.844506 0.490883 0.214111
+-0.611134 0.355089 0.707409
+-0.552584 0.440594 0.70748
+-0.763761 0.608942 0.214147
+-0.844506 0.490883 0.214111
+-0.611134 0.355089 0.707409
+-0.893106 0.395741 0.213893
+-0.646629 0.286418 0.706991
+-0.611134 0.355089 0.707409
+-0.844506 0.490883 0.214111
+-0.893106 0.395741 0.213893
+-0.893106 0.395741 0.213893
+-0.671004 0.222771 0.707197
+-0.646629 0.286418 0.706991
+-0.893106 0.395741 0.213893
+-0.927098 0.307725 0.213995
+-0.671004 0.222771 0.707197
+-0.927098 0.307725 0.213995
+-0.695112 0.127584 0.70749
+-0.671004 0.222771 0.707197
+-0.927098 0.307725 0.213995
+-0.960762 0.176306 0.214131
+-0.695112 0.127584 0.70749
+-0.960762 0.176306 0.214131
+-0.706583 1.1879e-002 0.70753
+-0.695112 0.127584 0.70749
+-0.960762 0.176306 0.214131
+-0.976661 1.6503e-002 0.214151
+-0.706583 1.1879e-002 0.70753
+-0.706583 1.1879e-002 0.70753
+-0.9692 -0.122191 0.213824
+-0.701704 -8.8497e-002 0.706951
+-0.706583 1.1879e-002 0.70753
+-0.976661 1.6503e-002 0.214151
+-0.9692 -0.122191 0.213824
+-0.9692 -0.122191 0.213824
+-0.679572 -0.194739 0.70729
+-0.701704 -8.8497e-002 0.706951
+-0.9692 -0.122191 0.213824
+-0.939025 -0.269183 0.213947
+-0.679572 -0.194739 0.70729
+-0.939025 -0.269183 0.213947
+-0.613781 -0.348324 0.70848
+-0.679572 -0.194739 0.70729
+-0.939025 -0.269183 0.213947
+-0.849446 -0.482095 0.214538
+-0.613781 -0.348324 0.70848
+-0.613781 -0.348324 0.70848
+-0.689154 -0.692184 0.214354
+-0.498037 -0.500533 0.708114
+-0.613781 -0.348324 0.70848
+-0.849446 -0.482095 0.214538
+-0.689154 -0.692184 0.214354
+-0.498037 -0.500533 0.708114
+-0.540785 -0.81357 0.21367
+-0.391458 -0.589293 0.706749
+-0.498037 -0.500533 0.708114
+-0.689154 -0.692184 0.214354
+-0.540785 -0.81357 0.21367
+-0.540785 -0.81357 0.21367
+-0.292997 -0.643151 0.707467
+-0.391458 -0.589293 0.706749
+-0.540785 -0.81357 0.21367
+-0.404924 -0.888936 0.214078
+-0.292997 -0.643151 0.707467
+-0.404924 -0.888936 0.214078
+-0.157754 -0.688379 0.707989
+-0.292997 -0.643151 0.707467
+-0.404924 -0.888936 0.214078
+-0.218182 -0.952074 0.214363
+-0.157754 -0.688379 0.707989
+-0.157754 -0.688379 0.707989
+-4.1133e-002 -0.975968 0.213995
+-2.9651e-002 -0.706336 0.707256
+-0.157754 -0.688379 0.707989
+-0.218182 -0.952074 0.214363
+-4.1133e-002 -0.975968 0.213995
+-2.9651e-002 -0.706336 0.707256
+5.5166e-002 -0.975302 0.213877
+4.0045e-002 -0.706133 0.706946
+-2.9651e-002 -0.706336 0.707256
+-4.1133e-002 -0.975968 0.213995
+5.5166e-002 -0.975302 0.213877
+5.5166e-002 -0.975302 0.213877
+8.6143e-002 -0.701811 0.707135
+4.0045e-002 -0.706133 0.706946
+5.5166e-002 -0.975302 0.213877
+0.119034 -0.969557 0.213988
+8.6143e-002 -0.701811 0.707135
+0.119034 -0.969557 0.213988
+0.155753 -0.68951 0.70733
+8.6143e-002 -0.701811 0.707135
+0.119034 -0.969557 0.213988
+0.215244 -0.952806 0.214081
+0.155753 -0.68951 0.70733
+0.155753 -0.68951 0.70733
+0.328296 -0.919992 0.214096
+0.237629 -0.66572 0.707354
+0.155753 -0.68951 0.70733
+0.215244 -0.952806 0.214081
+0.328296 -0.919992 0.214096
+0.237629 -0.66572 0.707354
+0.410748 -0.886296 0.213928
+0.297413 -0.641602 0.707031
+0.237629 -0.66572 0.707354
+0.328296 -0.919992 0.214096
+0.410748 -0.886296 0.213928
+0.410748 -0.886296 0.213928
+0.342691 -0.618442 0.707172
+0.297413 -0.641602 0.707031
+0.410748 -0.886296 0.213928
+0.473467 -0.854417 0.214011
+0.342691 -0.618442 0.707172
+0.473467 -0.854417 0.214011
+0.414489 -0.617216 0.668763
+0.342691 -0.618442 0.707172
+0.473467 -0.854417 0.214011
+0.551753 -0.812155 0.189664
+0.414489 -0.617216 0.668763
+0.414489 -0.617216 0.668763
+0.593244 -0.787889 0.165204
+0.45928 -0.627951 0.628283
+0.414489 -0.617216 0.668763
+0.551753 -0.812155 0.189664
+0.593244 -0.787889 0.165204
+-0.979492 -0.113704 0.166336
+-0.732246 -0.11729 0.670864
+-0.765741 -0.112818 0.633177
+-0.979492 -0.113704 0.166336
+-0.971621 -0.140765 0.190102
+-0.732246 -0.11729 0.670864
+-0.971621 -0.140765 0.190102
+-0.975281 -0.22097 0
+-0.952688 -0.215824 0.214023
+-0.971621 -0.140765 0.190102
+-0.990338 -0.138675 0
+-0.975281 -0.22097 0
+-0.952688 -0.215824 0.214023
+-0.944482 -0.328563 0
+-0.924528 -0.320575 0.206108
+-0.952688 -0.215824 0.214023
+-0.975281 -0.22097 0
+-0.944482 -0.328563 0
+-0.924528 -0.320575 0.206108
+-0.922339 -0.386382 1.e-006
+-0.90503 -0.376559 0.197797
+-0.924528 -0.320575 0.206108
+-0.944482 -0.328563 0
+-0.922339 -0.386382 1.e-006
+-1.303e-003 -0.988644 0.150274
+0 -1. 0
+-1.303e-003 -0.988644 0.150274
+-1.303e-003 -0.988644 0.150274
+0 -1. 0
+0 -1. 0
+0.8889 0.458101 0
+0.876035 0.444336 0.187424
+0.860936 0.482651 0.160742
+0.8889 0.458101 0
+0.899821 0.436259 0
+0.876035 0.444336 0.187424
+0.899821 0.436259 0
+0.903448 0.371469 0.213992
+0.876035 0.444336 0.187424
+0.899821 0.436259 0
+0.924867 0.38029 0
+0.903448 0.371469 0.213992
+0.903448 0.371469 0.213992
+0.955857 0.293831 0
+0.933705 0.287011 0.214054
+0.903448 0.371469 0.213992
+0.924867 0.38029 0
+0.955857 0.293831 0
+0.955857 0.293831 0
+0.960327 0.178682 0.214113
+0.933705 0.287011 0.214054
+0.955857 0.293831 0
+0.983134 0.182886 0
+0.960327 0.178682 0.214113
+0.960327 0.178682 0.214113
+0.99486 0.101258 0
+0.971822 9.8953e-002 0.21394
+0.960327 0.178682 0.214113
+0.983134 0.182886 0
+0.99486 0.101258 0
+0.971822 9.8953e-002 0.21394
+0.998236 5.9378e-002 0
+0.97511 5.8003e-002 0.214002
+0.971822 9.8953e-002 0.21394
+0.99486 0.101258 0
+0.998236 5.9378e-002 0
+0.97511 5.8003e-002 0.214002
+0.999661 2.6044e-002 0
+0.976502 2.5441e-002 0.214003
+0.97511 5.8003e-002 0.214002
+0.998236 5.9378e-002 0
+0.999661 2.6044e-002 0
+0.976502 2.5441e-002 0.214003
+0.999983 5.776e-003 0
+0.976818 5.643e-003 0.213996
+0.976502 2.5441e-002 0.214003
+0.999661 2.6044e-002 0
+0.999983 5.776e-003 0
+0.976818 5.643e-003 0.213996
+0.999993 3.613e-003 0
+0.976828 3.529e-003 0.213997
+0.976818 5.643e-003 0.213996
+0.999983 5.776e-003 0
+0.999993 3.613e-003 0
+0.976828 3.529e-003 0.213997
+0.999898 1.4249e-002 0
+0.976735 1.3918e-002 0.213997
+0.976828 3.529e-003 0.213997
+0.999993 3.613e-003 0
+0.999898 1.4249e-002 0
+0.976735 1.3918e-002 0.213997
+0.999389 3.4963e-002 0
+0.97624 3.4149e-002 0.213983
+0.976735 1.3918e-002 0.213997
+0.999898 1.4249e-002 0
+0.999389 3.4963e-002 0
+0.97624 3.4149e-002 0.213983
+0.996675 8.1481e-002 1.e-006
+0.973603 7.9575e-002 0.213926
+0.97624 3.4149e-002 0.213983
+0.999389 3.4963e-002 0
+0.996675 8.1481e-002 1.e-006
+0.973603 7.9575e-002 0.213926
+0.982192 0.187878 1.e-006
+0.959387 0.183527 0.214229
+0.973603 7.9575e-002 0.213926
+0.996675 8.1481e-002 1.e-006
+0.982192 0.187878 1.e-006
+0.982192 0.187878 1.e-006
+0.929716 0.299862 0.213801
+0.959387 0.183527 0.214229
+0.982192 0.187878 1.e-006
+0.951724 0.306954 3.e-006
+0.929716 0.299862 0.213801
+0.951724 0.306954 3.e-006
+0.878024 0.428054 0.214111
+0.929716 0.299862 0.213801
+0.951724 0.306954 3.e-006
+0.898857 0.438241 -5.e-006
+0.878024 0.428054 0.214111
+0.878024 0.428054 0.214111
+0.788226 0.615385 -2.e-006
+0.769851 0.601121 0.214436
+0.878024 0.428054 0.214111
+0.898857 0.438241 -5.e-006
+0.788226 0.615385 -2.e-006
+0.769851 0.601121 0.214436
+0.660708 0.750643 9.e-006
+0.645388 0.733336 0.213758
+0.769851 0.601121 0.214436
+0.788226 0.615385 -2.e-006
+0.660708 0.750643 9.e-006
+0.645388 0.733336 0.213758
+0.528416 0.848986 -2.e-006
+0.516155 0.829272 0.214225
+0.645388 0.733336 0.213758
+0.660708 0.750643 9.e-006
+0.528416 0.848986 -2.e-006
+0.528416 0.848986 -2.e-006
+0.361336 0.907522 0.214105
+0.516155 0.829272 0.214225
+0.528416 0.848986 -2.e-006
+0.369942 0.929055 -1.e-005
+0.361336 0.907522 0.214105
+0.361336 0.907522 0.214105
+0.244854 0.96956 1.e-006
+0.239165 0.947131 0.213876
+0.361336 0.907522 0.214105
+0.369942 0.929055 -1.e-005
+0.244854 0.96956 1.e-006
+0.239165 0.947131 0.213876
+0.133941 0.990989 6.e-006
+0.130837 0.968006 0.214117
+0.239165 0.947131 0.213876
+0.244854 0.96956 1.e-006
+0.133941 0.990989 6.e-006
+0.133941 0.990989 6.e-006
+1.704e-002 0.97668 0.214022
+0.130837 0.968006 0.214117
+0.133941 0.990989 6.e-006
+1.7452e-002 0.999848 -7.e-006
+1.704e-002 0.97668 0.214022
+1.704e-002 0.97668 0.214022
+-6.9419e-002 0.997588 -8.e-006
+-6.7814e-002 0.974501 0.213889
+1.704e-002 0.97668 0.214022
+1.7452e-002 0.999848 -7.e-006
+-6.9419e-002 0.997588 -8.e-006
+-6.9419e-002 0.997588 -8.e-006
+-0.165767 0.962644 0.214098
+-6.7814e-002 0.974501 0.213889
+-6.9419e-002 0.997588 -8.e-006
+-0.169707 0.985495 5.e-006
+-0.165767 0.962644 0.214098
+-0.169707 0.985495 5.e-006
+-0.298693 0.93001 0.21416
+-0.165767 0.962644 0.214098
+-0.169707 0.985495 5.e-006
+-0.30575 0.952112 -7.e-006
+-0.298693 0.93001 0.21416
+-0.298693 0.93001 0.21416
+-0.407187 0.913345 -1.9e-005
+-0.397798 0.892203 0.213845
+-0.298693 0.93001 0.21416
+-0.30575 0.952112 -7.e-006
+-0.407187 0.913345 -1.9e-005
+-0.407187 0.913345 -1.9e-005
+-0.478811 0.851452 0.213938
+-0.397798 0.892203 0.213845
+-0.407187 0.913345 -1.9e-005
+-0.490179 0.871622 -5.e-006
+-0.478811 0.851452 0.213938
+-0.478811 0.851452 0.213938
+-0.617849 0.786296 -7.e-006
+-0.6035 0.76806 0.214177
+-0.478811 0.851452 0.213938
+-0.490179 0.871622 -5.e-006
+-0.617849 0.786296 -7.e-006
+-0.6035 0.76806 0.214177
+-0.761759 0.64786 -1.1e-005
+-0.744089 0.632778 0.2143
+-0.6035 0.76806 0.214177
+-0.617849 0.786296 -7.e-006
+-0.761759 0.64786 -1.1e-005
+-0.744089 0.632778 0.2143
+-0.85698 0.515349 -6.e-006
+-0.837191 0.503403 0.213767
+-0.744089 0.632778 0.2143
+-0.761759 0.64786 -1.1e-005
+-0.85698 0.515349 -6.e-006
+-0.85698 0.515349 -6.e-006
+-0.904167 0.379105 0.196879
+-0.837191 0.503403 0.213767
+-0.85698 0.515349 -6.e-006
+-0.922517 0.385957 -1.e-006
+-0.904167 0.379105 0.196879
+-0.904167 0.379105 0.196879
+-0.952225 0.305398 4.e-006
+-0.936027 0.303019 0.178978
+-0.904167 0.379105 0.196879
+-0.922517 0.385957 -1.e-006
+-0.952225 0.305398 4.e-006
+-0.132936 -0.97886 0.15544
+-0.13509 -0.990833 3.e-006
+-0.132936 -0.97886 0.15544
+-0.132936 -0.97886 0.15544
+-0.13509 -0.990833 3.e-006
+-0.13509 -0.990833 3.e-006
+0.943526 -0.271614 0.189697
+0.947083 -0.320989 0
+0.929237 -0.309465 0.201868
+0.943526 -0.271614 0.189697
+0.958104 -0.286421 6.e-006
+0.947083 -0.320989 0
+0.947083 -0.320989 0
+0.888775 -0.405395 0.213855
+0.929237 -0.309465 0.201868
+0.947083 -0.320989 0
+0.909846 -0.414945 1.e-006
+0.888775 -0.405395 0.213855
+0.909846 -0.414945 1.e-006
+0.797368 -0.564174 0.214272
+0.888775 -0.405395 0.213855
+0.909846 -0.414945 1.e-006
+0.81637 -0.57753 0
+0.797368 -0.564174 0.214272
+0.797368 -0.564174 0.214272
+0.635928 -0.771748 6.e-006
+0.621268 -0.753613 0.214694
+0.797368 -0.564174 0.214272
+0.81637 -0.57753 0
+0.635928 -0.771748 6.e-006
+0.621268 -0.753613 0.214694
+0.462539 -0.886599 1.2e-005
+0.452054 -0.866029 0.213637
+0.621268 -0.753613 0.214694
+0.635928 -0.771748 6.e-006
+0.462539 -0.886599 1.2e-005
+0.452054 -0.866029 0.213637
+0.329324 -0.944217 -4.e-006
+0.321674 -0.922331 0.214083
+0.452054 -0.866029 0.213637
+0.462539 -0.886599 1.2e-005
+0.329324 -0.944217 -4.e-006
+0.321674 -0.922331 0.214083
+0.168929 -0.985628 -1.2e-005
+0.165016 -0.962759 0.214162
+0.321674 -0.922331 0.214083
+0.329324 -0.944217 -4.e-006
+0.168929 -0.985628 -1.2e-005
+0.168929 -0.985628 -1.2e-005
+2.0072e-002 -0.976625 0.21401
+0.165016 -0.962759 0.214162
+0.168929 -0.985628 -1.2e-005
+2.0516e-002 -0.99979 -1.e-006
+2.0072e-002 -0.976625 0.21401
+2.0516e-002 -0.99979 -1.e-006
+-8.0476e-002 -0.97354 0.213878
+2.0072e-002 -0.976625 0.21401
+2.0516e-002 -0.99979 -1.e-006
+-8.239e-002 -0.9966 1.e-006
+-8.0476e-002 -0.97354 0.213878
+-8.0476e-002 -0.97354 0.213878
+-0.191546 -0.981484 -1.5e-005
+-0.187169 -0.958772 0.213831
+-8.0476e-002 -0.97354 0.213878
+-8.239e-002 -0.9966 1.e-006
+-0.191546 -0.981484 -1.5e-005
+-0.191546 -0.981484 -1.5e-005
+-0.374372 -0.902183 0.214272
+-0.187169 -0.958772 0.213831
+-0.191546 -0.981484 -1.5e-005
+-0.383203 -0.923664 -3.e-006
+-0.374372 -0.902183 0.214272
+-0.374372 -0.902183 0.214272
+-0.627018 -0.779005 6.e-006
+-0.612193 -0.760982 0.214771
+-0.374372 -0.902183 0.214272
+-0.383203 -0.923664 -3.e-006
+-0.627018 -0.779005 6.e-006
+-0.612193 -0.760982 0.214771
+-0.794191 -0.607668 4.e-006
+-0.775721 -0.593832 0.213589
+-0.612193 -0.760982 0.214771
+-0.627018 -0.779005 6.e-006
+-0.794191 -0.607668 4.e-006
+-0.775721 -0.593832 0.213589
+-0.896743 -0.442552 8.e-006
+-0.875953 -0.432246 0.214173
+-0.775721 -0.593832 0.213589
+-0.794191 -0.607668 4.e-006
+-0.896743 -0.442552 8.e-006
+-0.875953 -0.432246 0.214173
+-0.973472 -0.228806 2.e-006
+-0.95082 -0.223514 0.214435
+-0.875953 -0.432246 0.214173
+-0.896743 -0.442552 8.e-006
+-0.973472 -0.228806 2.e-006
+-0.973472 -0.228806 2.e-006
+-0.977358 -5.3257e-002 0.204781
+-0.95082 -0.223514 0.214435
+-0.973472 -0.228806 2.e-006
+-0.998422 -5.6149e-002 0
+-0.977358 -5.3257e-002 0.204781
+-0.977358 -5.3257e-002 0.204781
+-1. 0 0
+-0.980655 3.05e-003 0.19572
+-0.977358 -5.3257e-002 0.204781
+-0.998422 -5.6149e-002 0
+-1. 0 0
+-0.295815 0.934858 0.196301
+-0.271751 0.962368 -5.e-006
+-0.269369 0.940925 0.205182
+-0.295815 0.934858 0.196301
+-0.294991 0.9555 1.e-006
+-0.271751 0.962368 -5.e-006
+-0.269369 0.940925 0.205182
+-0.222462 0.974941 4.e-006
+-0.217307 0.952354 0.21401
+-0.269369 0.940925 0.205182
+-0.271751 0.962368 -5.e-006
+-0.222462 0.974941 4.e-006
+-0.217307 0.952354 0.21401
+-0.170051 0.985435 5.e-006
+-0.166112 0.9626 0.214026
+-0.217307 0.952354 0.21401
+-0.222462 0.974941 4.e-006
+-0.170051 0.985435 5.e-006
+-0.166112 0.9626 0.214026
+-0.135289 0.990806 5.e-006
+-0.132156 0.967854 0.213992
+-0.166112 0.9626 0.214026
+-0.170051 0.985435 5.e-006
+-0.135289 0.990806 5.e-006
+-0.135289 0.990806 5.e-006
+-0.130117 0.968128 0.214003
+-0.132156 0.967854 0.213992
+-0.135289 0.990806 5.e-006
+-0.133203 0.991089 5.e-006
+-0.130117 0.968128 0.214003
+-0.130117 0.968128 0.214003
+-0.150716 0.988577 -1.3e-005
+-0.147223 0.96568 0.21398
+-0.130117 0.968128 0.214003
+-0.133203 0.991089 5.e-006
+-0.150716 0.988577 -1.3e-005
+-0.147223 0.96568 0.21398
+-0.185672 0.982612 -1.5e-005
+-0.181366 0.959856 0.213969
+-0.147223 0.96568 0.21398
+-0.150716 0.988577 -1.3e-005
+-0.185672 0.982612 -1.5e-005
+-0.185672 0.982612 -1.5e-005
+-0.246039 0.945325 0.21407
+-0.181366 0.959856 0.213969
+-0.185672 0.982612 -1.5e-005
+-0.251863 0.967763 -1.1e-005
+-0.246039 0.945325 0.21407
+-0.246039 0.945325 0.21407
+-0.316121 0.948719 -1.e-006
+-0.308816 0.926745 0.213955
+-0.246039 0.945325 0.21407
+-0.251863 0.967763 -1.1e-005
+-0.316121 0.948719 -1.e-006
+-0.308816 0.926745 0.213955
+-0.371252 0.928532 -1.e-006
+-0.362643 0.907027 0.213989
+-0.308816 0.926745 0.213955
+-0.316121 0.948719 -1.e-006
+-0.371252 0.928532 -1.e-006
+-0.362643 0.907027 0.213989
+-0.452717 0.891654 -3.e-006
+-0.442217 0.870991 0.214052
+-0.362643 0.907027 0.213989
+-0.371252 0.928532 -1.e-006
+-0.452717 0.891654 -3.e-006
+-0.452717 0.891654 -3.e-006
+-0.537056 0.815926 0.214092
+-0.442217 0.870991 0.214052
+-0.452717 0.891654 -3.e-006
+-0.549778 0.835311 1.e-006
+-0.537056 0.815926 0.214092
+-0.549778 0.835311 1.e-006
+-0.61204 0.761343 0.213923
+-0.537056 0.815926 0.214092
+-0.549778 0.835311 1.e-006
+-0.626526 0.779401 -5.e-006
+-0.61204 0.761343 0.213923
+-0.626526 0.779401 -5.e-006
+-0.678357 0.702877 0.213999
+-0.61204 0.761343 0.213923
+-0.626526 0.779401 -5.e-006
+-0.694459 0.719532 3.e-006
+-0.678357 0.702877 0.213999
+-0.678357 0.702877 0.213999
+-0.781904 0.623398 7.e-006
+-0.763761 0.608942 0.214147
+-0.678357 0.702877 0.213999
+-0.694459 0.719532 3.e-006
+-0.781904 0.623398 7.e-006
+-0.781904 0.623398 7.e-006
+-0.844506 0.490883 0.214111
+-0.763761 0.608942 0.214147
+-0.781904 0.623398 7.e-006
+-0.864529 0.502583 4.e-006
+-0.844506 0.490883 0.214111
+-0.844506 0.490883 0.214111
+-0.914248 0.405155 2.e-006
+-0.893106 0.395741 0.213893
+-0.844506 0.490883 0.214111
+-0.864529 0.502583 4.e-006
+-0.914248 0.405155 2.e-006
+-0.893106 0.395741 0.213893
+-0.949091 0.315003 0
+-0.927098 0.307725 0.213995
+-0.893106 0.395741 0.213893
+-0.914248 0.405155 2.e-006
+-0.949091 0.315003 0
+-0.927098 0.307725 0.213995
+-0.983578 0.180481 1.e-006
+-0.960762 0.176306 0.214131
+-0.927098 0.307725 0.213995
+-0.949091 0.315003 0
+-0.983578 0.180481 1.e-006
+-0.960762 0.176306 0.214131
+-0.999857 1.6921e-002 0
+-0.976661 1.6503e-002 0.214151
+-0.960762 0.176306 0.214131
+-0.983578 0.180481 1.e-006
+-0.999857 1.6921e-002 0
+-0.976661 1.6503e-002 0.214151
+-0.992148 -0.125072 0
+-0.9692 -0.122191 0.213824
+-0.976661 1.6503e-002 0.214151
+-0.999857 1.6921e-002 0
+-0.992148 -0.125072 0
+-0.992148 -0.125072 0
+-0.939025 -0.269183 0.213947
+-0.9692 -0.122191 0.213824
+-0.992148 -0.125072 0
+-0.961274 -0.275593 0
+-0.939025 -0.269183 0.213947
+-0.939025 -0.269183 0.213947
+-0.869691 -0.493596 0
+-0.849446 -0.482095 0.214538
+-0.939025 -0.269183 0.213947
+-0.961274 -0.275593 0
+-0.869691 -0.493596 0
+-0.869691 -0.493596 0
+-0.689154 -0.692184 0.214354
+-0.849446 -0.482095 0.214538
+-0.869691 -0.493596 0
+-0.70562 -0.708591 1.e-006
+-0.689154 -0.692184 0.214354
+-0.70562 -0.708591 1.e-006
+-0.540785 -0.81357 0.21367
+-0.689154 -0.692184 0.214354
+-0.70562 -0.708591 1.e-006
+-0.553643 -0.832754 0
+-0.540785 -0.81357 0.21367
+-0.553643 -0.832754 0
+-0.404924 -0.888936 0.214078
+-0.540785 -0.81357 0.21367
+-0.553643 -0.832754 0
+-0.414523 -0.910039 -1.e-006
+-0.404924 -0.888936 0.214078
+-0.404924 -0.888936 0.214078
+-0.223374 -0.974733 0
+-0.218182 -0.952074 0.214363
+-0.404924 -0.888936 0.214078
+-0.414523 -0.910039 -1.e-006
+-0.223374 -0.974733 0
+-0.218182 -0.952074 0.214363
+-4.216e-002 -0.999111 0
+-4.1133e-002 -0.975968 0.213995
+-0.218182 -0.952074 0.214363
+-0.223374 -0.974733 0
+-4.216e-002 -0.999111 0
+-4.1133e-002 -0.975968 0.213995
+5.6428e-002 -0.998407 0
+5.5166e-002 -0.975302 0.213877
+-4.1133e-002 -0.975968 0.213995
+-4.216e-002 -0.999111 0
+5.6428e-002 -0.998407 0
+5.5166e-002 -0.975302 0.213877
+0.121866 -0.992547 0
+0.119034 -0.969557 0.213988
+5.5166e-002 -0.975302 0.213877
+5.6428e-002 -0.998407 0
+0.121866 -0.992547 0
+0.121866 -0.992547 0
+0.215244 -0.952806 0.214081
+0.119034 -0.969557 0.213988
+0.121866 -0.992547 0
+0.220357 -0.975419 1.e-006
+0.215244 -0.952806 0.214081
+0.220357 -0.975419 1.e-006
+0.328296 -0.919992 0.214096
+0.215244 -0.952806 0.214081
+0.220357 -0.975419 1.e-006
+0.336063 -0.94184 0
+0.328296 -0.919992 0.214096
+0.328296 -0.919992 0.214096
+0.420459 -0.907312 0
+0.410748 -0.886296 0.213928
+0.328296 -0.919992 0.214096
+0.336063 -0.94184 0
+0.420459 -0.907312 0
+0.410748 -0.886296 0.213928
+0.484701 -0.87468 1.e-006
+0.473467 -0.854417 0.214011
+0.410748 -0.886296 0.213928
+0.420459 -0.907312 0
+0.484701 -0.87468 1.e-006
+0.473467 -0.854417 0.214011
+0.563344 -0.826223 0
+0.551753 -0.812155 0.189664
+0.473467 -0.854417 0.214011
+0.484701 -0.87468 1.e-006
+0.563344 -0.826223 0
+0.551753 -0.812155 0.189664
+0.604937 -0.796274 -9.99999e-007
+0.593244 -0.787889 0.165204
+0.551753 -0.812155 0.189664
+0.563344 -0.826223 0
+0.604937 -0.796274 -9.99999e-007
+-0.979492 -0.113704 0.166336
+-0.990338 -0.138675 0
+-0.971621 -0.140765 0.190102
+-0.979492 -0.113704 0.166336
+-0.994442 -0.105289 0
+-0.990338 -0.138675 0
+-0.990338 -0.138675 0
+-0.975281 -0.22097 0
+-0.990338 -0.138675 0
+-0.990338 -0.138675 0
+-0.975281 -0.22097 0
+-0.975281 -0.22097 0
+-0.975281 -0.22097 0
+-0.944482 -0.328563 0
+-0.944482 -0.328563 0
+-0.975281 -0.22097 0
+-0.975281 -0.22097 0
+-0.944482 -0.328563 0
+-0.944482 -0.328563 0
+-0.922339 -0.386382 0
+-0.922339 -0.386382 1.e-006
+-0.944482 -0.328563 0
+-0.944482 -0.328563 0
+-0.922339 -0.386382 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0.8889 0.458101 0
+0.899821 0.436259 0
+0.899821 0.436259 0
+0.8889 0.458101 0
+0.8889 0.458101 0
+0.899821 0.436259 0
+0.899821 0.436259 0
+0.924867 0.38029 0
+0.924867 0.38029 0
+0.899821 0.436259 0
+0.899821 0.436259 0
+0.924867 0.38029 0
+0.924867 0.38029 0
+0.955857 0.293831 0
+0.924867 0.38029 0
+0.924867 0.38029 0
+0.955857 0.293831 0
+0.955857 0.293831 0
+0.955857 0.293831 0
+0.983134 0.182886 0
+0.983134 0.182886 0
+0.955857 0.293831 0
+0.955857 0.293831 0
+0.983134 0.182886 0
+0.983134 0.182886 0
+0.99486 0.101258 0
+0.983134 0.182886 0
+0.983134 0.182886 0
+0.99486 0.101258 0
+0.99486 0.101258 0
+0.99486 0.101258 0
+0.998236 5.9378e-002 0
+0.998236 5.9378e-002 0
+0.99486 0.101258 0
+0.99486 0.101258 0
+0.998236 5.9378e-002 0
+0.998236 5.9378e-002 0
+0.999661 2.6044e-002 0
+0.999661 2.6044e-002 0
+0.998236 5.9378e-002 0
+0.998236 5.9378e-002 0
+0.999661 2.6044e-002 0
+0.999661 2.6044e-002 0
+0.999983 5.776e-003 0
+0.999983 5.776e-003 0
+0.999661 2.6044e-002 0
+0.999661 2.6044e-002 0
+0.999983 5.776e-003 0
+0.999983 5.776e-003 0
+0.999993 3.613e-003 0
+0.999993 3.613e-003 0
+0.999983 5.776e-003 0
+0.999983 5.776e-003 0
+0.999993 3.613e-003 0
+0.999993 3.613e-003 0
+0.999898 1.4249e-002 0
+0.999898 1.4249e-002 0
+0.999993 3.613e-003 0
+0.999993 3.613e-003 0
+0.999898 1.4249e-002 0
+0.999898 1.4249e-002 0
+0.999389 3.4963e-002 0
+0.999389 3.4963e-002 0
+0.999898 1.4249e-002 0
+0.999898 1.4249e-002 0
+0.999389 3.4963e-002 0
+0.999389 3.4963e-002 0
+0.996675 8.1481e-002 0
+0.996675 8.1481e-002 1.e-006
+0.999389 3.4963e-002 0
+0.999389 3.4963e-002 0
+0.996675 8.1481e-002 0
+0.996675 8.1481e-002 0
+0.982192 0.187878 1.e-006
+0.996675 8.1481e-002 1.e-006
+0.996675 8.1481e-002 0
+0.982192 0.187878 0
+0.982192 0.187878 1.e-006
+0.982192 0.187878 0
+0.951724 0.306954 3.e-006
+0.982192 0.187878 1.e-006
+0.982192 0.187878 0
+0.951724 0.306954 0
+0.951724 0.306954 3.e-006
+0.951724 0.306954 3.e-006
+0.898857 0.438241 0
+0.898857 0.438241 -5.e-006
+0.951724 0.306954 3.e-006
+0.951724 0.306954 0
+0.898857 0.438241 0
+0.898857 0.438241 -5.e-006
+0.788226 0.615385 0
+0.788226 0.615385 -2.e-006
+0.898857 0.438241 -5.e-006
+0.898857 0.438241 0
+0.788226 0.615385 0
+0.788226 0.615385 0
+0.660708 0.750643 9.e-006
+0.788226 0.615385 -2.e-006
+0.788226 0.615385 0
+0.660708 0.750643 0
+0.660708 0.750643 9.e-006
+0.660708 0.750643 9.e-006
+0.528416 0.848986 0
+0.528416 0.848986 -2.e-006
+0.660708 0.750643 9.e-006
+0.660708 0.750643 0
+0.528416 0.848986 0
+0.528416 0.848986 -2.e-006
+0.369942 0.929055 0
+0.369942 0.929055 -1.e-005
+0.528416 0.848986 -2.e-006
+0.528416 0.848986 0
+0.369942 0.929055 0
+0.369942 0.929055 -1.e-005
+0.244854 0.96956 0
+0.244854 0.96956 1.e-006
+0.369942 0.929055 -1.e-005
+0.369942 0.929055 0
+0.244854 0.96956 0
+0.244854 0.96956 1.e-006
+0.133941 0.990989 0
+0.133941 0.990989 6.e-006
+0.244854 0.96956 1.e-006
+0.244854 0.96956 0
+0.133941 0.990989 0
+0.133941 0.990989 0
+1.7452e-002 0.999848 -7.e-006
+0.133941 0.990989 6.e-006
+0.133941 0.990989 0
+1.7452e-002 0.999848 0
+1.7452e-002 0.999848 -7.e-006
+1.7452e-002 0.999848 -7.e-006
+-6.9419e-002 0.997588 0
+-6.9419e-002 0.997588 -8.e-006
+1.7452e-002 0.999848 -7.e-006
+1.7452e-002 0.999848 0
+-6.9419e-002 0.997588 0
+-6.9419e-002 0.997588 -8.e-006
+-0.169707 0.985495 0
+-0.169707 0.985495 5.e-006
+-6.9419e-002 0.997588 -8.e-006
+-6.9419e-002 0.997588 0
+-0.169707 0.985495 0
+-0.169707 0.985495 5.e-006
+-0.30575 0.952112 0
+-0.30575 0.952112 -7.e-006
+-0.169707 0.985495 5.e-006
+-0.169707 0.985495 0
+-0.30575 0.952112 0
+-0.30575 0.952112 -7.e-006
+-0.407187 0.913345 0
+-0.407187 0.913345 -1.9e-005
+-0.30575 0.952112 -7.e-006
+-0.30575 0.952112 0
+-0.407187 0.913345 0
+-0.407187 0.913345 -1.9e-005
+-0.490179 0.871622 0
+-0.490179 0.871622 -5.e-006
+-0.407187 0.913345 -1.9e-005
+-0.407187 0.913345 0
+-0.490179 0.871622 0
+-0.490179 0.871622 -5.e-006
+-0.617849 0.786296 0
+-0.617849 0.786296 -7.e-006
+-0.490179 0.871622 -5.e-006
+-0.490179 0.871622 0
+-0.617849 0.786296 0
+-0.617849 0.786296 0
+-0.761759 0.64786 -1.1e-005
+-0.617849 0.786296 -7.e-006
+-0.617849 0.786296 0
+-0.761759 0.64786 0
+-0.761759 0.64786 -1.1e-005
+-0.761759 0.64786 -1.1e-005
+-0.85698 0.515349 0
+-0.85698 0.515349 -6.e-006
+-0.761759 0.64786 -1.1e-005
+-0.761759 0.64786 0
+-0.85698 0.515349 0
+-0.85698 0.515349 0
+-0.922517 0.385957 -1.e-006
+-0.85698 0.515349 -6.e-006
+-0.85698 0.515349 0
+-0.922517 0.385957 0
+-0.922517 0.385957 -1.e-006
+-0.922517 0.385957 -1.e-006
+-0.952225 0.305398 0
+-0.952225 0.305398 4.e-006
+-0.922517 0.385957 -1.e-006
+-0.922517 0.385957 0
+-0.952225 0.305398 0
+-0.13509 -0.990833 3.e-006
+-0.13509 -0.990833 0
+-0.13509 -0.990833 3.e-006
+-0.13509 -0.990833 3.e-006
+-0.13509 -0.990833 0
+-0.13509 -0.990833 0
+0.958104 -0.286421 6.e-006
+0.947083 -0.320989 0
+0.947083 -0.320989 0
+0.958104 -0.286421 6.e-006
+0.958104 -0.286421 0
+0.947083 -0.320989 0
+0.947083 -0.320989 0
+0.909846 -0.414945 0
+0.909846 -0.414945 1.e-006
+0.947083 -0.320989 0
+0.947083 -0.320989 0
+0.909846 -0.414945 0
+0.909846 -0.414945 0
+0.81637 -0.57753 0
+0.909846 -0.414945 1.e-006
+0.909846 -0.414945 0
+0.81637 -0.57753 0
+0.81637 -0.57753 0
+0.81637 -0.57753 0
+0.635928 -0.771748 0
+0.635928 -0.771748 6.e-006
+0.81637 -0.57753 0
+0.81637 -0.57753 0
+0.635928 -0.771748 0
+0.635928 -0.771748 6.e-006
+0.462539 -0.886599 0
+0.462539 -0.886599 1.2e-005
+0.635928 -0.771748 6.e-006
+0.635928 -0.771748 0
+0.462539 -0.886599 0
+0.462539 -0.886599 1.2e-005
+0.329324 -0.944217 0
+0.329324 -0.944217 -4.e-006
+0.462539 -0.886599 1.2e-005
+0.462539 -0.886599 0
+0.329324 -0.944217 0
+0.329324 -0.944217 -4.e-006
+0.168929 -0.985628 0
+0.168929 -0.985628 -1.2e-005
+0.329324 -0.944217 -4.e-006
+0.329324 -0.944217 0
+0.168929 -0.985628 0
+0.168929 -0.985628 0
+2.0516e-002 -0.99979 -1.e-006
+0.168929 -0.985628 -1.2e-005
+0.168929 -0.985628 0
+2.0516e-002 -0.99979 0
+2.0516e-002 -0.99979 -1.e-006
+2.0516e-002 -0.99979 -1.e-006
+-8.239e-002 -0.9966 0
+-8.239e-002 -0.9966 1.e-006
+2.0516e-002 -0.99979 -1.e-006
+2.0516e-002 -0.99979 0
+-8.239e-002 -0.9966 0
+-8.239e-002 -0.9966 0
+-0.191546 -0.981484 -1.5e-005
+-8.239e-002 -0.9966 1.e-006
+-8.239e-002 -0.9966 0
+-0.191546 -0.981484 0
+-0.191546 -0.981484 -1.5e-005
+-0.191546 -0.981484 -1.5e-005
+-0.383203 -0.923664 0
+-0.383203 -0.923664 -3.e-006
+-0.191546 -0.981484 -1.5e-005
+-0.191546 -0.981484 0
+-0.383203 -0.923664 0
+-0.383203 -0.923664 0
+-0.627018 -0.779005 6.e-006
+-0.383203 -0.923664 -3.e-006
+-0.383203 -0.923664 0
+-0.627018 -0.779005 0
+-0.627018 -0.779005 6.e-006
+-0.627018 -0.779005 6.e-006
+-0.794191 -0.607668 0
+-0.794191 -0.607668 4.e-006
+-0.627018 -0.779005 6.e-006
+-0.627018 -0.779005 0
+-0.794191 -0.607668 0
+-0.794191 -0.607668 0
+-0.896743 -0.442552 8.e-006
+-0.794191 -0.607668 4.e-006
+-0.794191 -0.607668 0
+-0.896743 -0.442552 0
+-0.896743 -0.442552 8.e-006
+-0.896743 -0.442552 8.e-006
+-0.973472 -0.228806 0
+-0.973472 -0.228806 2.e-006
+-0.896743 -0.442552 8.e-006
+-0.896743 -0.442552 0
+-0.973472 -0.228806 0
+-0.973472 -0.228806 2.e-006
+-0.998422 -5.6149e-002 0
+-0.998422 -5.6149e-002 0
+-0.973472 -0.228806 2.e-006
+-0.973472 -0.228806 0
+-0.998422 -5.6149e-002 0
+-0.998422 -5.6149e-002 0
+-1. 0 0
+-1. 0 0
+-0.998422 -5.6149e-002 0
+-0.998422 -5.6149e-002 0
+-1. 0 0
+-0.294991 0.9555 1.e-006
+-0.271751 0.962368 0
+-0.271751 0.962368 -5.e-006
+-0.294991 0.9555 1.e-006
+-0.294991 0.9555 0
+-0.271751 0.962368 0
+-0.271751 0.962368 0
+-0.222462 0.974941 4.e-006
+-0.271751 0.962368 -5.e-006
+-0.271751 0.962368 0
+-0.222462 0.974941 0
+-0.222462 0.974941 4.e-006
+-0.222462 0.974941 0
+-0.170051 0.985435 5.e-006
+-0.222462 0.974941 4.e-006
+-0.222462 0.974941 0
+-0.170051 0.985435 0
+-0.170051 0.985435 5.e-006
+-0.170051 0.985435 0
+-0.135289 0.990806 5.e-006
+-0.170051 0.985435 5.e-006
+-0.170051 0.985435 0
+-0.135289 0.990806 0
+-0.135289 0.990806 5.e-006
+-0.135289 0.990806 5.e-006
+-0.133203 0.991089 0
+-0.133203 0.991089 5.e-006
+-0.135289 0.990806 5.e-006
+-0.135289 0.990806 0
+-0.133203 0.991089 0
+-0.133203 0.991089 0
+-0.150716 0.988577 -1.3e-005
+-0.133203 0.991089 5.e-006
+-0.133203 0.991089 0
+-0.150716 0.988577 0
+-0.150716 0.988577 -1.3e-005
+-0.150716 0.988577 -1.3e-005
+-0.185672 0.982612 0
+-0.185672 0.982612 -1.5e-005
+-0.150716 0.988577 -1.3e-005
+-0.150716 0.988577 0
+-0.185672 0.982612 0
+-0.185672 0.982612 0
+-0.251863 0.967763 -1.1e-005
+-0.185672 0.982612 -1.5e-005
+-0.185672 0.982612 0
+-0.251863 0.967763 0
+-0.251863 0.967763 -1.1e-005
+-0.251863 0.967763 -1.1e-005
+-0.316121 0.948719 0
+-0.316121 0.948719 -1.e-006
+-0.251863 0.967763 -1.1e-005
+-0.251863 0.967763 0
+-0.316121 0.948719 0
+-0.316121 0.948719 0
+-0.371252 0.928532 -1.e-006
+-0.316121 0.948719 -1.e-006
+-0.316121 0.948719 0
+-0.371252 0.928532 0
+-0.371252 0.928532 -1.e-006
+-0.371252 0.928532 -1.e-006
+-0.452717 0.891654 0
+-0.452717 0.891654 -3.e-006
+-0.371252 0.928532 -1.e-006
+-0.371252 0.928532 0
+-0.452717 0.891654 0
+-0.452717 0.891654 0
+-0.549778 0.835311 1.e-006
+-0.452717 0.891654 -3.e-006
+-0.452717 0.891654 0
+-0.549778 0.835311 0
+-0.549778 0.835311 1.e-006
+-0.549778 0.835311 1.e-006
+-0.626526 0.779401 0
+-0.626526 0.779401 -5.e-006
+-0.549778 0.835311 1.e-006
+-0.549778 0.835311 0
+-0.626526 0.779401 0
+-0.626526 0.779401 -5.e-006
+-0.694459 0.719532 0
+-0.694459 0.719532 3.e-006
+-0.626526 0.779401 -5.e-006
+-0.626526 0.779401 0
+-0.694459 0.719532 0
+-0.694459 0.719532 3.e-006
+-0.781904 0.623398 0
+-0.781904 0.623398 7.e-006
+-0.694459 0.719532 3.e-006
+-0.694459 0.719532 0
+-0.781904 0.623398 0
+-0.781904 0.623398 7.e-006
+-0.864529 0.502583 0
+-0.864529 0.502583 4.e-006
+-0.781904 0.623398 7.e-006
+-0.781904 0.623398 0
+-0.864529 0.502583 0
+-0.864529 0.502583 0
+-0.914248 0.405155 2.e-006
+-0.864529 0.502583 4.e-006
+-0.864529 0.502583 0
+-0.914248 0.405155 0
+-0.914248 0.405155 2.e-006
+-0.914248 0.405155 2.e-006
+-0.949091 0.315003 0
+-0.949091 0.315003 0
+-0.914248 0.405155 2.e-006
+-0.914248 0.405155 0
+-0.949091 0.315003 0
+-0.949091 0.315003 0
+-0.983578 0.180481 1.e-006
+-0.949091 0.315003 0
+-0.949091 0.315003 0
+-0.983578 0.180481 0
+-0.983578 0.180481 1.e-006
+-0.983578 0.180481 1.e-006
+-0.999857 1.6921e-002 0
+-0.999857 1.6921e-002 0
+-0.983578 0.180481 1.e-006
+-0.983578 0.180481 0
+-0.999857 1.6921e-002 0
+-0.999857 1.6921e-002 0
+-0.992148 -0.125072 0
+-0.999857 1.6921e-002 0
+-0.999857 1.6921e-002 0
+-0.992148 -0.125072 0
+-0.992148 -0.125072 0
+-0.992148 -0.125072 0
+-0.961274 -0.275593 0
+-0.992148 -0.125072 0
+-0.992148 -0.125072 0
+-0.961274 -0.275593 0
+-0.961274 -0.275593 0
+-0.961274 -0.275593 0
+-0.869691 -0.493596 0
+-0.869691 -0.493596 0
+-0.961274 -0.275593 0
+-0.961274 -0.275593 0
+-0.869691 -0.493596 0
+-0.869691 -0.493596 0
+-0.70562 -0.708591 0
+-0.70562 -0.708591 1.e-006
+-0.869691 -0.493596 0
+-0.869691 -0.493596 0
+-0.70562 -0.708591 0
+-0.70562 -0.708591 1.e-006
+-0.553643 -0.832754 0
+-0.553643 -0.832754 0
+-0.70562 -0.708591 1.e-006
+-0.70562 -0.708591 0
+-0.553643 -0.832754 0
+-0.553643 -0.832754 0
+-0.414523 -0.910039 0
+-0.414523 -0.910039 -1.e-006
+-0.553643 -0.832754 0
+-0.553643 -0.832754 0
+-0.414523 -0.910039 0
+-0.414523 -0.910039 -1.e-006
+-0.223374 -0.974733 0
+-0.223374 -0.974733 0
+-0.414523 -0.910039 -1.e-006
+-0.414523 -0.910039 0
+-0.223374 -0.974733 0
+-0.223374 -0.974733 0
+-4.216e-002 -0.999111 0
+-4.216e-002 -0.999111 0
+-0.223374 -0.974733 0
+-0.223374 -0.974733 0
+-4.216e-002 -0.999111 0
+-4.216e-002 -0.999111 0
+5.6428e-002 -0.998407 0
+-4.216e-002 -0.999111 0
+-4.216e-002 -0.999111 0
+5.6428e-002 -0.998407 0
+5.6428e-002 -0.998407 0
+5.6428e-002 -0.998407 0
+0.121866 -0.992547 0
+0.121866 -0.992547 0
+5.6428e-002 -0.998407 0
+5.6428e-002 -0.998407 0
+0.121866 -0.992547 0
+0.121866 -0.992547 0
+0.220357 -0.975419 1.e-006
+0.121866 -0.992547 0
+0.121866 -0.992547 0
+0.220357 -0.975419 0
+0.220357 -0.975419 1.e-006
+0.220357 -0.975419 1.e-006
+0.336063 -0.94184 0
+0.336063 -0.94184 0
+0.220357 -0.975419 1.e-006
+0.220357 -0.975419 0
+0.336063 -0.94184 0
+0.336063 -0.94184 0
+0.420459 -0.907312 0
+0.420459 -0.907312 0
+0.336063 -0.94184 0
+0.336063 -0.94184 0
+0.420459 -0.907312 0
+0.420459 -0.907312 0
+0.484701 -0.87468 0
+0.484701 -0.87468 1.e-006
+0.420459 -0.907312 0
+0.420459 -0.907312 0
+0.484701 -0.87468 0
+0.484701 -0.87468 1.e-006
+0.563344 -0.826223 0
+0.563344 -0.826223 0
+0.484701 -0.87468 1.e-006
+0.484701 -0.87468 0
+0.563344 -0.826223 0
+0.563344 -0.826223 0
+0.604937 -0.796274 -9.99999e-007
+0.563344 -0.826223 0
+0.563344 -0.826223 0
+0.604937 -0.796274 0
+0.604937 -0.796274 -9.99999e-007
+-0.994442 -0.105289 0
+-0.990338 -0.138675 0
+-0.994442 -0.105289 0
+-0.994442 -0.105289 0
+-0.990338 -0.138675 0
+-0.990338 -0.138675 0
+0 0 1.
+-0.213795 9.636e-003 0.976831
+0 0 1.
+0 0 1.
+-0.234538 -2.357e-003 0.972104
+-0.213795 9.636e-003 0.976831
+0 0 1.
+-0.212862 2.2676e-002 0.976819
+0 0 1.
+0 0 1.
+-0.213795 9.636e-003 0.976831
+-0.212862 2.2676e-002 0.976819
+0 0 1.
+-0.208578 4.754e-002 0.97685
+0 0 1.
+0 0 1.
+-0.212862 2.2676e-002 0.976819
+-0.208578 4.754e-002 0.97685
+0 0 1.
+-0.196532 8.376e-002 0.976913
+0 0 1.
+0 0 1.
+-0.208578 4.754e-002 0.97685
+-0.196532 8.376e-002 0.976913
+-0.196532 8.376e-002 0.976913
+0 0 1.
+0 0 1.
+-0.196532 8.376e-002 0.976913
+-0.182461 0.112229 0.976787
+0 0 1.
+0 0 1.
+-0.167693 0.132949 0.976833
+0 0 1.
+0 0 1.
+-0.182461 0.112229 0.976787
+-0.167693 0.132949 0.976833
+0 0 1.
+-0.142642 0.159171 0.976892
+0 0 1.
+0 0 1.
+-0.167693 0.132949 0.976833
+-0.142642 0.159171 0.976892
+-0.142642 0.159171 0.976892
+0 0 1.
+0 0 1.
+-0.142642 0.159171 0.976892
+-0.111234 0.182668 0.976862
+0 0 1.
+-0.111234 0.182668 0.976862
+0 0 1.
+0 0 1.
+-0.111234 0.182668 0.976862
+-8.7425e-002 0.195489 0.976801
+0 0 1.
+0 0 1.
+-6.7151e-002 0.203185 0.976835
+0 0 1.
+0 0 1.
+-8.7425e-002 0.195489 0.976801
+-6.7151e-002 0.203185 0.976835
+0 0 1.
+-3.7962e-002 0.210432 0.976871
+0 0 1.
+0 0 1.
+-6.7151e-002 0.203185 0.976835
+-3.7962e-002 0.210432 0.976871
+-3.7962e-002 0.210432 0.976871
+0 0 1.
+0 0 1.
+-3.7962e-002 0.210432 0.976871
+-5.841e-003 0.213838 0.976852
+0 0 1.
+-5.841e-003 0.213838 0.976852
+0 0 1.
+0 0 1.
+-5.841e-003 0.213838 0.976852
+1.7853e-002 0.213389 0.976804
+0 0 1.
+0 0 1.
+4.1574e-002 0.210065 0.976803
+0 0 1.
+0 0 1.
+1.7853e-002 0.213389 0.976804
+4.1574e-002 0.210065 0.976803
+0 0 1.
+8.235e-002 0.197182 0.976902
+0 0 1.
+0 0 1.
+4.1574e-002 0.210065 0.976803
+8.235e-002 0.197182 0.976902
+0 0 1.
+0.132566 0.167253 0.976961
+0 0 1.
+0 0 1.
+8.235e-002 0.197182 0.976902
+0.132566 0.167253 0.976961
+0.132566 0.167253 0.976961
+0 0 1.
+0 0 1.
+0.132566 0.167253 0.976961
+0.169901 0.131144 0.976696
+0 0 1.
+0 0 1.
+0.197054 8.1105e-002 0.977032
+0 0 1.
+0 0 1.
+0.169901 0.131144 0.976696
+0.197054 8.1105e-002 0.977032
+0.197054 8.1105e-002 0.977032
+0 0 1.
+0 0 1.
+0.197054 8.1105e-002 0.977032
+0.212979 1.6802e-002 0.976912
+0 0 1.
+0.212979 1.6802e-002 0.976912
+0 0 1.
+0 0 1.
+0.212979 1.6802e-002 0.976912
+0.21267 -2.7978e-002 0.976723
+0 0 1.
+0 0 1.
+0.203535 -6.5137e-002 0.976898
+0 0 1.
+0 0 1.
+0.21267 -2.7978e-002 0.976723
+0.203535 -6.5137e-002 0.976898
+0 0 1.
+0.183678 -0.109183 0.976904
+0 0 1.
+0 0 1.
+0.203535 -6.5137e-002 0.976898
+0.183678 -0.109183 0.976904
+0.183678 -0.109183 0.976904
+0 0 1.
+0 0 1.
+0.183678 -0.109183 0.976904
+0.160906 -0.14156 0.976765
+0 0 1.
+0 0 1.
+0.132034 -0.16798 0.976908
+0 0 1.
+0 0 1.
+0.160906 -0.14156 0.976765
+0.132034 -0.16798 0.976908
+0.132034 -0.16798 0.976908
+0 0 1.
+0 0 1.
+0.132034 -0.16798 0.976908
+9.306e-002 -0.192418 0.976891
+0 0 1.
+9.306e-002 -0.192418 0.976891
+0 0 1.
+0 0 1.
+9.306e-002 -0.192418 0.976891
+6.4398e-002 -0.204278 0.976792
+0 0 1.
+6.4398e-002 -0.204278 0.976792
+0 0 1.
+0 0 1.
+6.4398e-002 -0.204278 0.976792
+4.712e-002 -0.208693 0.976845
+0 0 1.
+4.712e-002 -0.208693 0.976845
+0 0 1.
+0 0 1.
+4.712e-002 -0.208693 0.976845
+3.5616e-002 -0.211049 0.976826
+0 0 1.
+3.5616e-002 -0.211049 0.976826
+0 0 1.
+0 0 1.
+3.5616e-002 -0.211049 0.976826
+3.5263e-002 -0.21108 0.976833
+0 0 1.
+3.5263e-002 -0.21108 0.976833
+0 0 1.
+0 0 1.
+3.5263e-002 -0.21108 0.976833
+4.2093e-002 -0.209841 0.976829
+0 0 1.
+4.2093e-002 -0.209841 0.976829
+0 0 1.
+0 0 1.
+4.2093e-002 -0.209841 0.976829
+5.8172e-002 -0.227722 0.971987
+0 0 1.
+0 0 1.
+-9.4576e-002 -0.130807 0.986886
+0 0 1.
+0 0 1.
+5.8172e-002 -0.227722 0.971987
+-9.4576e-002 -0.130807 0.986886
+-9.4576e-002 -0.130807 0.986886
+0 0 1.
+0 0 1.
+-9.4576e-002 -0.130807 0.986886
+-0.234538 -2.357e-003 0.972104
+0 0 1.
+-0.234538 -2.357e-003 0.972104
+-0.706395 3.1812e-002 0.707103
+-0.213795 9.636e-003 0.976831
+-0.234538 -2.357e-003 0.972104
+-0.735416 7.49e-004 0.677616
+-0.706395 3.1812e-002 0.707103
+-0.213795 9.636e-003 0.976831
+-0.703189 7.4841e-002 0.707053
+-0.212862 2.2676e-002 0.976819
+-0.213795 9.636e-003 0.976831
+-0.706395 3.1812e-002 0.707103
+-0.703189 7.4841e-002 0.707053
+-0.212862 2.2676e-002 0.976819
+-0.689176 0.156961 0.707389
+-0.208578 4.754e-002 0.97685
+-0.212862 2.2676e-002 0.976819
+-0.703189 7.4841e-002 0.707053
+-0.689176 0.156961 0.707389
+-0.208578 4.754e-002 0.97685
+-0.649619 0.277164 0.707937
+-0.196532 8.376e-002 0.976913
+-0.208578 4.754e-002 0.97685
+-0.689176 0.156961 0.707389
+-0.649619 0.277164 0.707937
+-0.649619 0.277164 0.707937
+-0.182461 0.112229 0.976787
+-0.196532 8.376e-002 0.976913
+-0.649619 0.277164 0.707937
+-0.602368 0.370828 0.706852
+-0.182461 0.112229 0.976787
+-0.182461 0.112229 0.976787
+-0.554058 0.439115 0.707246
+-0.167693 0.132949 0.976833
+-0.182461 0.112229 0.976787
+-0.602368 0.370828 0.706852
+-0.554058 0.439115 0.707246
+-0.167693 0.132949 0.976833
+-0.47149 0.526067 0.707779
+-0.142642 0.159171 0.976892
+-0.167693 0.132949 0.976833
+-0.554058 0.439115 0.707246
+-0.47149 0.526067 0.707779
+-0.47149 0.526067 0.707779
+-0.111234 0.182668 0.976862
+-0.142642 0.159171 0.976892
+-0.47149 0.526067 0.707779
+-0.367343 0.603733 0.707507
+-0.111234 0.182668 0.976862
+-0.367343 0.603733 0.707507
+-8.7425e-002 0.195489 0.976801
+-0.111234 0.182668 0.976862
+-0.367343 0.603733 0.707507
+-0.288578 0.645726 0.706937
+-8.7425e-002 0.195489 0.976801
+-8.7425e-002 0.195489 0.976801
+-0.22192 0.671265 0.707216
+-6.7151e-002 0.203185 0.976835
+-8.7425e-002 0.195489 0.976801
+-0.288578 0.645726 0.706937
+-0.22192 0.671265 0.707216
+-6.7151e-002 0.203185 0.976835
+-0.12548 0.695437 0.707547
+-3.7962e-002 0.210432 0.976871
+-6.7151e-002 0.203185 0.976835
+-0.22192 0.671265 0.707216
+-0.12548 0.695437 0.707547
+-0.12548 0.695437 0.707547
+-5.841e-003 0.213838 0.976852
+-3.7962e-002 0.210432 0.976871
+-0.12548 0.695437 0.707547
+-1.9162e-002 0.706584 0.707369
+-5.841e-003 0.213838 0.976852
+-1.9162e-002 0.706584 0.707369
+1.7853e-002 0.213389 0.976804
+-5.841e-003 0.213838 0.976852
+-1.9162e-002 0.706584 0.707369
+5.9029e-002 0.704791 0.706954
+1.7853e-002 0.213389 0.976804
+1.7853e-002 0.213389 0.976804
+0.137078 0.693755 0.707046
+4.1574e-002 0.210065 0.976803
+1.7853e-002 0.213389 0.976804
+5.9029e-002 0.704791 0.706954
+0.137078 0.693755 0.707046
+4.1574e-002 0.210065 0.976803
+0.271895 0.651725 0.708045
+8.235e-002 0.197182 0.976902
+4.1574e-002 0.210065 0.976803
+0.137078 0.693755 0.707046
+0.271895 0.651725 0.708045
+8.235e-002 0.197182 0.976902
+0.438558 0.552781 0.70859
+0.132566 0.167253 0.976961
+8.235e-002 0.197182 0.976902
+0.271895 0.651725 0.708045
+0.438558 0.552781 0.70859
+0.438558 0.552781 0.70859
+0.169901 0.131144 0.976696
+0.132566 0.167253 0.976961
+0.438558 0.552781 0.70859
+0.560324 0.432415 0.706437
+0.169901 0.131144 0.976696
+0.169901 0.131144 0.976696
+0.651781 0.268526 0.709278
+0.197054 8.1105e-002 0.977032
+0.169901 0.131144 0.976696
+0.560324 0.432415 0.706437
+0.651781 0.268526 0.709278
+0.651781 0.268526 0.709278
+0.212979 1.6802e-002 0.976912
+0.197054 8.1105e-002 0.977032
+0.651781 0.268526 0.709278
+0.703843 5.4639e-002 0.708251
+0.212979 1.6802e-002 0.976912
+0.703843 5.4639e-002 0.708251
+0.21267 -2.7978e-002 0.976723
+0.212979 1.6802e-002 0.976912
+0.703843 5.4639e-002 0.708251
+0.701625 -9.2844e-002 0.706472
+0.21267 -2.7978e-002 0.976723
+0.21267 -2.7978e-002 0.976723
+0.672759 -0.215089 0.707907
+0.203535 -6.5137e-002 0.976898
+0.21267 -2.7978e-002 0.976723
+0.701625 -9.2844e-002 0.706472
+0.672759 -0.215089 0.707907
+0.203535 -6.5137e-002 0.976898
+0.606894 -0.361191 0.70797
+0.183678 -0.109183 0.976904
+0.203535 -6.5137e-002 0.976898
+0.672759 -0.215089 0.707907
+0.606894 -0.361191 0.70797
+0.606894 -0.361191 0.70797
+0.160906 -0.14156 0.976765
+0.183678 -0.109183 0.976904
+0.606894 -0.361191 0.70797
+0.531003 -0.467443 0.706776
+0.160906 -0.14156 0.976765
+0.160906 -0.14156 0.976765
+0.436542 -0.555162 0.707974
+0.132034 -0.16798 0.976908
+0.160906 -0.14156 0.976765
+0.531003 -0.467443 0.706776
+0.436542 -0.555162 0.707974
+0.436542 -0.555162 0.707974
+9.306e-002 -0.192418 0.976891
+0.132034 -0.16798 0.976908
+0.436542 -0.555162 0.707974
+0.30722 -0.636105 0.707804
+9.306e-002 -0.192418 0.976891
+0.30722 -0.636105 0.707804
+6.4398e-002 -0.204278 0.976792
+9.306e-002 -0.192418 0.976891
+0.30722 -0.636105 0.707804
+0.21236 -0.674708 0.706875
+6.4398e-002 -0.204278 0.976792
+6.4398e-002 -0.204278 0.976792
+0.155695 -0.689621 0.707235
+4.712e-002 -0.208693 0.976845
+6.4398e-002 -0.204278 0.976792
+0.21236 -0.674708 0.706875
+0.155695 -0.689621 0.707235
+0.155695 -0.689621 0.707235
+3.5616e-002 -0.211049 0.976826
+4.712e-002 -0.208693 0.976845
+0.155695 -0.689621 0.707235
+0.117661 -0.697294 0.707062
+3.5616e-002 -0.211049 0.976826
+0.117661 -0.697294 0.707062
+3.5263e-002 -0.21108 0.976833
+3.5616e-002 -0.211049 0.976826
+0.117661 -0.697294 0.707062
+0.116516 -0.697447 0.707101
+3.5263e-002 -0.21108 0.976833
+0.116516 -0.697447 0.707101
+4.2093e-002 -0.209841 0.976829
+3.5263e-002 -0.21108 0.976833
+0.116516 -0.697447 0.707101
+0.139083 -0.693312 0.707089
+4.2093e-002 -0.209841 0.976829
+0.139083 -0.693312 0.707089
+5.8172e-002 -0.227722 0.971987
+4.2093e-002 -0.209841 0.976829
+0.139083 -0.693312 0.707089
+0.186296 -0.711761 0.677267
+5.8172e-002 -0.227722 0.971987
+5.8172e-002 -0.227722 0.971987
+-3.309e-002 -0.555537 0.830833
+-9.4576e-002 -0.130807 0.986886
+5.8172e-002 -0.227722 0.971987
+0.186296 -0.711761 0.677267
+-3.309e-002 -0.555537 0.830833
+-0.517538 -0.201411 0.831618
+-0.234538 -2.357e-003 0.972104
+-9.4576e-002 -0.130807 0.986886
+-0.517538 -0.201411 0.831618
+-0.735416 7.49e-004 0.677616
+-0.234538 -2.357e-003 0.972104
+-0.735416 7.49e-004 0.677616
+-0.975849 4.3922e-002 0.213987
+-0.706395 3.1812e-002 0.707103
+-0.735416 7.49e-004 0.677616
+-0.980828 8.975e-003 0.194668
+-0.975849 4.3922e-002 0.213987
+-0.706395 3.1812e-002 0.707103
+-0.97137 0.103316 0.213932
+-0.703189 7.4841e-002 0.707053
+-0.706395 3.1812e-002 0.707103
+-0.975849 4.3922e-002 0.213987
+-0.97137 0.103316 0.213932
+-0.703189 7.4841e-002 0.707053
+-0.952454 0.216807 0.214071
+-0.689176 0.156961 0.707389
+-0.703189 7.4841e-002 0.707053
+-0.97137 0.103316 0.213932
+-0.952454 0.216807 0.214071
+-0.689176 0.156961 0.707389
+-0.898289 0.383561 0.214376
+-0.649619 0.277164 0.707937
+-0.689176 0.156961 0.707389
+-0.952454 0.216807 0.214071
+-0.898289 0.383561 0.214376
+-0.898289 0.383561 0.214376
+-0.602368 0.370828 0.706852
+-0.649619 0.277164 0.707937
+-0.898289 0.383561 0.214376
+-0.831742 0.512353 0.213774
+-0.602368 0.370828 0.706852
+-0.602368 0.370828 0.706852
+-0.765627 0.606648 0.213995
+-0.554058 0.439115 0.707246
+-0.602368 0.370828 0.706852
+-0.831742 0.512353 0.213774
+-0.765627 0.606648 0.213995
+-0.554058 0.439115 0.707246
+-0.651949 0.72736 0.214267
+-0.47149 0.526067 0.707779
+-0.554058 0.439115 0.707246
+-0.765627 0.606648 0.213995
+-0.651949 0.72736 0.214267
+-0.651949 0.72736 0.214267
+-0.367343 0.603733 0.707507
+-0.47149 0.526067 0.707779
+-0.651949 0.72736 0.214267
+-0.507528 0.834603 0.214133
+-0.367343 0.603733 0.707507
+-0.507528 0.834603 0.214133
+-0.288578 0.645726 0.706937
+-0.367343 0.603733 0.707507
+-0.507528 0.834603 0.214133
+-0.398413 0.891929 0.213846
+-0.288578 0.645726 0.706937
+-0.288578 0.645726 0.706937
+-0.306681 0.927442 0.214006
+-0.22192 0.671265 0.707216
+-0.288578 0.645726 0.706937
+-0.398413 0.891929 0.213846
+-0.306681 0.927442 0.214006
+-0.22192 0.671265 0.707216
+-0.173466 0.96127 0.214172
+-0.12548 0.695437 0.707547
+-0.22192 0.671265 0.707216
+-0.306681 0.927442 0.214006
+-0.173466 0.96127 0.214172
+-0.173466 0.96127 0.214172
+-1.9162e-002 0.706584 0.707369
+-0.12548 0.695437 0.707547
+-0.173466 0.96127 0.214172
+-2.6344e-002 0.97646 0.214084
+-1.9162e-002 0.706584 0.707369
+-2.6344e-002 0.97646 0.214084
+5.9029e-002 0.704791 0.706954
+-1.9162e-002 0.706584 0.707369
+-2.6344e-002 0.97646 0.214084
+8.1593e-002 0.97345 0.213862
+5.9029e-002 0.704791 0.706954
+5.9029e-002 0.704791 0.706954
+0.189149 0.958378 0.213857
+0.137078 0.693755 0.707046
+5.9029e-002 0.704791 0.706954
+8.1593e-002 0.97345 0.213862
+0.189149 0.958378 0.213857
+0.137078 0.693755 0.707046
+0.375847 0.901558 0.214316
+0.271895 0.651725 0.708045
+0.137078 0.693755 0.707046
+0.189149 0.958378 0.213857
+0.375847 0.901558 0.214316
+0.271895 0.651725 0.708045
+0.607296 0.764941 0.214606
+0.438558 0.552781 0.70859
+0.271895 0.651725 0.708045
+0.375847 0.901558 0.214316
+0.607296 0.764941 0.214606
+0.607296 0.764941 0.214606
+0.560324 0.432415 0.706437
+0.438558 0.552781 0.70859
+0.607296 0.764941 0.214606
+0.773491 0.596824 0.213337
+0.560324 0.432415 0.706437
+0.560324 0.432415 0.706437
+0.902908 0.37224 0.21493
+0.651781 0.268526 0.709278
+0.560324 0.432415 0.706437
+0.773491 0.596824 0.213337
+0.902908 0.37224 0.21493
+0.902908 0.37224 0.21493
+0.703843 5.4639e-002 0.708251
+0.651781 0.268526 0.709278
+0.902908 0.37224 0.21493
+0.973886 7.4721e-002 0.214389
+0.703843 5.4639e-002 0.708251
+0.973886 7.4721e-002 0.214389
+0.701625 -9.2844e-002 0.706472
+0.703843 5.4639e-002 0.708251
+0.973886 7.4721e-002 0.214389
+0.968438 -0.128696 0.213459
+0.701625 -9.2844e-002 0.706472
+0.701625 -9.2844e-002 0.706472
+0.930434 -0.297266 0.214301
+0.672759 -0.215089 0.707907
+0.701625 -9.2844e-002 0.706472
+0.968438 -0.128696 0.213459
+0.930434 -0.297266 0.214301
+0.672759 -0.215089 0.707907
+0.839164 -0.499862 0.214339
+0.606894 -0.361191 0.70797
+0.672759 -0.215089 0.707907
+0.930434 -0.297266 0.214301
+0.839164 -0.499862 0.214339
+0.839164 -0.499862 0.214339
+0.531003 -0.467443 0.706776
+0.606894 -0.361191 0.70797
+0.839164 -0.499862 0.214339
+0.733126 -0.645659 0.213662
+0.531003 -0.467443 0.706776
+0.531003 -0.467443 0.706776
+0.603864 -0.767727 0.214346
+0.436542 -0.555162 0.707974
+0.531003 -0.467443 0.706776
+0.733126 -0.645659 0.213662
+0.603864 -0.767727 0.214346
+0.603864 -0.767727 0.214346
+0.30722 -0.636105 0.707804
+0.436542 -0.555162 0.707974
+0.603864 -0.767727 0.214346
+0.424466 -0.879724 0.214274
+0.30722 -0.636105 0.707804
+0.424466 -0.879724 0.214274
+0.21236 -0.674708 0.706875
+0.30722 -0.636105 0.707804
+0.424466 -0.879724 0.214274
+0.292978 -0.931909 0.2138
+0.21236 -0.674708 0.706875
+0.21236 -0.674708 0.706875
+0.215111 -0.952844 0.214047
+0.155695 -0.689621 0.707235
+0.21236 -0.674708 0.706875
+0.292978 -0.931909 0.2138
+0.215111 -0.952844 0.214047
+0.215111 -0.952844 0.214047
+0.117661 -0.697294 0.707062
+0.155695 -0.689621 0.707235
+0.215111 -0.952844 0.214047
+0.162522 -0.963228 0.213959
+0.117661 -0.697294 0.707062
+0.162522 -0.963228 0.213959
+0.116516 -0.697447 0.707101
+0.117661 -0.697294 0.707062
+0.162522 -0.963228 0.213959
+0.160962 -0.963483 0.213992
+0.116516 -0.697447 0.707101
+0.160962 -0.963483 0.213992
+0.139083 -0.693312 0.707089
+0.116516 -0.697447 0.707101
+0.160962 -0.963483 0.213992
+0.192142 -0.957754 0.213983
+0.139083 -0.693312 0.707089
+0.192142 -0.957754 0.213983
+0.186296 -0.711761 0.677267
+0.139083 -0.693312 0.707089
+0.192142 -0.957754 0.213983
+0.252556 -0.947802 0.194646
+0.186296 -0.711761 0.677267
+0.186296 -0.711761 0.677267
+0.292159 -0.940194 0.17515
+0.218526 -0.731395 0.645994
+0.186296 -0.711761 0.677267
+0.252556 -0.947802 0.194646
+0.292159 -0.940194 0.17515
+-0.984486 -4.644e-003 0.175404
+-0.735416 7.49e-004 0.677616
+-0.762431 -1.4929e-002 0.646897
+-0.984486 -4.644e-003 0.175404
+-0.980828 8.975e-003 0.194668
+-0.735416 7.49e-004 0.677616
+-0.999933 1.1614e-002 0
+-0.975849 4.3922e-002 0.213987
+-0.980828 8.975e-003 0.194668
+-0.999933 1.1614e-002 0
+-0.998989 4.4955e-002 0
+-0.975849 4.3922e-002 0.213987
+-0.998989 4.4955e-002 0
+-0.97137 0.103316 0.213932
+-0.975849 4.3922e-002 0.213987
+-0.998989 4.4955e-002 0
+-0.994393 0.105743 0
+-0.97137 0.103316 0.213932
+-0.97137 0.103316 0.213932
+-0.975066 0.221917 0
+-0.952454 0.216807 0.214071
+-0.97137 0.103316 0.213932
+-0.994393 0.105743 0
+-0.975066 0.221917 0
+-0.952454 0.216807 0.214071
+-0.919635 0.392775 2.e-006
+-0.898289 0.383561 0.214376
+-0.952454 0.216807 0.214071
+-0.975066 0.221917 0
+-0.919635 0.392775 2.e-006
+-0.919635 0.392775 2.e-006
+-0.831742 0.512353 0.213774
+-0.898289 0.383561 0.214376
+-0.919635 0.392775 2.e-006
+-0.851377 0.524554 2.e-006
+-0.831742 0.512353 0.213774
+-0.831742 0.512353 0.213774
+-0.783806 0.621006 0
+-0.765627 0.606648 0.213995
+-0.831742 0.512353 0.213774
+-0.851377 0.524554 2.e-006
+-0.783806 0.621006 0
+-0.783806 0.621006 0
+-0.651949 0.72736 0.214267
+-0.765627 0.606648 0.213995
+-0.783806 0.621006 0
+-0.667458 0.744647 0
+-0.651949 0.72736 0.214267
+-0.667458 0.744647 0
+-0.507528 0.834603 0.214133
+-0.651949 0.72736 0.214267
+-0.667458 0.744647 0
+-0.519511 0.854464 0
+-0.507528 0.834603 0.214133
+-0.507528 0.834603 0.214133
+-0.407794 0.913074 1.e-006
+-0.398413 0.891929 0.213846
+-0.507528 0.834603 0.214133
+-0.519511 0.854464 0
+-0.407794 0.913074 1.e-006
+-0.398413 0.891929 0.213846
+-0.313975 0.949431 2.e-006
+-0.306681 0.927442 0.214006
+-0.398413 0.891929 0.213846
+-0.407794 0.913074 1.e-006
+-0.313975 0.949431 2.e-006
+-0.306681 0.927442 0.214006
+-0.177593 0.984104 1.e-006
+-0.173466 0.96127 0.214172
+-0.306681 0.927442 0.214006
+-0.313975 0.949431 2.e-006
+-0.177593 0.984104 1.e-006
+-0.177593 0.984104 1.e-006
+-2.6344e-002 0.97646 0.214084
+-0.173466 0.96127 0.214172
+-0.177593 0.984104 1.e-006
+-2.6925e-002 0.999637 0
+-2.6344e-002 0.97646 0.214084
+-2.6925e-002 0.999637 0
+8.1593e-002 0.97345 0.213862
+-2.6344e-002 0.97646 0.214084
+-2.6925e-002 0.999637 0
+8.3547e-002 0.996504 2.e-006
+8.1593e-002 0.97345 0.213862
+8.1593e-002 0.97345 0.213862
+0.193563 0.981088 3.e-006
+0.189149 0.958378 0.213857
+8.1593e-002 0.97345 0.213862
+8.3547e-002 0.996504 2.e-006
+0.193563 0.981088 3.e-006
+0.189149 0.958378 0.213857
+0.384714 0.923036 2.e-006
+0.375847 0.901558 0.214316
+0.189149 0.958378 0.213857
+0.193563 0.981088 3.e-006
+0.384714 0.923036 2.e-006
+0.384714 0.923036 2.e-006
+0.607296 0.764941 0.214606
+0.375847 0.901558 0.214316
+0.384714 0.923036 2.e-006
+0.621868 0.783122 2.e-006
+0.607296 0.764941 0.214606
+0.607296 0.764941 0.214606
+0.791735 0.610864 1.e-006
+0.773491 0.596824 0.213337
+0.607296 0.764941 0.214606
+0.621868 0.783122 2.e-006
+0.791735 0.610864 1.e-006
+0.791735 0.610864 1.e-006
+0.902908 0.37224 0.21493
+0.773491 0.596824 0.213337
+0.791735 0.610864 1.e-006
+0.924486 0.381215 0
+0.902908 0.37224 0.21493
+0.924486 0.381215 0
+0.973886 7.4721e-002 0.214389
+0.902908 0.37224 0.21493
+0.924486 0.381215 0
+0.997092 7.6211e-002 -1.e-006
+0.973886 7.4721e-002 0.214389
+0.973886 7.4721e-002 0.214389
+0.991261 -0.131915 0
+0.968438 -0.128696 0.213459
+0.973886 7.4721e-002 0.214389
+0.997092 7.6211e-002 -1.e-006
+0.991261 -0.131915 0
+0.991261 -0.131915 0
+0.930434 -0.297266 0.214301
+0.968438 -0.128696 0.213459
+0.991261 -0.131915 0
+0.952584 -0.304277 0
+0.930434 -0.297266 0.214301
+0.952584 -0.304277 0
+0.839164 -0.499862 0.214339
+0.930434 -0.297266 0.214301
+0.952584 -0.304277 0
+0.859067 -0.511863 1.e-006
+0.839164 -0.499862 0.214339
+0.839164 -0.499862 0.214339
+0.750407 -0.660977 -2.e-006
+0.733126 -0.645659 0.213662
+0.839164 -0.499862 0.214339
+0.859067 -0.511863 1.e-006
+0.750407 -0.660977 -2.e-006
+0.733126 -0.645659 0.213662
+0.618267 -0.785968 -1.e-006
+0.603864 -0.767727 0.214346
+0.733126 -0.645659 0.213662
+0.750407 -0.660977 -2.e-006
+0.618267 -0.785968 -1.e-006
+0.618267 -0.785968 -1.e-006
+0.424466 -0.879724 0.214274
+0.603864 -0.767727 0.214346
+0.618267 -0.785968 -1.e-006
+0.43445 -0.900696 5.e-006
+0.424466 -0.879724 0.214274
+0.424466 -0.879724 0.214274
+0.299813 -0.953998 -2.e-006
+0.292978 -0.931909 0.2138
+0.424466 -0.879724 0.214274
+0.43445 -0.900696 5.e-006
+0.299813 -0.953998 -2.e-006
+0.292978 -0.931909 0.2138
+0.220211 -0.975452 -7.e-006
+0.215111 -0.952844 0.214047
+0.292978 -0.931909 0.2138
+0.299813 -0.953998 -2.e-006
+0.220211 -0.975452 -7.e-006
+0.220211 -0.975452 -7.e-006
+0.162522 -0.963228 0.213959
+0.215111 -0.952844 0.214047
+0.220211 -0.975452 -7.e-006
+0.166371 -0.986063 -6.e-006
+0.162522 -0.963228 0.213959
+0.162522 -0.963228 0.213959
+0.164779 -0.986331 0
+0.160962 -0.963483 0.213992
+0.162522 -0.963228 0.213959
+0.166371 -0.986063 -6.e-006
+0.164779 -0.986331 0
+0.160962 -0.963483 0.213992
+0.196701 -0.980464 5.e-006
+0.192142 -0.957754 0.213983
+0.160962 -0.963483 0.213992
+0.164779 -0.986331 0
+0.196701 -0.980464 5.e-006
+0.192142 -0.957754 0.213983
+0.25882 -0.965926 7.e-006
+0.252556 -0.947802 0.194646
+0.192142 -0.957754 0.213983
+0.196701 -0.980464 5.e-006
+0.25882 -0.965926 7.e-006
+0.252556 -0.947802 0.194646
+0.300003 -0.953938 7.e-006
+0.292159 -0.940194 0.17515
+0.252556 -0.947802 0.194646
+0.25882 -0.965926 7.e-006
+0.300003 -0.953938 7.e-006
+-0.984486 -4.644e-003 0.175404
+-0.999933 1.1614e-002 0
+-0.980828 8.975e-003 0.194668
+-0.984486 -4.644e-003 0.175404
+-1. 0 0
+-0.999933 1.1614e-002 0
+-0.999933 1.1614e-002 0
+-0.998989 4.4955e-002 0
+-0.998989 4.4955e-002 0
+-0.999933 1.1614e-002 0
+-0.999933 1.1614e-002 0
+-0.998989 4.4955e-002 0
+-0.998989 4.4955e-002 0
+-0.994393 0.105743 0
+-0.998989 4.4955e-002 0
+-0.998989 4.4955e-002 0
+-0.994393 0.105743 0
+-0.994393 0.105743 0
+-0.994393 0.105743 0
+-0.975066 0.221917 0
+-0.975066 0.221917 0
+-0.994393 0.105743 0
+-0.994393 0.105743 0
+-0.975066 0.221917 0
+-0.975066 0.221917 0
+-0.919635 0.392775 0
+-0.919635 0.392775 2.e-006
+-0.975066 0.221917 0
+-0.975066 0.221917 0
+-0.919635 0.392775 0
+-0.919635 0.392775 2.e-006
+-0.851377 0.524554 0
+-0.851377 0.524554 2.e-006
+-0.919635 0.392775 2.e-006
+-0.919635 0.392775 0
+-0.851377 0.524554 0
+-0.851377 0.524554 0
+-0.783806 0.621006 0
+-0.851377 0.524554 2.e-006
+-0.851377 0.524554 0
+-0.783806 0.621006 0
+-0.783806 0.621006 0
+-0.783806 0.621006 0
+-0.667458 0.744647 0
+-0.783806 0.621006 0
+-0.783806 0.621006 0
+-0.667458 0.744647 0
+-0.667458 0.744647 0
+-0.667458 0.744647 0
+-0.519511 0.854464 0
+-0.667458 0.744647 0
+-0.667458 0.744647 0
+-0.519511 0.854464 0
+-0.519511 0.854464 0
+-0.519511 0.854464 0
+-0.407794 0.913074 1.e-006
+-0.519511 0.854464 0
+-0.519511 0.854464 0
+-0.407794 0.913074 0
+-0.407794 0.913074 1.e-006
+-0.407794 0.913074 0
+-0.313975 0.949431 2.e-006
+-0.407794 0.913074 1.e-006
+-0.407794 0.913074 0
+-0.313975 0.949431 0
+-0.313975 0.949431 2.e-006
+-0.313975 0.949431 2.e-006
+-0.177593 0.984104 0
+-0.177593 0.984104 1.e-006
+-0.313975 0.949431 2.e-006
+-0.313975 0.949431 0
+-0.177593 0.984104 0
+-0.177593 0.984104 1.e-006
+-2.6925e-002 0.999637 0
+-2.6925e-002 0.999637 0
+-0.177593 0.984104 1.e-006
+-0.177593 0.984104 0
+-2.6925e-002 0.999637 0
+-2.6925e-002 0.999637 0
+8.3547e-002 0.996504 0
+8.3547e-002 0.996504 2.e-006
+-2.6925e-002 0.999637 0
+-2.6925e-002 0.999637 0
+8.3547e-002 0.996504 0
+8.3547e-002 0.996504 2.e-006
+0.193563 0.981088 0
+0.193563 0.981088 3.e-006
+8.3547e-002 0.996504 2.e-006
+8.3547e-002 0.996504 0
+0.193563 0.981088 0
+0.193563 0.981088 3.e-006
+0.384714 0.923036 0
+0.384714 0.923036 2.e-006
+0.193563 0.981088 3.e-006
+0.193563 0.981088 0
+0.384714 0.923036 0
+0.384714 0.923036 2.e-006
+0.621868 0.783122 0
+0.621868 0.783122 2.e-006
+0.384714 0.923036 2.e-006
+0.384714 0.923036 0
+0.621868 0.783122 0
+0.621868 0.783122 2.e-006
+0.791735 0.610864 0
+0.791735 0.610864 1.e-006
+0.621868 0.783122 2.e-006
+0.621868 0.783122 0
+0.791735 0.610864 0
+0.791735 0.610864 1.e-006
+0.924486 0.381215 0
+0.924486 0.381215 0
+0.791735 0.610864 1.e-006
+0.791735 0.610864 0
+0.924486 0.381215 0
+0.924486 0.381215 0
+0.997092 7.6211e-002 0
+0.997092 7.6211e-002 -1.e-006
+0.924486 0.381215 0
+0.924486 0.381215 0
+0.997092 7.6211e-002 0
+0.997092 7.6211e-002 0
+0.991261 -0.131915 0
+0.997092 7.6211e-002 -1.e-006
+0.997092 7.6211e-002 0
+0.991261 -0.131915 0
+0.991261 -0.131915 0
+0.991261 -0.131915 0
+0.952584 -0.304277 0
+0.991261 -0.131915 0
+0.991261 -0.131915 0
+0.952584 -0.304277 0
+0.952584 -0.304277 0
+0.952584 -0.304277 0
+0.859067 -0.511863 0
+0.859067 -0.511863 1.e-006
+0.952584 -0.304277 0
+0.952584 -0.304277 0
+0.859067 -0.511863 0
+0.859067 -0.511863 1.e-006
+0.750407 -0.660977 0
+0.750407 -0.660977 -2.e-006
+0.859067 -0.511863 1.e-006
+0.859067 -0.511863 0
+0.750407 -0.660977 0
+0.750407 -0.660977 -2.e-006
+0.618267 -0.785968 0
+0.618267 -0.785968 -1.e-006
+0.750407 -0.660977 -2.e-006
+0.750407 -0.660977 0
+0.618267 -0.785968 0
+0.618267 -0.785968 -1.e-006
+0.43445 -0.900696 0
+0.43445 -0.900696 5.e-006
+0.618267 -0.785968 -1.e-006
+0.618267 -0.785968 0
+0.43445 -0.900696 0
+0.43445 -0.900696 5.e-006
+0.299813 -0.953998 0
+0.299813 -0.953998 -2.e-006
+0.43445 -0.900696 5.e-006
+0.43445 -0.900696 0
+0.299813 -0.953998 0
+0.299813 -0.953998 0
+0.220211 -0.975452 -7.e-006
+0.299813 -0.953998 -2.e-006
+0.299813 -0.953998 0
+0.220211 -0.975452 0
+0.220211 -0.975452 -7.e-006
+0.220211 -0.975452 -7.e-006
+0.166371 -0.986063 0
+0.166371 -0.986063 -6.e-006
+0.220211 -0.975452 -7.e-006
+0.220211 -0.975452 0
+0.166371 -0.986063 0
+0.166371 -0.986063 0
+0.164779 -0.986331 0
+0.166371 -0.986063 -6.e-006
+0.166371 -0.986063 0
+0.164779 -0.986331 0
+0.164779 -0.986331 0
+0.164779 -0.986331 0
+0.196701 -0.980464 0
+0.196701 -0.980464 5.e-006
+0.164779 -0.986331 0
+0.164779 -0.986331 0
+0.196701 -0.980464 0
+0.196701 -0.980464 0
+0.25882 -0.965926 7.e-006
+0.196701 -0.980464 5.e-006
+0.196701 -0.980464 0
+0.25882 -0.965926 0
+0.25882 -0.965926 7.e-006
+0.25882 -0.965926 7.e-006
+0.300003 -0.953938 0
+0.300003 -0.953938 7.e-006
+0.25882 -0.965926 7.e-006
+0.25882 -0.965926 0
+0.300003 -0.953938 0
+-1. 0 0
+-0.999933 1.1614e-002 0
+-0.999933 1.1614e-002 0
+-1. 0 0
+-1. 0 0
+-0.999933 1.1614e-002 0
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0.145224 -0.145224 0.978683
+0 0 1.
+0 0 1.
+0.145224 -0.145224 0.978683
+0.145224 0.145225 0.978683
+0 0 1.
+0.145224 0.145225 0.978683
+0 0 1.
+0 0 1.
+0.145224 0.145225 0.978683
+-0.179636 0.148756 0.972421
+0 0 1.
+0 0 1.
+-0.100474 0.115026 0.988268
+0 0 1.
+0 0 1.
+-0.179636 0.148756 0.972421
+-0.100474 0.115026 0.988268
+-0.100474 0.115026 0.988268
+0 0 1.
+0 0 1.
+-0.100474 0.115026 0.988268
+0.157658 0.178129 0.971295
+0 0 1.
+0.157658 0.178129 0.971295
+0 0 1.
+0 0 1.
+0.157658 0.178129 0.971295
+0.156405 0.146054 0.976835
+0 0 1.
+0.156405 0.146054 0.976835
+0 0 1.
+0 0 1.
+0.156405 0.146054 0.976835
+0.143718 0.158555 0.976834
+0 0 1.
+0.143718 0.158555 0.976834
+0 0 1.
+0 0 1.
+0.143718 0.158555 0.976834
+0.125543 0.173192 0.976854
+0 0 1.
+0 0 1.
+0.104263 0.186805 0.976849
+0 0 1.
+0 0 1.
+0.125543 0.173192 0.976854
+0.104263 0.186805 0.976849
+0 0 1.
+8.7959e-002 0.195158 0.97682
+0 0 1.
+0 0 1.
+0.104263 0.186805 0.976849
+8.7959e-002 0.195158 0.97682
+8.7959e-002 0.195158 0.97682
+0 0 1.
+0 0 1.
+8.7959e-002 0.195158 0.97682
+7.4048e-002 0.200771 0.976836
+0 0 1.
+7.4048e-002 0.200771 0.976836
+0 0 1.
+0 0 1.
+7.4048e-002 0.200771 0.976836
+5.5186e-002 0.206752 0.976836
+0 0 1.
+5.5186e-002 0.206752 0.976836
+0 0 1.
+0 0 1.
+5.5186e-002 0.206752 0.976836
+3.0399e-002 0.21172 0.976857
+0 0 1.
+0 0 1.
+4.029e-003 0.213901 0.976847
+0 0 1.
+0 0 1.
+3.0399e-002 0.21172 0.976857
+4.029e-003 0.213901 0.976847
+0 0 1.
+-1.4824e-002 0.213555 0.976819
+0 0 1.
+0 0 1.
+4.029e-003 0.213901 0.976847
+-1.4824e-002 0.213555 0.976819
+-1.4824e-002 0.213555 0.976819
+0 0 1.
+0 0 1.
+-1.4824e-002 0.213555 0.976819
+-3.0757e-002 0.211774 0.976835
+0 0 1.
+-3.0757e-002 0.211774 0.976835
+0 0 1.
+0 0 1.
+-3.0757e-002 0.211774 0.976835
+-5.2679e-002 0.207415 0.976834
+0 0 1.
+-5.2679e-002 0.207415 0.976834
+0 0 1.
+0 0 1.
+-5.2679e-002 0.207415 0.976834
+-8.1708e-002 0.197592 0.976873
+0 0 1.
+0 0 1.
+-0.111589 0.182469 0.976859
+0 0 1.
+0 0 1.
+-8.1708e-002 0.197592 0.976873
+-0.111589 0.182469 0.976859
+0 0 1.
+-0.130951 0.169401 0.976809
+0 0 1.
+0 0 1.
+-0.111589 0.182469 0.976859
+-0.130951 0.169401 0.976809
+-0.130951 0.169401 0.976809
+0 0 1.
+0 0 1.
+-0.130951 0.169401 0.976809
+-0.144815 0.15754 0.976837
+0 0 1.
+-0.144815 0.15754 0.976837
+0 0 1.
+0 0 1.
+-0.144815 0.15754 0.976837
+-0.161819 0.140011 0.976838
+0 0 1.
+-0.161819 0.140011 0.976838
+0 0 1.
+0 0 1.
+-0.161819 0.140011 0.976838
+-0.180452 0.114668 0.976877
+0 0 1.
+0 0 1.
+-0.195313 8.7334e-002 0.976845
+0 0 1.
+0 0 1.
+-0.180452 0.114668 0.976877
+-0.195313 8.7334e-002 0.976845
+0 0 1.
+-0.202248 7.0199e-002 0.976815
+0 0 1.
+0 0 1.
+-0.195313 8.7334e-002 0.976845
+-0.202248 7.0199e-002 0.976815
+-0.202248 7.0199e-002 0.976815
+0 0 1.
+0 0 1.
+-0.202248 7.0199e-002 0.976815
+-0.205751 5.8815e-002 0.976835
+0 0 1.
+-0.205751 5.8815e-002 0.976835
+0 0 1.
+0 0 1.
+-0.205751 5.8815e-002 0.976835
+-0.209489 4.3675e-002 0.976835
+0 0 1.
+-0.209489 4.3675e-002 0.976835
+0 0 1.
+0 0 1.
+-0.209489 4.3675e-002 0.976835
+-0.212574 2.4048e-002 0.976849
+0 0 1.
+0 0 1.
+-0.213937 3.655e-003 0.976841
+0 0 1.
+0 0 1.
+-0.212574 2.4048e-002 0.976849
+-0.213937 3.655e-003 0.976841
+0 0 1.
+-0.213797 -1.0202e-002 0.976825
+0 0 1.
+0 0 1.
+-0.213937 3.655e-003 0.976841
+-0.213797 -1.0202e-002 0.976825
+-0.213797 -1.0202e-002 0.976825
+0 0 1.
+0 0 1.
+-0.213797 -1.0202e-002 0.976825
+-0.212926 -2.1417e-002 0.976834
+0 0 1.
+-0.212926 -2.1417e-002 0.976834
+0 0 1.
+0 0 1.
+-0.212926 -2.1417e-002 0.976834
+-0.210717 -3.7406e-002 0.976831
+0 0 1.
+-0.210717 -3.7406e-002 0.976831
+0 0 1.
+0 0 1.
+-0.210717 -3.7406e-002 0.976831
+-0.20525 -6.0186e-002 0.976857
+0 0 1.
+0 0 1.
+-0.196049 -8.557e-002 0.976853
+0 0 1.
+0 0 1.
+-0.20525 -6.0186e-002 0.976857
+-0.196049 -8.557e-002 0.976853
+0 0 1.
+-0.18778 -0.102811 0.976816
+0 0 1.
+0 0 1.
+-0.196049 -8.557e-002 0.976853
+-0.18778 -0.102811 0.976816
+-0.18778 -0.102811 0.976816
+0 0 1.
+0 0 1.
+-0.18778 -0.102811 0.976816
+-0.180085 -0.11561 0.976834
+0 0 1.
+-0.180085 -0.11561 0.976834
+0 0 1.
+0 0 1.
+-0.180085 -0.11561 0.976834
+-0.167823 -0.132798 0.976832
+0 0 1.
+-0.167823 -0.132798 0.976832
+0 0 1.
+0 0 1.
+-0.167823 -0.132798 0.976832
+-0.147775 -0.154541 0.976872
+0 0 1.
+0 0 1.
+-0.122737 -0.175176 0.976857
+0 0 1.
+0 0 1.
+-0.147775 -0.154541 0.976872
+-0.122737 -0.175176 0.976857
+0 0 1.
+-0.104302 -0.186988 0.976809
+0 0 1.
+0 0 1.
+-0.122737 -0.175176 0.976857
+-0.104302 -0.186988 0.976809
+-0.104302 -0.186988 0.976809
+0 0 1.
+0 0 1.
+-0.104302 -0.186988 0.976809
+-8.9593e-002 -0.194338 0.976835
+0 0 1.
+-8.9593e-002 -0.194338 0.976835
+0 0 1.
+0 0 1.
+-8.9593e-002 -0.194338 0.976835
+-6.8459e-002 -0.202753 0.976834
+0 0 1.
+-6.8459e-002 -0.202753 0.976834
+0 0 1.
+0 0 1.
+-6.8459e-002 -0.202753 0.976834
+-3.8681e-002 -0.210322 0.976867
+0 0 1.
+0 0 1.
+-4.185e-003 -0.213822 0.976864
+0 0 1.
+0 0 1.
+-3.8681e-002 -0.210322 0.976867
+-4.185e-003 -0.213822 0.976864
+0 0 1.
+2.3645e-002 -0.212835 0.976802
+0 0 1.
+0 0 1.
+-4.185e-003 -0.213822 0.976864
+2.3645e-002 -0.212835 0.976802
+2.3645e-002 -0.212835 0.976802
+0 0 1.
+0 0 1.
+2.3645e-002 -0.212835 0.976802
+5.0564e-002 -0.207951 0.976831
+0 0 1.
+5.0564e-002 -0.207951 0.976831
+0 0 1.
+0 0 1.
+5.0564e-002 -0.207951 0.976831
+8.8475e-002 -0.194829 0.976839
+0 0 1.
+8.8475e-002 -0.194829 0.976839
+0 0 1.
+0 0 1.
+8.8475e-002 -0.194829 0.976839
+0.158003 -0.193606 0.968273
+0 0 1.
+0 0 1.
+-6.844e-002 -0.109411 0.991638
+0 0 1.
+0 0 1.
+0.158003 -0.193606 0.968273
+-6.844e-002 -0.109411 0.991638
+-6.844e-002 -0.109411 0.991638
+0 0 1.
+0 0 1.
+-6.844e-002 -0.109411 0.991638
+-0.173817 -0.150323 0.973237
+0 0 1.
+0 0 1.
+0.145224 -0.145224 0.978683
+0 0 1.
+0 0 1.
+-0.173817 -0.150323 0.973237
+0.145224 -0.145224 0.978683
+0.145224 -0.145224 0.978683
+0.58786 0.2143 0.780061
+0.145224 0.145225 0.978683
+0.145224 -0.145224 0.978683
+0.58786 -0.214298 0.780062
+0.58786 0.2143 0.780061
+0.145224 0.145225 0.978683
+-0.264321 0.598197 0.756502
+-0.179636 0.148756 0.972421
+0.145224 0.145225 0.978683
+0.214298 0.587861 0.780062
+-0.264321 0.598197 0.756502
+-0.179636 0.148756 0.972421
+-0.85768 2.285e-003 0.514179
+-0.234339 1.139e-003 0.972154
+-0.179636 0.148756 0.972421
+-0.652399 0.219345 0.72544
+-0.85768 2.285e-003 0.514179
+0.525112 0.57612 0.626373
+0.157658 0.178129 0.971295
+0.10182 0.143476 0.984402
+0.525112 0.57612 0.626373
+0.530842 0.521048 0.668368
+0.157658 0.178129 0.971295
+0.530842 0.521048 0.668368
+0.156405 0.146054 0.976835
+0.157658 0.178129 0.971295
+0.530842 0.521048 0.668368
+0.516756 0.482598 0.707151
+0.156405 0.146054 0.976835
+0.516756 0.482598 0.707151
+0.143718 0.158555 0.976834
+0.156405 0.146054 0.976835
+0.516756 0.482598 0.707151
+0.474814 0.523883 0.707176
+0.143718 0.158555 0.976834
+0.474814 0.523883 0.707176
+0.125543 0.173192 0.976854
+0.143718 0.158555 0.976834
+0.474814 0.523883 0.707176
+0.414852 0.572324 0.707349
+0.125543 0.173192 0.976854
+0.125543 0.173192 0.976854
+0.344666 0.617206 0.707292
+0.104263 0.186805 0.976849
+0.125543 0.173192 0.976854
+0.414852 0.572324 0.707349
+0.344666 0.617206 0.707292
+0.104263 0.186805 0.976849
+0.290699 0.644658 0.707043
+8.7959e-002 0.195158 0.97682
+0.104263 0.186805 0.976849
+0.344666 0.617206 0.707292
+0.290699 0.644658 0.707043
+0.290699 0.644658 0.707043
+7.4048e-002 0.200771 0.976836
+8.7959e-002 0.195158 0.97682
+0.290699 0.644658 0.707043
+0.244632 0.663378 0.707167
+7.4048e-002 0.200771 0.976836
+0.244632 0.663378 0.707167
+5.5186e-002 0.206752 0.976836
+7.4048e-002 0.200771 0.976836
+0.244632 0.663378 0.707167
+0.182299 0.683109 0.707199
+5.5186e-002 0.206752 0.976836
+0.182299 0.683109 0.707199
+3.0399e-002 0.21172 0.976857
+5.5186e-002 0.206752 0.976836
+0.182299 0.683109 0.707199
+0.100448 0.69965 0.70739
+3.0399e-002 0.21172 0.976857
+3.0399e-002 0.21172 0.976857
+1.342e-002 0.706797 0.70729
+4.029e-003 0.213901 0.976847
+3.0399e-002 0.21172 0.976857
+0.100448 0.69965 0.70739
+1.342e-002 0.706797 0.70729
+4.029e-003 0.213901 0.976847
+-4.8888e-002 0.705486 0.707036
+-1.4824e-002 0.213555 0.976819
+4.029e-003 0.213901 0.976847
+1.342e-002 0.706797 0.70729
+-4.8888e-002 0.705486 0.707036
+-4.8888e-002 0.705486 0.707036
+-3.0757e-002 0.211774 0.976835
+-1.4824e-002 0.213555 0.976819
+-4.8888e-002 0.705486 0.707036
+-0.101653 0.699701 0.707167
+-3.0757e-002 0.211774 0.976835
+-0.101653 0.699701 0.707167
+-5.2679e-002 0.207415 0.976834
+-3.0757e-002 0.211774 0.976835
+-0.101653 0.699701 0.707167
+-0.174075 0.68524 0.707209
+-5.2679e-002 0.207415 0.976834
+-0.174075 0.68524 0.707209
+-8.1708e-002 0.197592 0.976873
+-5.2679e-002 0.207415 0.976834
+-0.174075 0.68524 0.707209
+-0.270046 0.653016 0.707563
+-8.1708e-002 0.197592 0.976873
+-8.1708e-002 0.197592 0.976873
+-0.368589 0.603071 0.707423
+-0.111589 0.182469 0.976859
+-8.1708e-002 0.197592 0.976873
+-0.270046 0.653016 0.707563
+-0.368589 0.603071 0.707423
+-0.111589 0.182469 0.976859
+-0.432406 0.559644 0.706982
+-0.130951 0.169401 0.976809
+-0.111589 0.182469 0.976859
+-0.368589 0.603071 0.707423
+-0.432406 0.559644 0.706982
+-0.432406 0.559644 0.706982
+-0.144815 0.15754 0.976837
+-0.130951 0.169401 0.976809
+-0.432406 0.559644 0.706982
+-0.478498 0.520496 0.707195
+-0.144815 0.15754 0.976837
+-0.478498 0.520496 0.707195
+-0.161819 0.140011 0.976838
+-0.144815 0.15754 0.976837
+-0.478498 0.520496 0.707195
+-0.534646 0.462551 0.707249
+-0.161819 0.140011 0.976838
+-0.534646 0.462551 0.707249
+-0.180452 0.114668 0.976877
+-0.161819 0.140011 0.976838
+-0.534646 0.462551 0.707249
+-0.596402 0.37898 0.707587
+-0.180452 0.114668 0.976877
+-0.180452 0.114668 0.976877
+-0.645286 0.288699 0.70729
+-0.195313 8.7334e-002 0.976845
+-0.180452 0.114668 0.976877
+-0.596402 0.37898 0.707587
+-0.645286 0.288699 0.70729
+-0.195313 8.7334e-002 0.976845
+-0.668069 0.232018 0.707002
+-0.202248 7.0199e-002 0.976815
+-0.195313 8.7334e-002 0.976845
+-0.645286 0.288699 0.70729
+-0.668069 0.232018 0.707002
+-0.668069 0.232018 0.707002
+-0.205751 5.8815e-002 0.976835
+-0.202248 7.0199e-002 0.976815
+-0.668069 0.232018 0.707002
+-0.679841 0.194324 0.707145
+-0.205751 5.8815e-002 0.976835
+-0.679841 0.194324 0.707145
+-0.209489 4.3675e-002 0.976835
+-0.205751 5.8815e-002 0.976835
+-0.679841 0.194324 0.707145
+-0.69217 0.144294 0.707163
+-0.209489 4.3675e-002 0.976835
+-0.69217 0.144294 0.707163
+-0.212574 2.4048e-002 0.976849
+-0.209489 4.3675e-002 0.976835
+-0.69217 0.144294 0.707163
+-0.702447 7.9464e-002 0.707286
+-0.212574 2.4048e-002 0.976849
+-0.212574 2.4048e-002 0.976849
+-0.706903 1.213e-002 0.707206
+-0.213937 3.655e-003 0.976841
+-0.212574 2.4048e-002 0.976849
+-0.702447 7.9464e-002 0.707286
+-0.706903 1.213e-002 0.707206
+-0.213937 3.655e-003 0.976841
+-0.706352 -3.3664e-002 0.70706
+-0.213797 -1.0202e-002 0.976825
+-0.213937 3.655e-003 0.976841
+-0.706903 1.213e-002 0.707206
+-0.706352 -3.3664e-002 0.70706
+-0.706352 -3.3664e-002 0.70706
+-0.212926 -2.1417e-002 0.976834
+-0.213797 -1.0202e-002 0.976825
+-0.706352 -3.3664e-002 0.70706
+-0.70353 -7.0776e-002 0.707132
+-0.212926 -2.1417e-002 0.976834
+-0.70353 -7.0776e-002 0.707132
+-0.210717 -3.7406e-002 0.976831
+-0.212926 -2.1417e-002 0.976834
+-0.70353 -7.0776e-002 0.707132
+-0.696181 -0.123606 0.707145
+-0.210717 -3.7406e-002 0.976831
+-0.696181 -0.123606 0.707145
+-0.20525 -6.0186e-002 0.976857
+-0.210717 -3.7406e-002 0.976831
+-0.696181 -0.123606 0.707145
+-0.678265 -0.198901 0.707386
+-0.20525 -6.0186e-002 0.976857
+-0.20525 -6.0186e-002 0.976857
+-0.647897 -0.282662 0.707341
+-0.196049 -8.557e-002 0.976853
+-0.20525 -6.0186e-002 0.976857
+-0.678265 -0.198901 0.707386
+-0.647897 -0.282662 0.707341
+-0.196049 -8.557e-002 0.976853
+-0.620363 -0.339532 0.707013
+-0.18778 -0.102811 0.976816
+-0.196049 -8.557e-002 0.976853
+-0.647897 -0.282662 0.707341
+-0.620363 -0.339532 0.707013
+-0.620363 -0.339532 0.707013
+-0.180085 -0.11561 0.976834
+-0.18778 -0.102811 0.976816
+-0.620363 -0.339532 0.707013
+-0.594985 -0.381997 0.707157
+-0.180085 -0.11561 0.976834
+-0.594985 -0.381997 0.707157
+-0.167823 -0.132798 0.976832
+-0.180085 -0.11561 0.976834
+-0.594985 -0.381997 0.707157
+-0.554417 -0.438754 0.707189
+-0.167823 -0.132798 0.976832
+-0.554417 -0.438754 0.707189
+-0.147775 -0.154541 0.976872
+-0.167823 -0.132798 0.976832
+-0.554417 -0.438754 0.707189
+-0.488372 -0.510748 0.707551
+-0.147775 -0.154541 0.976872
+-0.147775 -0.154541 0.976872
+-0.405732 -0.578764 0.707399
+-0.122737 -0.175176 0.976857
+-0.147775 -0.154541 0.976872
+-0.488372 -0.510748 0.707551
+-0.405732 -0.578764 0.707399
+-0.122737 -0.175176 0.976857
+-0.344664 -0.617565 0.706979
+-0.104302 -0.186988 0.976809
+-0.122737 -0.175176 0.976857
+-0.405732 -0.578764 0.707399
+-0.344664 -0.617565 0.706979
+-0.344664 -0.617565 0.706979
+-8.9593e-002 -0.194338 0.976835
+-0.104302 -0.186988 0.976809
+-0.344664 -0.617565 0.706979
+-0.295988 -0.642105 0.707172
+-8.9593e-002 -0.194338 0.976835
+-0.295988 -0.642105 0.707172
+-6.8459e-002 -0.202753 0.976834
+-8.9593e-002 -0.194338 0.976835
+-0.295988 -0.642105 0.707172
+-0.226138 -0.669856 0.707217
+-6.8459e-002 -0.202753 0.976834
+-0.226138 -0.669856 0.707217
+-3.8681e-002 -0.210322 0.976867
+-6.8459e-002 -0.202753 0.976834
+-0.226138 -0.669856 0.707217
+-0.12781 -0.695038 0.707521
+-3.8681e-002 -0.210322 0.976867
+-3.8681e-002 -0.210322 0.976867
+-1.3933e-002 -0.706592 0.707484
+-4.185e-003 -0.213822 0.976864
+-3.8681e-002 -0.210322 0.976867
+-0.12781 -0.695038 0.707521
+-1.3933e-002 -0.706592 0.707484
+-4.185e-003 -0.213822 0.976864
+7.8017e-002 -0.702922 0.706975
+2.3645e-002 -0.212835 0.976802
+-4.185e-003 -0.213822 0.976864
+-1.3933e-002 -0.706592 0.707484
+7.8017e-002 -0.702922 0.706975
+7.8017e-002 -0.702922 0.706975
+5.0564e-002 -0.207951 0.976831
+2.3645e-002 -0.212835 0.976802
+7.8017e-002 -0.702922 0.706975
+0.167088 -0.68692 0.707264
+5.0564e-002 -0.207951 0.976831
+0.167088 -0.68692 0.707264
+8.8475e-002 -0.194829 0.976839
+5.0564e-002 -0.207951 0.976831
+0.167088 -0.68692 0.707264
+0.292258 -0.64346 0.707492
+8.8475e-002 -0.194829 0.976839
+0.292258 -0.64346 0.707492
+0.158003 -0.193606 0.968273
+8.8475e-002 -0.194829 0.976839
+0.292258 -0.64346 0.707492
+0.476414 -0.583406 0.657774
+0.158003 -0.193606 0.968273
+0.158003 -0.193606 0.968273
+0.582108 -0.548065 0.600645
+0.136885 -0.133709 0.981521
+0.158003 -0.193606 0.968273
+0.476414 -0.583406 0.657774
+0.582108 -0.548065 0.600645
+-0.848894 -7.94399e-003 0.528503
+-0.173817 -0.150323 0.973237
+-0.226667 -3.899e-003 0.973965
+-0.848894 -7.94399e-003 0.528503
+-0.642276 -0.223037 0.733305
+-0.173817 -0.150323 0.973237
+-0.173817 -0.150323 0.973237
+0.214298 -0.587859 0.780063
+0.145224 -0.145224 0.978683
+-0.173817 -0.150323 0.973237
+-0.255473 -0.598425 0.759356
+0.214298 -0.587859 0.780063
+0.987652 0 0.156663
+0.793526 0 0.608536
+0.793526 0 0.608536
+0.987652 0 0.156663
+0.987652 0 0.156663
+0.793526 0 0.608536
+0 0.793527 0.608535
+0 0.987657 0.156634
+0 0.793527 0.608535
+0 0.793527 0.608535
+0 0.987657 0.156634
+0 0.987657 0.156634
+-0.85768 2.285e-003 0.514179
+-0.993184 5.72e-004 0.116557
+-0.85768 2.285e-003 0.514179
+-0.85768 2.285e-003 0.514179
+-0.993184 5.72e-004 0.116557
+-0.993184 5.72e-004 0.116557
+0.746958 0.645998 0.157291
+0.530842 0.521048 0.668368
+0.525112 0.57612 0.626373
+0.746958 0.645998 0.157291
+0.742583 0.643538 0.18555
+0.530842 0.521048 0.668368
+0.742583 0.643538 0.18555
+0.516756 0.482598 0.707151
+0.530842 0.521048 0.668368
+0.742583 0.643538 0.18555
+0.713895 0.666746 0.214019
+0.516756 0.482598 0.707151
+0.713895 0.666746 0.214019
+0.474814 0.523883 0.707176
+0.516756 0.482598 0.707151
+0.713895 0.666746 0.214019
+0.655971 0.723811 0.214009
+0.474814 0.523883 0.707176
+0.655971 0.723811 0.214009
+0.414852 0.572324 0.707349
+0.474814 0.523883 0.707176
+0.655971 0.723811 0.214009
+0.573274 0.7909 0.214089
+0.414852 0.572324 0.707349
+0.414852 0.572324 0.707349
+0.476387 0.852777 0.214072
+0.344666 0.617206 0.707292
+0.414852 0.572324 0.707349
+0.573274 0.7909 0.214089
+0.476387 0.852777 0.214072
+0.344666 0.617206 0.707292
+0.401671 0.890439 0.213959
+0.290699 0.644658 0.707043
+0.344666 0.617206 0.707292
+0.476387 0.852777 0.214072
+0.401671 0.890439 0.213959
+0.401671 0.890439 0.213959
+0.244632 0.663378 0.707167
+0.290699 0.644658 0.707043
+0.401671 0.890439 0.213959
+0.337945 0.91651 0.214015
+0.244632 0.663378 0.707167
+0.337945 0.91651 0.214015
+0.182299 0.683109 0.707199
+0.244632 0.663378 0.707167
+0.337945 0.91651 0.214015
+0.251837 0.943809 0.214015
+0.182299 0.683109 0.707199
+0.251837 0.943809 0.214015
+0.100448 0.69965 0.70739
+0.182299 0.683109 0.707199
+0.251837 0.943809 0.214015
+0.138808 0.966897 0.21411
+0.100448 0.69965 0.70739
+0.100448 0.69965 0.70739
+1.8648e-002 0.976646 0.214045
+1.342e-002 0.706797 0.70729
+0.100448 0.69965 0.70739
+0.138808 0.966897 0.21411
+1.8648e-002 0.976646 0.214045
+1.342e-002 0.706797 0.70729
+-6.7449e-002 0.974518 0.213929
+-4.8888e-002 0.705486 0.707036
+1.342e-002 0.706797 0.70729
+1.8648e-002 0.976646 0.214045
+-6.7449e-002 0.974518 0.213929
+-6.7449e-002 0.974518 0.213929
+-0.101653 0.699701 0.707167
+-4.8888e-002 0.705486 0.707036
+-6.7449e-002 0.974518 0.213929
+-0.14047 0.966678 0.214015
+-0.101653 0.699701 0.707167
+-0.14047 0.966678 0.214015
+-0.174075 0.68524 0.707209
+-0.101653 0.699701 0.707167
+-0.14047 0.966678 0.214015
+-0.240545 0.946749 0.214019
+-0.174075 0.68524 0.707209
+-0.240545 0.946749 0.214019
+-0.270046 0.653016 0.707563
+-0.174075 0.68524 0.707209
+-0.240545 0.946749 0.214019
+-0.373292 0.902651 0.214183
+-0.270046 0.653016 0.707563
+-0.270046 0.653016 0.707563
+-0.509253 0.833562 0.214091
+-0.368589 0.603071 0.707423
+-0.270046 0.653016 0.707563
+-0.373292 0.902651 0.214183
+-0.509253 0.833562 0.214091
+-0.368589 0.603071 0.707423
+-0.597133 0.773101 0.213885
+-0.432406 0.559644 0.706982
+-0.368589 0.603071 0.707423
+-0.509253 0.833562 0.214091
+-0.597133 0.773101 0.213885
+-0.597133 0.773101 0.213885
+-0.478498 0.520496 0.707195
+-0.432406 0.559644 0.706982
+-0.597133 0.773101 0.213885
+-0.661123 0.719104 0.214024
+-0.478498 0.520496 0.707195
+-0.661123 0.719104 0.214024
+-0.534646 0.462551 0.707249
+-0.478498 0.520496 0.707195
+-0.661123 0.719104 0.214024
+-0.738754 0.639094 0.214014
+-0.534646 0.462551 0.707249
+-0.738754 0.639094 0.214014
+-0.596402 0.37898 0.707587
+-0.534646 0.462551 0.707249
+-0.738754 0.639094 0.214014
+-0.824427 0.523875 0.214184
+-0.596402 0.37898 0.707587
+-0.596402 0.37898 0.707587
+-0.891597 0.39905 0.214044
+-0.645286 0.288699 0.70729
+-0.596402 0.37898 0.707587
+-0.824427 0.523875 0.214184
+-0.891597 0.39905 0.214044
+-0.645286 0.288699 0.70729
+-0.922746 0.320596 0.213913
+-0.668069 0.232018 0.707002
+-0.645286 0.288699 0.70729
+-0.891597 0.39905 0.214044
+-0.922746 0.320596 0.213913
+-0.922746 0.320596 0.213913
+-0.679841 0.194324 0.707145
+-0.668069 0.232018 0.707002
+-0.922746 0.320596 0.213913
+-0.939221 0.268453 0.214004
+-0.679841 0.194324 0.707145
+-0.939221 0.268453 0.214004
+-0.69217 0.144294 0.707163
+-0.679841 0.194324 0.707145
+-0.939221 0.268453 0.214004
+-0.956276 0.19934 0.214007
+-0.69217 0.144294 0.707163
+-0.956276 0.19934 0.214007
+-0.702447 7.9464e-002 0.707286
+-0.69217 0.144294 0.707163
+-0.956276 0.19934 0.214007
+-0.970628 0.1098 0.214069
+-0.702447 7.9464e-002 0.707286
+-0.702447 7.9464e-002 0.707286
+-0.976682 1.6809e-002 0.21403
+-0.706903 1.213e-002 0.707206
+-0.702447 7.9464e-002 0.707286
+-0.970628 0.1098 0.214069
+-0.976682 1.6809e-002 0.21403
+-0.706903 1.213e-002 0.707206
+-0.975737 -4.6462e-002 0.213958
+-0.706352 -3.3664e-002 0.70706
+-0.706903 1.213e-002 0.707206
+-0.976682 1.6809e-002 0.21403
+-0.975737 -4.6462e-002 0.213958
+-0.975737 -4.6462e-002 0.213958
+-0.70353 -7.0776e-002 0.707132
+-0.706352 -3.3664e-002 0.70706
+-0.975737 -4.6462e-002 0.213958
+-0.971927 -9.7791e-002 0.213997
+-0.70353 -7.0776e-002 0.707132
+-0.971927 -9.7791e-002 0.213997
+-0.696181 -0.123606 0.707145
+-0.70353 -7.0776e-002 0.707132
+-0.971927 -9.7791e-002 0.213997
+-0.961791 -0.170786 0.213986
+-0.696181 -0.123606 0.707145
+-0.961791 -0.170786 0.213986
+-0.678265 -0.198901 0.707386
+-0.696181 -0.123606 0.707145
+-0.961791 -0.170786 0.213986
+-0.937335 -0.274883 0.214108
+-0.678265 -0.198901 0.707386
+-0.678265 -0.198901 0.707386
+-0.895362 -0.390503 0.214088
+-0.647897 -0.282662 0.707341
+-0.678265 -0.198901 0.707386
+-0.937335 -0.274883 0.214108
+-0.895362 -0.390503 0.214088
+-0.647897 -0.282662 0.707341
+-0.856951 -0.468906 0.21392
+-0.620363 -0.339532 0.707013
+-0.647897 -0.282662 0.707341
+-0.895362 -0.390503 0.214088
+-0.856951 -0.468906 0.21392
+-0.856951 -0.468906 0.21392
+-0.594985 -0.381997 0.707157
+-0.620363 -0.339532 0.707013
+-0.856951 -0.468906 0.21392
+-0.821988 -0.527769 0.214001
+-0.594985 -0.381997 0.707157
+-0.821988 -0.527769 0.214001
+-0.554417 -0.438754 0.707189
+-0.594985 -0.381997 0.707157
+-0.821988 -0.527769 0.214001
+-0.765969 -0.606216 0.213992
+-0.554417 -0.438754 0.707189
+-0.765969 -0.606216 0.213992
+-0.488372 -0.510748 0.707551
+-0.554417 -0.438754 0.707189
+-0.765969 -0.606216 0.213992
+-0.675053 -0.705998 0.214175
+-0.488372 -0.510748 0.707551
+-0.488372 -0.510748 0.707551
+-0.56086 -0.799748 0.2141
+-0.405732 -0.578764 0.707399
+-0.488372 -0.510748 0.707551
+-0.675053 -0.705998 0.214175
+-0.56086 -0.799748 0.2141
+-0.405732 -0.578764 0.707399
+-0.476196 -0.852928 0.213893
+-0.344664 -0.617565 0.706979
+-0.405732 -0.578764 0.707399
+-0.56086 -0.799748 0.2141
+-0.476196 -0.852928 0.213893
+-0.476196 -0.852928 0.213893
+-0.295988 -0.642105 0.707172
+-0.344664 -0.617565 0.706979
+-0.476196 -0.852928 0.213893
+-0.408902 -0.887131 0.214004
+-0.295988 -0.642105 0.707172
+-0.408902 -0.887131 0.214004
+-0.226138 -0.669856 0.707217
+-0.295988 -0.642105 0.707172
+-0.408902 -0.887131 0.214004
+-0.312412 -0.925528 0.214002
+-0.226138 -0.669856 0.707217
+-0.312412 -0.925528 0.214002
+-0.12781 -0.695038 0.707521
+-0.226138 -0.669856 0.707217
+-0.312412 -0.925528 0.214002
+-0.176645 -0.960696 0.214148
+-0.12781 -0.695038 0.707521
+-0.12781 -0.695038 0.707521
+-1.9357e-002 -0.976613 0.214132
+-1.3933e-002 -0.706592 0.707484
+-0.12781 -0.695038 0.707521
+-0.176645 -0.960696 0.214148
+-1.9357e-002 -0.976613 0.214132
+-1.3933e-002 -0.706592 0.707484
+0.107691 -0.97091 0.213859
+7.8017e-002 -0.702922 0.706975
+-1.3933e-002 -0.706592 0.707484
+-1.9357e-002 -0.976613 0.214132
+0.107691 -0.97091 0.213859
+0.107691 -0.97091 0.213859
+0.167088 -0.68692 0.707264
+7.8017e-002 -0.702922 0.706975
+0.107691 -0.97091 0.213859
+0.230933 -0.949146 0.213988
+0.167088 -0.68692 0.707264
+0.230933 -0.949146 0.213988
+0.292258 -0.64346 0.707492
+0.167088 -0.68692 0.707264
+0.230933 -0.949146 0.213988
+0.404005 -0.889368 0.21402
+0.292258 -0.64346 0.707492
+0.404005 -0.889368 0.21402
+0.476414 -0.583406 0.657774
+0.292258 -0.64346 0.707492
+0.404005 -0.889368 0.21402
+0.622424 -0.760869 0.183484
+0.476414 -0.583406 0.657774
+0.476414 -0.583406 0.657774
+0.730189 -0.666369 0.150918
+0.582108 -0.548065 0.600645
+0.476414 -0.583406 0.657774
+0.622424 -0.760869 0.183484
+0.730189 -0.666369 0.150918
+-0.992679 -2.033e-003 0.120766
+-0.848894 -7.94399e-003 0.528503
+-0.848894 -7.94399e-003 0.528503
+-0.992679 -2.033e-003 0.120766
+-0.992679 -2.033e-003 0.120766
+-0.848894 -7.94399e-003 0.528503
+0 -0.793525 0.608538
+0 -0.987652 0.156665
+0 -0.793525 0.608538
+0 -0.793525 0.608538
+0 -0.987652 0.156665
+0 -0.987652 0.156665
+0.987652 0 0.156663
+1. 0 0
+0.987652 0 0.156663
+0.987652 0 0.156663
+1. 0 0
+1. 0 0
+0 0.987657 0.156634
+0 1. -3.2e-005
+0 0.987657 0.156634
+0 0.987657 0.156634
+0 1. -3.2e-005
+0 1. -3.2e-005
+-0.993184 5.72e-004 0.116557
+-1. 0 0
+-0.993184 5.72e-004 0.116557
+-0.993184 5.72e-004 0.116557
+-1. 0 0
+-1. 0 0
+0.746958 0.645998 0.157291
+0.772016 0.635604 3.e-006
+0.742583 0.643538 0.18555
+0.746958 0.645998 0.157291
+0.788478 0.615063 -1.5e-005
+0.772016 0.635604 3.e-006
+0.742583 0.643538 0.18555
+0.730822 0.682568 1.5e-005
+0.713895 0.666746 0.214019
+0.742583 0.643538 0.18555
+0.772016 0.635604 3.e-006
+0.730822 0.682568 1.5e-005
+0.713895 0.666746 0.214019
+0.671521 0.740985 5.e-006
+0.655971 0.723811 0.214009
+0.713895 0.666746 0.214019
+0.730822 0.682568 1.5e-005
+0.671521 0.740985 5.e-006
+0.655971 0.723811 0.214009
+0.586878 0.809675 0
+0.573274 0.7909 0.214089
+0.655971 0.723811 0.214009
+0.671521 0.740985 5.e-006
+0.586878 0.809675 0
+0.586878 0.809675 0
+0.476387 0.852777 0.214072
+0.573274 0.7909 0.214089
+0.586878 0.809675 0
+0.487733 0.872993 9.e-006
+0.476387 0.852777 0.214072
+0.476387 0.852777 0.214072
+0.411228 0.911532 1.9e-005
+0.401671 0.890439 0.213959
+0.476387 0.852777 0.214072
+0.487733 0.872993 9.e-006
+0.411228 0.911532 1.9e-005
+0.401671 0.890439 0.213959
+0.345952 0.938252 7.e-006
+0.337945 0.91651 0.214015
+0.401671 0.890439 0.213959
+0.411228 0.911532 1.9e-005
+0.345952 0.938252 7.e-006
+0.337945 0.91651 0.214015
+0.2578 0.966198 6.e-006
+0.251837 0.943809 0.214015
+0.337945 0.91651 0.214015
+0.345952 0.938252 7.e-006
+0.2578 0.966198 6.e-006
+0.251837 0.943809 0.214015
+0.142101 0.989852 4.e-006
+0.138808 0.966897 0.21411
+0.251837 0.943809 0.214015
+0.2578 0.966198 6.e-006
+0.142101 0.989852 4.e-006
+0.138808 0.966897 0.21411
+1.9122e-002 0.999817 -1.5e-005
+1.8648e-002 0.976646 0.214045
+0.138808 0.966897 0.21411
+0.142101 0.989852 4.e-006
+1.9122e-002 0.999817 -1.5e-005
+1.8648e-002 0.976646 0.214045
+-6.9023e-002 0.997615 -3.e-006
+-6.7449e-002 0.974518 0.213929
+1.8648e-002 0.976646 0.214045
+1.9122e-002 0.999817 -1.5e-005
+-6.9023e-002 0.997615 -3.e-006
+-6.7449e-002 0.974518 0.213929
+-0.143811 0.989605 1.4e-005
+-0.14047 0.966678 0.214015
+-6.7449e-002 0.974518 0.213929
+-6.9023e-002 0.997615 -3.e-006
+-0.143811 0.989605 1.4e-005
+-0.14047 0.966678 0.214015
+-0.246262 0.969203 2.3e-005
+-0.240545 0.946749 0.214019
+-0.14047 0.966678 0.214015
+-0.143811 0.989605 1.4e-005
+-0.246262 0.969203 2.3e-005
+-0.240545 0.946749 0.214019
+-0.382164 0.924094 9.e-006
+-0.373292 0.902651 0.214183
+-0.240545 0.946749 0.214019
+-0.246262 0.969203 2.3e-005
+-0.382164 0.924094 9.e-006
+-0.382164 0.924094 9.e-006
+-0.509253 0.833562 0.214091
+-0.373292 0.902651 0.214183
+-0.382164 0.924094 9.e-006
+-0.521294 0.853377 -1.7e-005
+-0.509253 0.833562 0.214091
+-0.509253 0.833562 0.214091
+-0.61124 0.791445 -4.e-006
+-0.597133 0.773101 0.213885
+-0.509253 0.833562 0.214091
+-0.521294 0.853377 -1.7e-005
+-0.61124 0.791445 -4.e-006
+-0.61124 0.791445 -4.e-006
+-0.661123 0.719104 0.214024
+-0.597133 0.773101 0.213885
+-0.61124 0.791445 -4.e-006
+-0.676813 0.736155 1.6e-005
+-0.661123 0.719104 0.214024
+-0.676813 0.736155 1.6e-005
+-0.738754 0.639094 0.214014
+-0.661123 0.719104 0.214024
+-0.676813 0.736155 1.6e-005
+-0.756283 0.654245 1.e-006
+-0.738754 0.639094 0.214014
+-0.738754 0.639094 0.214014
+-0.844014 0.536321 -8.e-006
+-0.824427 0.523875 0.214184
+-0.738754 0.639094 0.214014
+-0.756283 0.654245 1.e-006
+-0.844014 0.536321 -8.e-006
+-0.844014 0.536321 -8.e-006
+-0.891597 0.39905 0.214044
+-0.824427 0.523875 0.214184
+-0.844014 0.536321 -8.e-006
+-0.912732 0.408558 -2.e-006
+-0.891597 0.39905 0.214044
+-0.912732 0.408558 -2.e-006
+-0.922746 0.320596 0.213913
+-0.891597 0.39905 0.214044
+-0.912732 0.408558 -2.e-006
+-0.944598 0.328229 -4.e-006
+-0.922746 0.320596 0.213913
+-0.922746 0.320596 0.213913
+-0.961497 0.274816 -1.e-006
+-0.939221 0.268453 0.214004
+-0.922746 0.320596 0.213913
+-0.944598 0.328229 -4.e-006
+-0.961497 0.274816 -1.e-006
+-0.939221 0.268453 0.214004
+-0.978958 0.204064 2.e-006
+-0.956276 0.19934 0.214007
+-0.939221 0.268453 0.214004
+-0.961497 0.274816 -1.e-006
+-0.978958 0.204064 2.e-006
+-0.956276 0.19934 0.214007
+-0.993662 0.112405 0
+-0.970628 0.1098 0.214069
+-0.956276 0.19934 0.214007
+-0.978958 0.204064 2.e-006
+-0.993662 0.112405 0
+-0.970628 0.1098 0.214069
+-0.999852 1.7224e-002 0
+-0.976682 1.6809e-002 0.21403
+-0.970628 0.1098 0.214069
+-0.993662 0.112405 0
+-0.999852 1.7224e-002 0
+-0.999852 1.7224e-002 0
+-0.975737 -4.6462e-002 0.213958
+-0.976682 1.6809e-002 0.21403
+-0.999852 1.7224e-002 0
+-0.998869 -4.755e-002 0
+-0.975737 -4.6462e-002 0.213958
+-0.975737 -4.6462e-002 0.213958
+-0.994976 -0.100115 1.e-006
+-0.971927 -9.7791e-002 0.213997
+-0.975737 -4.6462e-002 0.213958
+-0.998869 -4.755e-002 0
+-0.994976 -0.100115 1.e-006
+-0.971927 -9.7791e-002 0.213997
+-0.984596 -0.174842 0
+-0.961791 -0.170786 0.213986
+-0.971927 -9.7791e-002 0.213997
+-0.994976 -0.100115 1.e-006
+-0.984596 -0.174842 0
+-0.984596 -0.174842 0
+-0.937335 -0.274883 0.214108
+-0.961791 -0.170786 0.213986
+-0.984596 -0.174842 0
+-0.959587 -0.281412 1.e-006
+-0.937335 -0.274883 0.214108
+-0.959587 -0.281412 1.e-006
+-0.895362 -0.390503 0.214088
+-0.937335 -0.274883 0.214108
+-0.959587 -0.281412 1.e-006
+-0.916629 -0.39974 1.e-006
+-0.895362 -0.390503 0.214088
+-0.895362 -0.390503 0.214088
+-0.877274 -0.47999 0
+-0.856951 -0.468906 0.21392
+-0.895362 -0.390503 0.214088
+-0.916629 -0.39974 1.e-006
+-0.877274 -0.47999 0
+-0.856951 -0.468906 0.21392
+-0.841477 -0.540292 0
+-0.821988 -0.527769 0.214001
+-0.856951 -0.468906 0.21392
+-0.877274 -0.47999 0
+-0.841477 -0.540292 0
+-0.821988 -0.527769 0.214001
+-0.784126 -0.620601 1.e-006
+-0.765969 -0.606216 0.213992
+-0.821988 -0.527769 0.214001
+-0.841477 -0.540292 0
+-0.784126 -0.620601 1.e-006
+-0.765969 -0.606216 0.213992
+-0.691087 -0.722772 0
+-0.675053 -0.705998 0.214175
+-0.765969 -0.606216 0.213992
+-0.784126 -0.620601 1.e-006
+-0.691087 -0.722772 0
+-0.675053 -0.705998 0.214175
+-0.574218 -0.818702 -1.e-006
+-0.56086 -0.799748 0.2141
+-0.675053 -0.705998 0.214175
+-0.691087 -0.722772 0
+-0.574218 -0.818702 -1.e-006
+-0.56086 -0.799748 0.2141
+-0.487519 -0.873112 -1.e-006
+-0.476196 -0.852928 0.213893
+-0.56086 -0.799748 0.2141
+-0.574218 -0.818702 -1.e-006
+-0.487519 -0.873112 -1.e-006
+-0.487519 -0.873112 -1.e-006
+-0.408902 -0.887131 0.214004
+-0.476196 -0.852928 0.213893
+-0.487519 -0.873112 -1.e-006
+-0.418591 -0.908175 0
+-0.408902 -0.887131 0.214004
+-0.408902 -0.887131 0.214004
+-0.31981 -0.947482 1.e-006
+-0.312412 -0.925528 0.214002
+-0.408902 -0.887131 0.214004
+-0.418591 -0.908175 0
+-0.31981 -0.947482 1.e-006
+-0.31981 -0.947482 1.e-006
+-0.176645 -0.960696 0.214148
+-0.312412 -0.925528 0.214002
+-0.31981 -0.947482 1.e-006
+-0.180835 -0.983513 0
+-0.176645 -0.960696 0.214148
+-0.176645 -0.960696 0.214148
+-1.9848e-002 -0.999803 0
+-1.9357e-002 -0.976613 0.214132
+-0.176645 -0.960696 0.214148
+-0.180835 -0.983513 0
+-1.9848e-002 -0.999803 0
+-1.9357e-002 -0.976613 0.214132
+0.11022 -0.993907 0
+0.107691 -0.97091 0.213859
+-1.9357e-002 -0.976613 0.214132
+-1.9848e-002 -0.999803 0
+0.11022 -0.993907 0
+0.107691 -0.97091 0.213859
+0.236428 -0.971649 0
+0.230933 -0.949146 0.213988
+0.107691 -0.97091 0.213859
+0.11022 -0.993907 0
+0.236428 -0.971649 0
+0.230933 -0.949146 0.213988
+0.413604 -0.910457 -1.e-006
+0.404005 -0.889368 0.21402
+0.230933 -0.949146 0.213988
+0.236428 -0.971649 0
+0.413604 -0.910457 -1.e-006
+0.404005 -0.889368 0.21402
+0.633682 -0.773594 1.e-006
+0.622424 -0.760869 0.183484
+0.404005 -0.889368 0.21402
+0.413604 -0.910457 -1.e-006
+0.633682 -0.773594 1.e-006
+0.622424 -0.760869 0.183484
+0.741805 -0.670615 2.e-006
+0.730189 -0.666369 0.150918
+0.622424 -0.760869 0.183484
+0.633682 -0.773594 1.e-006
+0.741805 -0.670615 2.e-006
+-0.992679 -2.033e-003 0.120766
+-1. 0 0
+-0.992679 -2.033e-003 0.120766
+-0.992679 -2.033e-003 0.120766
+-1. 0 0
+-1. 0 0
+0 -0.987652 0.156665
+0 -1. 0
+0 -0.987652 0.156665
+0 -0.987652 0.156665
+0 -1. 0
+0 -1. 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+0 1. -3.2e-005
+0 1. 0
+0 1. -3.2e-005
+0 1. -3.2e-005
+0 1. 0
+0 1. 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+0.788478 0.615063 0
+0.772016 0.635604 3.e-006
+0.788478 0.615063 -1.5e-005
+0.788478 0.615063 0
+0.772016 0.635604 0
+0.772016 0.635604 3.e-006
+0.772016 0.635604 3.e-006
+0.730822 0.682568 0
+0.730822 0.682568 1.5e-005
+0.772016 0.635604 3.e-006
+0.772016 0.635604 0
+0.730822 0.682568 0
+0.730822 0.682568 1.5e-005
+0.671521 0.740985 0
+0.671521 0.740985 5.e-006
+0.730822 0.682568 1.5e-005
+0.730822 0.682568 0
+0.671521 0.740985 0
+0.671521 0.740985 5.e-006
+0.586878 0.809675 0
+0.586878 0.809675 0
+0.671521 0.740985 5.e-006
+0.671521 0.740985 0
+0.586878 0.809675 0
+0.586878 0.809675 0
+0.487733 0.872993 9.e-006
+0.586878 0.809675 0
+0.586878 0.809675 0
+0.487733 0.872993 0
+0.487733 0.872993 9.e-006
+0.487733 0.872993 0
+0.411228 0.911532 1.9e-005
+0.487733 0.872993 9.e-006
+0.487733 0.872993 0
+0.411228 0.911532 0
+0.411228 0.911532 1.9e-005
+0.411228 0.911532 1.9e-005
+0.345952 0.938252 0
+0.345952 0.938252 7.e-006
+0.411228 0.911532 1.9e-005
+0.411228 0.911532 0
+0.345952 0.938252 0
+0.345952 0.938252 0
+0.2578 0.966198 6.e-006
+0.345952 0.938252 7.e-006
+0.345952 0.938252 0
+0.2578 0.966198 0
+0.2578 0.966198 6.e-006
+0.2578 0.966198 0
+0.142101 0.989852 4.e-006
+0.2578 0.966198 6.e-006
+0.2578 0.966198 0
+0.142101 0.989852 0
+0.142101 0.989852 4.e-006
+0.142101 0.989852 0
+1.9122e-002 0.999817 -1.5e-005
+0.142101 0.989852 4.e-006
+0.142101 0.989852 0
+1.9122e-002 0.999817 0
+1.9122e-002 0.999817 -1.5e-005
+1.9122e-002 0.999817 -1.5e-005
+-6.9023e-002 0.997615 0
+-6.9023e-002 0.997615 -3.e-006
+1.9122e-002 0.999817 -1.5e-005
+1.9122e-002 0.999817 0
+-6.9023e-002 0.997615 0
+-6.9023e-002 0.997615 0
+-0.143811 0.989605 1.4e-005
+-6.9023e-002 0.997615 -3.e-006
+-6.9023e-002 0.997615 0
+-0.143811 0.989605 0
+-0.143811 0.989605 1.4e-005
+-0.143811 0.989605 0
+-0.246262 0.969203 2.3e-005
+-0.143811 0.989605 1.4e-005
+-0.143811 0.989605 0
+-0.246262 0.969203 0
+-0.246262 0.969203 2.3e-005
+-0.246262 0.969203 2.3e-005
+-0.382164 0.924094 0
+-0.382164 0.924094 9.e-006
+-0.246262 0.969203 2.3e-005
+-0.246262 0.969203 0
+-0.382164 0.924094 0
+-0.382164 0.924094 9.e-006
+-0.521294 0.853377 0
+-0.521294 0.853377 -1.7e-005
+-0.382164 0.924094 9.e-006
+-0.382164 0.924094 0
+-0.521294 0.853377 0
+-0.521294 0.853377 0
+-0.61124 0.791445 -4.e-006
+-0.521294 0.853377 -1.7e-005
+-0.521294 0.853377 0
+-0.61124 0.791445 0
+-0.61124 0.791445 -4.e-006
+-0.61124 0.791445 -4.e-006
+-0.676813 0.736155 0
+-0.676813 0.736155 1.6e-005
+-0.61124 0.791445 -4.e-006
+-0.61124 0.791445 0
+-0.676813 0.736155 0
+-0.676813 0.736155 0
+-0.756283 0.654245 1.e-006
+-0.676813 0.736155 1.6e-005
+-0.676813 0.736155 0
+-0.756283 0.654245 0
+-0.756283 0.654245 1.e-006
+-0.756283 0.654245 1.e-006
+-0.844014 0.536321 0
+-0.844014 0.536321 -8.e-006
+-0.756283 0.654245 1.e-006
+-0.756283 0.654245 0
+-0.844014 0.536321 0
+-0.844014 0.536321 -8.e-006
+-0.912732 0.408558 0
+-0.912732 0.408558 -2.e-006
+-0.844014 0.536321 -8.e-006
+-0.844014 0.536321 0
+-0.912732 0.408558 0
+-0.912732 0.408558 -2.e-006
+-0.944598 0.328229 0
+-0.944598 0.328229 -4.e-006
+-0.912732 0.408558 -2.e-006
+-0.912732 0.408558 0
+-0.944598 0.328229 0
+-0.944598 0.328229 -4.e-006
+-0.961497 0.274816 0
+-0.961497 0.274816 -1.e-006
+-0.944598 0.328229 -4.e-006
+-0.944598 0.328229 0
+-0.961497 0.274816 0
+-0.961497 0.274816 0
+-0.978958 0.204064 2.e-006
+-0.961497 0.274816 -1.e-006
+-0.961497 0.274816 0
+-0.978958 0.204064 0
+-0.978958 0.204064 2.e-006
+-0.978958 0.204064 2.e-006
+-0.993662 0.112405 0
+-0.993662 0.112405 0
+-0.978958 0.204064 2.e-006
+-0.978958 0.204064 0
+-0.993662 0.112405 0
+-0.993662 0.112405 0
+-0.999852 1.7224e-002 0
+-0.999852 1.7224e-002 0
+-0.993662 0.112405 0
+-0.993662 0.112405 0
+-0.999852 1.7224e-002 0
+-0.999852 1.7224e-002 0
+-0.998869 -4.755e-002 0
+-0.999852 1.7224e-002 0
+-0.999852 1.7224e-002 0
+-0.998869 -4.755e-002 0
+-0.998869 -4.755e-002 0
+-0.998869 -4.755e-002 0
+-0.994976 -0.100115 1.e-006
+-0.998869 -4.755e-002 0
+-0.998869 -4.755e-002 0
+-0.994976 -0.100115 0
+-0.994976 -0.100115 1.e-006
+-0.994976 -0.100115 0
+-0.984596 -0.174842 0
+-0.994976 -0.100115 1.e-006
+-0.994976 -0.100115 0
+-0.984596 -0.174842 0
+-0.984596 -0.174842 0
+-0.984596 -0.174842 0
+-0.959587 -0.281412 0
+-0.959587 -0.281412 1.e-006
+-0.984596 -0.174842 0
+-0.984596 -0.174842 0
+-0.959587 -0.281412 0
+-0.959587 -0.281412 0
+-0.916629 -0.39974 1.e-006
+-0.959587 -0.281412 1.e-006
+-0.959587 -0.281412 0
+-0.916629 -0.39974 0
+-0.916629 -0.39974 1.e-006
+-0.916629 -0.39974 0
+-0.877274 -0.47999 0
+-0.916629 -0.39974 1.e-006
+-0.916629 -0.39974 0
+-0.877274 -0.47999 0
+-0.877274 -0.47999 0
+-0.877274 -0.47999 0
+-0.841477 -0.540292 0
+-0.841477 -0.540292 0
+-0.877274 -0.47999 0
+-0.877274 -0.47999 0
+-0.841477 -0.540292 0
+-0.841477 -0.540292 0
+-0.784126 -0.620601 1.e-006
+-0.841477 -0.540292 0
+-0.841477 -0.540292 0
+-0.784126 -0.620601 0
+-0.784126 -0.620601 1.e-006
+-0.784126 -0.620601 0
+-0.691087 -0.722772 0
+-0.784126 -0.620601 1.e-006
+-0.784126 -0.620601 0
+-0.691087 -0.722772 0
+-0.691087 -0.722772 0
+-0.691087 -0.722772 0
+-0.574218 -0.818702 0
+-0.574218 -0.818702 -1.e-006
+-0.691087 -0.722772 0
+-0.691087 -0.722772 0
+-0.574218 -0.818702 0
+-0.574218 -0.818702 -1.e-006
+-0.487519 -0.873112 0
+-0.487519 -0.873112 -1.e-006
+-0.574218 -0.818702 -1.e-006
+-0.574218 -0.818702 0
+-0.487519 -0.873112 0
+-0.487519 -0.873112 -1.e-006
+-0.418591 -0.908175 0
+-0.418591 -0.908175 0
+-0.487519 -0.873112 -1.e-006
+-0.487519 -0.873112 0
+-0.418591 -0.908175 0
+-0.418591 -0.908175 0
+-0.31981 -0.947482 1.e-006
+-0.418591 -0.908175 0
+-0.418591 -0.908175 0
+-0.31981 -0.947482 0
+-0.31981 -0.947482 1.e-006
+-0.31981 -0.947482 1.e-006
+-0.180835 -0.983513 0
+-0.180835 -0.983513 0
+-0.31981 -0.947482 1.e-006
+-0.31981 -0.947482 0
+-0.180835 -0.983513 0
+-0.180835 -0.983513 0
+-1.9848e-002 -0.999803 0
+-1.9848e-002 -0.999803 0
+-0.180835 -0.983513 0
+-0.180835 -0.983513 0
+-1.9848e-002 -0.999803 0
+-1.9848e-002 -0.999803 0
+0.11022 -0.993907 0
+-1.9848e-002 -0.999803 0
+-1.9848e-002 -0.999803 0
+0.11022 -0.993907 0
+0.11022 -0.993907 0
+0.11022 -0.993907 0
+0.236428 -0.971649 0
+0.236428 -0.971649 0
+0.11022 -0.993907 0
+0.11022 -0.993907 0
+0.236428 -0.971649 0
+0.236428 -0.971649 0
+0.413604 -0.910457 -1.e-006
+0.236428 -0.971649 0
+0.236428 -0.971649 0
+0.413604 -0.910457 0
+0.413604 -0.910457 -1.e-006
+0.413604 -0.910457 0
+0.633682 -0.773594 1.e-006
+0.413604 -0.910457 -1.e-006
+0.413604 -0.910457 0
+0.633682 -0.773594 0
+0.633682 -0.773594 1.e-006
+0.633682 -0.773594 1.e-006
+0.741805 -0.670615 0
+0.741805 -0.670615 2.e-006
+0.633682 -0.773594 1.e-006
+0.633682 -0.773594 0
+0.741805 -0.670615 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 0 1.
+0.214 0 0.976834
+0 0 1.
+0 0 1.
+0.21403 5.3e-004 0.976827
+0.214 0 0.976834
+0 0 1.
+0.214 0 0.976834
+0 0 1.
+0 0 1.
+0.214 0 0.976834
+0.214 0 0.976834
+0 0 1.
+0.214017 -5.e-006 0.97683
+0 0 1.
+0 0 1.
+0.214 0 0.976834
+0.214017 -5.e-006 0.97683
+0 0 1.
+0.213919 -5.887e-003 0.976834
+0 0 1.
+0 0 1.
+0.214017 -5.e-006 0.97683
+0.213919 -5.887e-003 0.976834
+0 0 1.
+0.212961 -2.0987e-002 0.976835
+0 0 1.
+0 0 1.
+0.213919 -5.887e-003 0.976834
+0.212961 -2.0987e-002 0.976835
+0 0 1.
+0.209698 -4.258e-002 0.976839
+0 0 1.
+0 0 1.
+0.212961 -2.0987e-002 0.976835
+0.209698 -4.258e-002 0.976839
+0 0 1.
+0.202188 -7.0002e-002 0.976842
+0 0 1.
+0 0 1.
+0.209698 -4.258e-002 0.976839
+0.202188 -7.0002e-002 0.976842
+0 0 1.
+0.18785 -0.102102 0.976876
+0 0 1.
+0 0 1.
+0.202188 -7.0002e-002 0.976842
+0.18785 -0.102102 0.976876
+0.18785 -0.102102 0.976876
+0 0 1.
+0 0 1.
+0.18785 -0.102102 0.976876
+0.168461 -0.131843 0.976851
+0 0 1.
+0.168461 -0.131843 0.976851
+0 0 1.
+0 0 1.
+0.168461 -0.131843 0.976851
+0.151351 -0.151459 0.976808
+0 0 1.
+0 0 1.
+0.133148 -0.167538 0.976833
+0 0 1.
+0 0 1.
+0.151351 -0.151459 0.976808
+0.133148 -0.167538 0.976833
+0 0 1.
+0.104152 -0.186938 0.976835
+0 0 1.
+0 0 1.
+0.133148 -0.167538 0.976833
+0.104152 -0.186938 0.976835
+0 0 1.
+5.9462e-002 -0.205074 0.976939
+0 0 1.
+0 0 1.
+0.104152 -0.186938 0.976835
+5.9462e-002 -0.205074 0.976939
+5.9462e-002 -0.205074 0.976939
+0 0 1.
+0 0 1.
+5.9462e-002 -0.205074 0.976939
+9.974e-003 -0.21361 0.976868
+0 0 1.
+9.974e-003 -0.21361 0.976868
+0 0 1.
+0 0 1.
+9.974e-003 -0.21361 0.976868
+-2.3497e-002 -0.212932 0.976784
+0 0 1.
+0 0 1.
+-4.9555e-002 -0.208166 0.976837
+0 0 1.
+0 0 1.
+-2.3497e-002 -0.212932 0.976784
+-4.9555e-002 -0.208166 0.976837
+0 0 1.
+-8.3934e-002 -0.196798 0.976845
+0 0 1.
+0 0 1.
+-4.9555e-002 -0.208166 0.976837
+-8.3934e-002 -0.196798 0.976845
+0 0 1.
+-0.124746 -0.173411 0.976917
+0 0 1.
+0 0 1.
+-8.3934e-002 -0.196798 0.976845
+-0.124746 -0.173411 0.976917
+-0.124746 -0.173411 0.976917
+0 0 1.
+0 0 1.
+-0.124746 -0.173411 0.976917
+-0.160717 -0.14104 0.976871
+0 0 1.
+-0.160717 -0.14104 0.976871
+0 0 1.
+0 0 1.
+-0.160717 -0.14104 0.976871
+-0.181285 -0.114047 0.976795
+0 0 1.
+0 0 1.
+-0.193567 -9.1129e-002 0.976846
+0 0 1.
+0 0 1.
+-0.181285 -0.114047 0.976795
+-0.193567 -9.1129e-002 0.976846
+0 0 1.
+-0.204347 -6.335e-002 0.976847
+0 0 1.
+0 0 1.
+-0.193567 -9.1129e-002 0.976846
+-0.204347 -6.335e-002 0.976847
+0 0 1.
+-0.211426 -3.2187e-002 0.976864
+0 0 1.
+0 0 1.
+-0.204347 -6.335e-002 0.976847
+-0.211426 -3.2187e-002 0.976864
+-0.211426 -3.2187e-002 0.976864
+0 0 1.
+0 0 1.
+-0.211426 -3.2187e-002 0.976864
+-0.213947 -4.711e-003 0.976834
+0 0 1.
+-0.213947 -4.711e-003 0.976834
+0 0 1.
+0 0 1.
+-0.213947 -4.711e-003 0.976834
+-0.213709 1.2309e-002 0.97682
+0 0 1.
+0 0 1.
+-0.212296 2.7106e-002 0.976829
+0 0 1.
+0 0 1.
+-0.213709 1.2309e-002 0.97682
+-0.212296 2.7106e-002 0.976829
+0 0 1.
+-0.208105 5.0292e-002 0.976813
+0 0 1.
+0 0 1.
+-0.212296 2.7106e-002 0.976829
+-0.208105 5.0292e-002 0.976813
+0 0 1.
+-0.19504 8.72e-002 0.976911
+0 0 1.
+0 0 1.
+-0.208105 5.0292e-002 0.976813
+-0.19504 8.72e-002 0.976911
+-0.19504 8.72e-002 0.976911
+0 0 1.
+0 0 1.
+-0.19504 8.72e-002 0.976911
+-0.170627 0.128633 0.976903
+0 0 1.
+-0.170627 0.128633 0.976903
+0 0 1.
+0 0 1.
+-0.170627 0.128633 0.976903
+-0.149081 0.153889 0.976777
+0 0 1.
+0 0 1.
+-0.131039 0.169196 0.976832
+0 0 1.
+0 0 1.
+-0.149081 0.153889 0.976777
+-0.131039 0.169196 0.976832
+0 0 1.
+-0.10272 0.187737 0.976833
+0 0 1.
+0 0 1.
+-0.131039 0.169196 0.976832
+-0.10272 0.187737 0.976833
+0 0 1.
+-5.8891e-002 0.205264 0.976933
+0 0 1.
+0 0 1.
+-0.10272 0.187737 0.976833
+-5.8891e-002 0.205264 0.976933
+-5.8891e-002 0.205264 0.976933
+0 0 1.
+0 0 1.
+-5.8891e-002 0.205264 0.976933
+-9.678e-003 0.213605 0.976872
+0 0 1.
+-9.678e-003 0.213605 0.976872
+0 0 1.
+0 0 1.
+-9.678e-003 0.213605 0.976872
+2.4239e-002 0.212846 0.976785
+0 0 1.
+0 0 1.
+5.0671e-002 0.207889 0.976839
+0 0 1.
+0 0 1.
+2.4239e-002 0.212846 0.976785
+5.0671e-002 0.207889 0.976839
+0 0 1.
+8.4774e-002 0.196427 0.976847
+0 0 1.
+0 0 1.
+5.0671e-002 0.207889 0.976839
+8.4774e-002 0.196427 0.976847
+0 0 1.
+0.124293 0.173785 0.976908
+0 0 1.
+0 0 1.
+8.4774e-002 0.196427 0.976847
+0.124293 0.173785 0.976908
+0.124293 0.173785 0.976908
+0 0 1.
+0 0 1.
+0.124293 0.173785 0.976908
+0.158787 0.143252 0.976865
+0 0 1.
+0.158787 0.143252 0.976865
+0 0 1.
+0 0 1.
+0.158787 0.143252 0.976865
+0.178871 0.117769 0.976799
+0 0 1.
+0 0 1.
+0.191528 9.5351e-002 0.976844
+0 0 1.
+0 0 1.
+0.178871 0.117769 0.976799
+0.191528 9.5351e-002 0.976844
+0 0 1.
+0.203089 6.7266e-002 0.976847
+0 0 1.
+0 0 1.
+0.191528 9.5351e-002 0.976844
+0.203089 6.7266e-002 0.976847
+0 0 1.
+0.210972 3.4646e-002 0.976878
+0 0 1.
+0 0 1.
+0.203089 6.7266e-002 0.976847
+0.210972 3.4646e-002 0.976878
+0.210972 3.4646e-002 0.976878
+0 0 1.
+0 0 1.
+0.210972 3.4646e-002 0.976878
+0.213876 9.219e-003 0.976817
+0 0 1.
+0.213876 9.219e-003 0.976817
+0 0 1.
+0 0 1.
+0.213876 9.219e-003 0.976817
+0.21403 5.3e-004 0.976827
+0 0 1.
+0.21403 5.3e-004 0.976827
+0.707106 0 0.707107
+0.214 0 0.976834
+0.21403 5.3e-004 0.976827
+0.707154 9.09e-004 0.707059
+0.707106 0 0.707107
+0.214 0 0.976834
+0.707106 0 0.707108
+0.214 0 0.976834
+0.214 0 0.976834
+0.707106 0 0.707107
+0.707106 0 0.707108
+0.214 0 0.976834
+0.707132 -8.e-006 0.707082
+0.214017 -5.e-006 0.97683
+0.214 0 0.976834
+0.707106 0 0.707108
+0.707132 -8.e-006 0.707082
+0.214017 -5.e-006 0.97683
+0.706821 -1.9387e-002 0.707126
+0.213919 -5.887e-003 0.976834
+0.214017 -5.e-006 0.97683
+0.707132 -8.e-006 0.707082
+0.706821 -1.9387e-002 0.707126
+0.213919 -5.887e-003 0.976834
+0.703642 -6.9252e-002 0.707172
+0.212961 -2.0987e-002 0.976835
+0.213919 -5.887e-003 0.976834
+0.706821 -1.9387e-002 0.707126
+0.703642 -6.9252e-002 0.707172
+0.212961 -2.0987e-002 0.976835
+0.692847 -0.14062 0.70724
+0.209698 -4.258e-002 0.976839
+0.212961 -2.0987e-002 0.976835
+0.703642 -6.9252e-002 0.707172
+0.692847 -0.14062 0.70724
+0.209698 -4.258e-002 0.976839
+0.668014 -0.23121 0.707319
+0.202188 -7.0002e-002 0.976842
+0.209698 -4.258e-002 0.976839
+0.692847 -0.14062 0.70724
+0.668014 -0.23121 0.707319
+0.202188 -7.0002e-002 0.976842
+0.620814 -0.337421 0.707627
+0.18785 -0.102102 0.976876
+0.202188 -7.0002e-002 0.976842
+0.668014 -0.23121 0.707319
+0.620814 -0.337421 0.707627
+0.620814 -0.337421 0.707627
+0.168461 -0.131843 0.976851
+0.18785 -0.102102 0.976876
+0.620814 -0.337421 0.707627
+0.556497 -0.43578 0.707395
+0.168461 -0.131843 0.976851
+0.556497 -0.43578 0.707395
+0.151351 -0.151459 0.976808
+0.168461 -0.131843 0.976851
+0.556497 -0.43578 0.707395
+0.499821 -0.500344 0.70699
+0.151351 -0.151459 0.976808
+0.151351 -0.151459 0.976808
+0.439957 -0.553406 0.707233
+0.133148 -0.167538 0.976833
+0.151351 -0.151459 0.976808
+0.499821 -0.500344 0.70699
+0.439957 -0.553406 0.707233
+0.133148 -0.167538 0.976833
+0.344178 -0.61738 0.707378
+0.104152 -0.186938 0.976835
+0.133148 -0.167538 0.976833
+0.439957 -0.553406 0.707233
+0.344178 -0.61738 0.707378
+0.104152 -0.186938 0.976835
+0.19662 -0.677976 0.708301
+5.9462e-002 -0.205074 0.976939
+0.104152 -0.186938 0.976835
+0.344178 -0.61738 0.707378
+0.19662 -0.677976 0.708301
+0.19662 -0.677976 0.708301
+9.974e-003 -0.21361 0.976868
+5.9462e-002 -0.205074 0.976939
+0.19662 -0.677976 0.708301
+3.2478e-002 -0.705801 0.707665
+9.974e-003 -0.21361 0.976868
+3.2478e-002 -0.705801 0.707665
+-2.3497e-002 -0.212932 0.976784
+9.974e-003 -0.21361 0.976868
+3.2478e-002 -0.705801 0.707665
+-7.7915e-002 -0.703064 0.706845
+-2.3497e-002 -0.212932 0.976784
+-2.3497e-002 -0.212932 0.976784
+-0.163603 -0.68774 0.707282
+-4.9555e-002 -0.208166 0.976837
+-2.3497e-002 -0.212932 0.976784
+-7.7915e-002 -0.703064 0.706845
+-0.163603 -0.68774 0.707282
+-4.9555e-002 -0.208166 0.976837
+-0.277137 -0.650162 0.707449
+-8.3934e-002 -0.196798 0.976845
+-4.9555e-002 -0.208166 0.976837
+-0.163603 -0.68774 0.707282
+-0.277137 -0.650162 0.707449
+-8.3934e-002 -0.196798 0.976845
+-0.412321 -0.573218 0.708105
+-0.124746 -0.173411 0.976917
+-8.3934e-002 -0.196798 0.976845
+-0.277137 -0.650162 0.707449
+-0.412321 -0.573218 0.708105
+-0.412321 -0.573218 0.708105
+-0.160717 -0.14104 0.976871
+-0.124746 -0.173411 0.976917
+-0.412321 -0.573218 0.708105
+-0.531299 -0.465741 0.707677
+-0.160717 -0.14104 0.976871
+-0.531299 -0.465741 0.707677
+-0.181285 -0.114047 0.976795
+-0.160717 -0.14104 0.976871
+-0.531299 -0.465741 0.707677
+-0.598825 -0.37638 0.706928
+-0.181285 -0.114047 0.976795
+-0.181285 -0.114047 0.976795
+-0.639553 -0.301133 0.707312
+-0.193567 -9.1129e-002 0.976846
+-0.181285 -0.114047 0.976795
+-0.598825 -0.37638 0.706928
+-0.639553 -0.301133 0.707312
+-0.193567 -9.1129e-002 0.976846
+-0.675162 -0.209324 0.707348
+-0.204347 -6.335e-002 0.976847
+-0.193567 -9.1129e-002 0.976846
+-0.639553 -0.301133 0.707312
+-0.675162 -0.209324 0.707348
+-0.204347 -6.335e-002 0.976847
+-0.698689 -0.106348 0.707477
+-0.211426 -3.2187e-002 0.976864
+-0.204347 -6.335e-002 0.976847
+-0.675162 -0.209324 0.707348
+-0.698689 -0.106348 0.707477
+-0.698689 -0.106348 0.707477
+-0.213947 -4.711e-003 0.976834
+-0.211426 -3.2187e-002 0.976864
+-0.698689 -0.106348 0.707477
+-0.706856 -1.5482e-002 0.707188
+-0.213947 -4.711e-003 0.976834
+-0.706856 -1.5482e-002 0.707188
+-0.213709 1.2309e-002 0.97682
+-0.213947 -4.711e-003 0.976834
+-0.706856 -1.5482e-002 0.707188
+-0.706009 4.071e-002 0.707032
+-0.213709 1.2309e-002 0.97682
+-0.213709 1.2309e-002 0.97682
+-0.701398 8.9512e-002 0.707127
+-0.212296 2.7106e-002 0.976829
+-0.213709 1.2309e-002 0.97682
+-0.706009 4.071e-002 0.707032
+-0.701398 8.9512e-002 0.707127
+-0.212296 2.7106e-002 0.976829
+-0.687358 0.165988 0.707098
+-0.208105 5.0292e-002 0.976813
+-0.212296 2.7106e-002 0.976829
+-0.701398 8.9512e-002 0.707127
+-0.687358 0.165988 0.707098
+-0.208105 5.0292e-002 0.976813
+-0.644742 0.288153 0.708008
+-0.19504 8.72e-002 0.976911
+-0.208105 5.0292e-002 0.976813
+-0.687358 0.165988 0.707098
+-0.644742 0.288153 0.708008
+-0.644742 0.288153 0.708008
+-0.170627 0.128633 0.976903
+-0.19504 8.72e-002 0.976911
+-0.644742 0.288153 0.708008
+-0.563678 0.425556 0.707933
+-0.170627 0.128633 0.976903
+-0.563678 0.425556 0.707933
+-0.149081 0.153889 0.976777
+-0.170627 0.128633 0.976903
+-0.563678 0.425556 0.707933
+-0.491948 0.508389 0.706773
+-0.149081 0.153889 0.976777
+-0.149081 0.153889 0.976777
+-0.432986 0.558892 0.707222
+-0.131039 0.169196 0.976832
+-0.149081 0.153889 0.976777
+-0.491948 0.508389 0.706773
+-0.432986 0.558892 0.707222
+-0.131039 0.169196 0.976832
+-0.339444 0.620024 0.707353
+-0.10272 0.187737 0.976833
+-0.131039 0.169196 0.976832
+-0.432986 0.558892 0.707222
+-0.339444 0.620024 0.707353
+-0.10272 0.187737 0.976833
+-0.194734 0.678572 0.70825
+-5.8891e-002 0.205264 0.976933
+-0.10272 0.187737 0.976833
+-0.339444 0.620024 0.707353
+-0.194734 0.678572 0.70825
+-0.194734 0.678572 0.70825
+-9.678e-003 0.213605 0.976872
+-5.8891e-002 0.205264 0.976933
+-0.194734 0.678572 0.70825
+-3.1493e-002 0.705811 0.7077
+-9.678e-003 0.213605 0.976872
+-3.1493e-002 0.705811 0.7077
+2.4239e-002 0.212846 0.976785
+-9.678e-003 0.213605 0.976872
+-3.1493e-002 0.705811 0.7077
+8.0379e-002 0.70278 0.706851
+2.4239e-002 0.212846 0.976785
+2.4239e-002 0.212846 0.976785
+0.167297 0.686836 0.707296
+5.0671e-002 0.207889 0.976839
+2.4239e-002 0.212846 0.976785
+8.0379e-002 0.70278 0.706851
+0.167297 0.686836 0.707296
+5.0671e-002 0.207889 0.976839
+0.279938 0.648954 0.707456
+8.4774e-002 0.196427 0.976847
+5.0671e-002 0.207889 0.976839
+0.167297 0.686836 0.707296
+0.279938 0.648954 0.707456
+8.4774e-002 0.196427 0.976847
+0.410812 0.574419 0.708009
+0.124293 0.173785 0.976908
+8.4774e-002 0.196427 0.976847
+0.279938 0.648954 0.707456
+0.410812 0.574419 0.708009
+0.410812 0.574419 0.708009
+0.158787 0.143252 0.976865
+0.124293 0.173785 0.976908
+0.410812 0.574419 0.708009
+0.524883 0.473075 0.7076
+0.158787 0.143252 0.976865
+0.524883 0.473075 0.7076
+0.178871 0.117769 0.976799
+0.158787 0.143252 0.976865
+0.524883 0.473075 0.7076
+0.590859 0.388726 0.70695
+0.178871 0.117769 0.976799
+0.178871 0.117769 0.976799
+0.632802 0.315085 0.707307
+0.191528 9.5351e-002 0.976844
+0.178871 0.117769 0.976799
+0.590859 0.388726 0.70695
+0.632802 0.315085 0.707307
+0.191528 9.5351e-002 0.976844
+0.670998 0.222271 0.707359
+0.203089 6.7266e-002 0.976847
+0.191528 9.5351e-002 0.976844
+0.632802 0.315085 0.707307
+0.670998 0.222271 0.707359
+0.203089 6.7266e-002 0.976847
+0.697289 0.114474 0.70759
+0.210972 3.4646e-002 0.976878
+0.203089 6.7266e-002 0.976847
+0.670998 0.222271 0.707359
+0.697289 0.114474 0.70759
+0.697289 0.114474 0.70759
+0.213876 9.219e-003 0.976817
+0.210972 3.4646e-002 0.976878
+0.697289 0.114474 0.70759
+0.706543 2.9572e-002 0.707052
+0.213876 9.219e-003 0.976817
+0.706543 2.9572e-002 0.707052
+0.21403 5.3e-004 0.976827
+0.213876 9.219e-003 0.976817
+0.706543 2.9572e-002 0.707052
+0.707154 9.09e-004 0.707059
+0.21403 5.3e-004 0.976827
+0.707154 9.09e-004 0.707059
+0.976833 0 0.214001
+0.707106 0 0.707107
+0.707154 9.09e-004 0.707059
+0.976841 3.43e-004 0.213965
+0.976833 0 0.214001
+0.707106 0 0.707107
+0.976833 0 0.214001
+0.707106 0 0.707108
+0.707106 0 0.707107
+0.976833 0 0.214001
+0.976833 0 0.214001
+0.707106 0 0.707108
+0.976837 -3.e-006 0.213983
+0.707132 -8.e-006 0.707082
+0.707106 0 0.707108
+0.976833 0 0.214001
+0.976837 -3.e-006 0.213983
+0.707132 -8.e-006 0.707082
+0.976469 -2.6717e-002 0.213998
+0.706821 -1.9387e-002 0.707126
+0.707132 -8.e-006 0.707082
+0.976837 -3.e-006 0.213983
+0.976469 -2.6717e-002 0.213998
+0.706821 -1.9387e-002 0.707126
+0.972144 -9.5589e-002 0.214007
+0.703642 -6.9252e-002 0.707172
+0.706821 -1.9387e-002 0.707126
+0.976469 -2.6717e-002 0.213998
+0.972144 -9.5589e-002 0.214007
+0.703642 -6.9252e-002 0.707172
+0.957322 -0.194234 0.214026
+0.692847 -0.14062 0.70724
+0.703642 -6.9252e-002 0.707172
+0.972144 -9.5589e-002 0.214007
+0.957322 -0.194234 0.214026
+0.692847 -0.14062 0.70724
+0.923118 -0.319438 0.214039
+0.668014 -0.23121 0.707319
+0.692847 -0.14062 0.70724
+0.957322 -0.194234 0.214026
+0.923118 -0.319438 0.214039
+0.668014 -0.23121 0.707319
+0.858222 -0.466447 0.214199
+0.620814 -0.337421 0.707627
+0.668014 -0.23121 0.707319
+0.923118 -0.319438 0.214039
+0.858222 -0.466447 0.214199
+0.858222 -0.466447 0.214199
+0.556497 -0.43578 0.707395
+0.620814 -0.337421 0.707627
+0.858222 -0.466447 0.214199
+0.768952 -0.602391 0.214097
+0.556497 -0.43578 0.707395
+0.768952 -0.602391 0.214097
+0.499821 -0.500344 0.70699
+0.556497 -0.43578 0.707395
+0.768952 -0.602391 0.214097
+0.690302 -0.691186 0.213881
+0.499821 -0.500344 0.70699
+0.499821 -0.500344 0.70699
+0.607975 -0.764573 0.213998
+0.439957 -0.553406 0.707233
+0.499821 -0.500344 0.70699
+0.690302 -0.691186 0.213881
+0.607975 -0.764573 0.213998
+0.439957 -0.553406 0.707233
+0.475798 -0.853122 0.214006
+0.344178 -0.61738 0.707378
+0.439957 -0.553406 0.707233
+0.607975 -0.764573 0.213998
+0.475798 -0.853122 0.214006
+0.344178 -0.61738 0.707378
+0.272087 -0.938067 0.214476
+0.19662 -0.677976 0.708301
+0.344178 -0.61738 0.707378
+0.475798 -0.853122 0.214006
+0.272087 -0.938067 0.214476
+0.272087 -0.938067 0.214476
+3.2478e-002 -0.705801 0.707665
+0.19662 -0.677976 0.708301
+0.272087 -0.938067 0.214476
+4.4432e-002 -0.975789 0.214153
+3.2478e-002 -0.705801 0.707665
+4.4432e-002 -0.975789 0.214153
+-7.7915e-002 -0.703064 0.706845
+3.2478e-002 -0.705801 0.707665
+4.4432e-002 -0.975789 0.214153
+-0.107926 -0.970904 0.213768
+-7.7915e-002 -0.703064 0.706845
+-7.7915e-002 -0.703064 0.706845
+-0.225956 -0.950332 0.214041
+-0.163603 -0.68774 0.707282
+-7.7915e-002 -0.703064 0.706845
+-0.107926 -0.970904 0.213768
+-0.225956 -0.950332 0.214041
+-0.163603 -0.68774 0.707282
+-0.382905 -0.898644 0.214063
+-0.277137 -0.650162 0.707449
+-0.163603 -0.68774 0.707282
+-0.225956 -0.950332 0.214041
+-0.382905 -0.898644 0.214063
+-0.277137 -0.650162 0.707449
+-0.570337 -0.792938 0.214394
+-0.412321 -0.573218 0.708105
+-0.277137 -0.650162 0.707449
+-0.382905 -0.898644 0.214063
+-0.570337 -0.792938 0.214394
+-0.570337 -0.792938 0.214394
+-0.531299 -0.465741 0.707677
+-0.412321 -0.573218 0.708105
+-0.570337 -0.792938 0.214394
+-0.734773 -0.643609 0.214187
+-0.531299 -0.465741 0.707677
+-0.734773 -0.643609 0.214187
+-0.598825 -0.37638 0.706928
+-0.531299 -0.465741 0.707677
+-0.734773 -0.643609 0.214187
+-0.827225 -0.5196 0.21381
+-0.598825 -0.37638 0.706928
+-0.598825 -0.37638 0.706928
+-0.883745 -0.416148 0.214046
+-0.639553 -0.301133 0.707312
+-0.598825 -0.37638 0.706928
+-0.827225 -0.5196 0.21381
+-0.883745 -0.416148 0.214046
+-0.639553 -0.301133 0.707312
+-0.933004 -0.28928 0.214057
+-0.675162 -0.209324 0.707348
+-0.639553 -0.301133 0.707312
+-0.883745 -0.416148 0.214046
+-0.933004 -0.28928 0.214057
+-0.675162 -0.209324 0.707348
+-0.965684 -0.146967 0.214139
+-0.698689 -0.106348 0.707477
+-0.675162 -0.209324 0.707348
+-0.933004 -0.28928 0.214057
+-0.965684 -0.146967 0.214139
+-0.965684 -0.146967 0.214139
+-0.706856 -1.5482e-002 0.707188
+-0.698689 -0.106348 0.707477
+-0.965684 -0.146967 0.214139
+-0.976601 -2.1309e-002 0.214
+-0.706856 -1.5482e-002 0.707188
+-0.976601 -2.1309e-002 0.214
+-0.706009 4.071e-002 0.707032
+-0.706856 -1.5482e-002 0.707188
+-0.976601 -2.1309e-002 0.214
+-0.975226 5.6279e-002 0.213931
+-0.706009 4.071e-002 0.707032
+-0.706009 4.071e-002 0.707032
+-0.968985 0.123622 0.213977
+-0.701398 8.9512e-002 0.707127
+-0.706009 4.071e-002 0.707032
+-0.975226 5.6279e-002 0.213931
+-0.968985 0.123622 0.213977
+-0.701398 8.9512e-002 0.707127
+-0.949587 0.229195 0.213903
+-0.687358 0.165988 0.707098
+-0.701398 8.9512e-002 0.707127
+-0.968985 0.123622 0.213977
+-0.949587 0.229195 0.213903
+-0.687358 0.165988 0.707098
+-0.891784 0.398465 0.214354
+-0.644742 0.288153 0.708008
+-0.687358 0.165988 0.707098
+-0.949587 0.229195 0.213903
+-0.891784 0.398465 0.214354
+-0.891784 0.398465 0.214354
+-0.563678 0.425556 0.707933
+-0.644742 0.288153 0.708008
+-0.891784 0.398465 0.214354
+-0.77926 0.588912 0.214329
+-0.563678 0.425556 0.707933
+-0.77926 0.588912 0.214329
+-0.491948 0.508389 0.706773
+-0.563678 0.425556 0.707933
+-0.77926 0.588912 0.214329
+-0.679038 0.702303 0.213723
+-0.491948 0.508389 0.706773
+-0.491948 0.508389 0.706773
+-0.598329 0.772145 0.213995
+-0.432986 0.558892 0.707222
+-0.491948 0.508389 0.706773
+-0.679038 0.702303 0.213723
+-0.598329 0.772145 0.213995
+-0.432986 0.558892 0.707222
+-0.469237 0.856751 0.213998
+-0.339444 0.620024 0.707353
+-0.432986 0.558892 0.707222
+-0.598329 0.772145 0.213995
+-0.469237 0.856751 0.213998
+-0.339444 0.620024 0.707353
+-0.269467 0.938826 0.214462
+-0.194734 0.678572 0.70825
+-0.339444 0.620024 0.707353
+-0.469237 0.856751 0.213998
+-0.269467 0.938826 0.214462
+-0.269467 0.938826 0.214462
+-3.1493e-002 0.705811 0.7077
+-0.194734 0.678572 0.70825
+-0.269467 0.938826 0.214462
+-4.3063e-002 0.975842 0.21419
+-3.1493e-002 0.705811 0.7077
+-4.3063e-002 0.975842 0.21419
+8.0379e-002 0.70278 0.706851
+-3.1493e-002 0.705811 0.7077
+-4.3063e-002 0.975842 0.21419
+0.111347 0.970519 0.213761
+8.0379e-002 0.70278 0.706851
+8.0379e-002 0.70278 0.706851
+0.23107 0.949105 0.214023
+0.167297 0.686836 0.707296
+8.0379e-002 0.70278 0.706851
+0.111347 0.970519 0.213761
+0.23107 0.949105 0.214023
+0.167297 0.686836 0.707296
+0.386796 0.896977 0.214057
+0.279938 0.648954 0.707456
+0.167297 0.686836 0.707296
+0.23107 0.949105 0.214023
+0.386796 0.896977 0.214057
+0.279938 0.648954 0.707456
+0.568187 0.794494 0.214342
+0.410812 0.574419 0.708009
+0.279938 0.648954 0.707456
+0.386796 0.896977 0.214057
+0.568187 0.794494 0.214342
+0.568187 0.794494 0.214342
+0.524883 0.473075 0.7076
+0.410812 0.574419 0.708009
+0.568187 0.794494 0.214342
+0.725806 0.653717 0.21415
+0.524883 0.473075 0.7076
+0.725806 0.653717 0.21415
+0.590859 0.388726 0.70695
+0.524883 0.473075 0.7076
+0.725806 0.653717 0.21415
+0.816228 0.536701 0.213832
+0.590859 0.388726 0.70695
+0.590859 0.388726 0.70695
+0.874405 0.43543 0.21405
+0.632802 0.315085 0.707307
+0.590859 0.388726 0.70695
+0.816228 0.536701 0.213832
+0.874405 0.43543 0.21405
+0.632802 0.315085 0.707307
+0.927263 0.307185 0.214057
+0.670998 0.222271 0.707359
+0.632802 0.315085 0.707307
+0.874405 0.43543 0.21405
+0.927263 0.307185 0.214057
+0.670998 0.222271 0.707359
+0.963893 0.158209 0.214199
+0.697289 0.114474 0.70759
+0.670998 0.222271 0.707359
+0.927263 0.307185 0.214057
+0.963893 0.158209 0.214199
+0.963893 0.158209 0.214199
+0.706543 2.9572e-002 0.707052
+0.697289 0.114474 0.70759
+0.963893 0.158209 0.214199
+0.976033 3.9901e-002 0.213935
+0.706543 2.9572e-002 0.707052
+0.976033 3.9901e-002 0.213935
+0.707154 9.09e-004 0.707059
+0.706543 2.9572e-002 0.707052
+0.976033 3.9901e-002 0.213935
+0.976841 3.43e-004 0.213965
+0.707154 9.09e-004 0.707059
+0.976841 3.43e-004 0.213965
+1. 0 0
+0.976833 0 0.214001
+0.976841 3.43e-004 0.213965
+1. 0 0
+1. 0 0
+0.976833 0 0.214001
+1. 0 0
+0.976833 0 0.214001
+0.976833 0 0.214001
+1. 0 0
+1. 0 0
+0.976833 0 0.214001
+1. 0 0
+0.976837 -3.e-006 0.213983
+0.976833 0 0.214001
+1. 0 0
+1. 0 0
+0.976837 -3.e-006 0.213983
+0.999626 -2.733e-002 0
+0.976469 -2.6717e-002 0.213998
+0.976837 -3.e-006 0.213983
+1. 0 0
+0.999626 -2.733e-002 0
+0.976469 -2.6717e-002 0.213998
+0.995203 -9.7828e-002 1.e-006
+0.972144 -9.5589e-002 0.214007
+0.976469 -2.6717e-002 0.213998
+0.999626 -2.733e-002 0
+0.995203 -9.7828e-002 1.e-006
+0.995203 -9.7828e-002 1.e-006
+0.957322 -0.194234 0.214026
+0.972144 -9.5589e-002 0.214007
+0.995203 -9.7828e-002 1.e-006
+0.980035 -0.198823 2.e-006
+0.957322 -0.194234 0.214026
+0.957322 -0.194234 0.214026
+0.945025 -0.326997 3.e-006
+0.923118 -0.319438 0.214039
+0.957322 -0.194234 0.214026
+0.980035 -0.198823 2.e-006
+0.945025 -0.326997 3.e-006
+0.945025 -0.326997 3.e-006
+0.858222 -0.466447 0.214199
+0.923118 -0.319438 0.214039
+0.945025 -0.326997 3.e-006
+0.878616 -0.477529 3.e-006
+0.858222 -0.466447 0.214199
+0.878616 -0.477529 3.e-006
+0.768952 -0.602391 0.214097
+0.858222 -0.466447 0.214199
+0.878616 -0.477529 3.e-006
+0.787168 -0.616739 1.2e-005
+0.768952 -0.602391 0.214097
+0.787168 -0.616739 1.2e-005
+0.690302 -0.691186 0.213881
+0.768952 -0.602391 0.214097
+0.787168 -0.616739 1.2e-005
+0.706628 -0.707586 6.e-006
+0.690302 -0.691186 0.213881
+0.706628 -0.707586 6.e-006
+0.607975 -0.764573 0.213998
+0.690302 -0.691186 0.213881
+0.706628 -0.707586 6.e-006
+0.62242 -0.782683 3.e-006
+0.607975 -0.764573 0.213998
+0.62242 -0.782683 3.e-006
+0.475798 -0.853122 0.214006
+0.607975 -0.764573 0.213998
+0.62242 -0.782683 3.e-006
+0.48713 -0.873329 3.e-006
+0.475798 -0.853122 0.214006
+0.48713 -0.873329 3.e-006
+0.272087 -0.938067 0.214476
+0.475798 -0.853122 0.214006
+0.48713 -0.873329 3.e-006
+0.278581 -0.960413 -7.e-006
+0.272087 -0.938067 0.214476
+0.272087 -0.938067 0.214476
+4.5333e-002 -0.998972 -1.2e-005
+4.4432e-002 -0.975789 0.214153
+0.272087 -0.938067 0.214476
+0.278581 -0.960413 -7.e-006
+4.5333e-002 -0.998972 -1.2e-005
+4.5333e-002 -0.998972 -1.2e-005
+-0.107926 -0.970904 0.213768
+4.4432e-002 -0.975789 0.214153
+4.5333e-002 -0.998972 -1.2e-005
+-0.110589 -0.993866 7.e-006
+-0.107926 -0.970904 0.213768
+-0.107926 -0.970904 0.213768
+-0.231282 -0.972887 2.6e-005
+-0.225956 -0.950332 0.214041
+-0.107926 -0.970904 0.213768
+-0.110589 -0.993866 7.e-006
+-0.231282 -0.972887 2.6e-005
+-0.231282 -0.972887 2.6e-005
+-0.382905 -0.898644 0.214063
+-0.225956 -0.950332 0.214041
+-0.231282 -0.972887 2.6e-005
+-0.391952 -0.919986 1.7e-005
+-0.382905 -0.898644 0.214063
+-0.391952 -0.919986 1.7e-005
+-0.570337 -0.792938 0.214394
+-0.382905 -0.898644 0.214063
+-0.391952 -0.919986 1.7e-005
+-0.583908 -0.81182 1.e-005
+-0.570337 -0.792938 0.214394
+-0.570337 -0.792938 0.214394
+-0.752311 -0.658808 6.e-006
+-0.734773 -0.643609 0.214187
+-0.570337 -0.792938 0.214394
+-0.583908 -0.81182 1.e-005
+-0.752311 -0.658808 6.e-006
+-0.752311 -0.658808 6.e-006
+-0.827225 -0.5196 0.21381
+-0.734773 -0.643609 0.214187
+-0.752311 -0.658808 6.e-006
+-0.846858 -0.53182 0
+-0.827225 -0.5196 0.21381
+-0.846858 -0.53182 0
+-0.883745 -0.416148 0.214046
+-0.827225 -0.5196 0.21381
+-0.846858 -0.53182 0
+-0.904709 -0.426031 -7.e-006
+-0.883745 -0.416148 0.214046
+-0.883745 -0.416148 0.214046
+-0.955142 -0.296149 -3.e-006
+-0.933004 -0.28928 0.214057
+-0.883745 -0.416148 0.214046
+-0.904709 -0.426031 -7.e-006
+-0.955142 -0.296149 -3.e-006
+-0.955142 -0.296149 -3.e-006
+-0.965684 -0.146967 0.214139
+-0.933004 -0.28928 0.214057
+-0.955142 -0.296149 -3.e-006
+-0.988617 -0.150452 0
+-0.965684 -0.146967 0.214139
+-0.965684 -0.146967 0.214139
+-0.999763 -2.1789e-002 0
+-0.976601 -2.1309e-002 0.214
+-0.965684 -0.146967 0.214139
+-0.988617 -0.150452 0
+-0.999763 -2.1789e-002 0
+-0.976601 -2.1309e-002 0.214
+-0.998338 5.7627e-002 0
+-0.975226 5.6279e-002 0.213931
+-0.976601 -2.1309e-002 0.214
+-0.999763 -2.1789e-002 0
+-0.998338 5.7627e-002 0
+-0.975226 5.6279e-002 0.213931
+-0.991961 0.126541 1.e-006
+-0.968985 0.123622 0.213977
+-0.975226 5.6279e-002 0.213931
+-0.998338 5.7627e-002 0
+-0.991961 0.126541 1.e-006
+-0.968985 0.123622 0.213977
+-0.972094 0.234591 3.e-006
+-0.949587 0.229195 0.213903
+-0.968985 0.123622 0.213977
+-0.991961 0.126541 1.e-006
+-0.972094 0.234591 3.e-006
+-0.972094 0.234591 3.e-006
+-0.891784 0.398465 0.214354
+-0.949587 0.229195 0.213903
+-0.972094 0.234591 3.e-006
+-0.913017 0.407922 0
+-0.891784 0.398465 0.214354
+-0.913017 0.407922 0
+-0.77926 0.588912 0.214329
+-0.891784 0.398465 0.214354
+-0.913017 0.407922 0
+-0.797704 0.603049 0
+-0.77926 0.588912 0.214329
+-0.77926 0.588912 0.214329
+-0.695003 0.719007 2.e-006
+-0.679038 0.702303 0.213723
+-0.77926 0.588912 0.214329
+-0.797704 0.603049 0
+-0.695003 0.719007 2.e-006
+-0.679038 0.702303 0.213723
+-0.612545 0.790436 2.e-006
+-0.598329 0.772145 0.213995
+-0.679038 0.702303 0.213723
+-0.695003 0.719007 2.e-006
+-0.612545 0.790436 2.e-006
+-0.598329 0.772145 0.213995
+-0.480411 0.877043 2.e-006
+-0.469237 0.856751 0.213998
+-0.598329 0.772145 0.213995
+-0.612545 0.790436 2.e-006
+-0.480411 0.877043 2.e-006
+-0.480411 0.877043 2.e-006
+-0.269467 0.938826 0.214462
+-0.469237 0.856751 0.213998
+-0.480411 0.877043 2.e-006
+-0.2759 0.961186 2.e-006
+-0.269467 0.938826 0.214462
+-0.2759 0.961186 2.e-006
+-4.3063e-002 0.975842 0.21419
+-0.269467 0.938826 0.214462
+-0.2759 0.961186 2.e-006
+-4.3928e-002 0.999035 2.e-006
+-4.3063e-002 0.975842 0.21419
+-4.3063e-002 0.975842 0.21419
+0.114097 0.99347 -1.e-006
+0.111347 0.970519 0.213761
+-4.3063e-002 0.975842 0.21419
+-4.3928e-002 0.999035 2.e-006
+0.114097 0.99347 -1.e-006
+0.111347 0.970519 0.213761
+0.236518 0.971627 -1.e-006
+0.23107 0.949105 0.214023
+0.111347 0.970519 0.213761
+0.114097 0.99347 -1.e-006
+0.236518 0.971627 -1.e-006
+0.236518 0.971627 -1.e-006
+0.386796 0.896977 0.214057
+0.23107 0.949105 0.214023
+0.236518 0.971627 -1.e-006
+0.395939 0.918277 -1.e-006
+0.386796 0.896977 0.214057
+0.386796 0.896977 0.214057
+0.581703 0.813401 -2.e-006
+0.568187 0.794494 0.214342
+0.386796 0.896977 0.214057
+0.395939 0.918277 -1.e-006
+0.581703 0.813401 -2.e-006
+0.568187 0.794494 0.214342
+0.743117 0.669161 1.e-006
+0.725806 0.653717 0.21415
+0.568187 0.794494 0.214342
+0.581703 0.813401 -2.e-006
+0.743117 0.669161 1.e-006
+0.725806 0.653717 0.21415
+0.835599 0.54934 2.e-006
+0.816228 0.536701 0.213832
+0.725806 0.653717 0.21415
+0.743117 0.669161 1.e-006
+0.835599 0.54934 2.e-006
+0.816228 0.536701 0.213832
+0.895146 0.445773 0
+0.874405 0.43543 0.21405
+0.816228 0.536701 0.213832
+0.835599 0.54934 2.e-006
+0.895146 0.445773 0
+0.874405 0.43543 0.21405
+0.949263 0.314482 -2.e-006
+0.927263 0.307185 0.214057
+0.874405 0.43543 0.21405
+0.895146 0.445773 0
+0.949263 0.314482 -2.e-006
+0.949263 0.314482 -2.e-006
+0.963893 0.158209 0.214199
+0.927263 0.307185 0.214057
+0.949263 0.314482 -2.e-006
+0.986798 0.161958 0
+0.963893 0.158209 0.214199
+0.986798 0.161958 0
+0.976033 3.9901e-002 0.213935
+0.963893 0.158209 0.214199
+0.986798 0.161958 0
+0.99918 4.0484e-002 0
+0.976033 3.9901e-002 0.213935
+0.976033 3.9901e-002 0.213935
+1. 0 0
+0.976841 3.43e-004 0.213965
+0.976033 3.9901e-002 0.213935
+0.99918 4.0484e-002 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+0.999626 -2.733e-002 0
+0.999626 -2.733e-002 0
+1. 0 0
+1. 0 0
+0.999626 -2.733e-002 0
+0.999626 -2.733e-002 0
+0.995203 -9.7828e-002 1.e-006
+0.999626 -2.733e-002 0
+0.999626 -2.733e-002 0
+0.995203 -9.7828e-002 0
+0.995203 -9.7828e-002 1.e-006
+0.995203 -9.7828e-002 1.e-006
+0.980035 -0.198823 0
+0.980035 -0.198823 2.e-006
+0.995203 -9.7828e-002 1.e-006
+0.995203 -9.7828e-002 0
+0.980035 -0.198823 0
+0.980035 -0.198823 2.e-006
+0.945025 -0.326997 0
+0.945025 -0.326997 3.e-006
+0.980035 -0.198823 2.e-006
+0.980035 -0.198823 0
+0.945025 -0.326997 0
+0.945025 -0.326997 0
+0.878616 -0.477529 3.e-006
+0.945025 -0.326997 3.e-006
+0.945025 -0.326997 0
+0.878616 -0.477529 0
+0.878616 -0.477529 3.e-006
+0.878616 -0.477529 0
+0.787168 -0.616739 1.2e-005
+0.878616 -0.477529 3.e-006
+0.878616 -0.477529 0
+0.787168 -0.616739 0
+0.787168 -0.616739 1.2e-005
+0.787168 -0.616739 0
+0.706628 -0.707586 6.e-006
+0.787168 -0.616739 1.2e-005
+0.787168 -0.616739 0
+0.706628 -0.707586 0
+0.706628 -0.707586 6.e-006
+0.706628 -0.707586 6.e-006
+0.62242 -0.782683 0
+0.62242 -0.782683 3.e-006
+0.706628 -0.707586 6.e-006
+0.706628 -0.707586 0
+0.62242 -0.782683 0
+0.62242 -0.782683 0
+0.48713 -0.873329 3.e-006
+0.62242 -0.782683 3.e-006
+0.62242 -0.782683 0
+0.48713 -0.873329 0
+0.48713 -0.873329 3.e-006
+0.48713 -0.873329 3.e-006
+0.278581 -0.960413 0
+0.278581 -0.960413 -7.e-006
+0.48713 -0.873329 3.e-006
+0.48713 -0.873329 0
+0.278581 -0.960413 0
+0.278581 -0.960413 -7.e-006
+4.5333e-002 -0.998972 0
+4.5333e-002 -0.998972 -1.2e-005
+0.278581 -0.960413 -7.e-006
+0.278581 -0.960413 0
+4.5333e-002 -0.998972 0
+4.5333e-002 -0.998972 0
+-0.110589 -0.993866 7.e-006
+4.5333e-002 -0.998972 -1.2e-005
+4.5333e-002 -0.998972 0
+-0.110589 -0.993866 0
+-0.110589 -0.993866 7.e-006
+-0.110589 -0.993866 7.e-006
+-0.231282 -0.972887 0
+-0.231282 -0.972887 2.6e-005
+-0.110589 -0.993866 7.e-006
+-0.110589 -0.993866 0
+-0.231282 -0.972887 0
+-0.231282 -0.972887 2.6e-005
+-0.391952 -0.919986 0
+-0.391952 -0.919986 1.7e-005
+-0.231282 -0.972887 2.6e-005
+-0.231282 -0.972887 0
+-0.391952 -0.919986 0
+-0.391952 -0.919986 0
+-0.583908 -0.81182 1.e-005
+-0.391952 -0.919986 1.7e-005
+-0.391952 -0.919986 0
+-0.583908 -0.81182 0
+-0.583908 -0.81182 1.e-005
+-0.583908 -0.81182 1.e-005
+-0.752311 -0.658808 0
+-0.752311 -0.658808 6.e-006
+-0.583908 -0.81182 1.e-005
+-0.583908 -0.81182 0
+-0.752311 -0.658808 0
+-0.752311 -0.658808 6.e-006
+-0.846858 -0.53182 0
+-0.846858 -0.53182 0
+-0.752311 -0.658808 6.e-006
+-0.752311 -0.658808 0
+-0.846858 -0.53182 0
+-0.846858 -0.53182 0
+-0.904709 -0.426031 0
+-0.904709 -0.426031 -7.e-006
+-0.846858 -0.53182 0
+-0.846858 -0.53182 0
+-0.904709 -0.426031 0
+-0.904709 -0.426031 0
+-0.955142 -0.296149 -3.e-006
+-0.904709 -0.426031 -7.e-006
+-0.904709 -0.426031 0
+-0.955142 -0.296149 0
+-0.955142 -0.296149 -3.e-006
+-0.955142 -0.296149 0
+-0.988617 -0.150452 0
+-0.955142 -0.296149 -3.e-006
+-0.955142 -0.296149 0
+-0.988617 -0.150452 0
+-0.988617 -0.150452 0
+-0.988617 -0.150452 0
+-0.999763 -2.1789e-002 0
+-0.999763 -2.1789e-002 0
+-0.988617 -0.150452 0
+-0.988617 -0.150452 0
+-0.999763 -2.1789e-002 0
+-0.999763 -2.1789e-002 0
+-0.998338 5.7627e-002 0
+-0.998338 5.7627e-002 0
+-0.999763 -2.1789e-002 0
+-0.999763 -2.1789e-002 0
+-0.998338 5.7627e-002 0
+-0.998338 5.7627e-002 0
+-0.991961 0.126541 1.e-006
+-0.998338 5.7627e-002 0
+-0.998338 5.7627e-002 0
+-0.991961 0.126541 0
+-0.991961 0.126541 1.e-006
+-0.991961 0.126541 0
+-0.972094 0.234591 3.e-006
+-0.991961 0.126541 1.e-006
+-0.991961 0.126541 0
+-0.972094 0.234591 0
+-0.972094 0.234591 3.e-006
+-0.972094 0.234591 0
+-0.913017 0.407922 0
+-0.972094 0.234591 3.e-006
+-0.972094 0.234591 0
+-0.913017 0.407922 0
+-0.913017 0.407922 0
+-0.913017 0.407922 0
+-0.797704 0.603049 0
+-0.797704 0.603049 0
+-0.913017 0.407922 0
+-0.913017 0.407922 0
+-0.797704 0.603049 0
+-0.797704 0.603049 0
+-0.695003 0.719007 0
+-0.695003 0.719007 2.e-006
+-0.797704 0.603049 0
+-0.797704 0.603049 0
+-0.695003 0.719007 0
+-0.695003 0.719007 0
+-0.612545 0.790436 2.e-006
+-0.695003 0.719007 2.e-006
+-0.695003 0.719007 0
+-0.612545 0.790436 0
+-0.612545 0.790436 2.e-006
+-0.612545 0.790436 0
+-0.480411 0.877043 2.e-006
+-0.612545 0.790436 2.e-006
+-0.612545 0.790436 0
+-0.480411 0.877043 0
+-0.480411 0.877043 2.e-006
+-0.480411 0.877043 2.e-006
+-0.2759 0.961186 0
+-0.2759 0.961186 2.e-006
+-0.480411 0.877043 2.e-006
+-0.480411 0.877043 0
+-0.2759 0.961186 0
+-0.2759 0.961186 0
+-4.3928e-002 0.999035 2.e-006
+-0.2759 0.961186 2.e-006
+-0.2759 0.961186 0
+-4.3928e-002 0.999035 0
+-4.3928e-002 0.999035 2.e-006
+-4.3928e-002 0.999035 2.e-006
+0.114097 0.99347 0
+0.114097 0.99347 -1.e-006
+-4.3928e-002 0.999035 2.e-006
+-4.3928e-002 0.999035 0
+0.114097 0.99347 0
+0.114097 0.99347 -1.e-006
+0.236518 0.971627 0
+0.236518 0.971627 -1.e-006
+0.114097 0.99347 -1.e-006
+0.114097 0.99347 0
+0.236518 0.971627 0
+0.236518 0.971627 -1.e-006
+0.395939 0.918277 0
+0.395939 0.918277 -1.e-006
+0.236518 0.971627 -1.e-006
+0.236518 0.971627 0
+0.395939 0.918277 0
+0.395939 0.918277 -1.e-006
+0.581703 0.813401 0
+0.581703 0.813401 -2.e-006
+0.395939 0.918277 -1.e-006
+0.395939 0.918277 0
+0.581703 0.813401 0
+0.581703 0.813401 0
+0.743117 0.669161 1.e-006
+0.581703 0.813401 -2.e-006
+0.581703 0.813401 0
+0.743117 0.669161 0
+0.743117 0.669161 1.e-006
+0.743117 0.669161 1.e-006
+0.835599 0.54934 0
+0.835599 0.54934 2.e-006
+0.743117 0.669161 1.e-006
+0.743117 0.669161 0
+0.835599 0.54934 0
+0.835599 0.54934 2.e-006
+0.895146 0.445773 0
+0.895146 0.445773 0
+0.835599 0.54934 2.e-006
+0.835599 0.54934 0
+0.895146 0.445773 0
+0.895146 0.445773 0
+0.949263 0.314482 -2.e-006
+0.895146 0.445773 0
+0.895146 0.445773 0
+0.949263 0.314482 0
+0.949263 0.314482 -2.e-006
+0.949263 0.314482 -2.e-006
+0.986798 0.161958 0
+0.986798 0.161958 0
+0.949263 0.314482 -2.e-006
+0.949263 0.314482 0
+0.986798 0.161958 0
+0.986798 0.161958 0
+0.99918 4.0484e-002 0
+0.99918 4.0484e-002 0
+0.986798 0.161958 0
+0.986798 0.161958 0
+0.99918 4.0484e-002 0
+0.99918 4.0484e-002 0
+1. 0 0
+1. 0 0
+0.99918 4.0484e-002 0
+0.99918 4.0484e-002 0
+1. 0 0
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+-0.235145 -4.2415e-002 0.971034
+0 0 1.
+0 0 1.
+-0.235145 -4.2415e-002 0.971034
+-0.208696 -4.7229e-002 0.976839
+0 0 1.
+-0.208696 -4.7229e-002 0.976839
+0 0 1.
+0 0 1.
+-0.208696 -4.7229e-002 0.976839
+-0.211202 -7.1268e-002 0.974841
+0 0 1.
+-0.211202 -7.1268e-002 0.974841
+0 0 1.
+0 0 1.
+-0.211202 -7.1268e-002 0.974841
+-0.111936 -0.191061 0.975175
+0 0 1.
+-0.111936 -0.191061 0.975175
+0 0 1.
+0 0 1.
+-0.111936 -0.191061 0.975175
+0.112059 -2.004e-003 0.993699
+0 0 1.
+0 0 1.
+0.20794 0.192567 0.958999
+0 0 1.
+0 0 1.
+0.112059 -2.004e-003 0.993699
+0.20794 0.192567 0.958999
+0 0 1.
+0.197935 8.1361e-002 0.976833
+0 0 1.
+0 0 1.
+0.20794 0.192567 0.958999
+0.197935 8.1361e-002 0.976833
+0 0 1.
+0.204506 6.2845e-002 0.976846
+0 0 1.
+0 0 1.
+0.197935 8.1361e-002 0.976833
+0.204506 6.2845e-002 0.976846
+0 0 1.
+0.210268 3.9185e-002 0.976858
+0 0 1.
+0 0 1.
+0.204506 6.2845e-002 0.976846
+0.210268 3.9185e-002 0.976858
+0.210268 3.9185e-002 0.976858
+0 0 1.
+0 0 1.
+0.210268 3.9185e-002 0.976858
+0.212948 2.1747e-002 0.976821
+0 0 1.
+0.212948 2.1747e-002 0.976821
+0 0 1.
+0 0 1.
+0.212948 2.1747e-002 0.976821
+0.213616 1.2709e-002 0.976835
+0 0 1.
+0.213616 1.2709e-002 0.976835
+0 0 1.
+0 0 1.
+0.213616 1.2709e-002 0.976835
+0.213922 5.574e-003 0.976835
+0 0 1.
+0.213922 5.574e-003 0.976835
+0 0 1.
+0 0 1.
+0.213922 5.574e-003 0.976835
+0.213998 1.236e-003 0.976833
+0 0 1.
+0.213998 1.236e-003 0.976833
+0 0 1.
+0 0 1.
+0.213998 1.236e-003 0.976833
+0.213998 7.71e-004 0.976834
+0 0 1.
+0.213998 7.71e-004 0.976834
+0 0 1.
+0 0 1.
+0.213998 7.71e-004 0.976834
+0.213978 3.047e-003 0.976834
+0 0 1.
+0.213978 3.047e-003 0.976834
+0 0 1.
+0 0 1.
+0.213978 3.047e-003 0.976834
+0.213881 7.476e-003 0.976831
+0 0 1.
+0.213881 7.476e-003 0.976831
+0 0 1.
+0 0 1.
+0.213881 7.476e-003 0.976831
+0.213363 1.7406e-002 0.976818
+0 0 1.
+0.213363 1.7406e-002 0.976818
+0 0 1.
+0 0 1.
+0.213363 1.7406e-002 0.976818
+0.209954 4.0184e-002 0.976885
+0 0 1.
+0 0 1.
+0.203861 6.5764e-002 0.976789
+0 0 1.
+0 0 1.
+0.209954 4.0184e-002 0.976885
+0.203861 6.5764e-002 0.976789
+0.203861 6.5764e-002 0.976789
+0 0 1.
+0 0 1.
+0.203861 6.5764e-002 0.976789
+0.192272 9.3687e-002 0.976859
+0 0 1.
+0.192272 9.3687e-002 0.976859
+0 0 1.
+0 0 1.
+0.192272 9.3687e-002 0.976859
+0.16824 0.131516 0.976933
+0 0 1.
+0 0 1.
+0.141466 0.160924 0.976776
+0 0 1.
+0 0 1.
+0.16824 0.131516 0.976933
+0.141466 0.160924 0.976776
+0.141466 0.160924 0.976776
+0 0 1.
+0 0 1.
+0.141466 0.160924 0.976776
+0.112971 0.181478 0.976884
+0 0 1.
+0 0 1.
+7.907e-002 0.198726 0.97686
+0 0 1.
+0 0 1.
+0.112971 0.181478 0.976884
+7.907e-002 0.198726 0.97686
+0 0 1.
+5.2384e-002 0.20762 0.976806
+0 0 1.
+0 0 1.
+7.907e-002 0.198726 0.97686
+5.2384e-002 0.20762 0.976806
+5.2384e-002 0.20762 0.976806
+0 0 1.
+0 0 1.
+5.2384e-002 0.20762 0.976806
+2.8652e-002 0.211959 0.976858
+0 0 1.
+0 0 1.
+3.719e-003 0.213937 0.97684
+0 0 1.
+0 0 1.
+2.8652e-002 0.211959 0.976858
+3.719e-003 0.213937 0.97684
+0 0 1.
+-1.4866e-002 0.213585 0.976811
+0 0 1.
+0 0 1.
+3.719e-003 0.213937 0.97684
+-1.4866e-002 0.213585 0.976811
+-1.4866e-002 0.213585 0.976811
+0 0 1.
+0 0 1.
+-1.4866e-002 0.213585 0.976811
+-3.6291e-002 0.210801 0.976855
+0 0 1.
+-3.6291e-002 0.210801 0.976855
+0 0 1.
+0 0 1.
+-3.6291e-002 0.210801 0.976855
+-6.5449e-002 0.203561 0.976872
+0 0 1.
+0 0 1.
+-8.7255e-002 0.195554 0.976804
+0 0 1.
+0 0 1.
+-6.5449e-002 0.203561 0.976872
+-8.7255e-002 0.195554 0.976804
+-8.7255e-002 0.195554 0.976804
+0 0 1.
+0 0 1.
+-8.7255e-002 0.195554 0.976804
+-0.104891 0.186597 0.976821
+0 0 1.
+-0.104891 0.186597 0.976821
+0 0 1.
+0 0 1.
+-0.104891 0.186597 0.976821
+-0.132083 0.168138 0.976874
+0 0 1.
+-0.132083 0.168138 0.976874
+0 0 1.
+0 0 1.
+-0.132083 0.168138 0.976874
+-0.162825 0.138376 0.976903
+0 0 1.
+0 0 1.
+-0.183634 0.11034 0.976782
+0 0 1.
+0 0 1.
+-0.162825 0.138376 0.976903
+-0.183634 0.11034 0.976782
+-0.183634 0.11034 0.976782
+0 0 1.
+0 0 1.
+-0.183634 0.11034 0.976782
+-0.215505 9.1774e-002 0.972181
+0 0 1.
+-0.215505 9.1774e-002 0.972181
+0 0 1.
+0 0 1.
+-0.215505 9.1774e-002 0.972181
+-0.142883 -0.101472 0.984524
+0 0 1.
+0 0 1.
+0.106038 -0.166952 0.980246
+0 0 1.
+0 0 1.
+-0.142883 -0.101472 0.984524
+0.106038 -0.166952 0.980246
+0 0 1.
+0.222256 -6.0892e-002 0.973085
+0 0 1.
+0 0 1.
+0.106038 -0.166952 0.980246
+0.222256 -6.0892e-002 0.973085
+0 0 1.
+0.194792 -8.8954e-002 0.976803
+0 0 1.
+0 0 1.
+0.222256 -6.0892e-002 0.973085
+0.194792 -8.8954e-002 0.976803
+0 0 1.
+0.174399 -0.123549 0.976893
+0 0 1.
+0 0 1.
+0.194792 -8.8954e-002 0.976803
+0.174399 -0.123549 0.976893
+0 0 1.
+0.135981 -0.164404 0.976975
+0 0 1.
+0 0 1.
+0.174399 -0.123549 0.976893
+0.135981 -0.164404 0.976975
+0.135981 -0.164404 0.976975
+0 0 1.
+0 0 1.
+0.135981 -0.164404 0.976975
+9.9491e-002 -0.189857 0.976758
+0 0 1.
+0 0 1.
+7.0419e-002 -0.201994 0.976852
+0 0 1.
+0 0 1.
+9.9491e-002 -0.189857 0.976758
+7.0419e-002 -0.201994 0.976852
+0 0 1.
+3.6135e-002 -0.210754 0.976871
+0 0 1.
+0 0 1.
+7.0419e-002 -0.201994 0.976852
+3.6135e-002 -0.210754 0.976871
+3.6135e-002 -0.210754 0.976871
+0 0 1.
+0 0 1.
+3.6135e-002 -0.210754 0.976871
+4.45e-003 -0.213941 0.976836
+0 0 1.
+4.45e-003 -0.213941 0.976836
+0 0 1.
+0 0 1.
+4.45e-003 -0.213941 0.976836
+-1.7626e-002 -0.213388 0.976808
+0 0 1.
+0 0 1.
+-4.1123e-002 -0.210162 0.976801
+0 0 1.
+0 0 1.
+-1.7626e-002 -0.213388 0.976808
+-4.1123e-002 -0.210162 0.976801
+0 0 1.
+-8.2037e-002 -0.197352 0.976894
+0 0 1.
+0 0 1.
+-4.1123e-002 -0.210162 0.976801
+-8.2037e-002 -0.197352 0.976894
+0 0 1.
+-0.133391 -0.166424 0.97699
+0 0 1.
+0 0 1.
+-8.2037e-002 -0.197352 0.976894
+-0.133391 -0.166424 0.97699
+-0.133391 -0.166424 0.97699
+0 0 1.
+0 0 1.
+-0.133391 -0.166424 0.97699
+-0.169997 -0.130593 0.976753
+0 0 1.
+0 0 1.
+-0.191789 -9.4562e-002 0.97687
+0 0 1.
+0 0 1.
+-0.169997 -0.130593 0.976753
+-0.191789 -9.4562e-002 0.97687
+0 0 1.
+-0.207891 -4.8927e-002 0.976928
+0 0 1.
+0 0 1.
+-0.191789 -9.4562e-002 0.97687
+-0.207891 -4.8927e-002 0.976928
+-0.207891 -4.8927e-002 0.976928
+0 0 1.
+0 0 1.
+-0.207891 -4.8927e-002 0.976928
+-0.222896 -9.19e-003 0.974799
+0 0 1.
+0 0 1.
+-0.157316 0.112165 0.981158
+0 0 1.
+0 0 1.
+-0.222896 -9.19e-003 0.974799
+-0.157316 0.112165 0.981158
+-0.157316 0.112165 0.981158
+0 0 1.
+0 0 1.
+-0.157316 0.112165 0.981158
+-6.6392e-002 0.211941 0.975025
+0 0 1.
+0 0 1.
+-4.7604e-002 0.208629 0.976836
+0 0 1.
+0 0 1.
+-6.6392e-002 0.211941 0.975025
+-4.7604e-002 0.208629 0.976836
+-4.7604e-002 0.208629 0.976836
+0 0 1.
+0 0 1.
+-4.7604e-002 0.208629 0.976836
+-3.6389e-002 0.210861 0.976838
+0 0 1.
+-3.6389e-002 0.210861 0.976838
+0 0 1.
+0 0 1.
+-3.6389e-002 0.210861 0.976838
+-2.8956e-002 0.212045 0.976831
+0 0 1.
+-2.8956e-002 0.212045 0.976831
+0 0 1.
+0 0 1.
+-2.8956e-002 0.212045 0.976831
+-2.8506e-002 0.212095 0.976833
+0 0 1.
+-2.8506e-002 0.212095 0.976833
+0 0 1.
+0 0 1.
+-2.8506e-002 0.212095 0.976833
+-3.2251e-002 0.211562 0.976832
+0 0 1.
+-3.2251e-002 0.211562 0.976832
+0 0 1.
+0 0 1.
+-3.2251e-002 0.211562 0.976832
+-3.9725e-002 0.210295 0.976831
+0 0 1.
+-3.9725e-002 0.210295 0.976831
+0 0 1.
+0 0 1.
+-3.9725e-002 0.210295 0.976831
+-5.3907e-002 0.207013 0.976852
+0 0 1.
+0 0 1.
+-6.7694e-002 0.203057 0.976824
+0 0 1.
+0 0 1.
+-5.3907e-002 0.207013 0.976852
+-6.7694e-002 0.203057 0.976824
+-6.7694e-002 0.203057 0.976824
+0 0 1.
+0 0 1.
+-6.7694e-002 0.203057 0.976824
+-7.9433e-002 0.198722 0.976832
+0 0 1.
+-7.9433e-002 0.198722 0.976832
+0 0 1.
+0 0 1.
+-7.9433e-002 0.198722 0.976832
+-9.6844e-002 0.190771 0.976846
+0 0 1.
+-9.6844e-002 0.190771 0.976846
+0 0 1.
+0 0 1.
+-9.6844e-002 0.190771 0.976846
+-0.11765 0.178644 0.976855
+0 0 1.
+0 0 1.
+-0.134159 0.16682 0.976817
+0 0 1.
+0 0 1.
+-0.11765 0.178644 0.976855
+-0.134159 0.16682 0.976817
+-0.134159 0.16682 0.976817
+0 0 1.
+0 0 1.
+-0.134159 0.16682 0.976817
+-0.148591 0.154008 0.976833
+0 0 1.
+-0.148591 0.154008 0.976833
+0 0 1.
+0 0 1.
+-0.148591 0.154008 0.976833
+-0.167207 0.13333 0.976865
+0 0 1.
+0 0 1.
+-0.184964 0.107409 0.976858
+0 0 1.
+0 0 1.
+-0.167207 0.13333 0.976865
+-0.184964 0.107409 0.976858
+0 0 1.
+-0.195786 8.6674e-002 0.976809
+0 0 1.
+0 0 1.
+-0.184964 0.107409 0.976858
+-0.195786 8.6674e-002 0.976809
+-0.195786 8.6674e-002 0.976809
+0 0 1.
+0 0 1.
+-0.195786 8.6674e-002 0.976809
+-0.203098 6.7449e-002 0.976833
+0 0 1.
+-0.203098 6.7449e-002 0.976833
+0 0 1.
+0 0 1.
+-0.203098 6.7449e-002 0.976833
+-0.210352 3.862e-002 0.976863
+0 0 1.
+-0.210352 3.862e-002 0.976863
+0 0 1.
+0 0 1.
+-0.210352 3.862e-002 0.976863
+-0.213814 3.569e-003 0.976868
+0 0 1.
+0 0 1.
+-0.212495 -2.6812e-002 0.976794
+0 0 1.
+0 0 1.
+-0.213814 3.569e-003 0.976868
+-0.212495 -2.6812e-002 0.976794
+-0.212495 -2.6812e-002 0.976794
+0 0 1.
+0 0 1.
+-0.212495 -2.6812e-002 0.976794
+-0.205779 -5.8939e-002 0.976822
+0 0 1.
+-0.205779 -5.8939e-002 0.976822
+0 0 1.
+0 0 1.
+-0.205779 -5.8939e-002 0.976822
+-0.185645 -0.105347 0.976953
+0 0 1.
+0 0 1.
+-0.150614 -0.151501 0.976915
+0 0 1.
+0 0 1.
+-0.185645 -0.105347 0.976953
+-0.150614 -0.151501 0.976915
+0 0 1.
+-0.118528 -0.178594 0.976758
+0 0 1.
+0 0 1.
+-0.150614 -0.151501 0.976915
+-0.118528 -0.178594 0.976758
+-0.118528 -0.178594 0.976758
+0 0 1.
+0 0 1.
+-0.118528 -0.178594 0.976758
+-8.8695e-002 -0.194664 0.976852
+0 0 1.
+-8.8695e-002 -0.194664 0.976852
+0 0 1.
+0 0 1.
+-8.8695e-002 -0.194664 0.976852
+-4.7722e-002 -0.208234 0.976914
+0 0 1.
+0 0 1.
+-8.92399e-003 -0.213815 0.976833
+0 0 1.
+0 0 1.
+-4.7722e-002 -0.208234 0.976914
+-8.92399e-003 -0.213815 0.976833
+0 0 1.
+1.2169e-002 -0.213779 0.976806
+0 0 1.
+0 0 1.
+-8.92399e-003 -0.213815 0.976833
+1.2169e-002 -0.213779 0.976806
+1.2169e-002 -0.213779 0.976806
+0 0 1.
+0 0 1.
+1.2169e-002 -0.213779 0.976806
+2.6065e-002 -0.212418 0.976831
+0 0 1.
+2.6065e-002 -0.212418 0.976831
+0 0 1.
+0 0 1.
+2.6065e-002 -0.212418 0.976831
+4.713e-002 -0.208661 0.976852
+0 0 1.
+4.713e-002 -0.208661 0.976852
+0 0 1.
+0 0 1.
+4.713e-002 -0.208661 0.976852
+7.1935e-002 -0.201442 0.976855
+0 0 1.
+0 0 1.
+9.0054e-002 -0.194208 0.976818
+0 0 1.
+0 0 1.
+7.1935e-002 -0.201442 0.976855
+9.0054e-002 -0.194208 0.976818
+9.0054e-002 -0.194208 0.976818
+0 0 1.
+0 0 1.
+9.0054e-002 -0.194208 0.976818
+0.103712 -0.187174 0.976837
+0 0 1.
+0.103712 -0.187174 0.976837
+0 0 1.
+0 0 1.
+0.103712 -0.187174 0.976837
+0.133074 -0.20121 0.970467
+0 0 1.
+0 0 1.
+-5.3782e-002 -0.137293 0.989069
+0 0 1.
+0 0 1.
+0.133074 -0.20121 0.970467
+-5.3782e-002 -0.137293 0.989069
+-5.3782e-002 -0.137293 0.989069
+0 0 1.
+0 0 1.
+-5.3782e-002 -0.137293 0.989069
+-0.235145 -4.2415e-002 0.971034
+0 0 1.
+-0.732246 -0.117288 0.670865
+-0.208696 -4.7229e-002 0.976839
+-0.235145 -4.2415e-002 0.971034
+-0.732246 -0.117288 0.670865
+-0.689541 -0.156142 0.707215
+-0.208696 -4.7229e-002 0.976839
+-0.689541 -0.156142 0.707215
+-0.211202 -7.1268e-002 0.974841
+-0.208696 -4.7229e-002 0.976839
+-0.689541 -0.156142 0.707215
+-0.680182 -0.233239 0.694948
+-0.211202 -7.1268e-002 0.974841
+-0.680182 -0.233239 0.694948
+-0.111936 -0.191061 0.975175
+-0.211202 -7.1268e-002 0.974841
+-0.680182 -0.233239 0.694948
+-0.475302 -0.401562 0.782838
+-0.111936 -0.191061 0.975175
+-0.376869 -0.598595 0.706862
+-2.29e-003 -0.195523 0.980696
+-0.111936 -0.191061 0.975175
+-0.376869 -0.598595 0.706862
+-4.859e-003 -0.803901 0.594744
+-2.29e-003 -0.195523 0.980696
+0.144824 0.197943 0.969456
+0.646903 0.426908 0.631875
+0.20794 0.192567 0.958999
+0.144824 0.197943 0.969456
+0.63519 0.548414 0.543853
+0.646903 0.426908 0.631875
+0.20794 0.192567 0.958999
+0.65397 0.268859 0.707134
+0.197935 8.1361e-002 0.976833
+0.20794 0.192567 0.958999
+0.646903 0.426908 0.631875
+0.65397 0.268859 0.707134
+0.197935 8.1361e-002 0.976833
+0.675742 0.207692 0.707274
+0.204506 6.2845e-002 0.976846
+0.197935 8.1361e-002 0.976833
+0.65397 0.268859 0.707134
+0.675742 0.207692 0.707274
+0.204506 6.2845e-002 0.976846
+0.694898 0.129378 0.707374
+0.210268 3.9185e-002 0.976858
+0.204506 6.2845e-002 0.976846
+0.675742 0.207692 0.707274
+0.694898 0.129378 0.707374
+0.694898 0.129378 0.707374
+0.212948 2.1747e-002 0.976821
+0.210268 3.9185e-002 0.976858
+0.694898 0.129378 0.707374
+0.703528 7.172e-002 0.70704
+0.212948 2.1747e-002 0.976821
+0.703528 7.172e-002 0.70704
+0.213616 1.2709e-002 0.976835
+0.212948 2.1747e-002 0.976821
+0.703528 7.172e-002 0.70704
+0.705844 4.199e-002 0.707122
+0.213616 1.2709e-002 0.976835
+0.705844 4.199e-002 0.707122
+0.213922 5.574e-003 0.976835
+0.213616 1.2709e-002 0.976835
+0.705844 4.199e-002 0.707122
+0.706856 1.8417e-002 0.707118
+0.213922 5.574e-003 0.976835
+0.706856 1.8417e-002 0.707118
+0.213998 1.236e-003 0.976833
+0.213922 5.574e-003 0.976835
+0.706856 1.8417e-002 0.707118
+0.707098 4.085e-003 0.707104
+0.213998 1.236e-003 0.976833
+0.707098 4.085e-003 0.707104
+0.213998 7.71e-004 0.976834
+0.213998 1.236e-003 0.976833
+0.707098 4.085e-003 0.707104
+0.707104 2.55e-003 0.707105
+0.213998 7.71e-004 0.976834
+0.707104 2.55e-003 0.707105
+0.213978 3.047e-003 0.976834
+0.213998 7.71e-004 0.976834
+0.707104 2.55e-003 0.707105
+0.707038 1.007e-002 0.707104
+0.213978 3.047e-003 0.976834
+0.707038 1.007e-002 0.707104
+0.213881 7.476e-003 0.976831
+0.213978 3.047e-003 0.976834
+0.707038 1.007e-002 0.707104
+0.706694 2.4712e-002 0.707088
+0.213881 7.476e-003 0.976831
+0.706694 2.4712e-002 0.707088
+0.213363 1.7406e-002 0.976818
+0.213881 7.476e-003 0.976831
+0.706694 2.4712e-002 0.707088
+0.704836 5.7565e-002 0.707031
+0.213363 1.7406e-002 0.976818
+0.704836 5.7565e-002 0.707031
+0.209954 4.0184e-002 0.976885
+0.213363 1.7406e-002 0.976818
+0.704836 5.7565e-002 0.707031
+0.694016 0.13279 0.707608
+0.209954 4.0184e-002 0.976885
+0.209954 4.0184e-002 0.976885
+0.673177 0.217135 0.706884
+0.203861 6.5764e-002 0.976789
+0.209954 4.0184e-002 0.976885
+0.694016 0.13279 0.707608
+0.673177 0.217135 0.706884
+0.673177 0.217135 0.706884
+0.192272 9.3687e-002 0.976859
+0.203861 6.5764e-002 0.976789
+0.673177 0.217135 0.706884
+0.635244 0.309626 0.707529
+0.192272 9.3687e-002 0.976859
+0.635244 0.309626 0.707529
+0.16824 0.131516 0.976933
+0.192272 9.3687e-002 0.976859
+0.635244 0.309626 0.707529
+0.556416 0.434666 0.708143
+0.16824 0.131516 0.976933
+0.16824 0.131516 0.976933
+0.467188 0.531094 0.706876
+0.141466 0.160924 0.976776
+0.16824 0.131516 0.976933
+0.556416 0.434666 0.708143
+0.467188 0.531094 0.706876
+0.467188 0.531094 0.706876
+0.112971 0.181478 0.976884
+0.141466 0.160924 0.976776
+0.467188 0.531094 0.706876
+0.373351 0.599805 0.707702
+0.112971 0.181478 0.976884
+0.112971 0.181478 0.976884
+0.261368 0.656628 0.707479
+7.907e-002 0.198726 0.97686
+0.112971 0.181478 0.976884
+0.373351 0.599805 0.707702
+0.261368 0.656628 0.707479
+7.907e-002 0.198726 0.97686
+0.173094 0.68571 0.706994
+5.2384e-002 0.20762 0.976806
+7.907e-002 0.198726 0.97686
+0.261368 0.656628 0.707479
+0.173094 0.68571 0.706994
+0.173094 0.68571 0.706994
+2.8652e-002 0.211959 0.976858
+5.2384e-002 0.20762 0.976806
+0.173094 0.68571 0.706994
+9.4678e-002 0.700453 0.707391
+2.8652e-002 0.211959 0.976858
+2.8652e-002 0.211959 0.976858
+1.2314e-002 0.706875 0.707231
+3.719e-003 0.213937 0.97684
+2.8652e-002 0.211959 0.976858
+9.4678e-002 0.700453 0.707391
+1.2314e-002 0.706875 0.707231
+3.719e-003 0.213937 0.97684
+-4.9099e-002 0.705514 0.706994
+-1.4866e-002 0.213585 0.976811
+3.719e-003 0.213937 0.97684
+1.2314e-002 0.706875 0.707231
+-4.9099e-002 0.705514 0.706994
+-4.9099e-002 0.705514 0.706994
+-3.6291e-002 0.210801 0.976855
+-1.4866e-002 0.213585 0.976811
+-4.9099e-002 0.705514 0.706994
+-0.11994 0.696586 0.707377
+-3.6291e-002 0.210801 0.976855
+-0.11994 0.696586 0.707377
+-6.5449e-002 0.203561 0.976872
+-3.6291e-002 0.210801 0.976855
+-0.11994 0.696586 0.707377
+-0.216186 0.67282 0.707515
+-6.5449e-002 0.203561 0.976872
+-6.5449e-002 0.203561 0.976872
+-0.288085 0.645938 0.706945
+-8.7255e-002 0.195554 0.976804
+-6.5449e-002 0.203561 0.976872
+-0.216186 0.67282 0.707515
+-0.288085 0.645938 0.706945
+-0.288085 0.645938 0.706945
+-0.104891 0.186597 0.976821
+-8.7255e-002 0.195554 0.976804
+-0.288085 0.645938 0.706945
+-0.346546 0.616351 0.707119
+-0.104891 0.186597 0.976821
+-0.346546 0.616351 0.707119
+-0.132083 0.168138 0.976874
+-0.104891 0.186597 0.976821
+-0.346546 0.616351 0.707119
+-0.436518 0.555601 0.707644
+-0.132083 0.168138 0.976874
+-0.436518 0.555601 0.707644
+-0.162825 0.138376 0.976903
+-0.132083 0.168138 0.976874
+-0.436518 0.555601 0.707644
+-0.538138 0.457513 0.707877
+-0.162825 0.138376 0.976903
+-0.162825 0.138376 0.976903
+-0.60624 0.364426 0.706872
+-0.183634 0.11034 0.976782
+-0.162825 0.138376 0.976903
+-0.538138 0.457513 0.707877
+-0.60624 0.364426 0.706872
+-0.60624 0.364426 0.706872
+-0.215505 9.1774e-002 0.972181
+-0.183634 0.11034 0.976782
+-0.60624 0.364426 0.706872
+-0.675759 0.285252 0.679692
+-0.215505 9.1774e-002 0.972181
+-0.675759 0.285252 0.679692
+-0.142883 -0.101472 0.984524
+-0.215505 9.1774e-002 0.972181
+-0.675759 0.285252 0.679692
+-0.569586 -3.6342e-002 0.821128
+-0.142883 -0.101472 0.984524
+-0.142883 -0.101472 0.984524
+0.106385 -0.611574 0.784002
+0.106038 -0.166952 0.980246
+-0.142883 -0.101472 0.984524
+-0.266151 -0.530037 0.805124
+0.106385 -0.611574 0.784002
+0.106038 -0.166952 0.980246
+0.695051 -0.214897 0.686093
+0.222256 -6.0892e-002 0.973085
+0.106038 -0.166952 0.980246
+0.497066 -0.337161 0.79953
+0.695051 -0.214897 0.686093
+0.222256 -6.0892e-002 0.973085
+0.643368 -0.293599 0.70702
+0.194792 -8.8954e-002 0.976803
+0.222256 -6.0892e-002 0.973085
+0.695051 -0.214897 0.686093
+0.643368 -0.293599 0.70702
+0.194792 -8.8954e-002 0.976803
+0.576452 -0.408074 0.70794
+0.174399 -0.123549 0.976893
+0.194792 -8.8954e-002 0.976803
+0.643368 -0.293599 0.70702
+0.576452 -0.408074 0.70794
+0.174399 -0.123549 0.976893
+0.44917 -0.544099 0.708662
+0.135981 -0.164404 0.976975
+0.174399 -0.123549 0.976893
+0.576452 -0.408074 0.70794
+0.44917 -0.544099 0.708662
+0.44917 -0.544099 0.708662
+9.9491e-002 -0.189857 0.976758
+0.135981 -0.164404 0.976975
+0.44917 -0.544099 0.708662
+0.327812 -0.626979 0.706709
+9.9491e-002 -0.189857 0.976758
+9.9491e-002 -0.189857 0.976758
+0.232722 -0.667391 0.707411
+7.0419e-002 -0.201994 0.976852
+9.9491e-002 -0.189857 0.976758
+0.327812 -0.626979 0.706709
+0.232722 -0.667391 0.707411
+7.0419e-002 -0.201994 0.976852
+0.119393 -0.696486 0.707568
+3.6135e-002 -0.210754 0.976871
+7.0419e-002 -0.201994 0.976852
+0.232722 -0.667391 0.707411
+0.119393 -0.696486 0.707568
+0.119393 -0.696486 0.707568
+4.45e-003 -0.213941 0.976836
+3.6135e-002 -0.210754 0.976871
+0.119393 -0.696486 0.707568
+1.4599e-002 -0.706823 0.70724
+4.45e-003 -0.213941 0.976836
+1.4599e-002 -0.706823 0.70724
+-1.7626e-002 -0.213388 0.976808
+4.45e-003 -0.213941 0.976836
+1.4599e-002 -0.706823 0.70724
+-5.8246e-002 -0.70483 0.706981
+-1.7626e-002 -0.213388 0.976808
+-1.7626e-002 -0.213388 0.976808
+-0.135621 -0.694055 0.707032
+-4.1123e-002 -0.210162 0.976801
+-1.7626e-002 -0.213388 0.976808
+-5.8246e-002 -0.70483 0.706981
+-0.135621 -0.694055 0.707032
+-4.1123e-002 -0.210162 0.976801
+-0.270839 -0.652216 0.707998
+-8.2037e-002 -0.197352 0.976894
+-4.1123e-002 -0.210162 0.976801
+-0.135621 -0.694055 0.707032
+-0.270839 -0.652216 0.707998
+-8.2037e-002 -0.197352 0.976894
+-0.441704 -0.549915 0.708866
+-0.133391 -0.166424 0.97699
+-8.2037e-002 -0.197352 0.976894
+-0.270839 -0.652216 0.707998
+-0.441704 -0.549915 0.708866
+-0.441704 -0.549915 0.708866
+-0.169997 -0.130593 0.976753
+-0.133391 -0.166424 0.97699
+-0.441704 -0.549915 0.708866
+-0.561444 -0.430438 0.706755
+-0.169997 -0.130593 0.976753
+-0.169997 -0.130593 0.976753
+-0.633621 -0.312558 0.707695
+-0.191789 -9.4562e-002 0.97687
+-0.169997 -0.130593 0.976753
+-0.561444 -0.430438 0.706755
+-0.633621 -0.312558 0.707695
+-0.191789 -9.4562e-002 0.97687
+-0.68732 -0.161649 0.708139
+-0.207891 -4.8927e-002 0.976928
+-0.191789 -9.4562e-002 0.97687
+-0.633621 -0.312558 0.707695
+-0.68732 -0.161649 0.708139
+-0.68732 -0.161649 0.708139
+-0.222896 -9.19e-003 0.974799
+-0.207891 -4.8927e-002 0.976928
+-0.68732 -0.161649 0.708139
+-0.719281 -3.5191e-002 0.693827
+-0.222896 -9.19e-003 0.974799
+-0.222896 -9.19e-003 0.974799
+-0.568717 0.163049 0.806211
+-0.157316 0.112165 0.981158
+-0.222896 -9.19e-003 0.974799
+-0.719281 -3.5191e-002 0.693827
+-0.568717 0.163049 0.806211
+-0.331898 0.48759 0.807527
+-6.6392e-002 0.211941 0.975025
+-0.157316 0.112165 0.981158
+-0.331898 0.48759 0.807527
+-0.205281 0.689292 0.694793
+-6.6392e-002 0.211941 0.975025
+-6.6392e-002 0.211941 0.975025
+-0.157296 0.689356 0.707139
+-4.7604e-002 0.208629 0.976836
+-6.6392e-002 0.211941 0.975025
+-0.205281 0.689292 0.694793
+-0.157296 0.689356 0.707139
+-4.7604e-002 0.208629 0.976836
+-0.120239 0.696757 0.707158
+-3.6389e-002 0.210861 0.976838
+-4.7604e-002 0.208629 0.976836
+-0.157296 0.689356 0.707139
+-0.120239 0.696757 0.707158
+-0.120239 0.696757 0.707158
+-2.8956e-002 0.212045 0.976831
+-3.6389e-002 0.210861 0.976838
+-0.120239 0.696757 0.707158
+-9.5669e-002 0.700622 0.70709
+-2.8956e-002 0.212045 0.976831
+-9.5669e-002 0.700622 0.70709
+-2.8506e-002 0.212095 0.976833
+-2.8956e-002 0.212045 0.976831
+-9.5669e-002 0.700622 0.70709
+-9.4189e-002 0.700808 0.707104
+-2.8506e-002 0.212095 0.976833
+-9.4189e-002 0.700808 0.707104
+-3.2251e-002 0.211562 0.976832
+-2.8506e-002 0.212095 0.976833
+-9.4189e-002 0.700808 0.707104
+-0.106568 0.699037 0.7071
+-3.2251e-002 0.211562 0.976832
+-0.106568 0.699037 0.7071
+-3.9725e-002 0.210295 0.976831
+-3.2251e-002 0.211562 0.976832
+-0.106568 0.699037 0.7071
+-0.131272 0.69482 0.707102
+-3.9725e-002 0.210295 0.976831
+-0.131272 0.69482 0.707102
+-5.3907e-002 0.207013 0.976852
+-3.9725e-002 0.210295 0.976831
+-0.131272 0.69482 0.707102
+-0.178095 0.684131 0.707281
+-5.3907e-002 0.207013 0.976852
+-5.3907e-002 0.207013 0.976852
+-0.223594 0.670876 0.707058
+-6.7694e-002 0.203057 0.976824
+-5.3907e-002 0.207013 0.976852
+-0.178095 0.684131 0.707281
+-0.223594 0.670876 0.707058
+-0.223594 0.670876 0.707058
+-7.9433e-002 0.198722 0.976832
+-6.7694e-002 0.203057 0.976824
+-0.223594 0.670876 0.707058
+-0.262478 0.656562 0.707129
+-7.9433e-002 0.198722 0.976832
+-0.262478 0.656562 0.707129
+-9.6844e-002 0.190771 0.976846
+-7.9433e-002 0.198722 0.976832
+-0.262478 0.656562 0.707129
+-0.320026 0.630359 0.70727
+-9.6844e-002 0.190771 0.976846
+-0.320026 0.630359 0.70727
+-0.11765 0.178644 0.976855
+-9.6844e-002 0.190771 0.976846
+-0.320026 0.630359 0.70727
+-0.388701 0.590407 0.70734
+-0.11765 0.178644 0.976855
+-0.11765 0.178644 0.976855
+-0.443119 0.551127 0.707039
+-0.134159 0.16682 0.976817
+-0.11765 0.178644 0.976855
+-0.388701 0.590407 0.70734
+-0.443119 0.551127 0.707039
+-0.443119 0.551127 0.707039
+-0.148591 0.154008 0.976833
+-0.134159 0.16682 0.976817
+-0.443119 0.551127 0.707039
+-0.49096 0.508768 0.707186
+-0.148591 0.154008 0.976833
+-0.49096 0.508768 0.707186
+-0.167207 0.13333 0.976865
+-0.148591 0.154008 0.976833
+-0.49096 0.508768 0.707186
+-0.552583 0.440594 0.70748
+-0.167207 0.13333 0.976865
+-0.167207 0.13333 0.976865
+-0.611134 0.355092 0.707408
+-0.184964 0.107409 0.976858
+-0.167207 0.13333 0.976865
+-0.552583 0.440594 0.70748
+-0.611134 0.355092 0.707408
+-0.184964 0.107409 0.976858
+-0.646629 0.286419 0.70699
+-0.195786 8.6674e-002 0.976809
+-0.184964 0.107409 0.976858
+-0.611134 0.355092 0.707408
+-0.646629 0.286419 0.70699
+-0.646629 0.286419 0.70699
+-0.203098 6.7449e-002 0.976833
+-0.195786 8.6674e-002 0.976809
+-0.646629 0.286419 0.70699
+-0.671003 0.222769 0.707198
+-0.203098 6.7449e-002 0.976833
+-0.671003 0.222769 0.707198
+-0.210352 3.862e-002 0.976863
+-0.203098 6.7449e-002 0.976833
+-0.671003 0.222769 0.707198
+-0.69511 0.127583 0.707492
+-0.210352 3.862e-002 0.976863
+-0.69511 0.127583 0.707492
+-0.213814 3.569e-003 0.976868
+-0.210352 3.862e-002 0.976863
+-0.69511 0.127583 0.707492
+-0.706581 1.188e-002 0.707532
+-0.213814 3.569e-003 0.976868
+-0.213814 3.569e-003 0.976868
+-0.701704 -8.84959e-002 0.706952
+-0.212495 -2.6812e-002 0.976794
+-0.213814 3.569e-003 0.976868
+-0.706581 1.188e-002 0.707532
+-0.701704 -8.84959e-002 0.706952
+-0.701704 -8.84959e-002 0.706952
+-0.205779 -5.8939e-002 0.976822
+-0.212495 -2.6812e-002 0.976794
+-0.701704 -8.84959e-002 0.706952
+-0.679572 -0.194739 0.70729
+-0.205779 -5.8939e-002 0.976822
+-0.679572 -0.194739 0.70729
+-0.185645 -0.105347 0.976953
+-0.205779 -5.8939e-002 0.976822
+-0.679572 -0.194739 0.70729
+-0.613781 -0.348325 0.70848
+-0.185645 -0.105347 0.976953
+-0.185645 -0.105347 0.976953
+-0.498038 -0.500532 0.708114
+-0.150614 -0.151501 0.976915
+-0.185645 -0.105347 0.976953
+-0.613781 -0.348325 0.70848
+-0.498038 -0.500532 0.708114
+-0.150614 -0.151501 0.976915
+-0.391459 -0.589293 0.706749
+-0.118528 -0.178594 0.976758
+-0.150614 -0.151501 0.976915
+-0.498038 -0.500532 0.708114
+-0.391459 -0.589293 0.706749
+-0.391459 -0.589293 0.706749
+-8.8695e-002 -0.194664 0.976852
+-0.118528 -0.178594 0.976758
+-0.391459 -0.589293 0.706749
+-0.292997 -0.643151 0.707467
+-8.8695e-002 -0.194664 0.976852
+-0.292997 -0.643151 0.707467
+-4.7722e-002 -0.208234 0.976914
+-8.8695e-002 -0.194664 0.976852
+-0.292997 -0.643151 0.707467
+-0.157754 -0.688379 0.707989
+-4.7722e-002 -0.208234 0.976914
+-4.7722e-002 -0.208234 0.976914
+-2.9651e-002 -0.706336 0.707256
+-8.92399e-003 -0.213815 0.976833
+-4.7722e-002 -0.208234 0.976914
+-0.157754 -0.688379 0.707989
+-2.9651e-002 -0.706336 0.707256
+-8.92399e-003 -0.213815 0.976833
+4.0045e-002 -0.706133 0.706946
+1.2169e-002 -0.213779 0.976806
+-8.92399e-003 -0.213815 0.976833
+-2.9651e-002 -0.706336 0.707256
+4.0045e-002 -0.706133 0.706946
+4.0045e-002 -0.706133 0.706946
+2.6065e-002 -0.212418 0.976831
+1.2169e-002 -0.213779 0.976806
+4.0045e-002 -0.706133 0.706946
+8.6143e-002 -0.701812 0.707135
+2.6065e-002 -0.212418 0.976831
+8.6143e-002 -0.701812 0.707135
+4.713e-002 -0.208661 0.976852
+2.6065e-002 -0.212418 0.976831
+8.6143e-002 -0.701812 0.707135
+0.155753 -0.689511 0.70733
+4.713e-002 -0.208661 0.976852
+4.713e-002 -0.208661 0.976852
+0.23763 -0.665721 0.707353
+7.1935e-002 -0.201442 0.976855
+4.713e-002 -0.208661 0.976852
+0.155753 -0.689511 0.70733
+0.23763 -0.665721 0.707353
+7.1935e-002 -0.201442 0.976855
+0.297413 -0.641602 0.70703
+9.0054e-002 -0.194208 0.976818
+7.1935e-002 -0.201442 0.976855
+0.23763 -0.665721 0.707353
+0.297413 -0.641602 0.70703
+0.297413 -0.641602 0.70703
+0.103712 -0.187174 0.976837
+9.0054e-002 -0.194208 0.976818
+0.297413 -0.641602 0.70703
+0.342692 -0.618442 0.707171
+0.103712 -0.187174 0.976837
+0.342692 -0.618442 0.707171
+0.133074 -0.20121 0.970467
+0.103712 -0.187174 0.976837
+0.342692 -0.618442 0.707171
+0.414489 -0.617217 0.668762
+0.133074 -0.20121 0.970467
+0.133074 -0.20121 0.970467
+0.149196 -0.523279 0.838999
+-5.3782e-002 -0.137293 0.989069
+0.133074 -0.20121 0.970467
+0.414489 -0.617217 0.668762
+0.149196 -0.523279 0.838999
+-0.469803 -0.261786 0.843062
+-0.235145 -4.2415e-002 0.971034
+-5.3782e-002 -0.137293 0.989069
+-0.469803 -0.261786 0.843062
+-0.732246 -0.117288 0.670865
+-0.235145 -4.2415e-002 0.971034
+-0.97162 -0.140763 0.190105
+-0.689541 -0.156142 0.707215
+-0.732246 -0.117288 0.670865
+-0.97162 -0.140763 0.190105
+-0.952688 -0.215824 0.214022
+-0.689541 -0.156142 0.707215
+-0.952688 -0.215824 0.214022
+-0.680182 -0.233239 0.694948
+-0.689541 -0.156142 0.707215
+-0.952688 -0.215824 0.214022
+-0.924527 -0.320576 0.206107
+-0.680182 -0.233239 0.694948
+-0.924527 -0.320576 0.206107
+-0.475302 -0.401562 0.782838
+-0.680182 -0.233239 0.694948
+-0.924527 -0.320576 0.206107
+-0.905031 -0.376557 0.197799
+-0.475302 -0.401562 0.782838
+-1.303e-003 -0.988644 0.150273
+-4.859e-003 -0.803901 0.594744
+-4.859e-003 -0.803901 0.594744
+-1.303e-003 -0.988644 0.150273
+-1.303e-003 -0.988644 0.150273
+-4.859e-003 -0.803901 0.594744
+0.63519 0.548414 0.543853
+0.876036 0.444335 0.187423
+0.646903 0.426908 0.631875
+0.63519 0.548414 0.543853
+0.860937 0.482648 0.160743
+0.876036 0.444335 0.187423
+0.646903 0.426908 0.631875
+0.903449 0.371468 0.213988
+0.65397 0.268859 0.707134
+0.646903 0.426908 0.631875
+0.876036 0.444335 0.187423
+0.903449 0.371468 0.213988
+0.65397 0.268859 0.707134
+0.933705 0.287012 0.214054
+0.675742 0.207692 0.707274
+0.65397 0.268859 0.707134
+0.903449 0.371468 0.213988
+0.933705 0.287012 0.214054
+0.675742 0.207692 0.707274
+0.960327 0.178676 0.214117
+0.694898 0.129378 0.707374
+0.675742 0.207692 0.707274
+0.933705 0.287012 0.214054
+0.960327 0.178676 0.214117
+0.960327 0.178676 0.214117
+0.703528 7.172e-002 0.70704
+0.694898 0.129378 0.707374
+0.960327 0.178676 0.214117
+0.971822 9.8948e-002 0.213941
+0.703528 7.172e-002 0.70704
+0.971822 9.8948e-002 0.213941
+0.705844 4.199e-002 0.707122
+0.703528 7.172e-002 0.70704
+0.971822 9.8948e-002 0.213941
+0.97511 5.8005e-002 0.214
+0.705844 4.199e-002 0.707122
+0.97511 5.8005e-002 0.214
+0.706856 1.8417e-002 0.707118
+0.705844 4.199e-002 0.707122
+0.97511 5.8005e-002 0.214
+0.976502 2.5441e-002 0.214001
+0.706856 1.8417e-002 0.707118
+0.976502 2.5441e-002 0.214001
+0.707098 4.085e-003 0.707104
+0.706856 1.8417e-002 0.707118
+0.976502 2.5441e-002 0.214001
+0.976818 5.642e-003 0.213996
+0.707098 4.085e-003 0.707104
+0.976818 5.642e-003 0.213996
+0.707104 2.55e-003 0.707105
+0.707098 4.085e-003 0.707104
+0.976818 5.642e-003 0.213996
+0.976828 3.524e-003 0.213996
+0.707104 2.55e-003 0.707105
+0.976828 3.524e-003 0.213996
+0.707038 1.007e-002 0.707104
+0.707104 2.55e-003 0.707105
+0.976828 3.524e-003 0.213996
+0.976736 1.3914e-002 0.213994
+0.707038 1.007e-002 0.707104
+0.976736 1.3914e-002 0.213994
+0.706694 2.4712e-002 0.707088
+0.707038 1.007e-002 0.707104
+0.976736 1.3914e-002 0.213994
+0.976241 3.4149e-002 0.213978
+0.706694 2.4712e-002 0.707088
+0.976241 3.4149e-002 0.213978
+0.704836 5.7565e-002 0.707031
+0.706694 2.4712e-002 0.707088
+0.976241 3.4149e-002 0.213978
+0.973604 7.9578e-002 0.213924
+0.704836 5.7565e-002 0.707031
+0.973604 7.9578e-002 0.213924
+0.694016 0.13279 0.707608
+0.704836 5.7565e-002 0.707031
+0.973604 7.9578e-002 0.213924
+0.959385 0.183528 0.214236
+0.694016 0.13279 0.707608
+0.694016 0.13279 0.707608
+0.929715 0.29986 0.213809
+0.673177 0.217135 0.706884
+0.694016 0.13279 0.707608
+0.959385 0.183528 0.214236
+0.929715 0.29986 0.213809
+0.929715 0.29986 0.213809
+0.635244 0.309626 0.707529
+0.673177 0.217135 0.706884
+0.929715 0.29986 0.213809
+0.878021 0.428053 0.214128
+0.635244 0.309626 0.707529
+0.878021 0.428053 0.214128
+0.556416 0.434666 0.708143
+0.635244 0.309626 0.707529
+0.878021 0.428053 0.214128
+0.769849 0.601119 0.214448
+0.556416 0.434666 0.708143
+0.556416 0.434666 0.708143
+0.645389 0.733336 0.213755
+0.467188 0.531094 0.706876
+0.556416 0.434666 0.708143
+0.769849 0.601119 0.214448
+0.645389 0.733336 0.213755
+0.645389 0.733336 0.213755
+0.373351 0.599805 0.707702
+0.467188 0.531094 0.706876
+0.645389 0.733336 0.213755
+0.516155 0.829272 0.214224
+0.373351 0.599805 0.707702
+0.373351 0.599805 0.707702
+0.361335 0.90752 0.214114
+0.261368 0.656628 0.707479
+0.373351 0.599805 0.707702
+0.516155 0.829272 0.214224
+0.361335 0.90752 0.214114
+0.261368 0.656628 0.707479
+0.239166 0.947132 0.213871
+0.173094 0.68571 0.706994
+0.261368 0.656628 0.707479
+0.361335 0.90752 0.214114
+0.239166 0.947132 0.213871
+0.239166 0.947132 0.213871
+9.4678e-002 0.700453 0.707391
+0.173094 0.68571 0.706994
+0.239166 0.947132 0.213871
+0.130837 0.968009 0.214104
+9.4678e-002 0.700453 0.707391
+9.4678e-002 0.700453 0.707391
+1.704e-002 0.976676 0.214043
+1.2314e-002 0.706875 0.707231
+9.4678e-002 0.700453 0.707391
+0.130837 0.968009 0.214104
+1.704e-002 0.976676 0.214043
+1.2314e-002 0.706875 0.707231
+-6.7813e-002 0.974497 0.21391
+-4.9099e-002 0.705514 0.706994
+1.2314e-002 0.706875 0.707231
+1.704e-002 0.976676 0.214043
+-6.7813e-002 0.974497 0.21391
+-6.7813e-002 0.974497 0.21391
+-0.11994 0.696586 0.707377
+-4.9099e-002 0.705514 0.706994
+-6.7813e-002 0.974497 0.21391
+-0.165767 0.962647 0.214085
+-0.11994 0.696586 0.707377
+-0.165767 0.962647 0.214085
+-0.216186 0.67282 0.707515
+-0.11994 0.696586 0.707377
+-0.165767 0.962647 0.214085
+-0.298692 0.930008 0.214168
+-0.216186 0.67282 0.707515
+-0.216186 0.67282 0.707515
+-0.397797 0.892199 0.213867
+-0.288085 0.645938 0.706945
+-0.216186 0.67282 0.707515
+-0.298692 0.930008 0.214168
+-0.397797 0.892199 0.213867
+-0.397797 0.892199 0.213867
+-0.346546 0.616351 0.707119
+-0.288085 0.645938 0.706945
+-0.397797 0.892199 0.213867
+-0.478812 0.851453 0.21393
+-0.346546 0.616351 0.707119
+-0.478812 0.851453 0.21393
+-0.436518 0.555601 0.707644
+-0.346546 0.616351 0.707119
+-0.478812 0.851453 0.21393
+-0.603499 0.768059 0.21418
+-0.436518 0.555601 0.707644
+-0.603499 0.768059 0.21418
+-0.538138 0.457513 0.707877
+-0.436518 0.555601 0.707644
+-0.603499 0.768059 0.21418
+-0.744085 0.632777 0.214314
+-0.538138 0.457513 0.707877
+-0.538138 0.457513 0.707877
+-0.837189 0.503405 0.21377
+-0.60624 0.364426 0.706872
+-0.538138 0.457513 0.707877
+-0.744085 0.632777 0.214314
+-0.837189 0.503405 0.21377
+-0.837189 0.503405 0.21377
+-0.675759 0.285252 0.679692
+-0.60624 0.364426 0.706872
+-0.837189 0.503405 0.21377
+-0.904168 0.379105 0.196875
+-0.675759 0.285252 0.679692
+-0.904168 0.379105 0.196875
+-0.72096 0.240948 0.649739
+-0.675759 0.285252 0.679692
+-0.904168 0.379105 0.196875
+-0.936028 0.303018 0.178972
+-0.72096 0.240948 0.649739
+-0.105582 -0.788461 0.605955
+-0.132936 -0.978859 0.155444
+-0.105582 -0.788461 0.605955
+-0.105582 -0.788461 0.605955
+-0.132936 -0.978859 0.155444
+-0.132936 -0.978859 0.155444
+0.726654 -0.177986 0.663547
+0.929236 -0.309465 0.20187
+0.695051 -0.214897 0.686093
+0.726654 -0.177986 0.663547
+0.943526 -0.271614 0.189695
+0.929236 -0.309465 0.20187
+0.695051 -0.214897 0.686093
+0.888776 -0.405396 0.213848
+0.643368 -0.293599 0.70702
+0.695051 -0.214897 0.686093
+0.929236 -0.309465 0.20187
+0.888776 -0.405396 0.213848
+0.643368 -0.293599 0.70702
+0.797369 -0.564176 0.214261
+0.576452 -0.408074 0.70794
+0.643368 -0.293599 0.70702
+0.888776 -0.405396 0.213848
+0.797369 -0.564176 0.214261
+0.576452 -0.408074 0.70794
+0.621268 -0.753613 0.214692
+0.44917 -0.544099 0.708662
+0.576452 -0.408074 0.70794
+0.797369 -0.564176 0.214261
+0.621268 -0.753613 0.214692
+0.621268 -0.753613 0.214692
+0.327812 -0.626979 0.706709
+0.44917 -0.544099 0.708662
+0.621268 -0.753613 0.214692
+0.452054 -0.86603 0.213635
+0.327812 -0.626979 0.706709
+0.327812 -0.626979 0.706709
+0.321674 -0.922332 0.214078
+0.232722 -0.667391 0.707411
+0.327812 -0.626979 0.706709
+0.452054 -0.86603 0.213635
+0.321674 -0.922332 0.214078
+0.232722 -0.667391 0.707411
+0.165016 -0.962759 0.214159
+0.119393 -0.696486 0.707568
+0.232722 -0.667391 0.707411
+0.321674 -0.922332 0.214078
+0.165016 -0.962759 0.214159
+0.165016 -0.962759 0.214159
+1.4599e-002 -0.706823 0.70724
+0.119393 -0.696486 0.707568
+0.165016 -0.962759 0.214159
+2.0072e-002 -0.976625 0.214011
+1.4599e-002 -0.706823 0.70724
+2.0072e-002 -0.976625 0.214011
+-5.8246e-002 -0.70483 0.706981
+1.4599e-002 -0.706823 0.70724
+2.0072e-002 -0.976625 0.214011
+-8.0476e-002 -0.97354 0.213876
+-5.8246e-002 -0.70483 0.706981
+-5.8246e-002 -0.70483 0.706981
+-0.187168 -0.958771 0.213835
+-0.135621 -0.694055 0.707032
+-5.8246e-002 -0.70483 0.706981
+-8.0476e-002 -0.97354 0.213876
+-0.187168 -0.958771 0.213835
+-0.135621 -0.694055 0.707032
+-0.374371 -0.902181 0.21428
+-0.270839 -0.652216 0.707998
+-0.135621 -0.694055 0.707032
+-0.187168 -0.958771 0.213835
+-0.374371 -0.902181 0.21428
+-0.270839 -0.652216 0.707998
+-0.612191 -0.760984 0.21477
+-0.441704 -0.549915 0.708866
+-0.270839 -0.652216 0.707998
+-0.374371 -0.902181 0.21428
+-0.612191 -0.760984 0.21477
+-0.612191 -0.760984 0.21477
+-0.561444 -0.430438 0.706755
+-0.441704 -0.549915 0.708866
+-0.612191 -0.760984 0.21477
+-0.77572 -0.593834 0.213587
+-0.561444 -0.430438 0.706755
+-0.561444 -0.430438 0.706755
+-0.875953 -0.432245 0.214174
+-0.633621 -0.312558 0.707695
+-0.561444 -0.430438 0.706755
+-0.77572 -0.593834 0.213587
+-0.875953 -0.432245 0.214174
+-0.633621 -0.312558 0.707695
+-0.95082 -0.223514 0.214437
+-0.68732 -0.161649 0.708139
+-0.633621 -0.312558 0.707695
+-0.875953 -0.432245 0.214174
+-0.95082 -0.223514 0.214437
+-0.95082 -0.223514 0.214437
+-0.719281 -3.5191e-002 0.693827
+-0.68732 -0.161649 0.708139
+-0.95082 -0.223514 0.214437
+-0.977359 -5.3257e-002 0.204778
+-0.719281 -3.5191e-002 0.693827
+-0.719281 -3.5191e-002 0.693827
+-0.980656 3.051e-003 0.195715
+-0.733091 9.281e-003 0.680067
+-0.719281 -3.5191e-002 0.693827
+-0.977359 -5.3257e-002 0.204778
+-0.980656 3.051e-003 0.195715
+-0.295818 0.934855 0.196311
+-0.205281 0.689292 0.694793
+-0.23473 0.692826 0.681832
+-0.295818 0.934855 0.196311
+-0.26937 0.940924 0.205188
+-0.205281 0.689292 0.694793
+-0.205281 0.689292 0.694793
+-0.217308 0.952355 0.214005
+-0.157296 0.689356 0.707139
+-0.205281 0.689292 0.694793
+-0.26937 0.940924 0.205188
+-0.217308 0.952355 0.214005
+-0.157296 0.689356 0.707139
+-0.166112 0.962602 0.214019
+-0.120239 0.696757 0.707158
+-0.157296 0.689356 0.707139
+-0.217308 0.952355 0.214005
+-0.166112 0.962602 0.214019
+-0.166112 0.962602 0.214019
+-9.5669e-002 0.700622 0.70709
+-0.120239 0.696757 0.707158
+-0.166112 0.962602 0.214019
+-0.132156 0.967855 0.213989
+-9.5669e-002 0.700622 0.70709
+-0.132156 0.967855 0.213989
+-9.4189e-002 0.700808 0.707104
+-9.5669e-002 0.700622 0.70709
+-0.132156 0.967855 0.213989
+-0.130117 0.968128 0.214006
+-9.4189e-002 0.700808 0.707104
+-0.130117 0.968128 0.214006
+-0.106568 0.699037 0.7071
+-9.4189e-002 0.700808 0.707104
+-0.130117 0.968128 0.214006
+-0.147223 0.965675 0.214004
+-0.106568 0.699037 0.7071
+-0.147223 0.965675 0.214004
+-0.131272 0.69482 0.707102
+-0.106568 0.699037 0.7071
+-0.147223 0.965675 0.214004
+-0.181365 0.959852 0.213989
+-0.131272 0.69482 0.707102
+-0.181365 0.959852 0.213989
+-0.178095 0.684131 0.707281
+-0.131272 0.69482 0.707102
+-0.181365 0.959852 0.213989
+-0.246038 0.945323 0.214077
+-0.178095 0.684131 0.707281
+-0.178095 0.684131 0.707281
+-0.308815 0.926744 0.21396
+-0.223594 0.670876 0.707058
+-0.178095 0.684131 0.707281
+-0.246038 0.945323 0.214077
+-0.308815 0.926744 0.21396
+-0.308815 0.926744 0.21396
+-0.262478 0.656562 0.707129
+-0.223594 0.670876 0.707058
+-0.308815 0.926744 0.21396
+-0.362642 0.907026 0.213996
+-0.262478 0.656562 0.707129
+-0.362642 0.907026 0.213996
+-0.320026 0.630359 0.70727
+-0.262478 0.656562 0.707129
+-0.362642 0.907026 0.213996
+-0.442217 0.87099 0.214056
+-0.320026 0.630359 0.70727
+-0.442217 0.87099 0.214056
+-0.388701 0.590407 0.70734
+-0.320026 0.630359 0.70727
+-0.442217 0.87099 0.214056
+-0.537054 0.815926 0.214096
+-0.388701 0.590407 0.70734
+-0.388701 0.590407 0.70734
+-0.612038 0.761343 0.213929
+-0.443119 0.551127 0.707039
+-0.388701 0.590407 0.70734
+-0.537054 0.815926 0.214096
+-0.612038 0.761343 0.213929
+-0.612038 0.761343 0.213929
+-0.49096 0.508768 0.707186
+-0.443119 0.551127 0.707039
+-0.612038 0.761343 0.213929
+-0.67836 0.702877 0.213992
+-0.49096 0.508768 0.707186
+-0.67836 0.702877 0.213992
+-0.552583 0.440594 0.70748
+-0.49096 0.508768 0.707186
+-0.67836 0.702877 0.213992
+-0.763762 0.608944 0.214137
+-0.552583 0.440594 0.70748
+-0.552583 0.440594 0.70748
+-0.844505 0.490887 0.214105
+-0.611134 0.355092 0.707408
+-0.552583 0.440594 0.70748
+-0.763762 0.608944 0.214137
+-0.844505 0.490887 0.214105
+-0.611134 0.355092 0.707408
+-0.893106 0.395742 0.213894
+-0.646629 0.286419 0.70699
+-0.611134 0.355092 0.707408
+-0.844505 0.490887 0.214105
+-0.893106 0.395742 0.213894
+-0.893106 0.395742 0.213894
+-0.671003 0.222769 0.707198
+-0.646629 0.286419 0.70699
+-0.893106 0.395742 0.213894
+-0.927099 0.307723 0.213997
+-0.671003 0.222769 0.707198
+-0.927099 0.307723 0.213997
+-0.69511 0.127583 0.707492
+-0.671003 0.222769 0.707198
+-0.927099 0.307723 0.213997
+-0.960762 0.176306 0.214133
+-0.69511 0.127583 0.707492
+-0.960762 0.176306 0.214133
+-0.706581 1.188e-002 0.707532
+-0.69511 0.127583 0.707492
+-0.960762 0.176306 0.214133
+-0.97666 1.6504e-002 0.214155
+-0.706581 1.188e-002 0.707532
+-0.706581 1.188e-002 0.707532
+-0.9692 -0.12219 0.213826
+-0.701704 -8.84959e-002 0.706952
+-0.706581 1.188e-002 0.707532
+-0.97666 1.6504e-002 0.214155
+-0.9692 -0.12219 0.213826
+-0.9692 -0.12219 0.213826
+-0.679572 -0.194739 0.70729
+-0.701704 -8.84959e-002 0.706952
+-0.9692 -0.12219 0.213826
+-0.939025 -0.269183 0.213947
+-0.679572 -0.194739 0.70729
+-0.939025 -0.269183 0.213947
+-0.613781 -0.348325 0.70848
+-0.679572 -0.194739 0.70729
+-0.939025 -0.269183 0.213947
+-0.849446 -0.482095 0.214538
+-0.613781 -0.348325 0.70848
+-0.613781 -0.348325 0.70848
+-0.689155 -0.692184 0.214354
+-0.498038 -0.500532 0.708114
+-0.613781 -0.348325 0.70848
+-0.849446 -0.482095 0.214538
+-0.689155 -0.692184 0.214354
+-0.498038 -0.500532 0.708114
+-0.540787 -0.813569 0.213669
+-0.391459 -0.589293 0.706749
+-0.498038 -0.500532 0.708114
+-0.689155 -0.692184 0.214354
+-0.540787 -0.813569 0.213669
+-0.540787 -0.813569 0.213669
+-0.292997 -0.643151 0.707467
+-0.391459 -0.589293 0.706749
+-0.540787 -0.813569 0.213669
+-0.404924 -0.888936 0.214079
+-0.292997 -0.643151 0.707467
+-0.404924 -0.888936 0.214079
+-0.157754 -0.688379 0.707989
+-0.292997 -0.643151 0.707467
+-0.404924 -0.888936 0.214079
+-0.218182 -0.952074 0.214363
+-0.157754 -0.688379 0.707989
+-0.157754 -0.688379 0.707989
+-4.1133e-002 -0.975968 0.213995
+-2.9651e-002 -0.706336 0.707256
+-0.157754 -0.688379 0.707989
+-0.218182 -0.952074 0.214363
+-4.1133e-002 -0.975968 0.213995
+-2.9651e-002 -0.706336 0.707256
+5.5166e-002 -0.975302 0.213877
+4.0045e-002 -0.706133 0.706946
+-2.9651e-002 -0.706336 0.707256
+-4.1133e-002 -0.975968 0.213995
+5.5166e-002 -0.975302 0.213877
+5.5166e-002 -0.975302 0.213877
+8.6143e-002 -0.701812 0.707135
+4.0045e-002 -0.706133 0.706946
+5.5166e-002 -0.975302 0.213877
+0.119034 -0.969557 0.213987
+8.6143e-002 -0.701812 0.707135
+0.119034 -0.969557 0.213987
+0.155753 -0.689511 0.70733
+8.6143e-002 -0.701812 0.707135
+0.119034 -0.969557 0.213987
+0.215244 -0.952806 0.21408
+0.155753 -0.689511 0.70733
+0.155753 -0.689511 0.70733
+0.328297 -0.919992 0.214095
+0.23763 -0.665721 0.707353
+0.155753 -0.689511 0.70733
+0.215244 -0.952806 0.21408
+0.328297 -0.919992 0.214095
+0.23763 -0.665721 0.707353
+0.410749 -0.886296 0.213927
+0.297413 -0.641602 0.70703
+0.23763 -0.665721 0.707353
+0.328297 -0.919992 0.214095
+0.410749 -0.886296 0.213927
+0.410749 -0.886296 0.213927
+0.342692 -0.618442 0.707171
+0.297413 -0.641602 0.70703
+0.410749 -0.886296 0.213927
+0.473468 -0.854417 0.214008
+0.342692 -0.618442 0.707171
+0.473468 -0.854417 0.214008
+0.414489 -0.617217 0.668762
+0.342692 -0.618442 0.707171
+0.473468 -0.854417 0.214008
+0.551753 -0.812155 0.189664
+0.414489 -0.617217 0.668762
+0.414489 -0.617217 0.668762
+0.593243 -0.787889 0.165206
+0.45928 -0.627952 0.628282
+0.414489 -0.617217 0.668762
+0.551753 -0.812155 0.189664
+0.593243 -0.787889 0.165206
+-0.979491 -0.113705 0.166338
+-0.732246 -0.117288 0.670865
+-0.76574 -0.112819 0.633178
+-0.979491 -0.113705 0.166338
+-0.97162 -0.140763 0.190105
+-0.732246 -0.117288 0.670865
+-0.97162 -0.140763 0.190105
+-0.97528 -0.220973 0
+-0.952688 -0.215824 0.214022
+-0.97162 -0.140763 0.190105
+-0.990338 -0.138675 0
+-0.97528 -0.220973 0
+-0.952688 -0.215824 0.214022
+-0.944482 -0.328564 0
+-0.924527 -0.320576 0.206107
+-0.952688 -0.215824 0.214022
+-0.97528 -0.220973 0
+-0.944482 -0.328564 0
+-0.924527 -0.320576 0.206107
+-0.92234 -0.386379 1.e-006
+-0.905031 -0.376557 0.197799
+-0.924527 -0.320576 0.206107
+-0.944482 -0.328564 0
+-0.92234 -0.386379 1.e-006
+-1.303e-003 -0.988644 0.150273
+0 -1. 0
+-1.303e-003 -0.988644 0.150273
+-1.303e-003 -0.988644 0.150273
+0 -1. 0
+0 -1. 0
+0.8889 0.458101 0
+0.876036 0.444335 0.187423
+0.860937 0.482648 0.160743
+0.8889 0.458101 0
+0.899821 0.436259 0
+0.876036 0.444335 0.187423
+0.899821 0.436259 0
+0.903449 0.371468 0.213988
+0.876036 0.444335 0.187423
+0.899821 0.436259 0
+0.924868 0.380289 0
+0.903449 0.371468 0.213988
+0.924868 0.380289 0
+0.933705 0.287012 0.214054
+0.903449 0.371468 0.213988
+0.924868 0.380289 0
+0.955857 0.293831 0
+0.933705 0.287012 0.214054
+0.933705 0.287012 0.214054
+0.983135 0.182881 0
+0.960327 0.178676 0.214117
+0.933705 0.287012 0.214054
+0.955857 0.293831 0
+0.983135 0.182881 0
+0.960327 0.178676 0.214117
+0.994861 0.101254 0
+0.971822 9.8948e-002 0.213941
+0.960327 0.178676 0.214117
+0.983135 0.182881 0
+0.994861 0.101254 0
+0.971822 9.8948e-002 0.213941
+0.998235 5.938e-002 0
+0.97511 5.8005e-002 0.214
+0.971822 9.8948e-002 0.213941
+0.994861 0.101254 0
+0.998235 5.938e-002 0
+0.97511 5.8005e-002 0.214
+0.999661 2.6044e-002 0
+0.976502 2.5441e-002 0.214001
+0.97511 5.8005e-002 0.214
+0.998235 5.938e-002 0
+0.999661 2.6044e-002 0
+0.999661 2.6044e-002 0
+0.976818 5.642e-003 0.213996
+0.976502 2.5441e-002 0.214001
+0.999661 2.6044e-002 0
+0.999983 5.776e-003 0
+0.976818 5.642e-003 0.213996
+0.976818 5.642e-003 0.213996
+0.999994 3.608e-003 0
+0.976828 3.524e-003 0.213996
+0.976818 5.642e-003 0.213996
+0.999983 5.776e-003 0
+0.999994 3.608e-003 0
+0.976828 3.524e-003 0.213996
+0.999899 1.4245e-002 0
+0.976736 1.3914e-002 0.213994
+0.976828 3.524e-003 0.213996
+0.999994 3.608e-003 0
+0.999899 1.4245e-002 0
+0.976736 1.3914e-002 0.213994
+0.999389 3.4962e-002 0
+0.976241 3.4149e-002 0.213978
+0.976736 1.3914e-002 0.213994
+0.999899 1.4245e-002 0
+0.999389 3.4962e-002 0
+0.976241 3.4149e-002 0.213978
+0.996675 8.1483e-002 0
+0.973604 7.9578e-002 0.213924
+0.976241 3.4149e-002 0.213978
+0.999389 3.4962e-002 0
+0.996675 8.1483e-002 0
+0.996675 8.1483e-002 0
+0.959385 0.183528 0.214236
+0.973604 7.9578e-002 0.213924
+0.996675 8.1483e-002 0
+0.982192 0.187879 1.e-006
+0.959385 0.183528 0.214236
+0.982192 0.187879 1.e-006
+0.929715 0.29986 0.213809
+0.959385 0.183528 0.214236
+0.982192 0.187879 1.e-006
+0.951725 0.306952 4.e-006
+0.929715 0.29986 0.213809
+0.951725 0.306952 4.e-006
+0.878021 0.428053 0.214128
+0.929715 0.29986 0.213809
+0.951725 0.306952 4.e-006
+0.898857 0.438242 1.e-005
+0.878021 0.428053 0.214128
+0.878021 0.428053 0.214128
+0.788227 0.615385 1.1e-005
+0.769849 0.601119 0.214448
+0.878021 0.428053 0.214128
+0.898857 0.438242 1.e-005
+0.788227 0.615385 1.1e-005
+0.788227 0.615385 1.1e-005
+0.645389 0.733336 0.213755
+0.769849 0.601119 0.214448
+0.788227 0.615385 1.1e-005
+0.66071 0.750642 6.e-006
+0.645389 0.733336 0.213755
+0.66071 0.750642 6.e-006
+0.516155 0.829272 0.214224
+0.645389 0.733336 0.213755
+0.66071 0.750642 6.e-006
+0.528416 0.848986 -5.e-006
+0.516155 0.829272 0.214224
+0.516155 0.829272 0.214224
+0.369942 0.929055 -4.e-006
+0.361335 0.90752 0.214114
+0.516155 0.829272 0.214224
+0.528416 0.848986 -5.e-006
+0.369942 0.929055 -4.e-006
+0.361335 0.90752 0.214114
+0.244855 0.96956 -4.e-006
+0.239166 0.947132 0.213871
+0.361335 0.90752 0.214114
+0.369942 0.929055 -4.e-006
+0.244855 0.96956 -4.e-006
+0.244855 0.96956 -4.e-006
+0.130837 0.968009 0.214104
+0.239166 0.947132 0.213871
+0.244855 0.96956 -4.e-006
+0.133941 0.990989 -9.e-006
+0.130837 0.968009 0.214104
+0.133941 0.990989 -9.e-006
+1.704e-002 0.976676 0.214043
+0.130837 0.968009 0.214104
+0.133941 0.990989 -9.e-006
+1.7452e-002 0.999848 1.3e-005
+1.704e-002 0.976676 0.214043
+1.7452e-002 0.999848 1.3e-005
+-6.7813e-002 0.974497 0.21391
+1.704e-002 0.976676 0.214043
+1.7452e-002 0.999848 1.3e-005
+-6.9419e-002 0.997588 1.2e-005
+-6.7813e-002 0.974497 0.21391
+-6.9419e-002 0.997588 1.2e-005
+-0.165767 0.962647 0.214085
+-6.7813e-002 0.974497 0.21391
+-6.9419e-002 0.997588 1.2e-005
+-0.169707 0.985495 -1.2e-005
+-0.165767 0.962647 0.214085
+-0.169707 0.985495 -1.2e-005
+-0.298692 0.930008 0.214168
+-0.165767 0.962647 0.214085
+-0.169707 0.985495 -1.2e-005
+-0.305751 0.952112 -3.e-006
+-0.298692 0.930008 0.214168
+-0.298692 0.930008 0.214168
+-0.407188 0.913345 2.e-006
+-0.397797 0.892199 0.213867
+-0.298692 0.930008 0.214168
+-0.305751 0.952112 -3.e-006
+-0.407188 0.913345 2.e-006
+-0.397797 0.892199 0.213867
+-0.490179 0.871622 -1.2e-005
+-0.478812 0.851453 0.21393
+-0.397797 0.892199 0.213867
+-0.407188 0.913345 2.e-006
+-0.490179 0.871622 -1.2e-005
+-0.478812 0.851453 0.21393
+-0.617849 0.786297 -7.e-006
+-0.603499 0.768059 0.21418
+-0.478812 0.851453 0.21393
+-0.490179 0.871622 -1.2e-005
+-0.617849 0.786297 -7.e-006
+-0.603499 0.768059 0.21418
+-0.761758 0.647861 3.e-006
+-0.744085 0.632777 0.214314
+-0.603499 0.768059 0.21418
+-0.617849 0.786297 -7.e-006
+-0.761758 0.647861 3.e-006
+-0.761758 0.647861 3.e-006
+-0.837189 0.503405 0.21377
+-0.744085 0.632777 0.214314
+-0.761758 0.647861 3.e-006
+-0.85698 0.51535 1.e-006
+-0.837189 0.503405 0.21377
+-0.85698 0.51535 1.e-006
+-0.904168 0.379105 0.196875
+-0.837189 0.503405 0.21377
+-0.85698 0.51535 1.e-006
+-0.922517 0.385957 -2.e-006
+-0.904168 0.379105 0.196875
+-0.904168 0.379105 0.196875
+-0.952225 0.305397 0
+-0.936028 0.303018 0.178972
+-0.904168 0.379105 0.196875
+-0.922517 0.385957 -2.e-006
+-0.952225 0.305397 0
+-0.132936 -0.978859 0.155444
+-0.13509 -0.990833 3.e-006
+-0.132936 -0.978859 0.155444
+-0.132936 -0.978859 0.155444
+-0.13509 -0.990833 3.e-006
+-0.13509 -0.990833 3.e-006
+0.943526 -0.271614 0.189695
+0.947083 -0.320989 2.e-006
+0.929236 -0.309465 0.20187
+0.943526 -0.271614 0.189695
+0.958104 -0.286421 6.e-006
+0.947083 -0.320989 2.e-006
+0.929236 -0.309465 0.20187
+0.909846 -0.414945 -5.e-006
+0.888776 -0.405396 0.213848
+0.929236 -0.309465 0.20187
+0.947083 -0.320989 2.e-006
+0.909846 -0.414945 -5.e-006
+0.888776 -0.405396 0.213848
+0.81637 -0.57753 -1.1e-005
+0.797369 -0.564176 0.214261
+0.888776 -0.405396 0.213848
+0.909846 -0.414945 -5.e-006
+0.81637 -0.57753 -1.1e-005
+0.81637 -0.57753 -1.1e-005
+0.621268 -0.753613 0.214692
+0.797369 -0.564176 0.214261
+0.81637 -0.57753 -1.1e-005
+0.635929 -0.771748 4.e-006
+0.621268 -0.753613 0.214692
+0.621268 -0.753613 0.214692
+0.462539 -0.886599 1.2e-005
+0.452054 -0.86603 0.213635
+0.621268 -0.753613 0.214692
+0.635929 -0.771748 4.e-006
+0.462539 -0.886599 1.2e-005
+0.452054 -0.86603 0.213635
+0.329324 -0.944217 -4.e-006
+0.321674 -0.922332 0.214078
+0.452054 -0.86603 0.213635
+0.462539 -0.886599 1.2e-005
+0.329324 -0.944217 -4.e-006
+0.329324 -0.944217 -4.e-006
+0.165016 -0.962759 0.214159
+0.321674 -0.922332 0.214078
+0.329324 -0.944217 -4.e-006
+0.168929 -0.985628 -1.2e-005
+0.165016 -0.962759 0.214159
+0.168929 -0.985628 -1.2e-005
+2.0072e-002 -0.976625 0.214011
+0.165016 -0.962759 0.214159
+0.168929 -0.985628 -1.2e-005
+2.0516e-002 -0.99979 0
+2.0072e-002 -0.976625 0.214011
+2.0072e-002 -0.976625 0.214011
+-8.239e-002 -0.9966 -2.e-006
+-8.0476e-002 -0.97354 0.213876
+2.0072e-002 -0.976625 0.214011
+2.0516e-002 -0.99979 0
+-8.239e-002 -0.9966 -2.e-006
+-8.0476e-002 -0.97354 0.213876
+-0.191546 -0.981484 -1.2e-005
+-0.187168 -0.958771 0.213835
+-8.0476e-002 -0.97354 0.213876
+-8.239e-002 -0.9966 -2.e-006
+-0.191546 -0.981484 -1.2e-005
+-0.187168 -0.958771 0.213835
+-0.383203 -0.923664 4.e-006
+-0.374371 -0.902181 0.21428
+-0.187168 -0.958771 0.213835
+-0.191546 -0.981484 -1.2e-005
+-0.383203 -0.923664 4.e-006
+-0.374371 -0.902181 0.21428
+-0.627017 -0.779006 5.e-006
+-0.612191 -0.760984 0.21477
+-0.374371 -0.902181 0.21428
+-0.383203 -0.923664 4.e-006
+-0.627017 -0.779006 5.e-006
+-0.627017 -0.779006 5.e-006
+-0.77572 -0.593834 0.213587
+-0.612191 -0.760984 0.21477
+-0.627017 -0.779006 5.e-006
+-0.79419 -0.607669 1.e-006
+-0.77572 -0.593834 0.213587
+-0.77572 -0.593834 0.213587
+-0.896744 -0.44255 5.e-006
+-0.875953 -0.432245 0.214174
+-0.77572 -0.593834 0.213587
+-0.79419 -0.607669 1.e-006
+-0.896744 -0.44255 5.e-006
+-0.875953 -0.432245 0.214174
+-0.973472 -0.228806 2.e-006
+-0.95082 -0.223514 0.214437
+-0.875953 -0.432245 0.214174
+-0.896744 -0.44255 5.e-006
+-0.973472 -0.228806 2.e-006
+-0.973472 -0.228806 2.e-006
+-0.977359 -5.3257e-002 0.204778
+-0.95082 -0.223514 0.214437
+-0.973472 -0.228806 2.e-006
+-0.998422 -5.615e-002 0
+-0.977359 -5.3257e-002 0.204778
+-0.977359 -5.3257e-002 0.204778
+-1. 0 0
+-0.980656 3.051e-003 0.195715
+-0.977359 -5.3257e-002 0.204778
+-0.998422 -5.615e-002 0
+-1. 0 0
+-0.294993 0.955499 1.4e-005
+-0.26937 0.940924 0.205188
+-0.295818 0.934855 0.196311
+-0.294993 0.955499 1.4e-005
+-0.271752 0.962367 2.e-006
+-0.26937 0.940924 0.205188
+-0.271752 0.962367 2.e-006
+-0.217308 0.952355 0.214005
+-0.26937 0.940924 0.205188
+-0.271752 0.962367 2.e-006
+-0.222462 0.974941 -3.e-006
+-0.217308 0.952355 0.214005
+-0.217308 0.952355 0.214005
+-0.170051 0.985435 -1.e-006
+-0.166112 0.962602 0.214019
+-0.217308 0.952355 0.214005
+-0.222462 0.974941 -3.e-006
+-0.170051 0.985435 -1.e-006
+-0.166112 0.962602 0.214019
+-0.135289 0.990806 3.e-006
+-0.132156 0.967855 0.213989
+-0.166112 0.962602 0.214019
+-0.170051 0.985435 -1.e-006
+-0.135289 0.990806 3.e-006
+-0.132156 0.967855 0.213989
+-0.133203 0.991089 9.e-006
+-0.130117 0.968128 0.214006
+-0.132156 0.967855 0.213989
+-0.135289 0.990806 3.e-006
+-0.133203 0.991089 9.e-006
+-0.130117 0.968128 0.214006
+-0.150716 0.988577 1.2e-005
+-0.147223 0.965675 0.214004
+-0.130117 0.968128 0.214006
+-0.133203 0.991089 9.e-006
+-0.150716 0.988577 1.2e-005
+-0.150716 0.988577 1.2e-005
+-0.181365 0.959852 0.213989
+-0.147223 0.965675 0.214004
+-0.150716 0.988577 1.2e-005
+-0.185672 0.982612 5.e-006
+-0.181365 0.959852 0.213989
+-0.185672 0.982612 5.e-006
+-0.246038 0.945323 0.214077
+-0.181365 0.959852 0.213989
+-0.185672 0.982612 5.e-006
+-0.251862 0.967763 -4.e-006
+-0.246038 0.945323 0.214077
+-0.246038 0.945323 0.214077
+-0.31612 0.948719 6.e-006
+-0.308815 0.926744 0.21396
+-0.246038 0.945323 0.214077
+-0.251862 0.967763 -4.e-006
+-0.31612 0.948719 6.e-006
+-0.308815 0.926744 0.21396
+-0.371252 0.928532 6.e-006
+-0.362642 0.907026 0.213996
+-0.308815 0.926744 0.21396
+-0.31612 0.948719 6.e-006
+-0.371252 0.928532 6.e-006
+-0.362642 0.907026 0.213996
+-0.452717 0.891654 2.e-006
+-0.442217 0.87099 0.214056
+-0.362642 0.907026 0.213996
+-0.371252 0.928532 6.e-006
+-0.452717 0.891654 2.e-006
+-0.442217 0.87099 0.214056
+-0.549777 0.835311 6.e-006
+-0.537054 0.815926 0.214096
+-0.442217 0.87099 0.214056
+-0.452717 0.891654 2.e-006
+-0.549777 0.835311 6.e-006
+-0.549777 0.835311 6.e-006
+-0.612038 0.761343 0.213929
+-0.537054 0.815926 0.214096
+-0.549777 0.835311 6.e-006
+-0.626525 0.779401 2.e-006
+-0.612038 0.761343 0.213929
+-0.626525 0.779401 2.e-006
+-0.67836 0.702877 0.213992
+-0.612038 0.761343 0.213929
+-0.626525 0.779401 2.e-006
+-0.69446 0.719531 -6.e-006
+-0.67836 0.702877 0.213992
+-0.67836 0.702877 0.213992
+-0.781904 0.623398 -5.e-006
+-0.763762 0.608944 0.214137
+-0.67836 0.702877 0.213992
+-0.69446 0.719531 -6.e-006
+-0.781904 0.623398 -5.e-006
+-0.763762 0.608944 0.214137
+-0.864527 0.502586 -1.e-006
+-0.844505 0.490887 0.214105
+-0.763762 0.608944 0.214137
+-0.781904 0.623398 -5.e-006
+-0.864527 0.502586 -1.e-006
+-0.844505 0.490887 0.214105
+-0.914247 0.405156 2.e-006
+-0.893106 0.395742 0.213894
+-0.844505 0.490887 0.214105
+-0.864527 0.502586 -1.e-006
+-0.914247 0.405156 2.e-006
+-0.893106 0.395742 0.213894
+-0.949091 0.315001 -1.e-006
+-0.927099 0.307723 0.213997
+-0.893106 0.395742 0.213894
+-0.914247 0.405156 2.e-006
+-0.949091 0.315001 -1.e-006
+-0.927099 0.307723 0.213997
+-0.983578 0.180481 -1.e-006
+-0.960762 0.176306 0.214133
+-0.927099 0.307723 0.213997
+-0.949091 0.315001 -1.e-006
+-0.983578 0.180481 -1.e-006
+-0.960762 0.176306 0.214133
+-0.999857 1.6922e-002 0
+-0.97666 1.6504e-002 0.214155
+-0.960762 0.176306 0.214133
+-0.983578 0.180481 -1.e-006
+-0.999857 1.6922e-002 0
+-0.97666 1.6504e-002 0.214155
+-0.992148 -0.125071 1.e-006
+-0.9692 -0.12219 0.213826
+-0.97666 1.6504e-002 0.214155
+-0.999857 1.6922e-002 0
+-0.992148 -0.125071 1.e-006
+-0.992148 -0.125071 1.e-006
+-0.939025 -0.269183 0.213947
+-0.9692 -0.12219 0.213826
+-0.992148 -0.125071 1.e-006
+-0.961274 -0.275593 0
+-0.939025 -0.269183 0.213947
+-0.961274 -0.275593 0
+-0.849446 -0.482095 0.214538
+-0.939025 -0.269183 0.213947
+-0.961274 -0.275593 0
+-0.869691 -0.493596 0
+-0.849446 -0.482095 0.214538
+-0.849446 -0.482095 0.214538
+-0.70562 -0.70859 1.e-006
+-0.689155 -0.692184 0.214354
+-0.849446 -0.482095 0.214538
+-0.869691 -0.493596 0
+-0.70562 -0.70859 1.e-006
+-0.70562 -0.70859 1.e-006
+-0.540787 -0.813569 0.213669
+-0.689155 -0.692184 0.214354
+-0.70562 -0.70859 1.e-006
+-0.553644 -0.832754 0
+-0.540787 -0.813569 0.213669
+-0.540787 -0.813569 0.213669
+-0.414522 -0.910039 0
+-0.404924 -0.888936 0.214079
+-0.540787 -0.813569 0.213669
+-0.553644 -0.832754 0
+-0.414522 -0.910039 0
+-0.404924 -0.888936 0.214079
+-0.223374 -0.974733 0
+-0.218182 -0.952074 0.214363
+-0.404924 -0.888936 0.214079
+-0.414522 -0.910039 0
+-0.223374 -0.974733 0
+-0.218182 -0.952074 0.214363
+-4.216e-002 -0.999111 0
+-4.1133e-002 -0.975968 0.213995
+-0.218182 -0.952074 0.214363
+-0.223374 -0.974733 0
+-4.216e-002 -0.999111 0
+-4.1133e-002 -0.975968 0.213995
+5.6428e-002 -0.998407 0
+5.5166e-002 -0.975302 0.213877
+-4.1133e-002 -0.975968 0.213995
+-4.216e-002 -0.999111 0
+5.6428e-002 -0.998407 0
+5.5166e-002 -0.975302 0.213877
+0.121866 -0.992547 0
+0.119034 -0.969557 0.213987
+5.5166e-002 -0.975302 0.213877
+5.6428e-002 -0.998407 0
+0.121866 -0.992547 0
+0.119034 -0.969557 0.213987
+0.220357 -0.975419 0
+0.215244 -0.952806 0.21408
+0.119034 -0.969557 0.213987
+0.121866 -0.992547 0
+0.220357 -0.975419 0
+0.215244 -0.952806 0.21408
+0.336063 -0.941839 0
+0.328297 -0.919992 0.214095
+0.215244 -0.952806 0.21408
+0.220357 -0.975419 0
+0.336063 -0.941839 0
+0.336063 -0.941839 0
+0.410749 -0.886296 0.213927
+0.328297 -0.919992 0.214095
+0.336063 -0.941839 0
+0.420459 -0.907311 -1.e-006
+0.410749 -0.886296 0.213927
+0.410749 -0.886296 0.213927
+0.484702 -0.87468 0
+0.473468 -0.854417 0.214008
+0.410749 -0.886296 0.213927
+0.420459 -0.907311 -1.e-006
+0.484702 -0.87468 0
+0.473468 -0.854417 0.214008
+0.563343 -0.826223 1.e-006
+0.551753 -0.812155 0.189664
+0.473468 -0.854417 0.214008
+0.484702 -0.87468 0
+0.563343 -0.826223 1.e-006
+0.563343 -0.826223 1.e-006
+0.593243 -0.787889 0.165206
+0.551753 -0.812155 0.189664
+0.563343 -0.826223 1.e-006
+0.604936 -0.796274 0
+0.593243 -0.787889 0.165206
+-0.979491 -0.113705 0.166338
+-0.990338 -0.138675 0
+-0.97162 -0.140763 0.190105
+-0.979491 -0.113705 0.166338
+-0.994442 -0.105289 0
+-0.990338 -0.138675 0
+-0.990338 -0.138675 0
+-0.97528 -0.220973 0
+-0.990338 -0.138675 0
+-0.990338 -0.138675 0
+-0.97528 -0.220973 0
+-0.97528 -0.220973 0
+-0.97528 -0.220973 0
+-0.944482 -0.328564 0
+-0.97528 -0.220973 0
+-0.97528 -0.220973 0
+-0.944482 -0.328564 0
+-0.944482 -0.328564 0
+-0.944482 -0.328564 0
+-0.92234 -0.386379 0
+-0.92234 -0.386379 1.e-006
+-0.944482 -0.328564 0
+-0.944482 -0.328564 0
+-0.92234 -0.386379 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0.8889 0.458101 0
+0.899821 0.436259 0
+0.899821 0.436259 0
+0.8889 0.458101 0
+0.8889 0.458101 0
+0.899821 0.436259 0
+0.899821 0.436259 0
+0.924868 0.380289 0
+0.924868 0.380289 0
+0.899821 0.436259 0
+0.899821 0.436259 0
+0.924868 0.380289 0
+0.924868 0.380289 0
+0.955857 0.293831 0
+0.955857 0.293831 0
+0.924868 0.380289 0
+0.924868 0.380289 0
+0.955857 0.293831 0
+0.955857 0.293831 0
+0.983135 0.182881 0
+0.955857 0.293831 0
+0.955857 0.293831 0
+0.983135 0.182881 0
+0.983135 0.182881 0
+0.983135 0.182881 0
+0.994861 0.101254 0
+0.994861 0.101254 0
+0.983135 0.182881 0
+0.983135 0.182881 0
+0.994861 0.101254 0
+0.994861 0.101254 0
+0.998235 5.938e-002 0
+0.994861 0.101254 0
+0.994861 0.101254 0
+0.998235 5.938e-002 0
+0.998235 5.938e-002 0
+0.998235 5.938e-002 0
+0.999661 2.6044e-002 0
+0.999661 2.6044e-002 0
+0.998235 5.938e-002 0
+0.998235 5.938e-002 0
+0.999661 2.6044e-002 0
+0.999661 2.6044e-002 0
+0.999983 5.776e-003 0
+0.999983 5.776e-003 0
+0.999661 2.6044e-002 0
+0.999661 2.6044e-002 0
+0.999983 5.776e-003 0
+0.999983 5.776e-003 0
+0.999994 3.608e-003 0
+0.999994 3.608e-003 0
+0.999983 5.776e-003 0
+0.999983 5.776e-003 0
+0.999994 3.608e-003 0
+0.999994 3.608e-003 0
+0.999899 1.4245e-002 0
+0.999899 1.4245e-002 0
+0.999994 3.608e-003 0
+0.999994 3.608e-003 0
+0.999899 1.4245e-002 0
+0.999899 1.4245e-002 0
+0.999389 3.4962e-002 0
+0.999389 3.4962e-002 0
+0.999899 1.4245e-002 0
+0.999899 1.4245e-002 0
+0.999389 3.4962e-002 0
+0.999389 3.4962e-002 0
+0.996675 8.1483e-002 0
+0.999389 3.4962e-002 0
+0.999389 3.4962e-002 0
+0.996675 8.1483e-002 0
+0.996675 8.1483e-002 0
+0.996675 8.1483e-002 0
+0.982192 0.187879 1.e-006
+0.996675 8.1483e-002 0
+0.996675 8.1483e-002 0
+0.982192 0.187879 0
+0.982192 0.187879 1.e-006
+0.982192 0.187879 1.e-006
+0.951725 0.306952 0
+0.951725 0.306952 4.e-006
+0.982192 0.187879 1.e-006
+0.982192 0.187879 0
+0.951725 0.306952 0
+0.951725 0.306952 4.e-006
+0.898857 0.438242 0
+0.898857 0.438242 1.e-005
+0.951725 0.306952 4.e-006
+0.951725 0.306952 0
+0.898857 0.438242 0
+0.898857 0.438242 1.e-005
+0.788227 0.615385 0
+0.788227 0.615385 1.1e-005
+0.898857 0.438242 1.e-005
+0.898857 0.438242 0
+0.788227 0.615385 0
+0.788227 0.615385 1.1e-005
+0.66071 0.750642 0
+0.66071 0.750642 6.e-006
+0.788227 0.615385 1.1e-005
+0.788227 0.615385 0
+0.66071 0.750642 0
+0.66071 0.750642 6.e-006
+0.528416 0.848986 0
+0.528416 0.848986 -5.e-006
+0.66071 0.750642 6.e-006
+0.66071 0.750642 0
+0.528416 0.848986 0
+0.528416 0.848986 -5.e-006
+0.369942 0.929055 0
+0.369942 0.929055 -4.e-006
+0.528416 0.848986 -5.e-006
+0.528416 0.848986 0
+0.369942 0.929055 0
+0.369942 0.929055 -4.e-006
+0.244855 0.96956 0
+0.244855 0.96956 -4.e-006
+0.369942 0.929055 -4.e-006
+0.369942 0.929055 0
+0.244855 0.96956 0
+0.244855 0.96956 0
+0.133941 0.990989 -9.e-006
+0.244855 0.96956 -4.e-006
+0.244855 0.96956 0
+0.133941 0.990989 0
+0.133941 0.990989 -9.e-006
+0.133941 0.990989 -9.e-006
+1.7452e-002 0.999848 0
+1.7452e-002 0.999848 1.3e-005
+0.133941 0.990989 -9.e-006
+0.133941 0.990989 0
+1.7452e-002 0.999848 0
+1.7452e-002 0.999848 1.3e-005
+-6.9419e-002 0.997588 0
+-6.9419e-002 0.997588 1.2e-005
+1.7452e-002 0.999848 1.3e-005
+1.7452e-002 0.999848 0
+-6.9419e-002 0.997588 0
+-6.9419e-002 0.997588 1.2e-005
+-0.169707 0.985495 0
+-0.169707 0.985495 -1.2e-005
+-6.9419e-002 0.997588 1.2e-005
+-6.9419e-002 0.997588 0
+-0.169707 0.985495 0
+-0.169707 0.985495 -1.2e-005
+-0.305751 0.952112 0
+-0.305751 0.952112 -3.e-006
+-0.169707 0.985495 -1.2e-005
+-0.169707 0.985495 0
+-0.305751 0.952112 0
+-0.305751 0.952112 -3.e-006
+-0.407188 0.913345 0
+-0.407188 0.913345 2.e-006
+-0.305751 0.952112 -3.e-006
+-0.305751 0.952112 0
+-0.407188 0.913345 0
+-0.407188 0.913345 2.e-006
+-0.490179 0.871622 0
+-0.490179 0.871622 -1.2e-005
+-0.407188 0.913345 2.e-006
+-0.407188 0.913345 0
+-0.490179 0.871622 0
+-0.490179 0.871622 0
+-0.617849 0.786297 -7.e-006
+-0.490179 0.871622 -1.2e-005
+-0.490179 0.871622 0
+-0.617849 0.786297 0
+-0.617849 0.786297 -7.e-006
+-0.617849 0.786297 -7.e-006
+-0.761758 0.647861 0
+-0.761758 0.647861 3.e-006
+-0.617849 0.786297 -7.e-006
+-0.617849 0.786297 0
+-0.761758 0.647861 0
+-0.761758 0.647861 3.e-006
+-0.85698 0.51535 0
+-0.85698 0.51535 1.e-006
+-0.761758 0.647861 3.e-006
+-0.761758 0.647861 0
+-0.85698 0.51535 0
+-0.85698 0.51535 0
+-0.922517 0.385957 -2.e-006
+-0.85698 0.51535 1.e-006
+-0.85698 0.51535 0
+-0.922517 0.385957 0
+-0.922517 0.385957 -2.e-006
+-0.922517 0.385957 0
+-0.952225 0.305397 0
+-0.922517 0.385957 -2.e-006
+-0.922517 0.385957 0
+-0.952225 0.305397 0
+-0.952225 0.305397 0
+-0.13509 -0.990833 3.e-006
+-0.13509 -0.990833 0
+-0.13509 -0.990833 3.e-006
+-0.13509 -0.990833 3.e-006
+-0.13509 -0.990833 0
+-0.13509 -0.990833 0
+0.958104 -0.286421 6.e-006
+0.947083 -0.320989 0
+0.947083 -0.320989 2.e-006
+0.958104 -0.286421 6.e-006
+0.958104 -0.286421 0
+0.947083 -0.320989 0
+0.947083 -0.320989 2.e-006
+0.909846 -0.414945 0
+0.909846 -0.414945 -5.e-006
+0.947083 -0.320989 2.e-006
+0.947083 -0.320989 0
+0.909846 -0.414945 0
+0.909846 -0.414945 0
+0.81637 -0.57753 -1.1e-005
+0.909846 -0.414945 -5.e-006
+0.909846 -0.414945 0
+0.81637 -0.57753 0
+0.81637 -0.57753 -1.1e-005
+0.81637 -0.57753 0
+0.635929 -0.771748 4.e-006
+0.81637 -0.57753 -1.1e-005
+0.81637 -0.57753 0
+0.635929 -0.771748 0
+0.635929 -0.771748 4.e-006
+0.635929 -0.771748 0
+0.462539 -0.886599 1.2e-005
+0.635929 -0.771748 4.e-006
+0.635929 -0.771748 0
+0.462539 -0.886599 0
+0.462539 -0.886599 1.2e-005
+0.462539 -0.886599 0
+0.329324 -0.944217 -4.e-006
+0.462539 -0.886599 1.2e-005
+0.462539 -0.886599 0
+0.329324 -0.944217 0
+0.329324 -0.944217 -4.e-006
+0.329324 -0.944217 -4.e-006
+0.168929 -0.985628 0
+0.168929 -0.985628 -1.2e-005
+0.329324 -0.944217 -4.e-006
+0.329324 -0.944217 0
+0.168929 -0.985628 0
+0.168929 -0.985628 0
+2.0516e-002 -0.99979 0
+0.168929 -0.985628 -1.2e-005
+0.168929 -0.985628 0
+2.0516e-002 -0.99979 0
+2.0516e-002 -0.99979 0
+2.0516e-002 -0.99979 0
+-8.239e-002 -0.9966 0
+-8.239e-002 -0.9966 -2.e-006
+2.0516e-002 -0.99979 0
+2.0516e-002 -0.99979 0
+-8.239e-002 -0.9966 0
+-8.239e-002 -0.9966 0
+-0.191546 -0.981484 -1.2e-005
+-8.239e-002 -0.9966 -2.e-006
+-8.239e-002 -0.9966 0
+-0.191546 -0.981484 0
+-0.191546 -0.981484 -1.2e-005
+-0.191546 -0.981484 -1.2e-005
+-0.383203 -0.923664 0
+-0.383203 -0.923664 4.e-006
+-0.191546 -0.981484 -1.2e-005
+-0.191546 -0.981484 0
+-0.383203 -0.923664 0
+-0.383203 -0.923664 0
+-0.627017 -0.779006 5.e-006
+-0.383203 -0.923664 4.e-006
+-0.383203 -0.923664 0
+-0.627017 -0.779006 0
+-0.627017 -0.779006 5.e-006
+-0.627017 -0.779006 0
+-0.79419 -0.607669 1.e-006
+-0.627017 -0.779006 5.e-006
+-0.627017 -0.779006 0
+-0.79419 -0.607669 0
+-0.79419 -0.607669 1.e-006
+-0.79419 -0.607669 1.e-006
+-0.896744 -0.44255 0
+-0.896744 -0.44255 5.e-006
+-0.79419 -0.607669 1.e-006
+-0.79419 -0.607669 0
+-0.896744 -0.44255 0
+-0.896744 -0.44255 5.e-006
+-0.973472 -0.228806 0
+-0.973472 -0.228806 2.e-006
+-0.896744 -0.44255 5.e-006
+-0.896744 -0.44255 0
+-0.973472 -0.228806 0
+-0.973472 -0.228806 2.e-006
+-0.998422 -5.615e-002 0
+-0.998422 -5.615e-002 0
+-0.973472 -0.228806 2.e-006
+-0.973472 -0.228806 0
+-0.998422 -5.615e-002 0
+-0.998422 -5.615e-002 0
+-1. 0 0
+-1. 0 0
+-0.998422 -5.615e-002 0
+-0.998422 -5.615e-002 0
+-1. 0 0
+-0.294993 0.955499 0
+-0.271752 0.962367 2.e-006
+-0.294993 0.955499 1.4e-005
+-0.294993 0.955499 0
+-0.271752 0.962367 0
+-0.271752 0.962367 2.e-006
+-0.271752 0.962367 0
+-0.222462 0.974941 -3.e-006
+-0.271752 0.962367 2.e-006
+-0.271752 0.962367 0
+-0.222462 0.974941 0
+-0.222462 0.974941 -3.e-006
+-0.222462 0.974941 0
+-0.170051 0.985435 -1.e-006
+-0.222462 0.974941 -3.e-006
+-0.222462 0.974941 0
+-0.170051 0.985435 0
+-0.170051 0.985435 -1.e-006
+-0.170051 0.985435 0
+-0.135289 0.990806 3.e-006
+-0.170051 0.985435 -1.e-006
+-0.170051 0.985435 0
+-0.135289 0.990806 0
+-0.135289 0.990806 3.e-006
+-0.135289 0.990806 3.e-006
+-0.133203 0.991089 0
+-0.133203 0.991089 9.e-006
+-0.135289 0.990806 3.e-006
+-0.135289 0.990806 0
+-0.133203 0.991089 0
+-0.133203 0.991089 0
+-0.150716 0.988577 1.2e-005
+-0.133203 0.991089 9.e-006
+-0.133203 0.991089 0
+-0.150716 0.988577 0
+-0.150716 0.988577 1.2e-005
+-0.150716 0.988577 1.2e-005
+-0.185672 0.982612 0
+-0.185672 0.982612 5.e-006
+-0.150716 0.988577 1.2e-005
+-0.150716 0.988577 0
+-0.185672 0.982612 0
+-0.185672 0.982612 5.e-006
+-0.251862 0.967763 0
+-0.251862 0.967763 -4.e-006
+-0.185672 0.982612 5.e-006
+-0.185672 0.982612 0
+-0.251862 0.967763 0
+-0.251862 0.967763 0
+-0.31612 0.948719 6.e-006
+-0.251862 0.967763 -4.e-006
+-0.251862 0.967763 0
+-0.31612 0.948719 0
+-0.31612 0.948719 6.e-006
+-0.31612 0.948719 0
+-0.371252 0.928532 6.e-006
+-0.31612 0.948719 6.e-006
+-0.31612 0.948719 0
+-0.371252 0.928532 0
+-0.371252 0.928532 6.e-006
+-0.371252 0.928532 6.e-006
+-0.452717 0.891654 0
+-0.452717 0.891654 2.e-006
+-0.371252 0.928532 6.e-006
+-0.371252 0.928532 0
+-0.452717 0.891654 0
+-0.452717 0.891654 2.e-006
+-0.549777 0.835311 0
+-0.549777 0.835311 6.e-006
+-0.452717 0.891654 2.e-006
+-0.452717 0.891654 0
+-0.549777 0.835311 0
+-0.549777 0.835311 6.e-006
+-0.626525 0.779401 0
+-0.626525 0.779401 2.e-006
+-0.549777 0.835311 6.e-006
+-0.549777 0.835311 0
+-0.626525 0.779401 0
+-0.626525 0.779401 0
+-0.69446 0.719531 -6.e-006
+-0.626525 0.779401 2.e-006
+-0.626525 0.779401 0
+-0.69446 0.719531 0
+-0.69446 0.719531 -6.e-006
+-0.69446 0.719531 -6.e-006
+-0.781904 0.623398 0
+-0.781904 0.623398 -5.e-006
+-0.69446 0.719531 -6.e-006
+-0.69446 0.719531 0
+-0.781904 0.623398 0
+-0.781904 0.623398 -5.e-006
+-0.864527 0.502586 0
+-0.864527 0.502586 -1.e-006
+-0.781904 0.623398 -5.e-006
+-0.781904 0.623398 0
+-0.864527 0.502586 0
+-0.864527 0.502586 -1.e-006
+-0.914247 0.405156 0
+-0.914247 0.405156 2.e-006
+-0.864527 0.502586 -1.e-006
+-0.864527 0.502586 0
+-0.914247 0.405156 0
+-0.914247 0.405156 0
+-0.949091 0.315001 -1.e-006
+-0.914247 0.405156 2.e-006
+-0.914247 0.405156 0
+-0.949091 0.315001 0
+-0.949091 0.315001 -1.e-006
+-0.949091 0.315001 0
+-0.983578 0.180481 -1.e-006
+-0.949091 0.315001 -1.e-006
+-0.949091 0.315001 0
+-0.983578 0.180481 0
+-0.983578 0.180481 -1.e-006
+-0.983578 0.180481 0
+-0.999857 1.6922e-002 0
+-0.983578 0.180481 -1.e-006
+-0.983578 0.180481 0
+-0.999857 1.6922e-002 0
+-0.999857 1.6922e-002 0
+-0.999857 1.6922e-002 0
+-0.992148 -0.125071 1.e-006
+-0.999857 1.6922e-002 0
+-0.999857 1.6922e-002 0
+-0.992148 -0.125071 0
+-0.992148 -0.125071 1.e-006
+-0.992148 -0.125071 0
+-0.961274 -0.275593 0
+-0.992148 -0.125071 1.e-006
+-0.992148 -0.125071 0
+-0.961274 -0.275593 0
+-0.961274 -0.275593 0
+-0.961274 -0.275593 0
+-0.869691 -0.493596 0
+-0.961274 -0.275593 0
+-0.961274 -0.275593 0
+-0.869691 -0.493596 0
+-0.869691 -0.493596 0
+-0.869691 -0.493596 0
+-0.70562 -0.70859 1.e-006
+-0.869691 -0.493596 0
+-0.869691 -0.493596 0
+-0.70562 -0.70859 0
+-0.70562 -0.70859 1.e-006
+-0.70562 -0.70859 0
+-0.553644 -0.832754 0
+-0.70562 -0.70859 1.e-006
+-0.70562 -0.70859 0
+-0.553644 -0.832754 0
+-0.553644 -0.832754 0
+-0.553644 -0.832754 0
+-0.414522 -0.910039 0
+-0.414522 -0.910039 0
+-0.553644 -0.832754 0
+-0.553644 -0.832754 0
+-0.414522 -0.910039 0
+-0.414522 -0.910039 0
+-0.223374 -0.974733 0
+-0.223374 -0.974733 0
+-0.414522 -0.910039 0
+-0.414522 -0.910039 0
+-0.223374 -0.974733 0
+-0.223374 -0.974733 0
+-4.216e-002 -0.999111 0
+-4.216e-002 -0.999111 0
+-0.223374 -0.974733 0
+-0.223374 -0.974733 0
+-4.216e-002 -0.999111 0
+-4.216e-002 -0.999111 0
+5.6428e-002 -0.998407 0
+5.6428e-002 -0.998407 0
+-4.216e-002 -0.999111 0
+-4.216e-002 -0.999111 0
+5.6428e-002 -0.998407 0
+5.6428e-002 -0.998407 0
+0.121866 -0.992547 0
+0.121866 -0.992547 0
+5.6428e-002 -0.998407 0
+5.6428e-002 -0.998407 0
+0.121866 -0.992547 0
+0.121866 -0.992547 0
+0.220357 -0.975419 0
+0.220357 -0.975419 0
+0.121866 -0.992547 0
+0.121866 -0.992547 0
+0.220357 -0.975419 0
+0.220357 -0.975419 0
+0.336063 -0.941839 0
+0.336063 -0.941839 0
+0.220357 -0.975419 0
+0.220357 -0.975419 0
+0.336063 -0.941839 0
+0.336063 -0.941839 0
+0.420459 -0.907311 0
+0.420459 -0.907311 -1.e-006
+0.336063 -0.941839 0
+0.336063 -0.941839 0
+0.420459 -0.907311 0
+0.420459 -0.907311 0
+0.484702 -0.87468 0
+0.420459 -0.907311 -1.e-006
+0.420459 -0.907311 0
+0.484702 -0.87468 0
+0.484702 -0.87468 0
+0.484702 -0.87468 0
+0.563343 -0.826223 0
+0.563343 -0.826223 1.e-006
+0.484702 -0.87468 0
+0.484702 -0.87468 0
+0.563343 -0.826223 0
+0.563343 -0.826223 1.e-006
+0.604936 -0.796274 0
+0.604936 -0.796274 0
+0.563343 -0.826223 1.e-006
+0.563343 -0.826223 0
+0.604936 -0.796274 0
+-0.994442 -0.105289 0
+-0.990338 -0.138675 0
+-0.990338 -0.138675 0
+-0.994442 -0.105289 0
+-0.994442 -0.105289 0
+-0.990338 -0.138675 0
+0 0 1.
+-0.213795 9.636e-003 0.976831
+0 0 1.
+0 0 1.
+-0.234543 -2.357e-003 0.972103
+-0.213795 9.636e-003 0.976831
+0 0 1.
+-0.212859 2.2676e-002 0.97682
+0 0 1.
+0 0 1.
+-0.213795 9.636e-003 0.976831
+-0.212859 2.2676e-002 0.97682
+0 0 1.
+-0.208576 4.7541e-002 0.97685
+0 0 1.
+0 0 1.
+-0.212859 2.2676e-002 0.97682
+-0.208576 4.7541e-002 0.97685
+0 0 1.
+-0.196533 8.3758e-002 0.976913
+0 0 1.
+0 0 1.
+-0.208576 4.7541e-002 0.97685
+-0.196533 8.3758e-002 0.976913
+-0.196533 8.3758e-002 0.976913
+0 0 1.
+0 0 1.
+-0.196533 8.3758e-002 0.976913
+-0.182463 0.112228 0.976787
+0 0 1.
+0 0 1.
+-0.167696 0.132952 0.976833
+0 0 1.
+0 0 1.
+-0.182463 0.112228 0.976787
+-0.167696 0.132952 0.976833
+0 0 1.
+-0.142645 0.159174 0.976891
+0 0 1.
+0 0 1.
+-0.167696 0.132952 0.976833
+-0.142645 0.159174 0.976891
+-0.142645 0.159174 0.976891
+0 0 1.
+0 0 1.
+-0.142645 0.159174 0.976891
+-0.111236 0.182669 0.976862
+0 0 1.
+-0.111236 0.182669 0.976862
+0 0 1.
+0 0 1.
+-0.111236 0.182669 0.976862
+-8.7426e-002 0.195489 0.976801
+0 0 1.
+0 0 1.
+-6.7151e-002 0.203186 0.976835
+0 0 1.
+0 0 1.
+-8.7426e-002 0.195489 0.976801
+-6.7151e-002 0.203186 0.976835
+0 0 1.
+-3.7962e-002 0.210432 0.976871
+0 0 1.
+0 0 1.
+-6.7151e-002 0.203186 0.976835
+-3.7962e-002 0.210432 0.976871
+-3.7962e-002 0.210432 0.976871
+0 0 1.
+0 0 1.
+-3.7962e-002 0.210432 0.976871
+-5.841e-003 0.213838 0.976852
+0 0 1.
+-5.841e-003 0.213838 0.976852
+0 0 1.
+0 0 1.
+-5.841e-003 0.213838 0.976852
+1.7853e-002 0.213389 0.976804
+0 0 1.
+0 0 1.
+4.1574e-002 0.210065 0.976803
+0 0 1.
+0 0 1.
+1.7853e-002 0.213389 0.976804
+4.1574e-002 0.210065 0.976803
+0 0 1.
+8.235e-002 0.197183 0.976902
+0 0 1.
+0 0 1.
+4.1574e-002 0.210065 0.976803
+8.235e-002 0.197183 0.976902
+0 0 1.
+0.132567 0.167254 0.976961
+0 0 1.
+0 0 1.
+8.235e-002 0.197183 0.976902
+0.132567 0.167254 0.976961
+0.132567 0.167254 0.976961
+0 0 1.
+0 0 1.
+0.132567 0.167254 0.976961
+0.169901 0.131144 0.976696
+0 0 1.
+0 0 1.
+0.197053 8.1104e-002 0.977032
+0 0 1.
+0 0 1.
+0.169901 0.131144 0.976696
+0.197053 8.1104e-002 0.977032
+0.197053 8.1104e-002 0.977032
+0 0 1.
+0 0 1.
+0.197053 8.1104e-002 0.977032
+0.212979 1.6801e-002 0.976912
+0 0 1.
+0.212979 1.6801e-002 0.976912
+0 0 1.
+0 0 1.
+0.212979 1.6801e-002 0.976912
+0.212671 -2.7979e-002 0.976723
+0 0 1.
+0 0 1.
+0.203536 -6.5137e-002 0.976898
+0 0 1.
+0 0 1.
+0.212671 -2.7979e-002 0.976723
+0.203536 -6.5137e-002 0.976898
+0 0 1.
+0.183679 -0.109182 0.976904
+0 0 1.
+0 0 1.
+0.203536 -6.5137e-002 0.976898
+0.183679 -0.109182 0.976904
+0.183679 -0.109182 0.976904
+0 0 1.
+0 0 1.
+0.183679 -0.109182 0.976904
+0.160907 -0.14156 0.976765
+0 0 1.
+0 0 1.
+0.132035 -0.167981 0.976908
+0 0 1.
+0 0 1.
+0.160907 -0.14156 0.976765
+0.132035 -0.167981 0.976908
+0.132035 -0.167981 0.976908
+0 0 1.
+0 0 1.
+0.132035 -0.167981 0.976908
+9.306e-002 -0.192419 0.97689
+0 0 1.
+9.306e-002 -0.192419 0.97689
+0 0 1.
+0 0 1.
+9.306e-002 -0.192419 0.97689
+6.4398e-002 -0.204278 0.976792
+0 0 1.
+0 0 1.
+4.712e-002 -0.208692 0.976846
+0 0 1.
+0 0 1.
+6.4398e-002 -0.204278 0.976792
+4.712e-002 -0.208692 0.976846
+4.712e-002 -0.208692 0.976846
+0 0 1.
+0 0 1.
+4.712e-002 -0.208692 0.976846
+3.5616e-002 -0.211049 0.976826
+0 0 1.
+3.5616e-002 -0.211049 0.976826
+0 0 1.
+0 0 1.
+3.5616e-002 -0.211049 0.976826
+3.5263e-002 -0.21108 0.976833
+0 0 1.
+3.5263e-002 -0.21108 0.976833
+0 0 1.
+0 0 1.
+3.5263e-002 -0.21108 0.976833
+4.2093e-002 -0.209841 0.976829
+0 0 1.
+4.2093e-002 -0.209841 0.976829
+0 0 1.
+0 0 1.
+4.2093e-002 -0.209841 0.976829
+5.8172e-002 -0.227722 0.971987
+0 0 1.
+0 0 1.
+-9.4579e-002 -0.130807 0.986886
+0 0 1.
+0 0 1.
+5.8172e-002 -0.227722 0.971987
+-9.4579e-002 -0.130807 0.986886
+-9.4579e-002 -0.130807 0.986886
+0 0 1.
+0 0 1.
+-9.4579e-002 -0.130807 0.986886
+-0.234543 -2.357e-003 0.972103
+0 0 1.
+-0.234543 -2.357e-003 0.972103
+-0.706398 3.1812e-002 0.707099
+-0.213795 9.636e-003 0.976831
+-0.234543 -2.357e-003 0.972103
+-0.735417 7.49e-004 0.677614
+-0.706398 3.1812e-002 0.707099
+-0.213795 9.636e-003 0.976831
+-0.703192 7.4841e-002 0.70705
+-0.212859 2.2676e-002 0.97682
+-0.213795 9.636e-003 0.976831
+-0.706398 3.1812e-002 0.707099
+-0.703192 7.4841e-002 0.70705
+-0.212859 2.2676e-002 0.97682
+-0.689178 0.156962 0.707387
+-0.208576 4.7541e-002 0.97685
+-0.212859 2.2676e-002 0.97682
+-0.703192 7.4841e-002 0.70705
+-0.689178 0.156962 0.707387
+-0.208576 4.7541e-002 0.97685
+-0.649623 0.277159 0.707935
+-0.196533 8.3758e-002 0.976913
+-0.208576 4.7541e-002 0.97685
+-0.689178 0.156962 0.707387
+-0.649623 0.277159 0.707935
+-0.649623 0.277159 0.707935
+-0.182463 0.112228 0.976787
+-0.196533 8.3758e-002 0.976913
+-0.649623 0.277159 0.707935
+-0.602371 0.370823 0.706852
+-0.182463 0.112228 0.976787
+-0.182463 0.112228 0.976787
+-0.554057 0.439116 0.707247
+-0.167696 0.132952 0.976833
+-0.182463 0.112228 0.976787
+-0.602371 0.370823 0.706852
+-0.554057 0.439116 0.707247
+-0.167696 0.132952 0.976833
+-0.471489 0.526068 0.707779
+-0.142645 0.159174 0.976891
+-0.167696 0.132952 0.976833
+-0.554057 0.439116 0.707247
+-0.471489 0.526068 0.707779
+-0.471489 0.526068 0.707779
+-0.111236 0.182669 0.976862
+-0.142645 0.159174 0.976891
+-0.471489 0.526068 0.707779
+-0.367346 0.603731 0.707506
+-0.111236 0.182669 0.976862
+-0.367346 0.603731 0.707506
+-8.7426e-002 0.195489 0.976801
+-0.111236 0.182669 0.976862
+-0.367346 0.603731 0.707506
+-0.288581 0.645724 0.706938
+-8.7426e-002 0.195489 0.976801
+-8.7426e-002 0.195489 0.976801
+-0.221919 0.671264 0.707218
+-6.7151e-002 0.203186 0.976835
+-8.7426e-002 0.195489 0.976801
+-0.288581 0.645724 0.706938
+-0.221919 0.671264 0.707218
+-6.7151e-002 0.203186 0.976835
+-0.12548 0.695436 0.707547
+-3.7962e-002 0.210432 0.976871
+-6.7151e-002 0.203186 0.976835
+-0.221919 0.671264 0.707218
+-0.12548 0.695436 0.707547
+-0.12548 0.695436 0.707547
+-5.841e-003 0.213838 0.976852
+-3.7962e-002 0.210432 0.976871
+-0.12548 0.695436 0.707547
+-1.9162e-002 0.706584 0.707369
+-5.841e-003 0.213838 0.976852
+-1.9162e-002 0.706584 0.707369
+1.7853e-002 0.213389 0.976804
+-5.841e-003 0.213838 0.976852
+-1.9162e-002 0.706584 0.707369
+5.9029e-002 0.704792 0.706954
+1.7853e-002 0.213389 0.976804
+1.7853e-002 0.213389 0.976804
+0.137078 0.693755 0.707045
+4.1574e-002 0.210065 0.976803
+1.7853e-002 0.213389 0.976804
+5.9029e-002 0.704792 0.706954
+0.137078 0.693755 0.707045
+4.1574e-002 0.210065 0.976803
+0.271896 0.651725 0.708045
+8.235e-002 0.197183 0.976902
+4.1574e-002 0.210065 0.976803
+0.137078 0.693755 0.707045
+0.271896 0.651725 0.708045
+8.235e-002 0.197183 0.976902
+0.438558 0.552781 0.70859
+0.132567 0.167254 0.976961
+8.235e-002 0.197183 0.976902
+0.271896 0.651725 0.708045
+0.438558 0.552781 0.70859
+0.438558 0.552781 0.70859
+0.169901 0.131144 0.976696
+0.132567 0.167254 0.976961
+0.438558 0.552781 0.70859
+0.560324 0.432415 0.706438
+0.169901 0.131144 0.976696
+0.169901 0.131144 0.976696
+0.65178 0.268525 0.709279
+0.197053 8.1104e-002 0.977032
+0.169901 0.131144 0.976696
+0.560324 0.432415 0.706438
+0.65178 0.268525 0.709279
+0.65178 0.268525 0.709279
+0.212979 1.6801e-002 0.976912
+0.197053 8.1104e-002 0.977032
+0.65178 0.268525 0.709279
+0.703842 5.4636e-002 0.708253
+0.212979 1.6801e-002 0.976912
+0.703842 5.4636e-002 0.708253
+0.212671 -2.7979e-002 0.976723
+0.212979 1.6801e-002 0.976912
+0.703842 5.4636e-002 0.708253
+0.701624 -9.2846e-002 0.706473
+0.212671 -2.7979e-002 0.976723
+0.212671 -2.7979e-002 0.976723
+0.672759 -0.21509 0.707906
+0.203536 -6.5137e-002 0.976898
+0.212671 -2.7979e-002 0.976723
+0.701624 -9.2846e-002 0.706473
+0.672759 -0.21509 0.707906
+0.203536 -6.5137e-002 0.976898
+0.606895 -0.36119 0.707969
+0.183679 -0.109182 0.976904
+0.203536 -6.5137e-002 0.976898
+0.672759 -0.21509 0.707906
+0.606895 -0.36119 0.707969
+0.606895 -0.36119 0.707969
+0.160907 -0.14156 0.976765
+0.183679 -0.109182 0.976904
+0.606895 -0.36119 0.707969
+0.531005 -0.467442 0.706776
+0.160907 -0.14156 0.976765
+0.160907 -0.14156 0.976765
+0.436542 -0.555162 0.707973
+0.132035 -0.167981 0.976908
+0.160907 -0.14156 0.976765
+0.531005 -0.467442 0.706776
+0.436542 -0.555162 0.707973
+0.436542 -0.555162 0.707973
+9.306e-002 -0.192419 0.97689
+0.132035 -0.167981 0.976908
+0.436542 -0.555162 0.707973
+0.307219 -0.636106 0.707804
+9.306e-002 -0.192419 0.97689
+0.307219 -0.636106 0.707804
+6.4398e-002 -0.204278 0.976792
+9.306e-002 -0.192419 0.97689
+0.307219 -0.636106 0.707804
+0.21236 -0.674707 0.706876
+6.4398e-002 -0.204278 0.976792
+6.4398e-002 -0.204278 0.976792
+0.155695 -0.68962 0.707236
+4.712e-002 -0.208692 0.976846
+6.4398e-002 -0.204278 0.976792
+0.21236 -0.674707 0.706876
+0.155695 -0.68962 0.707236
+0.155695 -0.68962 0.707236
+3.5616e-002 -0.211049 0.976826
+4.712e-002 -0.208692 0.976846
+0.155695 -0.68962 0.707236
+0.117661 -0.697294 0.707062
+3.5616e-002 -0.211049 0.976826
+0.117661 -0.697294 0.707062
+3.5263e-002 -0.21108 0.976833
+3.5616e-002 -0.211049 0.976826
+0.117661 -0.697294 0.707062
+0.116516 -0.697447 0.707101
+3.5263e-002 -0.21108 0.976833
+0.116516 -0.697447 0.707101
+4.2093e-002 -0.209841 0.976829
+3.5263e-002 -0.21108 0.976833
+0.116516 -0.697447 0.707101
+0.139083 -0.693312 0.707088
+4.2093e-002 -0.209841 0.976829
+0.139083 -0.693312 0.707088
+5.8172e-002 -0.227722 0.971987
+4.2093e-002 -0.209841 0.976829
+0.139083 -0.693312 0.707088
+0.186296 -0.711761 0.677267
+5.8172e-002 -0.227722 0.971987
+5.8172e-002 -0.227722 0.971987
+-3.3094e-002 -0.555539 0.830832
+-9.4579e-002 -0.130807 0.986886
+5.8172e-002 -0.227722 0.971987
+0.186296 -0.711761 0.677267
+-3.3094e-002 -0.555539 0.830832
+-0.517539 -0.201411 0.831617
+-0.234543 -2.357e-003 0.972103
+-9.4579e-002 -0.130807 0.986886
+-0.517539 -0.201411 0.831617
+-0.735417 7.49e-004 0.677614
+-0.234543 -2.357e-003 0.972103
+-0.735417 7.49e-004 0.677614
+-0.97585 4.3919e-002 0.213982
+-0.706398 3.1812e-002 0.707099
+-0.735417 7.49e-004 0.677614
+-0.980828 8.972e-003 0.194671
+-0.97585 4.3919e-002 0.213982
+-0.706398 3.1812e-002 0.707099
+-0.971372 0.103316 0.213923
+-0.703192 7.4841e-002 0.70705
+-0.706398 3.1812e-002 0.707099
+-0.97585 4.3919e-002 0.213982
+-0.971372 0.103316 0.213923
+-0.703192 7.4841e-002 0.70705
+-0.952455 0.216808 0.214066
+-0.689178 0.156962 0.707387
+-0.703192 7.4841e-002 0.70705
+-0.971372 0.103316 0.213923
+-0.952455 0.216808 0.214066
+-0.689178 0.156962 0.707387
+-0.898293 0.383554 0.214374
+-0.649623 0.277159 0.707935
+-0.689178 0.156962 0.707387
+-0.952455 0.216808 0.214066
+-0.898293 0.383554 0.214374
+-0.898293 0.383554 0.214374
+-0.602371 0.370823 0.706852
+-0.649623 0.277159 0.707935
+-0.898293 0.383554 0.214374
+-0.831747 0.512346 0.213773
+-0.602371 0.370823 0.706852
+-0.602371 0.370823 0.706852
+-0.765624 0.606649 0.214
+-0.554057 0.439116 0.707247
+-0.602371 0.370823 0.706852
+-0.831747 0.512346 0.213773
+-0.765624 0.606649 0.214
+-0.554057 0.439116 0.707247
+-0.651947 0.72736 0.214272
+-0.471489 0.526068 0.707779
+-0.554057 0.439116 0.707247
+-0.765624 0.606649 0.214
+-0.651947 0.72736 0.214272
+-0.651947 0.72736 0.214272
+-0.367346 0.603731 0.707506
+-0.471489 0.526068 0.707779
+-0.651947 0.72736 0.214272
+-0.50753 0.834601 0.214136
+-0.367346 0.603731 0.707506
+-0.50753 0.834601 0.214136
+-0.288581 0.645724 0.706938
+-0.367346 0.603731 0.707506
+-0.50753 0.834601 0.214136
+-0.398416 0.891927 0.213849
+-0.288581 0.645724 0.706938
+-0.288581 0.645724 0.706938
+-0.306681 0.927442 0.214005
+-0.221919 0.671264 0.707218
+-0.288581 0.645724 0.706938
+-0.398416 0.891927 0.213849
+-0.306681 0.927442 0.214005
+-0.221919 0.671264 0.707218
+-0.173466 0.96127 0.214171
+-0.12548 0.695436 0.707547
+-0.221919 0.671264 0.707218
+-0.306681 0.927442 0.214005
+-0.173466 0.96127 0.214171
+-0.173466 0.96127 0.214171
+-1.9162e-002 0.706584 0.707369
+-0.12548 0.695436 0.707547
+-0.173466 0.96127 0.214171
+-2.6344e-002 0.97646 0.214082
+-1.9162e-002 0.706584 0.707369
+-2.6344e-002 0.97646 0.214082
+5.9029e-002 0.704792 0.706954
+-1.9162e-002 0.706584 0.707369
+-2.6344e-002 0.97646 0.214082
+8.1593e-002 0.973451 0.213858
+5.9029e-002 0.704792 0.706954
+5.9029e-002 0.704792 0.706954
+0.189149 0.958379 0.213853
+0.137078 0.693755 0.707045
+5.9029e-002 0.704792 0.706954
+8.1593e-002 0.973451 0.213858
+0.189149 0.958379 0.213853
+0.137078 0.693755 0.707045
+0.375848 0.901559 0.214311
+0.271896 0.651725 0.708045
+0.137078 0.693755 0.707045
+0.189149 0.958379 0.213853
+0.375848 0.901559 0.214311
+0.271896 0.651725 0.708045
+0.607296 0.764943 0.214603
+0.438558 0.552781 0.70859
+0.271896 0.651725 0.708045
+0.375848 0.901559 0.214311
+0.607296 0.764943 0.214603
+0.607296 0.764943 0.214603
+0.560324 0.432415 0.706438
+0.438558 0.552781 0.70859
+0.607296 0.764943 0.214603
+0.773491 0.596825 0.213335
+0.560324 0.432415 0.706438
+0.560324 0.432415 0.706438
+0.902908 0.372239 0.21493
+0.65178 0.268525 0.709279
+0.560324 0.432415 0.706438
+0.773491 0.596825 0.213335
+0.902908 0.372239 0.21493
+0.902908 0.372239 0.21493
+0.703842 5.4636e-002 0.708253
+0.65178 0.268525 0.709279
+0.902908 0.372239 0.21493
+0.973886 7.4719e-002 0.214392
+0.703842 5.4636e-002 0.708253
+0.973886 7.4719e-002 0.214392
+0.701624 -9.2846e-002 0.706473
+0.703842 5.4636e-002 0.708253
+0.973886 7.4719e-002 0.214392
+0.968438 -0.128698 0.21346
+0.701624 -9.2846e-002 0.706473
+0.701624 -9.2846e-002 0.706473
+0.930434 -0.297266 0.214301
+0.672759 -0.21509 0.707906
+0.701624 -9.2846e-002 0.706473
+0.968438 -0.128698 0.21346
+0.930434 -0.297266 0.214301
+0.672759 -0.21509 0.707906
+0.839166 -0.499861 0.214334
+0.606895 -0.36119 0.707969
+0.672759 -0.21509 0.707906
+0.930434 -0.297266 0.214301
+0.839166 -0.499861 0.214334
+0.839166 -0.499861 0.214334
+0.531005 -0.467442 0.706776
+0.606895 -0.36119 0.707969
+0.839166 -0.499861 0.214334
+0.733127 -0.645657 0.213665
+0.531005 -0.467442 0.706776
+0.531005 -0.467442 0.706776
+0.603864 -0.767727 0.214345
+0.436542 -0.555162 0.707973
+0.531005 -0.467442 0.706776
+0.733127 -0.645657 0.213665
+0.603864 -0.767727 0.214345
+0.603864 -0.767727 0.214345
+0.307219 -0.636106 0.707804
+0.436542 -0.555162 0.707973
+0.603864 -0.767727 0.214345
+0.424466 -0.879727 0.214265
+0.307219 -0.636106 0.707804
+0.424466 -0.879727 0.214265
+0.21236 -0.674707 0.706876
+0.307219 -0.636106 0.707804
+0.424466 -0.879727 0.214265
+0.292977 -0.931907 0.213806
+0.21236 -0.674707 0.706876
+0.21236 -0.674707 0.706876
+0.215111 -0.952842 0.214054
+0.155695 -0.68962 0.707236
+0.21236 -0.674707 0.706876
+0.292977 -0.931907 0.213806
+0.215111 -0.952842 0.214054
+0.215111 -0.952842 0.214054
+0.117661 -0.697294 0.707062
+0.155695 -0.68962 0.707236
+0.215111 -0.952842 0.214054
+0.162522 -0.963226 0.213969
+0.117661 -0.697294 0.707062
+0.162522 -0.963226 0.213969
+0.116516 -0.697447 0.707101
+0.117661 -0.697294 0.707062
+0.162522 -0.963226 0.213969
+0.160962 -0.963482 0.213995
+0.116516 -0.697447 0.707101
+0.160962 -0.963482 0.213995
+0.139083 -0.693312 0.707088
+0.116516 -0.697447 0.707101
+0.160962 -0.963482 0.213995
+0.192142 -0.957756 0.213974
+0.139083 -0.693312 0.707088
+0.192142 -0.957756 0.213974
+0.186296 -0.711761 0.677267
+0.139083 -0.693312 0.707088
+0.192142 -0.957756 0.213974
+0.252557 -0.947803 0.194638
+0.186296 -0.711761 0.677267
+0.186296 -0.711761 0.677267
+0.29216 -0.940196 0.175137
+0.218527 -0.731395 0.645993
+0.186296 -0.711761 0.677267
+0.252557 -0.947803 0.194638
+0.29216 -0.940196 0.175137
+-0.984485 -4.644e-003 0.175409
+-0.735417 7.49e-004 0.677614
+-0.762432 -1.493e-002 0.646896
+-0.984485 -4.644e-003 0.175409
+-0.980828 8.972e-003 0.194671
+-0.735417 7.49e-004 0.677614
+-0.999933 1.161e-002 0
+-0.97585 4.3919e-002 0.213982
+-0.980828 8.972e-003 0.194671
+-0.999933 1.161e-002 0
+-0.998989 4.4951e-002 0
+-0.97585 4.3919e-002 0.213982
+-0.97585 4.3919e-002 0.213982
+-0.994393 0.105743 0
+-0.971372 0.103316 0.213923
+-0.97585 4.3919e-002 0.213982
+-0.998989 4.4951e-002 0
+-0.994393 0.105743 0
+-0.971372 0.103316 0.213923
+-0.975065 0.221919 0
+-0.952455 0.216808 0.214066
+-0.971372 0.103316 0.213923
+-0.994393 0.105743 0
+-0.975065 0.221919 0
+-0.975065 0.221919 0
+-0.898293 0.383554 0.214374
+-0.952455 0.216808 0.214066
+-0.975065 0.221919 0
+-0.919638 0.392767 2.e-006
+-0.898293 0.383554 0.214374
+-0.919638 0.392767 2.e-006
+-0.831747 0.512346 0.213773
+-0.898293 0.383554 0.214374
+-0.919638 0.392767 2.e-006
+-0.851381 0.524548 0
+-0.831747 0.512346 0.213773
+-0.831747 0.512346 0.213773
+-0.783804 0.621009 0
+-0.765624 0.606649 0.214
+-0.831747 0.512346 0.213773
+-0.851381 0.524548 0
+-0.783804 0.621009 0
+-0.783804 0.621009 0
+-0.651947 0.72736 0.214272
+-0.765624 0.606649 0.214
+-0.783804 0.621009 0
+-0.667458 0.744648 2.e-006
+-0.651947 0.72736 0.214272
+-0.651947 0.72736 0.214272
+-0.519514 0.854462 1.e-006
+-0.50753 0.834601 0.214136
+-0.651947 0.72736 0.214272
+-0.667458 0.744648 2.e-006
+-0.519514 0.854462 1.e-006
+-0.50753 0.834601 0.214136
+-0.407797 0.913073 2.e-006
+-0.398416 0.891927 0.213849
+-0.50753 0.834601 0.214136
+-0.519514 0.854462 1.e-006
+-0.407797 0.913073 2.e-006
+-0.398416 0.891927 0.213849
+-0.313974 0.949432 -2.e-006
+-0.306681 0.927442 0.214005
+-0.398416 0.891927 0.213849
+-0.407797 0.913073 2.e-006
+-0.313974 0.949432 -2.e-006
+-0.306681 0.927442 0.214005
+-0.177593 0.984104 -1.e-006
+-0.173466 0.96127 0.214171
+-0.306681 0.927442 0.214005
+-0.313974 0.949432 -2.e-006
+-0.177593 0.984104 -1.e-006
+-0.173466 0.96127 0.214171
+-2.6925e-002 0.999637 -1.e-006
+-2.6344e-002 0.97646 0.214082
+-0.173466 0.96127 0.214171
+-0.177593 0.984104 -1.e-006
+-2.6925e-002 0.999637 -1.e-006
+-2.6344e-002 0.97646 0.214082
+8.3547e-002 0.996504 -1.e-006
+8.1593e-002 0.973451 0.213858
+-2.6344e-002 0.97646 0.214082
+-2.6925e-002 0.999637 -1.e-006
+8.3547e-002 0.996504 -1.e-006
+8.1593e-002 0.973451 0.213858
+0.193563 0.981088 -1.e-006
+0.189149 0.958379 0.213853
+8.1593e-002 0.973451 0.213858
+8.3547e-002 0.996504 -1.e-006
+0.193563 0.981088 -1.e-006
+0.189149 0.958379 0.213853
+0.384715 0.923036 -3.e-006
+0.375848 0.901559 0.214311
+0.189149 0.958379 0.213853
+0.193563 0.981088 -1.e-006
+0.384715 0.923036 -3.e-006
+0.375848 0.901559 0.214311
+0.621867 0.783123 -3.e-006
+0.607296 0.764943 0.214603
+0.375848 0.901559 0.214311
+0.384715 0.923036 -3.e-006
+0.621867 0.783123 -3.e-006
+0.607296 0.764943 0.214603
+0.791734 0.610865 -2.e-006
+0.773491 0.596825 0.213335
+0.607296 0.764943 0.214603
+0.621867 0.783123 -3.e-006
+0.791734 0.610865 -2.e-006
+0.791734 0.610865 -2.e-006
+0.902908 0.372239 0.21493
+0.773491 0.596825 0.213335
+0.791734 0.610865 -2.e-006
+0.924487 0.381214 0
+0.902908 0.372239 0.21493
+0.924487 0.381214 0
+0.973886 7.4719e-002 0.214392
+0.902908 0.372239 0.21493
+0.924487 0.381214 0
+0.997092 7.6209e-002 1.e-006
+0.973886 7.4719e-002 0.214392
+0.997092 7.6209e-002 1.e-006
+0.968438 -0.128698 0.21346
+0.973886 7.4719e-002 0.214392
+0.997092 7.6209e-002 1.e-006
+0.991261 -0.131917 -1.e-006
+0.968438 -0.128698 0.21346
+0.991261 -0.131917 -1.e-006
+0.930434 -0.297266 0.214301
+0.968438 -0.128698 0.21346
+0.991261 -0.131917 -1.e-006
+0.952584 -0.304276 -1.e-006
+0.930434 -0.297266 0.214301
+0.952584 -0.304276 -1.e-006
+0.839166 -0.499861 0.214334
+0.930434 -0.297266 0.214301
+0.952584 -0.304276 -1.e-006
+0.859068 -0.511862 -2.e-006
+0.839166 -0.499861 0.214334
+0.839166 -0.499861 0.214334
+0.750408 -0.660975 1.e-006
+0.733127 -0.645657 0.213665
+0.839166 -0.499861 0.214334
+0.859068 -0.511862 -2.e-006
+0.750408 -0.660975 1.e-006
+0.733127 -0.645657 0.213665
+0.618267 -0.785968 -3.e-006
+0.603864 -0.767727 0.214345
+0.733127 -0.645657 0.213665
+0.750408 -0.660975 1.e-006
+0.618267 -0.785968 -3.e-006
+0.603864 -0.767727 0.214345
+0.434449 -0.900697 -5.e-006
+0.424466 -0.879727 0.214265
+0.603864 -0.767727 0.214345
+0.618267 -0.785968 -3.e-006
+0.434449 -0.900697 -5.e-006
+0.434449 -0.900697 -5.e-006
+0.292977 -0.931907 0.213806
+0.424466 -0.879727 0.214265
+0.434449 -0.900697 -5.e-006
+0.299812 -0.953998 4.e-006
+0.292977 -0.931907 0.213806
+0.299812 -0.953998 4.e-006
+0.215111 -0.952842 0.214054
+0.292977 -0.931907 0.213806
+0.299812 -0.953998 4.e-006
+0.220212 -0.975452 0
+0.215111 -0.952842 0.214054
+0.220212 -0.975452 0
+0.162522 -0.963226 0.213969
+0.215111 -0.952842 0.214054
+0.220212 -0.975452 0
+0.166371 -0.986063 5.e-006
+0.162522 -0.963226 0.213969
+0.162522 -0.963226 0.213969
+0.164779 -0.986331 3.e-006
+0.160962 -0.963482 0.213995
+0.162522 -0.963226 0.213969
+0.166371 -0.986063 5.e-006
+0.164779 -0.986331 3.e-006
+0.160962 -0.963482 0.213995
+0.196701 -0.980464 -4.e-006
+0.192142 -0.957756 0.213974
+0.160962 -0.963482 0.213995
+0.164779 -0.986331 3.e-006
+0.196701 -0.980464 -4.e-006
+0.192142 -0.957756 0.213974
+0.25882 -0.965926 -1.e-006
+0.252557 -0.947803 0.194638
+0.192142 -0.957756 0.213974
+0.196701 -0.980464 -4.e-006
+0.25882 -0.965926 -1.e-006
+0.252557 -0.947803 0.194638
+0.300003 -0.953938 -5.e-006
+0.29216 -0.940196 0.175137
+0.252557 -0.947803 0.194638
+0.25882 -0.965926 -1.e-006
+0.300003 -0.953938 -5.e-006
+-0.984485 -4.644e-003 0.175409
+-0.999933 1.161e-002 0
+-0.980828 8.972e-003 0.194671
+-0.984485 -4.644e-003 0.175409
+-1. 0 0
+-0.999933 1.161e-002 0
+-0.999933 1.161e-002 0
+-0.998989 4.4951e-002 0
+-0.999933 1.161e-002 0
+-0.999933 1.161e-002 0
+-0.998989 4.4951e-002 0
+-0.998989 4.4951e-002 0
+-0.998989 4.4951e-002 0
+-0.994393 0.105743 0
+-0.994393 0.105743 0
+-0.998989 4.4951e-002 0
+-0.998989 4.4951e-002 0
+-0.994393 0.105743 0
+-0.994393 0.105743 0
+-0.975065 0.221919 0
+-0.975065 0.221919 0
+-0.994393 0.105743 0
+-0.994393 0.105743 0
+-0.975065 0.221919 0
+-0.975065 0.221919 0
+-0.919638 0.392767 2.e-006
+-0.975065 0.221919 0
+-0.975065 0.221919 0
+-0.919638 0.392767 0
+-0.919638 0.392767 2.e-006
+-0.919638 0.392767 0
+-0.851381 0.524548 0
+-0.919638 0.392767 2.e-006
+-0.919638 0.392767 0
+-0.851381 0.524548 0
+-0.851381 0.524548 0
+-0.851381 0.524548 0
+-0.783804 0.621009 0
+-0.851381 0.524548 0
+-0.851381 0.524548 0
+-0.783804 0.621009 0
+-0.783804 0.621009 0
+-0.783804 0.621009 0
+-0.667458 0.744648 0
+-0.667458 0.744648 2.e-006
+-0.783804 0.621009 0
+-0.783804 0.621009 0
+-0.667458 0.744648 0
+-0.667458 0.744648 0
+-0.519514 0.854462 1.e-006
+-0.667458 0.744648 2.e-006
+-0.667458 0.744648 0
+-0.519514 0.854462 0
+-0.519514 0.854462 1.e-006
+-0.519514 0.854462 1.e-006
+-0.407797 0.913073 0
+-0.407797 0.913073 2.e-006
+-0.519514 0.854462 1.e-006
+-0.519514 0.854462 0
+-0.407797 0.913073 0
+-0.407797 0.913073 0
+-0.313974 0.949432 -2.e-006
+-0.407797 0.913073 2.e-006
+-0.407797 0.913073 0
+-0.313974 0.949432 0
+-0.313974 0.949432 -2.e-006
+-0.313974 0.949432 -2.e-006
+-0.177593 0.984104 0
+-0.177593 0.984104 -1.e-006
+-0.313974 0.949432 -2.e-006
+-0.313974 0.949432 0
+-0.177593 0.984104 0
+-0.177593 0.984104 -1.e-006
+-2.6925e-002 0.999637 0
+-2.6925e-002 0.999637 -1.e-006
+-0.177593 0.984104 -1.e-006
+-0.177593 0.984104 0
+-2.6925e-002 0.999637 0
+-2.6925e-002 0.999637 -1.e-006
+8.3547e-002 0.996504 0
+8.3547e-002 0.996504 -1.e-006
+-2.6925e-002 0.999637 -1.e-006
+-2.6925e-002 0.999637 0
+8.3547e-002 0.996504 0
+8.3547e-002 0.996504 -1.e-006
+0.193563 0.981088 0
+0.193563 0.981088 -1.e-006
+8.3547e-002 0.996504 -1.e-006
+8.3547e-002 0.996504 0
+0.193563 0.981088 0
+0.193563 0.981088 0
+0.384715 0.923036 -3.e-006
+0.193563 0.981088 -1.e-006
+0.193563 0.981088 0
+0.384715 0.923036 0
+0.384715 0.923036 -3.e-006
+0.384715 0.923036 -3.e-006
+0.621867 0.783123 0
+0.621867 0.783123 -3.e-006
+0.384715 0.923036 -3.e-006
+0.384715 0.923036 0
+0.621867 0.783123 0
+0.621867 0.783123 -3.e-006
+0.791734 0.610865 0
+0.791734 0.610865 -2.e-006
+0.621867 0.783123 -3.e-006
+0.621867 0.783123 0
+0.791734 0.610865 0
+0.791734 0.610865 -2.e-006
+0.924487 0.381214 0
+0.924487 0.381214 0
+0.791734 0.610865 -2.e-006
+0.791734 0.610865 0
+0.924487 0.381214 0
+0.924487 0.381214 0
+0.997092 7.6209e-002 0
+0.997092 7.6209e-002 1.e-006
+0.924487 0.381214 0
+0.924487 0.381214 0
+0.997092 7.6209e-002 0
+0.997092 7.6209e-002 1.e-006
+0.991261 -0.131917 0
+0.991261 -0.131917 -1.e-006
+0.997092 7.6209e-002 1.e-006
+0.997092 7.6209e-002 0
+0.991261 -0.131917 0
+0.991261 -0.131917 0
+0.952584 -0.304276 -1.e-006
+0.991261 -0.131917 -1.e-006
+0.991261 -0.131917 0
+0.952584 -0.304276 0
+0.952584 -0.304276 -1.e-006
+0.952584 -0.304276 0
+0.859068 -0.511862 -2.e-006
+0.952584 -0.304276 -1.e-006
+0.952584 -0.304276 0
+0.859068 -0.511862 0
+0.859068 -0.511862 -2.e-006
+0.859068 -0.511862 0
+0.750408 -0.660975 1.e-006
+0.859068 -0.511862 -2.e-006
+0.859068 -0.511862 0
+0.750408 -0.660975 0
+0.750408 -0.660975 1.e-006
+0.750408 -0.660975 0
+0.618267 -0.785968 -3.e-006
+0.750408 -0.660975 1.e-006
+0.750408 -0.660975 0
+0.618267 -0.785968 0
+0.618267 -0.785968 -3.e-006
+0.618267 -0.785968 -3.e-006
+0.434449 -0.900697 0
+0.434449 -0.900697 -5.e-006
+0.618267 -0.785968 -3.e-006
+0.618267 -0.785968 0
+0.434449 -0.900697 0
+0.434449 -0.900697 0
+0.299812 -0.953998 4.e-006
+0.434449 -0.900697 -5.e-006
+0.434449 -0.900697 0
+0.299812 -0.953998 0
+0.299812 -0.953998 4.e-006
+0.299812 -0.953998 0
+0.220212 -0.975452 0
+0.299812 -0.953998 4.e-006
+0.299812 -0.953998 0
+0.220212 -0.975452 0
+0.220212 -0.975452 0
+0.220212 -0.975452 0
+0.166371 -0.986063 5.e-006
+0.220212 -0.975452 0
+0.220212 -0.975452 0
+0.166371 -0.986063 0
+0.166371 -0.986063 5.e-006
+0.166371 -0.986063 5.e-006
+0.164779 -0.986331 0
+0.164779 -0.986331 3.e-006
+0.166371 -0.986063 5.e-006
+0.166371 -0.986063 0
+0.164779 -0.986331 0
+0.164779 -0.986331 0
+0.196701 -0.980464 -4.e-006
+0.164779 -0.986331 3.e-006
+0.164779 -0.986331 0
+0.196701 -0.980464 0
+0.196701 -0.980464 -4.e-006
+0.196701 -0.980464 0
+0.25882 -0.965926 -1.e-006
+0.196701 -0.980464 -4.e-006
+0.196701 -0.980464 0
+0.25882 -0.965926 0
+0.25882 -0.965926 -1.e-006
+0.25882 -0.965926 0
+0.300003 -0.953938 -5.e-006
+0.25882 -0.965926 -1.e-006
+0.25882 -0.965926 0
+0.300003 -0.953938 0
+0.300003 -0.953938 -5.e-006
+-1. 0 0
+-0.999933 1.161e-002 0
+-0.999933 1.161e-002 0
+-1. 0 0
+-1. 0 0
+-0.999933 1.161e-002 0
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#collada-lib-Normal-array" count="20158" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+          <technique profile="MAYA">
+            <param name="DOUBLE_SIDED" type="bool" flow="OUT">TRUE</param>
+          </technique>
+        </source>
+        <vertices id="collada-lib-Vertex">
+          <input semantic="POSITION" source="#collada-lib-Position"/>
+        </vertices>
+        <polygons material="#RedPlastic" count="6719">
+          <input semantic="VERTEX" idx="0" source="#collada-lib-Vertex"/>
+          <input semantic="NORMAL" idx="1" source="#collada-lib-Normal"/>
+          <p>0 0 116 1 1 2</p>
+          <p>0 3 115 4 116 5</p>
+          <p>1 6 117 7 2 8</p>
+          <p>1 9 116 10 117 11</p>
+          <p>2 12 118 13 3 14</p>
+          <p>2 15 117 16 118 17</p>
+          <p>3 18 119 19 4 20</p>
+          <p>3 21 118 22 119 23</p>
+          <p>119 24 5 25 4 26</p>
+          <p>119 27 120 28 5 29</p>
+          <p>120 30 6 31 5 32</p>
+          <p>120 33 121 34 6 35</p>
+          <p>6 36 122 37 7 38</p>
+          <p>6 39 121 40 122 41</p>
+          <p>7 42 123 43 8 44</p>
+          <p>7 45 122 46 123 47</p>
+          <p>8 48 124 49 9 50</p>
+          <p>8 51 123 52 124 53</p>
+          <p>124 54 10 55 9 56</p>
+          <p>124 57 125 58 10 59</p>
+          <p>125 60 11 61 10 62</p>
+          <p>125 63 126 64 11 65</p>
+          <p>11 66 127 67 12 68</p>
+          <p>11 69 126 70 127 71</p>
+          <p>12 72 128 73 13 74</p>
+          <p>12 75 127 76 128 77</p>
+          <p>13 78 129 79 14 80</p>
+          <p>13 81 128 82 129 83</p>
+          <p>129 84 15 85 14 86</p>
+          <p>129 87 130 88 15 89</p>
+          <p>130 90 16 91 15 92</p>
+          <p>130 93 131 94 16 95</p>
+          <p>16 96 132 97 17 98</p>
+          <p>16 99 131 100 132 101</p>
+          <p>17 102 133 103 18 104</p>
+          <p>17 105 132 106 133 107</p>
+          <p>18 108 134 109 19 110</p>
+          <p>18 111 133 112 134 113</p>
+          <p>134 114 20 115 19 116</p>
+          <p>134 117 135 118 20 119</p>
+          <p>135 120 21 121 20 122</p>
+          <p>135 123 136 124 21 125</p>
+          <p>21 126 137 127 22 128</p>
+          <p>21 129 136 130 137 131</p>
+          <p>22 132 138 133 23 134</p>
+          <p>22 135 137 136 138 137</p>
+          <p>23 138 139 139 24 140</p>
+          <p>23 141 138 142 139 143</p>
+          <p>139 144 25 145 24 146</p>
+          <p>139 147 140 148 25 149</p>
+          <p>140 150 26 151 25 152</p>
+          <p>140 153 141 154 26 155</p>
+          <p>26 156 142 157 27 158</p>
+          <p>26 159 141 160 142 161</p>
+          <p>27 162 143 163 28 164</p>
+          <p>27 165 142 166 143 167</p>
+          <p>28 168 144 169 29 170</p>
+          <p>28 171 143 172 144 173</p>
+          <p>29 174 145 175 30 176</p>
+          <p>29 177 144 178 145 179</p>
+          <p>145 180 31 181 30 182</p>
+          <p>145 183 146 184 31 185</p>
+          <p>31 186 147 187 32 188</p>
+          <p>31 189 146 190 147 191</p>
+          <p>32 192 148 193 33 194</p>
+          <p>32 195 147 196 148 197</p>
+          <p>33 198 149 199 34 200</p>
+          <p>33 201 148 202 149 203</p>
+          <p>149 204 35 205 34 206</p>
+          <p>149 207 150 208 35 209</p>
+          <p>150 210 36 211 35 212</p>
+          <p>150 213 151 214 36 215</p>
+          <p>36 216 152 217 37 218</p>
+          <p>36 219 151 220 152 221</p>
+          <p>37 222 153 223 38 224</p>
+          <p>37 225 152 226 153 227</p>
+          <p>38 228 154 229 39 230</p>
+          <p>38 231 153 232 154 233</p>
+          <p>154 234 40 235 39 236</p>
+          <p>154 237 155 238 40 239</p>
+          <p>155 240 41 241 40 242</p>
+          <p>155 243 156 244 41 245</p>
+          <p>41 246 157 247 42 248</p>
+          <p>41 249 156 250 157 251</p>
+          <p>42 252 158 253 43 254</p>
+          <p>42 255 157 256 158 257</p>
+          <p>43 258 159 259 44 260</p>
+          <p>43 261 158 262 159 263</p>
+          <p>159 264 45 265 44 266</p>
+          <p>159 267 160 268 45 269</p>
+          <p>160 270 46 271 45 272</p>
+          <p>160 273 161 274 46 275</p>
+          <p>46 276 162 277 47 278</p>
+          <p>46 279 161 280 162 281</p>
+          <p>47 282 163 283 48 284</p>
+          <p>47 285 162 286 163 287</p>
+          <p>48 288 164 289 49 290</p>
+          <p>48 291 163 292 164 293</p>
+          <p>164 294 50 295 49 296</p>
+          <p>164 297 165 298 50 299</p>
+          <p>50 300 166 301 51 302</p>
+          <p>50 303 165 304 166 305</p>
+          <p>51 306 167 307 52 308</p>
+          <p>51 309 166 310 167 311</p>
+          <p>52 312 168 313 53 314</p>
+          <p>52 315 167 316 168 317</p>
+          <p>168 318 54 319 53 320</p>
+          <p>168 321 169 322 54 323</p>
+          <p>169 324 55 325 54 326</p>
+          <p>169 327 170 328 55 329</p>
+          <p>55 330 171 331 56 332</p>
+          <p>55 333 170 334 171 335</p>
+          <p>171 336 57 337 56 338</p>
+          <p>171 339 172 340 57 341</p>
+          <p>172 342 58 343 57 344</p>
+          <p>172 345 173 346 58 347</p>
+          <p>173 348 59 349 58 350</p>
+          <p>173 351 174 352 59 353</p>
+          <p>59 354 175 355 60 356</p>
+          <p>59 357 174 358 175 359</p>
+          <p>60 360 176 361 61 362</p>
+          <p>60 363 175 364 176 365</p>
+          <p>176 366 62 367 61 368</p>
+          <p>176 369 177 370 62 371</p>
+          <p>177 372 63 373 62 374</p>
+          <p>177 375 178 376 63 377</p>
+          <p>178 378 64 379 63 380</p>
+          <p>178 381 179 382 64 383</p>
+          <p>64 384 180 385 65 386</p>
+          <p>64 387 179 388 180 389</p>
+          <p>65 390 181 391 66 392</p>
+          <p>65 393 180 394 181 395</p>
+          <p>181 396 67 397 66 398</p>
+          <p>181 399 182 400 67 401</p>
+          <p>182 402 68 403 67 404</p>
+          <p>182 405 183 406 68 407</p>
+          <p>183 408 69 409 68 410</p>
+          <p>183 411 184 412 69 413</p>
+          <p>69 414 185 415 70 416</p>
+          <p>69 417 184 418 185 419</p>
+          <p>70 420 186 421 71 422</p>
+          <p>70 423 185 424 186 425</p>
+          <p>186 426 72 427 71 428</p>
+          <p>186 429 187 430 72 431</p>
+          <p>187 432 73 433 72 434</p>
+          <p>187 435 188 436 73 437</p>
+          <p>188 438 74 439 73 440</p>
+          <p>188 441 189 442 74 443</p>
+          <p>74 444 190 445 75 446</p>
+          <p>74 447 189 448 190 449</p>
+          <p>75 450 191 451 76 452</p>
+          <p>75 453 190 454 191 455</p>
+          <p>191 456 77 457 76 458</p>
+          <p>191 459 192 460 77 461</p>
+          <p>192 462 78 463 77 464</p>
+          <p>192 465 193 466 78 467</p>
+          <p>193 468 79 469 78 470</p>
+          <p>193 471 194 472 79 473</p>
+          <p>79 474 195 475 80 476</p>
+          <p>79 477 194 478 195 479</p>
+          <p>80 480 196 481 81 482</p>
+          <p>80 483 195 484 196 485</p>
+          <p>196 486 82 487 81 488</p>
+          <p>196 489 197 490 82 491</p>
+          <p>197 492 83 493 82 494</p>
+          <p>197 495 198 496 83 497</p>
+          <p>198 498 84 499 83 500</p>
+          <p>198 501 199 502 84 503</p>
+          <p>84 504 200 505 85 506</p>
+          <p>84 507 199 508 200 509</p>
+          <p>85 510 201 511 86 512</p>
+          <p>85 513 200 514 201 515</p>
+          <p>201 516 87 517 86 518</p>
+          <p>201 519 202 520 87 521</p>
+          <p>202 522 88 523 87 524</p>
+          <p>202 525 203 526 88 527</p>
+          <p>203 528 89 529 88 530</p>
+          <p>203 531 204 532 89 533</p>
+          <p>89 534 205 535 90 536</p>
+          <p>89 537 204 538 205 539</p>
+          <p>90 540 206 541 91 542</p>
+          <p>90 543 205 544 206 545</p>
+          <p>206 546 92 547 91 548</p>
+          <p>206 549 207 550 92 551</p>
+          <p>207 552 93 553 92 554</p>
+          <p>207 555 208 556 93 557</p>
+          <p>208 558 94 559 93 560</p>
+          <p>208 561 209 562 94 563</p>
+          <p>94 564 210 565 95 566</p>
+          <p>94 567 209 568 210 569</p>
+          <p>95 570 211 571 96 572</p>
+          <p>95 573 210 574 211 575</p>
+          <p>211 576 97 577 96 578</p>
+          <p>211 579 212 580 97 581</p>
+          <p>212 582 98 583 97 584</p>
+          <p>212 585 213 586 98 587</p>
+          <p>213 588 99 589 98 590</p>
+          <p>213 591 214 592 99 593</p>
+          <p>99 594 215 595 100 596</p>
+          <p>99 597 214 598 215 599</p>
+          <p>100 600 216 601 101 602</p>
+          <p>100 603 215 604 216 605</p>
+          <p>216 606 102 607 101 608</p>
+          <p>216 609 217 610 102 611</p>
+          <p>217 612 103 613 102 614</p>
+          <p>217 615 218 616 103 617</p>
+          <p>218 618 104 619 103 620</p>
+          <p>218 621 219 622 104 623</p>
+          <p>219 624 105 625 104 626</p>
+          <p>219 627 220 628 105 629</p>
+          <p>105 630 221 631 106 632</p>
+          <p>105 633 220 634 221 635</p>
+          <p>221 636 107 637 106 638</p>
+          <p>221 639 222 640 107 641</p>
+          <p>107 642 223 643 108 644</p>
+          <p>107 645 222 646 223 647</p>
+          <p>108 648 224 649 109 650</p>
+          <p>108 651 223 652 224 653</p>
+          <p>224 654 110 655 109 656</p>
+          <p>224 657 225 658 110 659</p>
+          <p>110 660 226 661 111 662</p>
+          <p>110 663 225 664 226 665</p>
+          <p>111 666 227 667 112 668</p>
+          <p>111 669 226 670 227 671</p>
+          <p>112 672 228 673 113 674</p>
+          <p>112 675 227 676 228 677</p>
+          <p>228 678 114 679 113 680</p>
+          <p>228 681 229 682 114 683</p>
+          <p>114 684 115 685 0 686</p>
+          <p>114 687 229 688 115 689</p>
+          <p>115 690 231 691 116 692</p>
+          <p>115 693 230 694 231 695</p>
+          <p>116 696 232 697 117 698</p>
+          <p>116 699 231 700 232 701</p>
+          <p>117 702 233 703 118 704</p>
+          <p>117 705 232 706 233 707</p>
+          <p>118 708 234 709 119 710</p>
+          <p>118 711 233 712 234 713</p>
+          <p>234 714 120 715 119 716</p>
+          <p>234 717 235 718 120 719</p>
+          <p>235 720 121 721 120 722</p>
+          <p>235 723 236 724 121 725</p>
+          <p>121 726 237 727 122 728</p>
+          <p>121 729 236 730 237 731</p>
+          <p>122 732 238 733 123 734</p>
+          <p>122 735 237 736 238 737</p>
+          <p>123 738 239 739 124 740</p>
+          <p>123 741 238 742 239 743</p>
+          <p>239 744 125 745 124 746</p>
+          <p>239 747 240 748 125 749</p>
+          <p>240 750 126 751 125 752</p>
+          <p>240 753 241 754 126 755</p>
+          <p>126 756 242 757 127 758</p>
+          <p>126 759 241 760 242 761</p>
+          <p>127 762 243 763 128 764</p>
+          <p>127 765 242 766 243 767</p>
+          <p>128 768 244 769 129 770</p>
+          <p>128 771 243 772 244 773</p>
+          <p>244 774 130 775 129 776</p>
+          <p>244 777 245 778 130 779</p>
+          <p>245 780 131 781 130 782</p>
+          <p>245 783 246 784 131 785</p>
+          <p>131 786 247 787 132 788</p>
+          <p>131 789 246 790 247 791</p>
+          <p>132 792 248 793 133 794</p>
+          <p>132 795 247 796 248 797</p>
+          <p>133 798 249 799 134 800</p>
+          <p>133 801 248 802 249 803</p>
+          <p>249 804 135 805 134 806</p>
+          <p>249 807 250 808 135 809</p>
+          <p>250 810 136 811 135 812</p>
+          <p>250 813 251 814 136 815</p>
+          <p>136 816 252 817 137 818</p>
+          <p>136 819 251 820 252 821</p>
+          <p>137 822 253 823 138 824</p>
+          <p>137 825 252 826 253 827</p>
+          <p>138 828 254 829 139 830</p>
+          <p>138 831 253 832 254 833</p>
+          <p>254 834 140 835 139 836</p>
+          <p>254 837 255 838 140 839</p>
+          <p>255 840 141 841 140 842</p>
+          <p>255 843 256 844 141 845</p>
+          <p>141 846 257 847 142 848</p>
+          <p>141 849 256 850 257 851</p>
+          <p>142 852 258 853 143 854</p>
+          <p>142 855 257 856 258 857</p>
+          <p>143 858 259 859 144 860</p>
+          <p>143 861 258 862 259 863</p>
+          <p>144 864 260 865 145 866</p>
+          <p>144 867 259 868 260 869</p>
+          <p>260 870 146 871 145 872</p>
+          <p>260 873 261 874 146 875</p>
+          <p>146 876 262 877 147 878</p>
+          <p>146 879 261 880 262 881</p>
+          <p>147 882 263 883 148 884</p>
+          <p>147 885 262 886 263 887</p>
+          <p>148 888 264 889 149 890</p>
+          <p>148 891 263 892 264 893</p>
+          <p>264 894 150 895 149 896</p>
+          <p>264 897 265 898 150 899</p>
+          <p>265 900 151 901 150 902</p>
+          <p>265 903 266 904 151 905</p>
+          <p>151 906 267 907 152 908</p>
+          <p>151 909 266 910 267 911</p>
+          <p>152 912 268 913 153 914</p>
+          <p>152 915 267 916 268 917</p>
+          <p>153 918 269 919 154 920</p>
+          <p>153 921 268 922 269 923</p>
+          <p>269 924 155 925 154 926</p>
+          <p>269 927 270 928 155 929</p>
+          <p>270 930 156 931 155 932</p>
+          <p>270 933 271 934 156 935</p>
+          <p>156 936 272 937 157 938</p>
+          <p>156 939 271 940 272 941</p>
+          <p>157 942 273 943 158 944</p>
+          <p>157 945 272 946 273 947</p>
+          <p>158 948 274 949 159 950</p>
+          <p>158 951 273 952 274 953</p>
+          <p>274 954 160 955 159 956</p>
+          <p>274 957 275 958 160 959</p>
+          <p>275 960 161 961 160 962</p>
+          <p>275 963 276 964 161 965</p>
+          <p>161 966 277 967 162 968</p>
+          <p>161 969 276 970 277 971</p>
+          <p>162 972 278 973 163 974</p>
+          <p>162 975 277 976 278 977</p>
+          <p>163 978 279 979 164 980</p>
+          <p>163 981 278 982 279 983</p>
+          <p>279 984 165 985 164 986</p>
+          <p>279 987 280 988 165 989</p>
+          <p>165 990 281 991 166 992</p>
+          <p>165 993 280 994 281 995</p>
+          <p>166 996 282 997 167 998</p>
+          <p>166 999 281 1000 282 1001</p>
+          <p>282 1002 168 1003 167 1004</p>
+          <p>282 1005 283 1006 168 1007</p>
+          <p>283 1008 169 1009 168 1010</p>
+          <p>283 1011 284 1012 169 1013</p>
+          <p>284 1014 170 1015 169 1016</p>
+          <p>284 1017 285 1018 170 1019</p>
+          <p>170 1020 286 1021 171 1022</p>
+          <p>170 1023 285 1024 286 1025</p>
+          <p>286 1026 172 1027 171 1028</p>
+          <p>286 1029 287 1030 172 1031</p>
+          <p>287 1032 173 1033 172 1034</p>
+          <p>287 1035 288 1036 173 1037</p>
+          <p>288 1038 174 1039 173 1040</p>
+          <p>288 1041 289 1042 174 1043</p>
+          <p>174 1044 290 1045 175 1046</p>
+          <p>174 1047 289 1048 290 1049</p>
+          <p>175 1050 291 1051 176 1052</p>
+          <p>175 1053 290 1054 291 1055</p>
+          <p>291 1056 177 1057 176 1058</p>
+          <p>291 1059 292 1060 177 1061</p>
+          <p>292 1062 178 1063 177 1064</p>
+          <p>292 1065 293 1066 178 1067</p>
+          <p>293 1068 179 1069 178 1070</p>
+          <p>293 1071 294 1072 179 1073</p>
+          <p>179 1074 295 1075 180 1076</p>
+          <p>179 1077 294 1078 295 1079</p>
+          <p>180 1080 296 1081 181 1082</p>
+          <p>180 1083 295 1084 296 1085</p>
+          <p>296 1086 182 1087 181 1088</p>
+          <p>296 1089 297 1090 182 1091</p>
+          <p>297 1092 183 1093 182 1094</p>
+          <p>297 1095 298 1096 183 1097</p>
+          <p>298 1098 184 1099 183 1100</p>
+          <p>298 1101 299 1102 184 1103</p>
+          <p>184 1104 300 1105 185 1106</p>
+          <p>184 1107 299 1108 300 1109</p>
+          <p>185 1110 301 1111 186 1112</p>
+          <p>185 1113 300 1114 301 1115</p>
+          <p>301 1116 187 1117 186 1118</p>
+          <p>301 1119 302 1120 187 1121</p>
+          <p>302 1122 188 1123 187 1124</p>
+          <p>302 1125 303 1126 188 1127</p>
+          <p>303 1128 189 1129 188 1130</p>
+          <p>303 1131 304 1132 189 1133</p>
+          <p>189 1134 305 1135 190 1136</p>
+          <p>189 1137 304 1138 305 1139</p>
+          <p>190 1140 306 1141 191 1142</p>
+          <p>190 1143 305 1144 306 1145</p>
+          <p>306 1146 192 1147 191 1148</p>
+          <p>306 1149 307 1150 192 1151</p>
+          <p>307 1152 193 1153 192 1154</p>
+          <p>307 1155 308 1156 193 1157</p>
+          <p>308 1158 194 1159 193 1160</p>
+          <p>308 1161 309 1162 194 1163</p>
+          <p>194 1164 310 1165 195 1166</p>
+          <p>194 1167 309 1168 310 1169</p>
+          <p>195 1170 311 1171 196 1172</p>
+          <p>195 1173 310 1174 311 1175</p>
+          <p>311 1176 197 1177 196 1178</p>
+          <p>311 1179 312 1180 197 1181</p>
+          <p>312 1182 198 1183 197 1184</p>
+          <p>312 1185 313 1186 198 1187</p>
+          <p>313 1188 199 1189 198 1190</p>
+          <p>313 1191 314 1192 199 1193</p>
+          <p>199 1194 315 1195 200 1196</p>
+          <p>199 1197 314 1198 315 1199</p>
+          <p>200 1200 316 1201 201 1202</p>
+          <p>200 1203 315 1204 316 1205</p>
+          <p>316 1206 202 1207 201 1208</p>
+          <p>316 1209 317 1210 202 1211</p>
+          <p>317 1212 203 1213 202 1214</p>
+          <p>317 1215 318 1216 203 1217</p>
+          <p>318 1218 204 1219 203 1220</p>
+          <p>318 1221 319 1222 204 1223</p>
+          <p>204 1224 320 1225 205 1226</p>
+          <p>204 1227 319 1228 320 1229</p>
+          <p>205 1230 321 1231 206 1232</p>
+          <p>205 1233 320 1234 321 1235</p>
+          <p>321 1236 207 1237 206 1238</p>
+          <p>321 1239 322 1240 207 1241</p>
+          <p>322 1242 208 1243 207 1244</p>
+          <p>322 1245 323 1246 208 1247</p>
+          <p>323 1248 209 1249 208 1250</p>
+          <p>323 1251 324 1252 209 1253</p>
+          <p>209 1254 325 1255 210 1256</p>
+          <p>209 1257 324 1258 325 1259</p>
+          <p>210 1260 326 1261 211 1262</p>
+          <p>210 1263 325 1264 326 1265</p>
+          <p>326 1266 212 1267 211 1268</p>
+          <p>326 1269 327 1270 212 1271</p>
+          <p>327 1272 213 1273 212 1274</p>
+          <p>327 1275 328 1276 213 1277</p>
+          <p>328 1278 214 1279 213 1280</p>
+          <p>328 1281 329 1282 214 1283</p>
+          <p>214 1284 330 1285 215 1286</p>
+          <p>214 1287 329 1288 330 1289</p>
+          <p>215 1290 331 1291 216 1292</p>
+          <p>215 1293 330 1294 331 1295</p>
+          <p>331 1296 217 1297 216 1298</p>
+          <p>331 1299 332 1300 217 1301</p>
+          <p>332 1302 218 1303 217 1304</p>
+          <p>332 1305 333 1306 218 1307</p>
+          <p>333 1308 219 1309 218 1310</p>
+          <p>333 1311 334 1312 219 1313</p>
+          <p>334 1314 220 1315 219 1316</p>
+          <p>334 1317 335 1318 220 1319</p>
+          <p>220 1320 336 1321 221 1322</p>
+          <p>220 1323 335 1324 336 1325</p>
+          <p>336 1326 222 1327 221 1328</p>
+          <p>336 1329 337 1330 222 1331</p>
+          <p>337 1332 223 1333 222 1334</p>
+          <p>337 1335 338 1336 223 1337</p>
+          <p>338 1338 224 1339 223 1340</p>
+          <p>338 1341 339 1342 224 1343</p>
+          <p>339 1344 225 1345 224 1346</p>
+          <p>339 1347 340 1348 225 1349</p>
+          <p>225 1350 341 1351 226 1352</p>
+          <p>225 1353 340 1354 341 1355</p>
+          <p>341 1356 227 1357 226 1358</p>
+          <p>341 1359 342 1360 227 1361</p>
+          <p>227 1362 343 1363 228 1364</p>
+          <p>227 1365 342 1366 343 1367</p>
+          <p>343 1368 229 1369 228 1370</p>
+          <p>343 1371 344 1372 229 1373</p>
+          <p>229 1374 230 1375 115 1376</p>
+          <p>229 1377 344 1378 230 1379</p>
+          <p>230 1380 346 1381 231 1382</p>
+          <p>230 1383 345 1384 346 1385</p>
+          <p>231 1386 347 1387 232 1388</p>
+          <p>231 1389 346 1390 347 1391</p>
+          <p>232 1392 348 1393 233 1394</p>
+          <p>232 1395 347 1396 348 1397</p>
+          <p>233 1398 349 1399 234 1400</p>
+          <p>233 1401 348 1402 349 1403</p>
+          <p>349 1404 235 1405 234 1406</p>
+          <p>349 1407 350 1408 235 1409</p>
+          <p>350 1410 236 1411 235 1412</p>
+          <p>350 1413 351 1414 236 1415</p>
+          <p>236 1416 352 1417 237 1418</p>
+          <p>236 1419 351 1420 352 1421</p>
+          <p>237 1422 353 1423 238 1424</p>
+          <p>237 1425 352 1426 353 1427</p>
+          <p>238 1428 354 1429 239 1430</p>
+          <p>238 1431 353 1432 354 1433</p>
+          <p>354 1434 240 1435 239 1436</p>
+          <p>354 1437 355 1438 240 1439</p>
+          <p>355 1440 241 1441 240 1442</p>
+          <p>355 1443 356 1444 241 1445</p>
+          <p>241 1446 357 1447 242 1448</p>
+          <p>241 1449 356 1450 357 1451</p>
+          <p>242 1452 358 1453 243 1454</p>
+          <p>242 1455 357 1456 358 1457</p>
+          <p>243 1458 359 1459 244 1460</p>
+          <p>243 1461 358 1462 359 1463</p>
+          <p>359 1464 245 1465 244 1466</p>
+          <p>359 1467 360 1468 245 1469</p>
+          <p>360 1470 246 1471 245 1472</p>
+          <p>360 1473 361 1474 246 1475</p>
+          <p>246 1476 362 1477 247 1478</p>
+          <p>246 1479 361 1480 362 1481</p>
+          <p>247 1482 363 1483 248 1484</p>
+          <p>247 1485 362 1486 363 1487</p>
+          <p>248 1488 364 1489 249 1490</p>
+          <p>248 1491 363 1492 364 1493</p>
+          <p>364 1494 250 1495 249 1496</p>
+          <p>364 1497 365 1498 250 1499</p>
+          <p>365 1500 251 1501 250 1502</p>
+          <p>365 1503 366 1504 251 1505</p>
+          <p>251 1506 367 1507 252 1508</p>
+          <p>251 1509 366 1510 367 1511</p>
+          <p>252 1512 368 1513 253 1514</p>
+          <p>252 1515 367 1516 368 1517</p>
+          <p>253 1518 369 1519 254 1520</p>
+          <p>253 1521 368 1522 369 1523</p>
+          <p>369 1524 255 1525 254 1526</p>
+          <p>369 1527 370 1528 255 1529</p>
+          <p>370 1530 256 1531 255 1532</p>
+          <p>370 1533 371 1534 256 1535</p>
+          <p>256 1536 372 1537 257 1538</p>
+          <p>256 1539 371 1540 372 1541</p>
+          <p>257 1542 373 1543 258 1544</p>
+          <p>257 1545 372 1546 373 1547</p>
+          <p>258 1548 374 1549 259 1550</p>
+          <p>258 1551 373 1552 374 1553</p>
+          <p>259 1554 375 1555 260 1556</p>
+          <p>259 1557 374 1558 375 1559</p>
+          <p>375 1560 261 1561 260 1562</p>
+          <p>375 1563 376 1564 261 1565</p>
+          <p>261 1566 377 1567 262 1568</p>
+          <p>261 1569 376 1570 377 1571</p>
+          <p>262 1572 378 1573 263 1574</p>
+          <p>262 1575 377 1576 378 1577</p>
+          <p>263 1578 379 1579 264 1580</p>
+          <p>263 1581 378 1582 379 1583</p>
+          <p>379 1584 265 1585 264 1586</p>
+          <p>379 1587 380 1588 265 1589</p>
+          <p>380 1590 266 1591 265 1592</p>
+          <p>380 1593 381 1594 266 1595</p>
+          <p>266 1596 382 1597 267 1598</p>
+          <p>266 1599 381 1600 382 1601</p>
+          <p>267 1602 383 1603 268 1604</p>
+          <p>267 1605 382 1606 383 1607</p>
+          <p>268 1608 384 1609 269 1610</p>
+          <p>268 1611 383 1612 384 1613</p>
+          <p>384 1614 270 1615 269 1616</p>
+          <p>384 1617 385 1618 270 1619</p>
+          <p>385 1620 271 1621 270 1622</p>
+          <p>385 1623 386 1624 271 1625</p>
+          <p>271 1626 387 1627 272 1628</p>
+          <p>271 1629 386 1630 387 1631</p>
+          <p>272 1632 388 1633 273 1634</p>
+          <p>272 1635 387 1636 388 1637</p>
+          <p>273 1638 389 1639 274 1640</p>
+          <p>273 1641 388 1642 389 1643</p>
+          <p>389 1644 275 1645 274 1646</p>
+          <p>389 1647 390 1648 275 1649</p>
+          <p>390 1650 276 1651 275 1652</p>
+          <p>390 1653 391 1654 276 1655</p>
+          <p>276 1656 392 1657 277 1658</p>
+          <p>276 1659 391 1660 392 1661</p>
+          <p>277 1662 393 1663 278 1664</p>
+          <p>277 1665 392 1666 393 1667</p>
+          <p>278 1668 394 1669 279 1670</p>
+          <p>278 1671 393 1672 394 1673</p>
+          <p>394 1674 280 1675 279 1676</p>
+          <p>394 1677 395 1678 280 1679</p>
+          <p>280 1680 396 1681 281 1682</p>
+          <p>280 1683 395 1684 396 1685</p>
+          <p>396 1686 282 1687 281 1688</p>
+          <p>396 1689 397 1690 282 1691</p>
+          <p>397 1692 283 1693 282 1694</p>
+          <p>397 1695 398 1696 283 1697</p>
+          <p>398 1698 284 1699 283 1700</p>
+          <p>398 1701 399 1702 284 1703</p>
+          <p>399 1704 285 1705 284 1706</p>
+          <p>399 1707 400 1708 285 1709</p>
+          <p>285 1710 401 1711 286 1712</p>
+          <p>285 1713 400 1714 401 1715</p>
+          <p>401 1716 287 1717 286 1718</p>
+          <p>401 1719 402 1720 287 1721</p>
+          <p>402 1722 288 1723 287 1724</p>
+          <p>402 1725 403 1726 288 1727</p>
+          <p>403 1728 289 1729 288 1730</p>
+          <p>403 1731 404 1732 289 1733</p>
+          <p>289 1734 405 1735 290 1736</p>
+          <p>289 1737 404 1738 405 1739</p>
+          <p>290 1740 406 1741 291 1742</p>
+          <p>290 1743 405 1744 406 1745</p>
+          <p>406 1746 292 1747 291 1748</p>
+          <p>406 1749 407 1750 292 1751</p>
+          <p>407 1752 293 1753 292 1754</p>
+          <p>407 1755 408 1756 293 1757</p>
+          <p>408 1758 294 1759 293 1760</p>
+          <p>408 1761 409 1762 294 1763</p>
+          <p>294 1764 410 1765 295 1766</p>
+          <p>294 1767 409 1768 410 1769</p>
+          <p>295 1770 411 1771 296 1772</p>
+          <p>295 1773 410 1774 411 1775</p>
+          <p>411 1776 297 1777 296 1778</p>
+          <p>411 1779 412 1780 297 1781</p>
+          <p>412 1782 298 1783 297 1784</p>
+          <p>412 1785 413 1786 298 1787</p>
+          <p>413 1788 299 1789 298 1790</p>
+          <p>413 1791 414 1792 299 1793</p>
+          <p>299 1794 415 1795 300 1796</p>
+          <p>299 1797 414 1798 415 1799</p>
+          <p>300 1800 416 1801 301 1802</p>
+          <p>300 1803 415 1804 416 1805</p>
+          <p>416 1806 302 1807 301 1808</p>
+          <p>416 1809 417 1810 302 1811</p>
+          <p>417 1812 303 1813 302 1814</p>
+          <p>417 1815 418 1816 303 1817</p>
+          <p>418 1818 304 1819 303 1820</p>
+          <p>418 1821 419 1822 304 1823</p>
+          <p>304 1824 420 1825 305 1826</p>
+          <p>304 1827 419 1828 420 1829</p>
+          <p>305 1830 421 1831 306 1832</p>
+          <p>305 1833 420 1834 421 1835</p>
+          <p>421 1836 307 1837 306 1838</p>
+          <p>421 1839 422 1840 307 1841</p>
+          <p>422 1842 308 1843 307 1844</p>
+          <p>422 1845 423 1846 308 1847</p>
+          <p>423 1848 309 1849 308 1850</p>
+          <p>423 1851 424 1852 309 1853</p>
+          <p>309 1854 425 1855 310 1856</p>
+          <p>309 1857 424 1858 425 1859</p>
+          <p>310 1860 426 1861 311 1862</p>
+          <p>310 1863 425 1864 426 1865</p>
+          <p>426 1866 312 1867 311 1868</p>
+          <p>426 1869 427 1870 312 1871</p>
+          <p>427 1872 313 1873 312 1874</p>
+          <p>427 1875 428 1876 313 1877</p>
+          <p>428 1878 314 1879 313 1880</p>
+          <p>428 1881 429 1882 314 1883</p>
+          <p>314 1884 430 1885 315 1886</p>
+          <p>314 1887 429 1888 430 1889</p>
+          <p>315 1890 431 1891 316 1892</p>
+          <p>315 1893 430 1894 431 1895</p>
+          <p>431 1896 317 1897 316 1898</p>
+          <p>431 1899 432 1900 317 1901</p>
+          <p>432 1902 318 1903 317 1904</p>
+          <p>432 1905 433 1906 318 1907</p>
+          <p>433 1908 319 1909 318 1910</p>
+          <p>433 1911 434 1912 319 1913</p>
+          <p>319 1914 435 1915 320 1916</p>
+          <p>319 1917 434 1918 435 1919</p>
+          <p>320 1920 436 1921 321 1922</p>
+          <p>320 1923 435 1924 436 1925</p>
+          <p>436 1926 322 1927 321 1928</p>
+          <p>436 1929 437 1930 322 1931</p>
+          <p>437 1932 323 1933 322 1934</p>
+          <p>437 1935 438 1936 323 1937</p>
+          <p>438 1938 324 1939 323 1940</p>
+          <p>438 1941 439 1942 324 1943</p>
+          <p>324 1944 440 1945 325 1946</p>
+          <p>324 1947 439 1948 440 1949</p>
+          <p>325 1950 441 1951 326 1952</p>
+          <p>325 1953 440 1954 441 1955</p>
+          <p>441 1956 327 1957 326 1958</p>
+          <p>441 1959 442 1960 327 1961</p>
+          <p>442 1962 328 1963 327 1964</p>
+          <p>442 1965 443 1966 328 1967</p>
+          <p>443 1968 329 1969 328 1970</p>
+          <p>443 1971 444 1972 329 1973</p>
+          <p>329 1974 445 1975 330 1976</p>
+          <p>329 1977 444 1978 445 1979</p>
+          <p>330 1980 446 1981 331 1982</p>
+          <p>330 1983 445 1984 446 1985</p>
+          <p>446 1986 332 1987 331 1988</p>
+          <p>446 1989 447 1990 332 1991</p>
+          <p>447 1992 333 1993 332 1994</p>
+          <p>447 1995 448 1996 333 1997</p>
+          <p>448 1998 334 1999 333 2000</p>
+          <p>448 2001 449 2002 334 2003</p>
+          <p>449 2004 335 2005 334 2006</p>
+          <p>449 2007 450 2008 335 2009</p>
+          <p>335 2010 451 2011 336 2012</p>
+          <p>335 2013 450 2014 451 2015</p>
+          <p>336 2016 452 2017 337 2018</p>
+          <p>336 2019 451 2020 452 2021</p>
+          <p>337 2022 453 2023 338 2024</p>
+          <p>337 2025 452 2026 453 2027</p>
+          <p>338 2028 454 2029 339 2030</p>
+          <p>338 2031 453 2032 454 2033</p>
+          <p>454 2034 340 2035 339 2036</p>
+          <p>454 2037 455 2038 340 2039</p>
+          <p>340 2040 455 2041 456 2042</p>
+          <p>455 2041 456 2042 341 2043</p>
+          <p>456 2044 342 2045 341 2046</p>
+          <p>456 2047 457 2048 342 2049</p>
+          <p>457 2050 343 2051 342 2052</p>
+          <p>457 2053 458 2054 343 2055</p>
+          <p>343 2056 459 2057 344 2058</p>
+          <p>343 2059 458 2060 459 2061</p>
+          <p>344 2062 345 2063 230 2064</p>
+          <p>344 2065 459 2066 345 2067</p>
+          <p>460 2068 346 2069 345 2070</p>
+          <p>460 2071 461 2072 346 2073</p>
+          <p>461 2074 347 2075 346 2076</p>
+          <p>461 2077 462 2078 347 2079</p>
+          <p>462 2080 348 2081 347 2082</p>
+          <p>462 2083 463 2084 348 2085</p>
+          <p>463 2086 349 2087 348 2088</p>
+          <p>463 2089 464 2090 349 2091</p>
+          <p>349 2092 465 2093 350 2094</p>
+          <p>349 2095 464 2096 465 2097</p>
+          <p>350 2098 466 2099 351 2100</p>
+          <p>350 2101 465 2102 466 2103</p>
+          <p>351 2104 467 2105 352 2106</p>
+          <p>351 2107 466 2108 467 2109</p>
+          <p>467 2110 353 2111 352 2112</p>
+          <p>467 2113 468 2114 353 2115</p>
+          <p>353 2116 469 2117 354 2118</p>
+          <p>353 2119 468 2120 469 2121</p>
+          <p>469 2122 355 2123 354 2124</p>
+          <p>469 2125 470 2126 355 2127</p>
+          <p>355 2128 471 2129 356 2130</p>
+          <p>355 2131 470 2132 471 2133</p>
+          <p>356 2134 472 2135 357 2136</p>
+          <p>356 2137 471 2138 472 2139</p>
+          <p>472 2140 358 2141 357 2142</p>
+          <p>472 2143 473 2144 358 2145</p>
+          <p>358 2146 474 2147 359 2148</p>
+          <p>358 2149 473 2150 474 2151</p>
+          <p>359 2152 475 2153 360 2154</p>
+          <p>359 2155 474 2156 475 2157</p>
+          <p>360 2158 476 2159 361 2160</p>
+          <p>360 2161 475 2162 476 2163</p>
+          <p>476 2164 362 2165 361 2166</p>
+          <p>476 2167 477 2168 362 2169</p>
+          <p>477 2170 363 2171 362 2172</p>
+          <p>477 2173 478 2174 363 2175</p>
+          <p>478 2176 364 2177 363 2178</p>
+          <p>478 2179 479 2180 364 2181</p>
+          <p>364 2182 480 2183 365 2184</p>
+          <p>364 2185 479 2186 480 2187</p>
+          <p>365 2188 481 2189 366 2190</p>
+          <p>365 2191 480 2192 481 2193</p>
+          <p>481 2194 367 2195 366 2196</p>
+          <p>481 2197 482 2198 367 2199</p>
+          <p>367 2200 483 2201 368 2202</p>
+          <p>367 2203 482 2204 483 2205</p>
+          <p>368 2206 484 2207 369 2208</p>
+          <p>368 2209 483 2210 484 2211</p>
+          <p>369 2212 485 2213 370 2214</p>
+          <p>369 2215 484 2216 485 2217</p>
+          <p>370 2218 486 2219 371 2220</p>
+          <p>370 2221 485 2222 486 2223</p>
+          <p>486 2224 372 2225 371 2226</p>
+          <p>486 2227 487 2228 372 2229</p>
+          <p>372 2230 488 2231 373 2232</p>
+          <p>372 2233 487 2234 488 2235</p>
+          <p>373 2236 489 2237 374 2238</p>
+          <p>373 2239 488 2240 489 2241</p>
+          <p>489 2242 375 2243 374 2244</p>
+          <p>489 2245 490 2246 375 2247</p>
+          <p>375 2248 491 2249 376 2250</p>
+          <p>375 2251 490 2252 491 2253</p>
+          <p>491 2254 377 2255 376 2256</p>
+          <p>491 2257 492 2258 377 2259</p>
+          <p>492 2260 378 2261 377 2262</p>
+          <p>492 2263 493 2264 378 2265</p>
+          <p>493 2266 379 2267 378 2268</p>
+          <p>493 2269 494 2270 379 2271</p>
+          <p>494 2272 380 2273 379 2274</p>
+          <p>494 2275 495 2276 380 2277</p>
+          <p>495 2278 381 2279 380 2280</p>
+          <p>495 2281 496 2282 381 2283</p>
+          <p>381 2284 497 2285 382 2286</p>
+          <p>381 2287 496 2288 497 2289</p>
+          <p>382 2290 498 2291 383 2292</p>
+          <p>382 2293 497 2294 498 2295</p>
+          <p>383 2296 499 2297 384 2298</p>
+          <p>383 2299 498 2300 499 2301</p>
+          <p>384 2302 500 2303 385 2304</p>
+          <p>384 2305 499 2306 500 2307</p>
+          <p>385 2308 501 2309 386 2310</p>
+          <p>385 2311 500 2312 501 2313</p>
+          <p>386 2314 502 2315 387 2316</p>
+          <p>386 2317 501 2318 502 2319</p>
+          <p>502 2320 388 2321 387 2322</p>
+          <p>502 2323 503 2324 388 2325</p>
+          <p>503 2326 389 2327 388 2328</p>
+          <p>503 2329 504 2330 389 2331</p>
+          <p>389 2332 505 2333 390 2334</p>
+          <p>389 2335 504 2336 505 2337</p>
+          <p>390 2338 506 2339 391 2340</p>
+          <p>390 2341 505 2342 506 2343</p>
+          <p>391 2344 507 2345 392 2346</p>
+          <p>391 2347 506 2348 507 2349</p>
+          <p>507 2350 393 2351 392 2352</p>
+          <p>507 2353 508 2354 393 2355</p>
+          <p>393 2356 509 2357 394 2358</p>
+          <p>393 2359 508 2360 509 2361</p>
+          <p>509 2362 395 2363 394 2364</p>
+          <p>509 2365 510 2366 395 2367</p>
+          <p>395 2368 511 2369 396 2370</p>
+          <p>395 2371 510 2372 511 2373</p>
+          <p>396 2374 512 2375 397 2376</p>
+          <p>396 2377 511 2378 512 2379</p>
+          <p>397 2380 513 2381 398 2382</p>
+          <p>397 2383 512 2384 513 2385</p>
+          <p>398 2386 514 2387 399 2388</p>
+          <p>398 2389 513 2390 514 2391</p>
+          <p>514 2392 400 2393 399 2394</p>
+          <p>514 2395 515 2396 400 2397</p>
+          <p>400 2398 516 2399 401 2400</p>
+          <p>400 2401 515 2402 516 2403</p>
+          <p>516 2404 402 2405 401 2406</p>
+          <p>516 2407 517 2408 402 2409</p>
+          <p>402 2410 518 2411 403 2412</p>
+          <p>402 2413 517 2414 518 2415</p>
+          <p>518 2416 404 2417 403 2418</p>
+          <p>518 2419 519 2420 404 2421</p>
+          <p>404 2422 520 2423 405 2424</p>
+          <p>404 2425 519 2426 520 2427</p>
+          <p>405 2428 521 2429 406 2430</p>
+          <p>405 2431 520 2432 521 2433</p>
+          <p>521 2434 407 2435 406 2436</p>
+          <p>521 2437 522 2438 407 2439</p>
+          <p>407 2440 523 2441 408 2442</p>
+          <p>407 2443 522 2444 523 2445</p>
+          <p>408 2446 524 2447 409 2448</p>
+          <p>408 2449 523 2450 524 2451</p>
+          <p>409 2452 525 2453 410 2454</p>
+          <p>409 2455 524 2456 525 2457</p>
+          <p>410 2458 526 2459 411 2460</p>
+          <p>410 2461 525 2462 526 2463</p>
+          <p>526 2464 412 2465 411 2466</p>
+          <p>526 2467 527 2468 412 2469</p>
+          <p>412 2470 528 2471 413 2472</p>
+          <p>412 2473 527 2474 528 2475</p>
+          <p>528 2476 414 2477 413 2478</p>
+          <p>528 2479 529 2480 414 2481</p>
+          <p>414 2482 530 2483 415 2484</p>
+          <p>414 2485 529 2486 530 2487</p>
+          <p>415 2488 531 2489 416 2490</p>
+          <p>415 2491 530 2492 531 2493</p>
+          <p>416 2494 532 2495 417 2496</p>
+          <p>416 2497 531 2498 532 2499</p>
+          <p>532 2500 418 2501 417 2502</p>
+          <p>532 2503 533 2504 418 2505</p>
+          <p>418 2506 534 2507 419 2508</p>
+          <p>418 2509 533 2510 534 2511</p>
+          <p>534 2512 420 2513 419 2514</p>
+          <p>534 2515 535 2516 420 2517</p>
+          <p>420 2518 536 2519 421 2520</p>
+          <p>420 2521 535 2522 536 2523</p>
+          <p>421 2524 537 2525 422 2526</p>
+          <p>421 2527 536 2528 537 2529</p>
+          <p>537 2530 423 2531 422 2532</p>
+          <p>537 2533 538 2534 423 2535</p>
+          <p>423 2536 539 2537 424 2538</p>
+          <p>423 2539 538 2540 539 2541</p>
+          <p>424 2542 540 2543 425 2544</p>
+          <p>424 2545 539 2546 540 2547</p>
+          <p>425 2548 541 2549 426 2550</p>
+          <p>425 2551 540 2552 541 2553</p>
+          <p>541 2554 427 2555 426 2556</p>
+          <p>541 2557 542 2558 427 2559</p>
+          <p>427 2560 543 2561 428 2562</p>
+          <p>427 2563 542 2564 543 2565</p>
+          <p>543 2566 429 2567 428 2568</p>
+          <p>543 2569 544 2570 429 2571</p>
+          <p>544 2572 430 2573 429 2574</p>
+          <p>544 2575 545 2576 430 2577</p>
+          <p>545 2578 431 2579 430 2580</p>
+          <p>545 2581 546 2582 431 2583</p>
+          <p>431 2584 547 2585 432 2586</p>
+          <p>431 2587 546 2588 547 2589</p>
+          <p>547 2590 433 2591 432 2592</p>
+          <p>547 2593 548 2594 433 2595</p>
+          <p>433 2596 549 2597 434 2598</p>
+          <p>433 2599 548 2600 549 2601</p>
+          <p>434 2602 550 2603 435 2604</p>
+          <p>434 2605 549 2606 550 2607</p>
+          <p>435 2608 551 2609 436 2610</p>
+          <p>435 2611 550 2612 551 2613</p>
+          <p>436 2614 552 2615 437 2616</p>
+          <p>436 2617 551 2618 552 2619</p>
+          <p>552 2620 438 2621 437 2622</p>
+          <p>552 2623 553 2624 438 2625</p>
+          <p>438 2626 554 2627 439 2628</p>
+          <p>438 2629 553 2630 554 2631</p>
+          <p>554 2632 440 2633 439 2634</p>
+          <p>554 2635 555 2636 440 2637</p>
+          <p>555 2638 441 2639 440 2640</p>
+          <p>555 2641 556 2642 441 2643</p>
+          <p>441 2644 557 2645 442 2646</p>
+          <p>441 2647 556 2648 557 2649</p>
+          <p>442 2650 558 2651 443 2652</p>
+          <p>442 2653 557 2654 558 2655</p>
+          <p>443 2656 559 2657 444 2658</p>
+          <p>443 2659 558 2660 559 2661</p>
+          <p>559 2662 445 2663 444 2664</p>
+          <p>559 2665 560 2666 445 2667</p>
+          <p>445 2668 561 2669 446 2670</p>
+          <p>445 2671 560 2672 561 2673</p>
+          <p>446 2674 562 2675 447 2676</p>
+          <p>446 2677 561 2678 562 2679</p>
+          <p>447 2680 563 2681 448 2682</p>
+          <p>447 2683 562 2684 563 2685</p>
+          <p>563 2686 449 2687 448 2688</p>
+          <p>563 2689 564 2690 449 2691</p>
+          <p>564 2692 450 2693 449 2694</p>
+          <p>564 2695 565 2696 450 2697</p>
+          <p>450 2698 566 2699 451 2700</p>
+          <p>450 2701 565 2702 566 2703</p>
+          <p>451 2704 567 2705 452 2706</p>
+          <p>451 2707 566 2708 567 2709</p>
+          <p>567 2710 453 2711 452 2712</p>
+          <p>567 2713 568 2714 453 2715</p>
+          <p>453 2716 569 2717 454 2718</p>
+          <p>453 2719 568 2720 569 2721</p>
+          <p>569 2722 455 2723 454 2724</p>
+          <p>569 2725 570 2726 455 2727</p>
+          <p>455 2728 571 2729 456 2730</p>
+          <p>455 2731 570 2732 571 2733</p>
+          <p>456 2734 572 2735 457 2736</p>
+          <p>456 2737 571 2738 572 2739</p>
+          <p>457 2740 573 2741 458 2742</p>
+          <p>457 2743 572 2744 573 2745</p>
+          <p>458 2746 574 2747 459 2748</p>
+          <p>458 2749 573 2750 574 2751</p>
+          <p>574 2752 345 2753 459 2754</p>
+          <p>574 2755 460 2756 345 2757</p>
+          <p>460 2758 576 2759 461 2760</p>
+          <p>460 2761 575 2762 576 2763</p>
+          <p>576 2764 462 2765 461 2766</p>
+          <p>576 2767 577 2768 462 2769</p>
+          <p>462 2770 578 2771 463 2772</p>
+          <p>462 2773 577 2774 578 2775</p>
+          <p>463 2776 579 2777 464 2778</p>
+          <p>463 2779 578 2780 579 2781</p>
+          <p>579 2782 465 2783 464 2784</p>
+          <p>579 2785 580 2786 465 2787</p>
+          <p>465 2788 581 2789 466 2790</p>
+          <p>465 2791 580 2792 581 2793</p>
+          <p>466 2794 582 2795 467 2796</p>
+          <p>466 2797 581 2798 582 2799</p>
+          <p>582 2800 468 2801 467 2802</p>
+          <p>582 2803 583 2804 468 2805</p>
+          <p>468 2806 584 2807 469 2808</p>
+          <p>468 2809 583 2810 584 2811</p>
+          <p>584 2812 470 2813 469 2814</p>
+          <p>584 2815 585 2816 470 2817</p>
+          <p>470 2818 586 2819 471 2820</p>
+          <p>470 2821 585 2822 586 2823</p>
+          <p>471 2824 587 2825 472 2826</p>
+          <p>471 2827 586 2828 587 2829</p>
+          <p>472 2830 588 2831 473 2832</p>
+          <p>472 2833 587 2834 588 2835</p>
+          <p>588 2836 474 2837 473 2838</p>
+          <p>588 2839 589 2840 474 2841</p>
+          <p>474 2842 590 2843 475 2844</p>
+          <p>474 2845 589 2846 590 2847</p>
+          <p>475 2848 591 2849 476 2850</p>
+          <p>475 2851 590 2852 591 2853</p>
+          <p>476 2854 592 2855 477 2856</p>
+          <p>476 2857 591 2858 592 2859</p>
+          <p>592 2860 478 2861 477 2862</p>
+          <p>592 2863 593 2864 478 2865</p>
+          <p>478 2866 594 2867 479 2868</p>
+          <p>478 2869 593 2870 594 2871</p>
+          <p>479 2872 595 2873 480 2874</p>
+          <p>479 2875 594 2876 595 2877</p>
+          <p>480 2878 596 2879 481 2880</p>
+          <p>480 2881 595 2882 596 2883</p>
+          <p>481 2884 597 2885 482 2886</p>
+          <p>481 2887 596 2888 597 2889</p>
+          <p>597 2890 483 2891 482 2892</p>
+          <p>597 2893 598 2894 483 2895</p>
+          <p>483 2896 599 2897 484 2898</p>
+          <p>483 2899 598 2900 599 2901</p>
+          <p>484 2902 600 2903 485 2904</p>
+          <p>484 2905 599 2906 600 2907</p>
+          <p>485 2908 601 2909 486 2910</p>
+          <p>485 2911 600 2912 601 2913</p>
+          <p>486 2914 602 2915 487 2916</p>
+          <p>486 2917 601 2918 602 2919</p>
+          <p>602 2920 488 2921 487 2922</p>
+          <p>602 2923 603 2924 488 2925</p>
+          <p>488 2926 604 2927 489 2928</p>
+          <p>488 2929 603 2930 604 2931</p>
+          <p>489 2932 605 2933 490 2934</p>
+          <p>489 2935 604 2936 605 2937</p>
+          <p>605 2938 491 2939 490 2940</p>
+          <p>605 2941 606 2942 491 2943</p>
+          <p>606 2944 492 2945 491 2946</p>
+          <p>606 2947 607 2948 492 2949</p>
+          <p>492 2950 608 2951 493 2952</p>
+          <p>492 2953 607 2954 608 2955</p>
+          <p>608 2956 494 2957 493 2958</p>
+          <p>608 2959 609 2960 494 2961</p>
+          <p>609 2962 495 2963 494 2964</p>
+          <p>609 2965 610 2966 495 2967</p>
+          <p>495 2968 611 2969 496 2970</p>
+          <p>495 2971 610 2972 611 2973</p>
+          <p>496 2974 612 2975 497 2976</p>
+          <p>496 2977 611 2978 612 2979</p>
+          <p>612 2980 498 2981 497 2982</p>
+          <p>612 2983 613 2984 498 2985</p>
+          <p>498 2986 614 2987 499 2988</p>
+          <p>498 2989 613 2990 614 2991</p>
+          <p>499 2992 615 2993 500 2994</p>
+          <p>499 2995 614 2996 615 2997</p>
+          <p>615 2998 501 2999 500 3000</p>
+          <p>615 3001 616 3002 501 3003</p>
+          <p>616 3004 502 3005 501 3006</p>
+          <p>616 3007 617 3008 502 3009</p>
+          <p>617 3010 503 3011 502 3012</p>
+          <p>617 3013 618 3014 503 3015</p>
+          <p>618 3016 504 3017 503 3018</p>
+          <p>618 3019 619 3020 504 3021</p>
+          <p>504 3022 620 3023 505 3024</p>
+          <p>504 3025 619 3026 620 3027</p>
+          <p>505 3028 621 3029 506 3030</p>
+          <p>505 3031 620 3032 621 3033</p>
+          <p>621 3034 507 3035 506 3036</p>
+          <p>621 3037 622 3038 507 3039</p>
+          <p>507 3040 623 3041 508 3042</p>
+          <p>507 3043 622 3044 623 3045</p>
+          <p>508 3046 624 3047 509 3048</p>
+          <p>508 3049 623 3050 624 3051</p>
+          <p>509 3052 625 3053 510 3054</p>
+          <p>509 3055 624 3056 625 3057</p>
+          <p>510 3058 626 3059 511 3060</p>
+          <p>510 3061 625 3062 626 3063</p>
+          <p>626 3064 512 3065 511 3066</p>
+          <p>626 3067 627 3068 512 3069</p>
+          <p>627 3070 513 3071 512 3072</p>
+          <p>627 3073 628 3074 513 3075</p>
+          <p>513 3076 629 3077 514 3078</p>
+          <p>513 3079 628 3080 629 3081</p>
+          <p>514 3082 630 3083 515 3084</p>
+          <p>514 3085 629 3086 630 3087</p>
+          <p>515 3088 631 3089 516 3090</p>
+          <p>515 3091 630 3092 631 3093</p>
+          <p>631 3094 517 3095 516 3096</p>
+          <p>631 3097 632 3098 517 3099</p>
+          <p>517 3100 633 3101 518 3102</p>
+          <p>517 3103 632 3104 633 3105</p>
+          <p>518 3106 634 3107 519 3108</p>
+          <p>518 3109 633 3110 634 3111</p>
+          <p>519 3112 635 3113 520 3114</p>
+          <p>519 3115 634 3116 635 3117</p>
+          <p>635 3118 521 3119 520 3120</p>
+          <p>635 3121 636 3122 521 3123</p>
+          <p>636 3124 522 3125 521 3126</p>
+          <p>636 3127 637 3128 522 3129</p>
+          <p>637 3130 523 3131 522 3132</p>
+          <p>637 3133 638 3134 523 3135</p>
+          <p>523 3136 639 3137 524 3138</p>
+          <p>523 3139 638 3140 639 3141</p>
+          <p>524 3142 640 3143 525 3144</p>
+          <p>524 3145 639 3146 640 3147</p>
+          <p>525 3148 641 3149 526 3150</p>
+          <p>525 3151 640 3152 641 3153</p>
+          <p>526 3154 642 3155 527 3156</p>
+          <p>526 3157 641 3158 642 3159</p>
+          <p>642 3160 528 3161 527 3162</p>
+          <p>642 3163 643 3164 528 3165</p>
+          <p>528 3166 644 3167 529 3168</p>
+          <p>528 3169 643 3170 644 3171</p>
+          <p>529 3172 645 3173 530 3174</p>
+          <p>529 3175 644 3176 645 3177</p>
+          <p>530 3178 646 3179 531 3180</p>
+          <p>530 3181 645 3182 646 3183</p>
+          <p>531 3184 647 3185 532 3186</p>
+          <p>531 3187 646 3188 647 3189</p>
+          <p>532 3190 648 3191 533 3192</p>
+          <p>532 3193 647 3194 648 3195</p>
+          <p>648 3196 534 3197 533 3198</p>
+          <p>648 3199 649 3200 534 3201</p>
+          <p>534 3202 650 3203 535 3204</p>
+          <p>534 3205 649 3206 650 3207</p>
+          <p>650 3208 536 3209 535 3210</p>
+          <p>650 3211 651 3212 536 3213</p>
+          <p>651 3214 537 3215 536 3216</p>
+          <p>651 3217 652 3218 537 3219</p>
+          <p>652 3220 538 3221 537 3222</p>
+          <p>652 3223 653 3224 538 3225</p>
+          <p>538 3226 654 3227 539 3228</p>
+          <p>538 3229 653 3230 654 3231</p>
+          <p>654 3232 540 3233 539 3234</p>
+          <p>654 3235 655 3236 540 3237</p>
+          <p>655 3238 541 3239 540 3240</p>
+          <p>655 3241 656 3242 541 3243</p>
+          <p>541 3244 657 3245 542 3246</p>
+          <p>541 3247 656 3248 657 3249</p>
+          <p>542 3250 658 3251 543 3252</p>
+          <p>542 3253 657 3254 658 3255</p>
+          <p>658 3256 544 3257 543 3258</p>
+          <p>658 3259 659 3260 544 3261</p>
+          <p>659 3262 545 3263 544 3264</p>
+          <p>659 3265 660 3266 545 3267</p>
+          <p>545 3268 661 3269 546 3270</p>
+          <p>545 3271 660 3272 661 3273</p>
+          <p>546 3274 662 3275 547 3276</p>
+          <p>546 3277 661 3278 662 3279</p>
+          <p>547 3280 663 3281 548 3282</p>
+          <p>547 3283 662 3284 663 3285</p>
+          <p>548 3286 664 3287 549 3288</p>
+          <p>548 3289 663 3290 664 3291</p>
+          <p>664 3292 550 3293 549 3294</p>
+          <p>664 3295 665 3296 550 3297</p>
+          <p>550 3298 666 3299 551 3300</p>
+          <p>550 3301 665 3302 666 3303</p>
+          <p>666 3304 552 3305 551 3306</p>
+          <p>666 3307 667 3308 552 3309</p>
+          <p>667 3310 553 3311 552 3312</p>
+          <p>667 3313 668 3314 553 3315</p>
+          <p>668 3316 554 3317 553 3318</p>
+          <p>668 3319 669 3320 554 3321</p>
+          <p>554 3322 670 3323 555 3324</p>
+          <p>554 3325 669 3326 670 3327</p>
+          <p>670 3328 556 3329 555 3330</p>
+          <p>670 3331 671 3332 556 3333</p>
+          <p>556 3334 672 3335 557 3336</p>
+          <p>556 3337 671 3338 672 3339</p>
+          <p>557 3340 673 3341 558 3342</p>
+          <p>557 3343 672 3344 673 3345</p>
+          <p>558 3346 674 3347 559 3348</p>
+          <p>558 3349 673 3350 674 3351</p>
+          <p>674 3352 560 3353 559 3354</p>
+          <p>674 3355 675 3356 560 3357</p>
+          <p>560 3358 676 3359 561 3360</p>
+          <p>560 3361 675 3362 676 3363</p>
+          <p>561 3364 677 3365 562 3366</p>
+          <p>561 3367 676 3368 677 3369</p>
+          <p>562 3370 678 3371 563 3372</p>
+          <p>562 3373 677 3374 678 3375</p>
+          <p>678 3376 564 3377 563 3378</p>
+          <p>678 3379 679 3380 564 3381</p>
+          <p>564 3382 680 3383 565 3384</p>
+          <p>564 3385 679 3386 680 3387</p>
+          <p>680 3388 566 3389 565 3390</p>
+          <p>680 3391 681 3392 566 3393</p>
+          <p>681 3394 567 3395 566 3396</p>
+          <p>681 3397 682 3398 567 3399</p>
+          <p>682 3400 568 3401 567 3402</p>
+          <p>682 3403 683 3404 568 3405</p>
+          <p>568 3406 684 3407 569 3408</p>
+          <p>568 3409 683 3410 684 3411</p>
+          <p>684 3412 570 3413 569 3414</p>
+          <p>684 3415 685 3416 570 3417</p>
+          <p>570 3418 686 3419 571 3420</p>
+          <p>570 3421 685 3422 686 3423</p>
+          <p>571 3424 687 3425 572 3426</p>
+          <p>571 3427 686 3428 687 3429</p>
+          <p>572 3430 688 3431 573 3432</p>
+          <p>572 3433 687 3434 688 3435</p>
+          <p>573 3436 689 3437 574 3438</p>
+          <p>573 3439 688 3440 689 3441</p>
+          <p>574 3442 575 3443 460 3444</p>
+          <p>574 3445 689 3446 575 3447</p>
+          <p>0 3448 109 3449 114 3450</p>
+          <p>0 3451 108 3452 109 3453</p>
+          <p>0 3454 104 3455 108 3456</p>
+          <p>0 3457 1 3458 104 3459</p>
+          <p>1 3460 2 3461 104 3462</p>
+          <p>2 3463 103 3464 104 3465</p>
+          <p>2 3466 3 3467 103 3468</p>
+          <p>3 3469 4 3470 103 3471</p>
+          <p>4 3472 102 3473 103 3474</p>
+          <p>4 3475 101 3476 102 3477</p>
+          <p>4 3478 5 3479 101 3480</p>
+          <p>5 3481 100 3482 101 3483</p>
+          <p>5 3484 6 3485 100 3486</p>
+          <p>6 3487 99 3488 100 3489</p>
+          <p>6 3490 7 3491 99 3492</p>
+          <p>7 3493 8 3494 99 3495</p>
+          <p>8 3496 98 3497 99 3498</p>
+          <p>8 3499 9 3500 98 3501</p>
+          <p>9 3502 97 3503 98 3504</p>
+          <p>9 3505 96 3506 97 3507</p>
+          <p>9 3508 10 3509 96 3510</p>
+          <p>10 3511 95 3512 96 3513</p>
+          <p>10 3514 11 3515 95 3516</p>
+          <p>11 3517 12 3518 95 3519</p>
+          <p>12 3520 94 3521 95 3522</p>
+          <p>12 3523 13 3524 94 3525</p>
+          <p>13 3526 93 3527 94 3528</p>
+          <p>13 3529 14 3530 93 3531</p>
+          <p>14 3532 92 3533 93 3534</p>
+          <p>14 3535 15 3536 92 3537</p>
+          <p>15 3538 91 3539 92 3540</p>
+          <p>15 3541 16 3542 91 3543</p>
+          <p>16 3544 90 3545 91 3546</p>
+          <p>16 3547 17 3548 90 3549</p>
+          <p>17 3550 89 3551 90 3552</p>
+          <p>17 3553 18 3554 89 3555</p>
+          <p>18 3556 88 3557 89 3558</p>
+          <p>18 3559 19 3560 88 3561</p>
+          <p>19 3562 87 3563 88 3564</p>
+          <p>19 3565 20 3566 87 3567</p>
+          <p>20 3568 86 3569 87 3570</p>
+          <p>20 3571 85 3572 86 3573</p>
+          <p>20 3574 21 3575 85 3576</p>
+          <p>21 3577 22 3578 85 3579</p>
+          <p>22 3580 84 3581 85 3582</p>
+          <p>22 3583 23 3584 84 3585</p>
+          <p>23 3586 83 3587 84 3588</p>
+          <p>23 3589 24 3590 83 3591</p>
+          <p>24 3592 82 3593 83 3594</p>
+          <p>24 3595 25 3596 82 3597</p>
+          <p>25 3598 81 3599 82 3600</p>
+          <p>25 3601 80 3602 81 3603</p>
+          <p>25 3604 26 3605 80 3606</p>
+          <p>26 3607 27 3608 80 3609</p>
+          <p>27 3610 79 3611 80 3612</p>
+          <p>27 3613 28 3614 79 3615</p>
+          <p>28 3616 78 3617 79 3618</p>
+          <p>28 3619 29 3620 78 3621</p>
+          <p>29 3622 77 3623 78 3624</p>
+          <p>29 3625 30 3626 77 3627</p>
+          <p>30 3628 76 3629 77 3630</p>
+          <p>30 3631 31 3632 76 3633</p>
+          <p>31 3634 75 3635 76 3636</p>
+          <p>31 3637 32 3638 75 3639</p>
+          <p>32 3640 74 3641 75 3642</p>
+          <p>32 3643 33 3644 74 3645</p>
+          <p>33 3646 73 3647 74 3648</p>
+          <p>33 3649 34 3650 73 3651</p>
+          <p>34 3652 72 3653 73 3654</p>
+          <p>34 3655 35 3656 72 3657</p>
+          <p>35 3658 71 3659 72 3660</p>
+          <p>35 3661 36 3662 71 3663</p>
+          <p>36 3664 70 3665 71 3666</p>
+          <p>36 3667 37 3668 70 3669</p>
+          <p>37 3670 69 3671 70 3672</p>
+          <p>37 3673 38 3674 69 3675</p>
+          <p>38 3676 68 3677 69 3678</p>
+          <p>38 3679 39 3680 68 3681</p>
+          <p>39 3682 67 3683 68 3684</p>
+          <p>39 3685 40 3686 67 3687</p>
+          <p>40 3688 66 3689 67 3690</p>
+          <p>40 3691 65 3692 66 3693</p>
+          <p>40 3694 41 3695 65 3696</p>
+          <p>41 3697 42 3698 65 3699</p>
+          <p>42 3700 64 3701 65 3702</p>
+          <p>42 3703 43 3704 64 3705</p>
+          <p>43 3706 63 3707 64 3708</p>
+          <p>43 3709 44 3710 63 3711</p>
+          <p>44 3712 62 3713 63 3714</p>
+          <p>44 3715 45 3716 62 3717</p>
+          <p>45 3718 61 3719 62 3720</p>
+          <p>45 3721 46 3722 61 3723</p>
+          <p>46 3724 60 3725 61 3726</p>
+          <p>46 3727 47 3728 60 3729</p>
+          <p>47 3730 59 3731 60 3732</p>
+          <p>47 3733 48 3734 59 3735</p>
+          <p>48 3736 58 3737 59 3738</p>
+          <p>48 3739 49 3740 58 3741</p>
+          <p>49 3742 57 3743 58 3744</p>
+          <p>49 3745 53 3746 57 3747</p>
+          <p>49 3748 52 3749 53 3750</p>
+          <p>49 3751 51 3752 52 3753</p>
+          <p>49 3754 50 3755 51 3756</p>
+          <p>53 3757 54 3758 57 3759</p>
+          <p>54 3760 56 3761 57 3762</p>
+          <p>54 3763 55 3764 56 3765</p>
+          <p>104 3766 107 3767 108 3768</p>
+          <p>104 3769 106 3770 107 3771</p>
+          <p>104 3772 105 3773 106 3774</p>
+          <p>109 3775 113 3776 114 3777</p>
+          <p>109 3778 110 3779 113 3780</p>
+          <p>110 3781 114 3782 113 3783</p>
+          <p>110 3784 111 3785 114 3786</p>
+          <p>689 3787 684 3788 575 3789</p>
+          <p>689 3790 688 3791 684 3792</p>
+          <p>688 3793 687 3794 684 3795</p>
+          <p>687 3796 686 3797 684 3798</p>
+          <p>686 3799 685 3800 684 3801</p>
+          <p>684 3802 683 3803 575 3804</p>
+          <p>683 3805 679 3806 575 3807</p>
+          <p>683 3808 682 3809 679 3810</p>
+          <p>682 3811 681 3812 679 3813</p>
+          <p>681 3814 680 3815 679 3816</p>
+          <p>679 3817 576 3818 575 3819</p>
+          <p>679 3820 577 3821 576 3822</p>
+          <p>679 3823 678 3824 577 3825</p>
+          <p>678 3826 578 3827 577 3828</p>
+          <p>678 3829 579 3830 578 3831</p>
+          <p>678 3832 677 3833 579 3834</p>
+          <p>677 3835 676 3836 579 3837</p>
+          <p>676 3838 580 3839 579 3840</p>
+          <p>676 3841 675 3842 580 3843</p>
+          <p>675 3844 581 3845 580 3846</p>
+          <p>675 3847 674 3848 581 3849</p>
+          <p>674 3850 582 3851 581 3852</p>
+          <p>674 3853 583 3854 582 3855</p>
+          <p>674 3856 673 3857 583 3858</p>
+          <p>673 3859 584 3860 583 3861</p>
+          <p>673 3862 672 3863 584 3864</p>
+          <p>672 3865 671 3866 584 3867</p>
+          <p>671 3868 585 3869 584 3870</p>
+          <p>671 3871 670 3872 585 3873</p>
+          <p>670 3874 586 3875 585 3876</p>
+          <p>670 3877 587 3878 586 3879</p>
+          <p>670 3880 669 3881 587 3882</p>
+          <p>669 3883 588 3884 587 3885</p>
+          <p>669 3886 668 3887 588 3888</p>
+          <p>668 3889 589 3890 588 3891</p>
+          <p>668 3892 667 3893 589 3894</p>
+          <p>667 3895 590 3896 589 3897</p>
+          <p>667 3898 666 3899 590 3900</p>
+          <p>666 3901 591 3902 590 3903</p>
+          <p>666 3904 665 3905 591 3906</p>
+          <p>665 3907 592 3908 591 3909</p>
+          <p>665 3910 664 3911 592 3912</p>
+          <p>664 3913 593 3914 592 3915</p>
+          <p>664 3916 663 3917 593 3918</p>
+          <p>663 3919 594 3920 593 3921</p>
+          <p>663 3922 662 3923 594 3924</p>
+          <p>662 3925 595 3926 594 3927</p>
+          <p>662 3928 661 3929 595 3930</p>
+          <p>661 3931 660 3932 595 3933</p>
+          <p>660 3934 596 3935 595 3936</p>
+          <p>660 3937 597 3938 596 3939</p>
+          <p>660 3940 659 3941 597 3942</p>
+          <p>659 3943 598 3944 597 3945</p>
+          <p>659 3946 658 3947 598 3948</p>
+          <p>658 3949 599 3950 598 3951</p>
+          <p>658 3952 657 3953 599 3954</p>
+          <p>657 3955 600 3956 599 3957</p>
+          <p>657 3958 656 3959 600 3960</p>
+          <p>656 3961 655 3962 600 3963</p>
+          <p>655 3964 601 3965 600 3966</p>
+          <p>655 3967 602 3968 601 3969</p>
+          <p>655 3970 654 3971 602 3972</p>
+          <p>654 3973 603 3974 602 3975</p>
+          <p>654 3976 653 3977 603 3978</p>
+          <p>653 3979 604 3980 603 3981</p>
+          <p>653 3982 652 3983 604 3984</p>
+          <p>652 3985 605 3986 604 3987</p>
+          <p>652 3988 651 3989 605 3990</p>
+          <p>651 3991 606 3992 605 3993</p>
+          <p>651 3994 650 3995 606 3996</p>
+          <p>650 3997 607 3998 606 3999</p>
+          <p>650 4000 649 4001 607 4002</p>
+          <p>649 4003 608 4004 607 4005</p>
+          <p>649 4006 648 4007 608 4008</p>
+          <p>648 4009 609 4010 608 4011</p>
+          <p>648 4012 647 4013 609 4014</p>
+          <p>647 4015 610 4016 609 4017</p>
+          <p>647 4018 646 4019 610 4020</p>
+          <p>646 4021 611 4022 610 4023</p>
+          <p>646 4024 645 4025 611 4026</p>
+          <p>645 4027 612 4028 611 4029</p>
+          <p>645 4030 644 4031 612 4032</p>
+          <p>644 4033 613 4034 612 4035</p>
+          <p>644 4036 643 4037 613 4038</p>
+          <p>643 4039 614 4040 613 4041</p>
+          <p>643 4042 642 4043 614 4044</p>
+          <p>642 4045 615 4046 614 4047</p>
+          <p>642 4048 641 4049 615 4050</p>
+          <p>641 4051 640 4052 615 4053</p>
+          <p>640 4054 616 4055 615 4056</p>
+          <p>640 4057 617 4058 616 4059</p>
+          <p>640 4060 639 4061 617 4062</p>
+          <p>639 4063 618 4064 617 4065</p>
+          <p>639 4066 638 4067 618 4068</p>
+          <p>638 4069 619 4070 618 4071</p>
+          <p>638 4072 637 4073 619 4074</p>
+          <p>637 4075 620 4076 619 4077</p>
+          <p>637 4078 636 4079 620 4080</p>
+          <p>636 4081 621 4082 620 4083</p>
+          <p>636 4084 635 4085 621 4086</p>
+          <p>635 4087 622 4088 621 4089</p>
+          <p>635 4090 634 4091 622 4092</p>
+          <p>634 4093 623 4094 622 4095</p>
+          <p>634 4096 633 4097 623 4098</p>
+          <p>633 4099 624 4100 623 4101</p>
+          <p>633 4102 632 4103 624 4104</p>
+          <p>632 4105 628 4106 624 4107</p>
+          <p>632 4108 629 4109 628 4110</p>
+          <p>632 4111 631 4112 629 4113</p>
+          <p>631 4114 630 4115 629 4116</p>
+          <p>628 4117 627 4118 624 4119</p>
+          <p>627 4120 626 4121 624 4122</p>
+          <p>626 4123 625 4124 624 4125</p>
+          <p>785 4126 691 4127 690 4128</p>
+          <p>785 4129 786 4130 691 4131</p>
+          <p>786 4132 692 4133 691 4134</p>
+          <p>786 4135 787 4136 692 4137</p>
+          <p>787 4138 693 4139 692 4140</p>
+          <p>787 4141 788 4142 693 4143</p>
+          <p>788 4144 694 4145 693 4146</p>
+          <p>788 4147 789 4148 694 4149</p>
+          <p>694 4150 790 4151 695 4152</p>
+          <p>694 4153 789 4154 790 4155</p>
+          <p>695 4156 791 4157 696 4158</p>
+          <p>695 4159 790 4160 791 4161</p>
+          <p>791 4162 697 4163 696 4164</p>
+          <p>791 4165 792 4166 697 4167</p>
+          <p>792 4168 698 4169 697 4170</p>
+          <p>792 4171 793 4172 698 4173</p>
+          <p>793 4174 699 4175 698 4176</p>
+          <p>793 4177 794 4178 699 4179</p>
+          <p>699 4180 795 4181 700 4182</p>
+          <p>699 4183 794 4184 795 4185</p>
+          <p>700 4186 796 4187 701 4188</p>
+          <p>700 4189 795 4190 796 4191</p>
+          <p>796 4192 702 4193 701 4194</p>
+          <p>796 4195 797 4196 702 4197</p>
+          <p>797 4198 703 4199 702 4200</p>
+          <p>797 4201 798 4202 703 4203</p>
+          <p>798 4204 704 4205 703 4206</p>
+          <p>798 4207 799 4208 704 4209</p>
+          <p>704 4210 800 4211 705 4212</p>
+          <p>704 4213 799 4214 800 4215</p>
+          <p>705 4216 801 4217 706 4218</p>
+          <p>705 4219 800 4220 801 4221</p>
+          <p>801 4222 707 4223 706 4224</p>
+          <p>801 4225 802 4226 707 4227</p>
+          <p>802 4228 708 4229 707 4230</p>
+          <p>802 4231 803 4232 708 4233</p>
+          <p>803 4234 709 4235 708 4236</p>
+          <p>803 4237 804 4238 709 4239</p>
+          <p>709 4240 805 4241 710 4242</p>
+          <p>709 4243 804 4244 805 4245</p>
+          <p>710 4246 806 4247 711 4248</p>
+          <p>710 4249 805 4250 806 4251</p>
+          <p>806 4252 712 4253 711 4254</p>
+          <p>806 4255 807 4256 712 4257</p>
+          <p>807 4258 713 4259 712 4260</p>
+          <p>807 4261 808 4262 713 4263</p>
+          <p>808 4264 714 4265 713 4266</p>
+          <p>808 4267 809 4268 714 4269</p>
+          <p>714 4270 810 4271 715 4272</p>
+          <p>714 4273 809 4274 810 4275</p>
+          <p>715 4276 811 4277 716 4278</p>
+          <p>715 4279 810 4280 811 4281</p>
+          <p>811 4282 717 4283 716 4284</p>
+          <p>811 4285 812 4286 717 4287</p>
+          <p>812 4288 718 4289 717 4290</p>
+          <p>812 4291 813 4292 718 4293</p>
+          <p>813 4294 719 4295 718 4296</p>
+          <p>813 4297 814 4298 719 4299</p>
+          <p>719 4300 815 4301 720 4302</p>
+          <p>719 4303 814 4304 815 4305</p>
+          <p>720 4306 816 4307 721 4308</p>
+          <p>720 4309 815 4310 816 4311</p>
+          <p>816 4312 722 4313 721 4314</p>
+          <p>816 4315 817 4316 722 4317</p>
+          <p>817 4318 723 4319 722 4320</p>
+          <p>817 4321 818 4322 723 4323</p>
+          <p>818 4324 724 4325 723 4326</p>
+          <p>818 4327 819 4328 724 4329</p>
+          <p>724 4330 820 4331 725 4332</p>
+          <p>724 4333 819 4334 820 4335</p>
+          <p>725 4336 821 4337 726 4338</p>
+          <p>725 4339 820 4340 821 4341</p>
+          <p>821 4342 727 4343 726 4344</p>
+          <p>821 4345 822 4346 727 4347</p>
+          <p>822 4348 728 4349 727 4350</p>
+          <p>822 4351 823 4352 728 4353</p>
+          <p>823 4354 729 4355 728 4356</p>
+          <p>823 4357 824 4358 729 4359</p>
+          <p>729 4360 825 4361 730 4362</p>
+          <p>729 4363 824 4364 825 4365</p>
+          <p>730 4366 826 4367 731 4368</p>
+          <p>730 4369 825 4370 826 4371</p>
+          <p>826 4372 732 4373 731 4374</p>
+          <p>826 4375 827 4376 732 4377</p>
+          <p>827 4378 733 4379 732 4380</p>
+          <p>827 4381 828 4382 733 4383</p>
+          <p>828 4384 734 4385 733 4386</p>
+          <p>828 4387 829 4388 734 4389</p>
+          <p>734 4390 830 4391 735 4392</p>
+          <p>734 4393 829 4394 830 4395</p>
+          <p>735 4396 831 4397 736 4398</p>
+          <p>735 4399 830 4400 831 4401</p>
+          <p>736 4402 832 4403 737 4404</p>
+          <p>736 4405 831 4406 832 4407</p>
+          <p>737 4408 833 4409 738 4410</p>
+          <p>737 4411 832 4412 833 4413</p>
+          <p>738 4414 834 4415 739 4416</p>
+          <p>738 4417 833 4418 834 4419</p>
+          <p>834 4420 690 4421 739 4422</p>
+          <p>834 4423 785 4424 690 4425</p>
+          <p>880 4426 786 4427 785 4428</p>
+          <p>880 4429 881 4430 786 4431</p>
+          <p>881 4432 787 4433 786 4434</p>
+          <p>881 4435 882 4436 787 4437</p>
+          <p>882 4438 788 4439 787 4440</p>
+          <p>882 4441 883 4442 788 4443</p>
+          <p>883 4444 789 4445 788 4446</p>
+          <p>883 4447 884 4448 789 4449</p>
+          <p>789 4450 885 4451 790 4452</p>
+          <p>789 4453 884 4454 885 4455</p>
+          <p>790 4456 886 4457 791 4458</p>
+          <p>790 4459 885 4460 886 4461</p>
+          <p>886 4462 792 4463 791 4464</p>
+          <p>886 4465 887 4466 792 4467</p>
+          <p>887 4468 793 4469 792 4470</p>
+          <p>887 4471 888 4472 793 4473</p>
+          <p>888 4474 794 4475 793 4476</p>
+          <p>888 4477 889 4478 794 4479</p>
+          <p>794 4480 890 4481 795 4482</p>
+          <p>794 4483 889 4484 890 4485</p>
+          <p>795 4486 891 4487 796 4488</p>
+          <p>795 4489 890 4490 891 4491</p>
+          <p>891 4492 797 4493 796 4494</p>
+          <p>891 4495 892 4496 797 4497</p>
+          <p>892 4498 798 4499 797 4500</p>
+          <p>892 4501 893 4502 798 4503</p>
+          <p>893 4504 799 4505 798 4506</p>
+          <p>893 4507 894 4508 799 4509</p>
+          <p>799 4510 895 4511 800 4512</p>
+          <p>799 4513 894 4514 895 4515</p>
+          <p>800 4516 896 4517 801 4518</p>
+          <p>800 4519 895 4520 896 4521</p>
+          <p>896 4522 802 4523 801 4524</p>
+          <p>896 4525 897 4526 802 4527</p>
+          <p>897 4528 803 4529 802 4530</p>
+          <p>897 4531 898 4532 803 4533</p>
+          <p>898 4534 804 4535 803 4536</p>
+          <p>898 4537 899 4538 804 4539</p>
+          <p>804 4540 900 4541 805 4542</p>
+          <p>804 4543 899 4544 900 4545</p>
+          <p>805 4546 901 4547 806 4548</p>
+          <p>805 4549 900 4550 901 4551</p>
+          <p>901 4552 807 4553 806 4554</p>
+          <p>901 4555 902 4556 807 4557</p>
+          <p>902 4558 808 4559 807 4560</p>
+          <p>902 4561 903 4562 808 4563</p>
+          <p>903 4564 809 4565 808 4566</p>
+          <p>903 4567 904 4568 809 4569</p>
+          <p>809 4570 905 4571 810 4572</p>
+          <p>809 4573 904 4574 905 4575</p>
+          <p>810 4576 906 4577 811 4578</p>
+          <p>810 4579 905 4580 906 4581</p>
+          <p>906 4582 812 4583 811 4584</p>
+          <p>906 4585 907 4586 812 4587</p>
+          <p>907 4588 813 4589 812 4590</p>
+          <p>907 4591 908 4592 813 4593</p>
+          <p>908 4594 814 4595 813 4596</p>
+          <p>908 4597 909 4598 814 4599</p>
+          <p>814 4600 910 4601 815 4602</p>
+          <p>814 4603 909 4604 910 4605</p>
+          <p>815 4606 911 4607 816 4608</p>
+          <p>815 4609 910 4610 911 4611</p>
+          <p>911 4612 817 4613 816 4614</p>
+          <p>911 4615 912 4616 817 4617</p>
+          <p>912 4618 818 4619 817 4620</p>
+          <p>912 4621 913 4622 818 4623</p>
+          <p>913 4624 819 4625 818 4626</p>
+          <p>913 4627 914 4628 819 4629</p>
+          <p>819 4630 915 4631 820 4632</p>
+          <p>819 4633 914 4634 915 4635</p>
+          <p>820 4636 916 4637 821 4638</p>
+          <p>820 4639 915 4640 916 4641</p>
+          <p>916 4642 822 4643 821 4644</p>
+          <p>916 4645 917 4646 822 4647</p>
+          <p>917 4648 823 4649 822 4650</p>
+          <p>917 4651 918 4652 823 4653</p>
+          <p>918 4654 824 4655 823 4656</p>
+          <p>918 4657 919 4658 824 4659</p>
+          <p>824 4660 920 4661 825 4662</p>
+          <p>824 4663 919 4664 920 4665</p>
+          <p>825 4666 921 4667 826 4668</p>
+          <p>825 4669 920 4670 921 4671</p>
+          <p>921 4672 827 4673 826 4674</p>
+          <p>921 4675 922 4676 827 4677</p>
+          <p>922 4678 828 4679 827 4680</p>
+          <p>922 4681 923 4682 828 4683</p>
+          <p>923 4684 829 4685 828 4686</p>
+          <p>923 4687 924 4688 829 4689</p>
+          <p>829 4690 925 4691 830 4692</p>
+          <p>829 4693 924 4694 925 4695</p>
+          <p>830 4696 926 4697 831 4698</p>
+          <p>830 4699 925 4700 926 4701</p>
+          <p>831 4702 927 4703 832 4704</p>
+          <p>831 4705 926 4706 927 4707</p>
+          <p>832 4708 928 4709 833 4710</p>
+          <p>832 4711 927 4712 928 4713</p>
+          <p>833 4714 929 4715 834 4716</p>
+          <p>833 4717 928 4718 929 4719</p>
+          <p>929 4720 785 4721 834 4722</p>
+          <p>929 4723 880 4724 785 4725</p>
+          <p>975 4726 881 4727 880 4728</p>
+          <p>975 4729 976 4730 881 4731</p>
+          <p>976 4732 882 4733 881 4734</p>
+          <p>976 4735 977 4736 882 4737</p>
+          <p>977 4738 883 4739 882 4740</p>
+          <p>977 4741 978 4742 883 4743</p>
+          <p>978 4744 884 4745 883 4746</p>
+          <p>978 4747 979 4748 884 4749</p>
+          <p>884 4750 980 4751 885 4752</p>
+          <p>884 4753 979 4754 980 4755</p>
+          <p>885 4756 981 4757 886 4758</p>
+          <p>885 4759 980 4760 981 4761</p>
+          <p>981 4762 887 4763 886 4764</p>
+          <p>981 4765 982 4766 887 4767</p>
+          <p>982 4768 888 4769 887 4770</p>
+          <p>982 4771 983 4772 888 4773</p>
+          <p>983 4774 889 4775 888 4776</p>
+          <p>983 4777 984 4778 889 4779</p>
+          <p>889 4780 985 4781 890 4782</p>
+          <p>889 4783 984 4784 985 4785</p>
+          <p>890 4786 986 4787 891 4788</p>
+          <p>890 4789 985 4790 986 4791</p>
+          <p>986 4792 892 4793 891 4794</p>
+          <p>986 4795 987 4796 892 4797</p>
+          <p>987 4798 893 4799 892 4800</p>
+          <p>987 4801 988 4802 893 4803</p>
+          <p>988 4804 894 4805 893 4806</p>
+          <p>988 4807 989 4808 894 4809</p>
+          <p>894 4810 990 4811 895 4812</p>
+          <p>894 4813 989 4814 990 4815</p>
+          <p>895 4816 991 4817 896 4818</p>
+          <p>895 4819 990 4820 991 4821</p>
+          <p>991 4822 897 4823 896 4824</p>
+          <p>991 4825 992 4826 897 4827</p>
+          <p>992 4828 898 4829 897 4830</p>
+          <p>992 4831 993 4832 898 4833</p>
+          <p>993 4834 899 4835 898 4836</p>
+          <p>993 4837 994 4838 899 4839</p>
+          <p>899 4840 995 4841 900 4842</p>
+          <p>899 4843 994 4844 995 4845</p>
+          <p>900 4846 996 4847 901 4848</p>
+          <p>900 4849 995 4850 996 4851</p>
+          <p>996 4852 902 4853 901 4854</p>
+          <p>996 4855 997 4856 902 4857</p>
+          <p>997 4858 903 4859 902 4860</p>
+          <p>997 4861 998 4862 903 4863</p>
+          <p>998 4864 904 4865 903 4866</p>
+          <p>998 4867 999 4868 904 4869</p>
+          <p>904 4870 1000 4871 905 4872</p>
+          <p>904 4873 999 4874 1000 4875</p>
+          <p>905 4876 1001 4877 906 4878</p>
+          <p>905 4879 1000 4880 1001 4881</p>
+          <p>1001 4882 907 4883 906 4884</p>
+          <p>1001 4885 1002 4886 907 4887</p>
+          <p>1002 4888 908 4889 907 4890</p>
+          <p>1002 4891 1003 4892 908 4893</p>
+          <p>1003 4894 909 4895 908 4896</p>
+          <p>1003 4897 1004 4898 909 4899</p>
+          <p>909 4900 1005 4901 910 4902</p>
+          <p>909 4903 1004 4904 1005 4905</p>
+          <p>910 4906 1006 4907 911 4908</p>
+          <p>910 4909 1005 4910 1006 4911</p>
+          <p>1006 4912 912 4913 911 4914</p>
+          <p>1006 4915 1007 4916 912 4917</p>
+          <p>1007 4918 913 4919 912 4920</p>
+          <p>1007 4921 1008 4922 913 4923</p>
+          <p>1008 4924 914 4925 913 4926</p>
+          <p>1008 4927 1009 4928 914 4929</p>
+          <p>914 4930 1010 4931 915 4932</p>
+          <p>914 4933 1009 4934 1010 4935</p>
+          <p>915 4936 1011 4937 916 4938</p>
+          <p>915 4939 1010 4940 1011 4941</p>
+          <p>1011 4942 917 4943 916 4944</p>
+          <p>1011 4945 1012 4946 917 4947</p>
+          <p>1012 4948 918 4949 917 4950</p>
+          <p>1012 4951 1013 4952 918 4953</p>
+          <p>1013 4954 919 4955 918 4956</p>
+          <p>1013 4957 1014 4958 919 4959</p>
+          <p>919 4960 1015 4961 920 4962</p>
+          <p>919 4963 1014 4964 1015 4965</p>
+          <p>920 4966 1016 4967 921 4968</p>
+          <p>920 4969 1015 4970 1016 4971</p>
+          <p>1016 4972 922 4973 921 4974</p>
+          <p>1016 4975 1017 4976 922 4977</p>
+          <p>1017 4978 923 4979 922 4980</p>
+          <p>1017 4981 1018 4982 923 4983</p>
+          <p>1018 4984 924 4985 923 4986</p>
+          <p>1018 4987 1019 4988 924 4989</p>
+          <p>924 4990 1020 4991 925 4992</p>
+          <p>924 4993 1019 4994 1020 4995</p>
+          <p>925 4996 1021 4997 926 4998</p>
+          <p>925 4999 1020 5000 1021 5001</p>
+          <p>926 5002 1022 5003 927 5004</p>
+          <p>926 5005 1021 5006 1022 5007</p>
+          <p>927 5008 1023 5009 928 5010</p>
+          <p>927 5011 1022 5012 1023 5013</p>
+          <p>928 5014 1024 5015 929 5016</p>
+          <p>928 5017 1023 5018 1024 5019</p>
+          <p>1024 5020 880 5021 929 5022</p>
+          <p>1024 5023 975 5024 880 5025</p>
+          <p>1070 5026 976 5027 975 5028</p>
+          <p>1070 5029 1071 5030 976 5031</p>
+          <p>1071 5032 977 5033 976 5034</p>
+          <p>1071 5035 1072 5036 977 5037</p>
+          <p>1072 5038 978 5039 977 5040</p>
+          <p>1072 5041 1073 5042 978 5043</p>
+          <p>978 5044 1074 5045 979 5046</p>
+          <p>978 5047 1073 5048 1074 5049</p>
+          <p>979 5050 1075 5051 980 5052</p>
+          <p>979 5053 1074 5054 1075 5055</p>
+          <p>1075 5056 981 5057 980 5058</p>
+          <p>1075 5059 1076 5060 981 5061</p>
+          <p>981 5062 1077 5063 982 5064</p>
+          <p>981 5065 1076 5066 1077 5067</p>
+          <p>982 5068 1078 5069 983 5070</p>
+          <p>982 5071 1077 5072 1078 5073</p>
+          <p>983 5074 1079 5075 984 5076</p>
+          <p>983 5077 1078 5078 1079 5079</p>
+          <p>984 5080 1080 5081 985 5082</p>
+          <p>984 5083 1079 5084 1080 5085</p>
+          <p>985 5086 1081 5087 986 5088</p>
+          <p>985 5089 1080 5090 1081 5091</p>
+          <p>986 5092 1082 5093 987 5094</p>
+          <p>986 5095 1081 5096 1082 5097</p>
+          <p>987 5098 1083 5099 988 5100</p>
+          <p>987 5101 1082 5102 1083 5103</p>
+          <p>1083 5104 989 5105 988 5106</p>
+          <p>1083 5107 1084 5108 989 5109</p>
+          <p>989 5110 1085 5111 990 5112</p>
+          <p>989 5113 1084 5114 1085 5115</p>
+          <p>990 5116 1086 5117 991 5118</p>
+          <p>990 5119 1085 5120 1086 5121</p>
+          <p>1086 5122 992 5123 991 5124</p>
+          <p>1086 5125 1087 5126 992 5127</p>
+          <p>992 5128 1088 5129 993 5130</p>
+          <p>992 5131 1087 5132 1088 5133</p>
+          <p>993 5134 1089 5135 994 5136</p>
+          <p>993 5137 1088 5138 1089 5139</p>
+          <p>1089 5140 995 5141 994 5142</p>
+          <p>1089 5143 1090 5144 995 5145</p>
+          <p>1090 5146 996 5147 995 5148</p>
+          <p>1090 5149 1091 5150 996 5151</p>
+          <p>1091 5152 997 5153 996 5154</p>
+          <p>1091 5155 1092 5156 997 5157</p>
+          <p>997 5158 1093 5159 998 5160</p>
+          <p>997 5161 1092 5162 1093 5163</p>
+          <p>1093 5164 999 5165 998 5166</p>
+          <p>1093 5167 1094 5168 999 5169</p>
+          <p>999 5170 1095 5171 1000 5172</p>
+          <p>999 5173 1094 5174 1095 5175</p>
+          <p>1000 5176 1096 5177 1001 5178</p>
+          <p>1000 5179 1095 5180 1096 5181</p>
+          <p>1001 5182 1097 5183 1002 5184</p>
+          <p>1001 5185 1096 5186 1097 5187</p>
+          <p>1002 5188 1098 5189 1003 5190</p>
+          <p>1002 5191 1097 5192 1098 5193</p>
+          <p>1003 5194 1099 5195 1004 5196</p>
+          <p>1003 5197 1098 5198 1099 5199</p>
+          <p>1099 5200 1005 5201 1004 5202</p>
+          <p>1099 5203 1100 5204 1005 5205</p>
+          <p>1005 5206 1101 5207 1006 5208</p>
+          <p>1005 5209 1100 5210 1101 5211</p>
+          <p>1006 5212 1102 5213 1007 5214</p>
+          <p>1006 5215 1101 5216 1102 5217</p>
+          <p>1007 5218 1103 5219 1008 5220</p>
+          <p>1007 5221 1102 5222 1103 5223</p>
+          <p>1008 5224 1104 5225 1009 5226</p>
+          <p>1008 5227 1103 5228 1104 5229</p>
+          <p>1104 5230 1010 5231 1009 5232</p>
+          <p>1104 5233 1105 5234 1010 5235</p>
+          <p>1010 5236 1106 5237 1011 5238</p>
+          <p>1010 5239 1105 5240 1106 5241</p>
+          <p>1011 5242 1107 5243 1012 5244</p>
+          <p>1011 5245 1106 5246 1107 5247</p>
+          <p>1012 5248 1108 5249 1013 5250</p>
+          <p>1012 5251 1107 5252 1108 5253</p>
+          <p>1013 5254 1109 5255 1014 5256</p>
+          <p>1013 5257 1108 5258 1109 5259</p>
+          <p>1014 5260 1110 5261 1015 5262</p>
+          <p>1014 5263 1109 5264 1110 5265</p>
+          <p>1110 5266 1016 5267 1015 5268</p>
+          <p>1110 5269 1111 5270 1016 5271</p>
+          <p>1016 5272 1112 5273 1017 5274</p>
+          <p>1016 5275 1111 5276 1112 5277</p>
+          <p>1017 5278 1113 5279 1018 5280</p>
+          <p>1017 5281 1112 5282 1113 5283</p>
+          <p>1018 5284 1114 5285 1019 5286</p>
+          <p>1018 5287 1113 5288 1114 5289</p>
+          <p>1114 5290 1020 5291 1019 5292</p>
+          <p>1114 5293 1115 5294 1020 5295</p>
+          <p>1020 5296 1116 5297 1021 5298</p>
+          <p>1020 5299 1115 5300 1116 5301</p>
+          <p>1021 5302 1117 5303 1022 5304</p>
+          <p>1021 5305 1116 5306 1117 5307</p>
+          <p>1022 5308 1118 5309 1023 5310</p>
+          <p>1022 5311 1117 5312 1118 5313</p>
+          <p>1023 5314 1119 5315 1024 5316</p>
+          <p>1023 5317 1118 5318 1119 5319</p>
+          <p>1024 5320 1070 5321 975 5322</p>
+          <p>1024 5323 1119 5324 1070 5325</p>
+          <p>1070 5326 1166 5327 1071 5328</p>
+          <p>1070 5329 1165 5330 1166 5331</p>
+          <p>1166 5332 1072 5333 1071 5334</p>
+          <p>1166 5335 1167 5336 1072 5337</p>
+          <p>1072 5338 1168 5339 1073 5340</p>
+          <p>1072 5341 1167 5342 1168 5343</p>
+          <p>1073 5344 1169 5345 1074 5346</p>
+          <p>1073 5347 1168 5348 1169 5349</p>
+          <p>1074 5350 1170 5351 1075 5352</p>
+          <p>1074 5353 1169 5354 1170 5355</p>
+          <p>1170 5356 1076 5357 1075 5358</p>
+          <p>1170 5359 1171 5360 1076 5361</p>
+          <p>1076 5362 1172 5363 1077 5364</p>
+          <p>1076 5365 1171 5366 1172 5367</p>
+          <p>1077 5368 1173 5369 1078 5370</p>
+          <p>1077 5371 1172 5372 1173 5373</p>
+          <p>1173 5374 1079 5375 1078 5376</p>
+          <p>1173 5377 1174 5378 1079 5379</p>
+          <p>1079 5380 1175 5381 1080 5382</p>
+          <p>1079 5383 1174 5384 1175 5385</p>
+          <p>1175 5386 1081 5387 1080 5388</p>
+          <p>1175 5389 1176 5390 1081 5391</p>
+          <p>1176 5392 1082 5393 1081 5394</p>
+          <p>1176 5395 1177 5396 1082 5397</p>
+          <p>1177 5398 1083 5399 1082 5400</p>
+          <p>1177 5401 1178 5402 1083 5403</p>
+          <p>1178 5404 1084 5405 1083 5406</p>
+          <p>1178 5407 1179 5408 1084 5409</p>
+          <p>1179 5410 1085 5411 1084 5412</p>
+          <p>1179 5413 1180 5414 1085 5415</p>
+          <p>1085 5416 1181 5417 1086 5418</p>
+          <p>1085 5419 1180 5420 1181 5421</p>
+          <p>1181 5422 1087 5423 1086 5424</p>
+          <p>1181 5425 1182 5426 1087 5427</p>
+          <p>1182 5428 1088 5429 1087 5430</p>
+          <p>1182 5431 1183 5432 1088 5433</p>
+          <p>1088 5434 1184 5435 1089 5436</p>
+          <p>1088 5437 1183 5438 1184 5439</p>
+          <p>1089 5440 1185 5441 1090 5442</p>
+          <p>1089 5443 1184 5444 1185 5445</p>
+          <p>1090 5446 1186 5447 1091 5448</p>
+          <p>1090 5449 1185 5450 1186 5451</p>
+          <p>1186 5452 1092 5453 1091 5454</p>
+          <p>1186 5455 1187 5456 1092 5457</p>
+          <p>1092 5458 1188 5459 1093 5460</p>
+          <p>1092 5461 1187 5462 1188 5463</p>
+          <p>1093 5464 1189 5465 1094 5466</p>
+          <p>1093 5467 1188 5468 1189 5469</p>
+          <p>1189 5470 1095 5471 1094 5472</p>
+          <p>1189 5473 1190 5474 1095 5475</p>
+          <p>1095 5476 1191 5477 1096 5478</p>
+          <p>1095 5479 1190 5480 1191 5481</p>
+          <p>1096 5482 1192 5483 1097 5484</p>
+          <p>1096 5485 1191 5486 1192 5487</p>
+          <p>1097 5488 1193 5489 1098 5490</p>
+          <p>1097 5491 1192 5492 1193 5493</p>
+          <p>1098 5494 1194 5495 1099 5496</p>
+          <p>1098 5497 1193 5498 1194 5499</p>
+          <p>1194 5500 1100 5501 1099 5502</p>
+          <p>1194 5503 1195 5504 1100 5505</p>
+          <p>1100 5506 1196 5507 1101 5508</p>
+          <p>1100 5509 1195 5510 1196 5511</p>
+          <p>1196 5512 1102 5513 1101 5514</p>
+          <p>1196 5515 1197 5516 1102 5517</p>
+          <p>1102 5518 1198 5519 1103 5520</p>
+          <p>1102 5521 1197 5522 1198 5523</p>
+          <p>1198 5524 1104 5525 1103 5526</p>
+          <p>1198 5527 1199 5528 1104 5529</p>
+          <p>1104 5530 1200 5531 1105 5532</p>
+          <p>1104 5533 1199 5534 1200 5535</p>
+          <p>1200 5536 1106 5537 1105 5538</p>
+          <p>1200 5539 1201 5540 1106 5541</p>
+          <p>1201 5542 1107 5543 1106 5544</p>
+          <p>1201 5545 1202 5546 1107 5547</p>
+          <p>1202 5548 1108 5549 1107 5550</p>
+          <p>1202 5551 1203 5552 1108 5553</p>
+          <p>1203 5554 1109 5555 1108 5556</p>
+          <p>1203 5557 1204 5558 1109 5559</p>
+          <p>1109 5560 1205 5561 1110 5562</p>
+          <p>1109 5563 1204 5564 1205 5565</p>
+          <p>1205 5566 1111 5567 1110 5568</p>
+          <p>1205 5569 1206 5570 1111 5571</p>
+          <p>1206 5572 1112 5573 1111 5574</p>
+          <p>1206 5575 1207 5576 1112 5577</p>
+          <p>1207 5578 1113 5579 1112 5580</p>
+          <p>1207 5581 1208 5582 1113 5583</p>
+          <p>1208 5584 1114 5585 1113 5586</p>
+          <p>1208 5587 1209 5588 1114 5589</p>
+          <p>1209 5590 1115 5591 1114 5592</p>
+          <p>1209 5593 1210 5594 1115 5595</p>
+          <p>1115 5596 1211 5597 1116 5598</p>
+          <p>1115 5599 1210 5600 1211 5601</p>
+          <p>1116 5602 1212 5603 1117 5604</p>
+          <p>1116 5605 1211 5606 1212 5607</p>
+          <p>1117 5608 1213 5609 1118 5610</p>
+          <p>1117 5611 1212 5612 1213 5613</p>
+          <p>1118 5614 1214 5615 1119 5616</p>
+          <p>1118 5617 1213 5618 1214 5619</p>
+          <p>1119 5620 1165 5621 1070 5622</p>
+          <p>1119 5623 1214 5624 1165 5625</p>
+          <p>740 5626 836 5627 741 5628</p>
+          <p>740 5629 835 5630 836 5631</p>
+          <p>741 5632 837 5633 742 5634</p>
+          <p>741 5635 836 5636 837 5637</p>
+          <p>742 5638 838 5639 743 5640</p>
+          <p>742 5641 837 5642 838 5643</p>
+          <p>743 5644 839 5645 744 5646</p>
+          <p>743 5647 838 5648 839 5649</p>
+          <p>744 5650 840 5651 745 5652</p>
+          <p>744 5653 839 5654 840 5655</p>
+          <p>745 5656 841 5657 746 5658</p>
+          <p>745 5659 840 5660 841 5661</p>
+          <p>746 5662 842 5663 747 5664</p>
+          <p>746 5665 841 5666 842 5667</p>
+          <p>747 5668 843 5669 748 5670</p>
+          <p>747 5671 842 5672 843 5673</p>
+          <p>843 5674 749 5675 748 5676</p>
+          <p>843 5677 844 5678 749 5679</p>
+          <p>844 5680 750 5681 749 5682</p>
+          <p>844 5683 845 5684 750 5685</p>
+          <p>750 5686 846 5687 751 5688</p>
+          <p>750 5689 845 5690 846 5691</p>
+          <p>751 5692 847 5693 752 5694</p>
+          <p>751 5695 846 5696 847 5697</p>
+          <p>752 5698 848 5699 753 5700</p>
+          <p>752 5701 847 5702 848 5703</p>
+          <p>848 5704 754 5705 753 5706</p>
+          <p>848 5707 849 5708 754 5709</p>
+          <p>849 5710 755 5711 754 5712</p>
+          <p>849 5713 850 5714 755 5715</p>
+          <p>755 5716 851 5717 756 5718</p>
+          <p>755 5719 850 5720 851 5721</p>
+          <p>756 5722 852 5723 757 5724</p>
+          <p>756 5725 851 5726 852 5727</p>
+          <p>757 5728 853 5729 758 5730</p>
+          <p>757 5731 852 5732 853 5733</p>
+          <p>853 5734 759 5735 758 5736</p>
+          <p>853 5737 854 5738 759 5739</p>
+          <p>854 5740 760 5741 759 5742</p>
+          <p>854 5743 855 5744 760 5745</p>
+          <p>760 5746 856 5747 761 5748</p>
+          <p>760 5749 855 5750 856 5751</p>
+          <p>761 5752 857 5753 762 5754</p>
+          <p>761 5755 856 5756 857 5757</p>
+          <p>762 5758 858 5759 763 5760</p>
+          <p>762 5761 857 5762 858 5763</p>
+          <p>858 5764 764 5765 763 5766</p>
+          <p>858 5767 859 5768 764 5769</p>
+          <p>859 5770 765 5771 764 5772</p>
+          <p>859 5773 860 5774 765 5775</p>
+          <p>765 5776 861 5777 766 5778</p>
+          <p>765 5779 860 5780 861 5781</p>
+          <p>766 5782 862 5783 767 5784</p>
+          <p>766 5785 861 5786 862 5787</p>
+          <p>767 5788 863 5789 768 5790</p>
+          <p>767 5791 862 5792 863 5793</p>
+          <p>863 5794 769 5795 768 5796</p>
+          <p>863 5797 864 5798 769 5799</p>
+          <p>864 5800 770 5801 769 5802</p>
+          <p>864 5803 865 5804 770 5805</p>
+          <p>770 5806 866 5807 771 5808</p>
+          <p>770 5809 865 5810 866 5811</p>
+          <p>771 5812 867 5813 772 5814</p>
+          <p>771 5815 866 5816 867 5817</p>
+          <p>772 5818 868 5819 773 5820</p>
+          <p>772 5821 867 5822 868 5823</p>
+          <p>868 5824 774 5825 773 5826</p>
+          <p>868 5827 869 5828 774 5829</p>
+          <p>869 5830 775 5831 774 5832</p>
+          <p>869 5833 870 5834 775 5835</p>
+          <p>775 5836 871 5837 776 5838</p>
+          <p>775 5839 870 5840 871 5841</p>
+          <p>776 5842 872 5843 777 5844</p>
+          <p>776 5845 871 5846 872 5847</p>
+          <p>777 5848 873 5849 778 5850</p>
+          <p>777 5851 872 5852 873 5853</p>
+          <p>873 5854 779 5855 778 5856</p>
+          <p>873 5857 874 5858 779 5859</p>
+          <p>874 5860 780 5861 779 5862</p>
+          <p>874 5863 875 5864 780 5865</p>
+          <p>780 5866 876 5867 781 5868</p>
+          <p>780 5869 875 5870 876 5871</p>
+          <p>781 5872 877 5873 782 5874</p>
+          <p>781 5875 876 5876 877 5877</p>
+          <p>782 5878 878 5879 783 5880</p>
+          <p>782 5881 877 5882 878 5883</p>
+          <p>878 5884 784 5885 783 5886</p>
+          <p>878 5887 879 5888 784 5889</p>
+          <p>879 5890 740 5891 784 5892</p>
+          <p>879 5893 835 5894 740 5895</p>
+          <p>835 5896 931 5897 836 5898</p>
+          <p>835 5899 930 5900 931 5901</p>
+          <p>836 5902 932 5903 837 5904</p>
+          <p>836 5905 931 5906 932 5907</p>
+          <p>837 5908 933 5909 838 5910</p>
+          <p>837 5911 932 5912 933 5913</p>
+          <p>838 5914 934 5915 839 5916</p>
+          <p>838 5917 933 5918 934 5919</p>
+          <p>839 5920 935 5921 840 5922</p>
+          <p>839 5923 934 5924 935 5925</p>
+          <p>840 5926 936 5927 841 5928</p>
+          <p>840 5929 935 5930 936 5931</p>
+          <p>841 5932 937 5933 842 5934</p>
+          <p>841 5935 936 5936 937 5937</p>
+          <p>842 5938 938 5939 843 5940</p>
+          <p>842 5941 937 5942 938 5943</p>
+          <p>938 5944 844 5945 843 5946</p>
+          <p>938 5947 939 5948 844 5949</p>
+          <p>939 5950 845 5951 844 5952</p>
+          <p>939 5953 940 5954 845 5955</p>
+          <p>845 5956 941 5957 846 5958</p>
+          <p>845 5959 940 5960 941 5961</p>
+          <p>846 5962 942 5963 847 5964</p>
+          <p>846 5965 941 5966 942 5967</p>
+          <p>847 5968 943 5969 848 5970</p>
+          <p>847 5971 942 5972 943 5973</p>
+          <p>943 5974 849 5975 848 5976</p>
+          <p>943 5977 944 5978 849 5979</p>
+          <p>944 5980 850 5981 849 5982</p>
+          <p>944 5983 945 5984 850 5985</p>
+          <p>850 5986 946 5987 851 5988</p>
+          <p>850 5989 945 5990 946 5991</p>
+          <p>851 5992 947 5993 852 5994</p>
+          <p>851 5995 946 5996 947 5997</p>
+          <p>852 5998 948 5999 853 6000</p>
+          <p>852 6001 947 6002 948 6003</p>
+          <p>948 6004 854 6005 853 6006</p>
+          <p>948 6007 949 6008 854 6009</p>
+          <p>949 6010 855 6011 854 6012</p>
+          <p>949 6013 950 6014 855 6015</p>
+          <p>855 6016 951 6017 856 6018</p>
+          <p>855 6019 950 6020 951 6021</p>
+          <p>856 6022 952 6023 857 6024</p>
+          <p>856 6025 951 6026 952 6027</p>
+          <p>857 6028 953 6029 858 6030</p>
+          <p>857 6031 952 6032 953 6033</p>
+          <p>953 6034 859 6035 858 6036</p>
+          <p>953 6037 954 6038 859 6039</p>
+          <p>954 6040 860 6041 859 6042</p>
+          <p>954 6043 955 6044 860 6045</p>
+          <p>860 6046 956 6047 861 6048</p>
+          <p>860 6049 955 6050 956 6051</p>
+          <p>861 6052 957 6053 862 6054</p>
+          <p>861 6055 956 6056 957 6057</p>
+          <p>862 6058 958 6059 863 6060</p>
+          <p>862 6061 957 6062 958 6063</p>
+          <p>958 6064 864 6065 863 6066</p>
+          <p>958 6067 959 6068 864 6069</p>
+          <p>959 6070 865 6071 864 6072</p>
+          <p>959 6073 960 6074 865 6075</p>
+          <p>865 6076 961 6077 866 6078</p>
+          <p>865 6079 960 6080 961 6081</p>
+          <p>866 6082 962 6083 867 6084</p>
+          <p>866 6085 961 6086 962 6087</p>
+          <p>867 6088 963 6089 868 6090</p>
+          <p>867 6091 962 6092 963 6093</p>
+          <p>963 6094 869 6095 868 6096</p>
+          <p>963 6097 964 6098 869 6099</p>
+          <p>964 6100 870 6101 869 6102</p>
+          <p>964 6103 965 6104 870 6105</p>
+          <p>870 6106 966 6107 871 6108</p>
+          <p>870 6109 965 6110 966 6111</p>
+          <p>871 6112 967 6113 872 6114</p>
+          <p>871 6115 966 6116 967 6117</p>
+          <p>872 6118 968 6119 873 6120</p>
+          <p>872 6121 967 6122 968 6123</p>
+          <p>968 6124 874 6125 873 6126</p>
+          <p>968 6127 969 6128 874 6129</p>
+          <p>969 6130 875 6131 874 6132</p>
+          <p>969 6133 970 6134 875 6135</p>
+          <p>875 6136 971 6137 876 6138</p>
+          <p>875 6139 970 6140 971 6141</p>
+          <p>876 6142 972 6143 877 6144</p>
+          <p>876 6145 971 6146 972 6147</p>
+          <p>877 6148 973 6149 878 6150</p>
+          <p>877 6151 972 6152 973 6153</p>
+          <p>973 6154 879 6155 878 6156</p>
+          <p>973 6157 974 6158 879 6159</p>
+          <p>974 6160 835 6161 879 6162</p>
+          <p>974 6163 930 6164 835 6165</p>
+          <p>930 6166 1026 6167 931 6168</p>
+          <p>930 6169 1025 6170 1026 6171</p>
+          <p>931 6172 1027 6173 932 6174</p>
+          <p>931 6175 1026 6176 1027 6177</p>
+          <p>932 6178 1028 6179 933 6180</p>
+          <p>932 6181 1027 6182 1028 6183</p>
+          <p>933 6184 1029 6185 934 6186</p>
+          <p>933 6187 1028 6188 1029 6189</p>
+          <p>934 6190 1030 6191 935 6192</p>
+          <p>934 6193 1029 6194 1030 6195</p>
+          <p>935 6196 1031 6197 936 6198</p>
+          <p>935 6199 1030 6200 1031 6201</p>
+          <p>936 6202 1032 6203 937 6204</p>
+          <p>936 6205 1031 6206 1032 6207</p>
+          <p>937 6208 1033 6209 938 6210</p>
+          <p>937 6211 1032 6212 1033 6213</p>
+          <p>1033 6214 939 6215 938 6216</p>
+          <p>1033 6217 1034 6218 939 6219</p>
+          <p>1034 6220 940 6221 939 6222</p>
+          <p>1034 6223 1035 6224 940 6225</p>
+          <p>940 6226 1036 6227 941 6228</p>
+          <p>940 6229 1035 6230 1036 6231</p>
+          <p>941 6232 1037 6233 942 6234</p>
+          <p>941 6235 1036 6236 1037 6237</p>
+          <p>942 6238 1038 6239 943 6240</p>
+          <p>942 6241 1037 6242 1038 6243</p>
+          <p>1038 6244 944 6245 943 6246</p>
+          <p>1038 6247 1039 6248 944 6249</p>
+          <p>1039 6250 945 6251 944 6252</p>
+          <p>1039 6253 1040 6254 945 6255</p>
+          <p>945 6256 1041 6257 946 6258</p>
+          <p>945 6259 1040 6260 1041 6261</p>
+          <p>946 6262 1042 6263 947 6264</p>
+          <p>946 6265 1041 6266 1042 6267</p>
+          <p>947 6268 1043 6269 948 6270</p>
+          <p>947 6271 1042 6272 1043 6273</p>
+          <p>1043 6274 949 6275 948 6276</p>
+          <p>1043 6277 1044 6278 949 6279</p>
+          <p>1044 6280 950 6281 949 6282</p>
+          <p>1044 6283 1045 6284 950 6285</p>
+          <p>950 6286 1046 6287 951 6288</p>
+          <p>950 6289 1045 6290 1046 6291</p>
+          <p>951 6292 1047 6293 952 6294</p>
+          <p>951 6295 1046 6296 1047 6297</p>
+          <p>952 6298 1048 6299 953 6300</p>
+          <p>952 6301 1047 6302 1048 6303</p>
+          <p>1048 6304 954 6305 953 6306</p>
+          <p>1048 6307 1049 6308 954 6309</p>
+          <p>1049 6310 955 6311 954 6312</p>
+          <p>1049 6313 1050 6314 955 6315</p>
+          <p>955 6316 1051 6317 956 6318</p>
+          <p>955 6319 1050 6320 1051 6321</p>
+          <p>956 6322 1052 6323 957 6324</p>
+          <p>956 6325 1051 6326 1052 6327</p>
+          <p>957 6328 1053 6329 958 6330</p>
+          <p>957 6331 1052 6332 1053 6333</p>
+          <p>1053 6334 959 6335 958 6336</p>
+          <p>1053 6337 1054 6338 959 6339</p>
+          <p>1054 6340 960 6341 959 6342</p>
+          <p>1054 6343 1055 6344 960 6345</p>
+          <p>960 6346 1056 6347 961 6348</p>
+          <p>960 6349 1055 6350 1056 6351</p>
+          <p>961 6352 1057 6353 962 6354</p>
+          <p>961 6355 1056 6356 1057 6357</p>
+          <p>962 6358 1058 6359 963 6360</p>
+          <p>962 6361 1057 6362 1058 6363</p>
+          <p>1058 6364 964 6365 963 6366</p>
+          <p>1058 6367 1059 6368 964 6369</p>
+          <p>1059 6370 965 6371 964 6372</p>
+          <p>1059 6373 1060 6374 965 6375</p>
+          <p>965 6376 1061 6377 966 6378</p>
+          <p>965 6379 1060 6380 1061 6381</p>
+          <p>966 6382 1062 6383 967 6384</p>
+          <p>966 6385 1061 6386 1062 6387</p>
+          <p>967 6388 1063 6389 968 6390</p>
+          <p>967 6391 1062 6392 1063 6393</p>
+          <p>1063 6394 969 6395 968 6396</p>
+          <p>1063 6397 1064 6398 969 6399</p>
+          <p>1064 6400 970 6401 969 6402</p>
+          <p>1064 6403 1065 6404 970 6405</p>
+          <p>970 6406 1066 6407 971 6408</p>
+          <p>970 6409 1065 6410 1066 6411</p>
+          <p>971 6412 1067 6413 972 6414</p>
+          <p>971 6415 1066 6416 1067 6417</p>
+          <p>972 6418 1068 6419 973 6420</p>
+          <p>972 6421 1067 6422 1068 6423</p>
+          <p>1068 6424 974 6425 973 6426</p>
+          <p>1068 6427 1069 6428 974 6429</p>
+          <p>1069 6430 930 6431 974 6432</p>
+          <p>1069 6433 1025 6434 930 6435</p>
+          <p>1025 6436 1121 6437 1026 6438</p>
+          <p>1025 6439 1120 6440 1121 6441</p>
+          <p>1026 6442 1122 6443 1027 6444</p>
+          <p>1026 6445 1121 6446 1122 6447</p>
+          <p>1027 6448 1123 6449 1028 6450</p>
+          <p>1027 6451 1122 6452 1123 6453</p>
+          <p>1028 6454 1124 6455 1029 6456</p>
+          <p>1028 6457 1123 6458 1124 6459</p>
+          <p>1124 6460 1030 6461 1029 6462</p>
+          <p>1124 6463 1125 6464 1030 6465</p>
+          <p>1030 6466 1126 6467 1031 6468</p>
+          <p>1030 6469 1125 6470 1126 6471</p>
+          <p>1031 6472 1127 6473 1032 6474</p>
+          <p>1031 6475 1126 6476 1127 6477</p>
+          <p>1032 6478 1128 6479 1033 6480</p>
+          <p>1032 6481 1127 6482 1128 6483</p>
+          <p>1033 6484 1129 6485 1034 6486</p>
+          <p>1033 6487 1128 6488 1129 6489</p>
+          <p>1034 6490 1130 6491 1035 6492</p>
+          <p>1034 6493 1129 6494 1130 6495</p>
+          <p>1035 6496 1131 6497 1036 6498</p>
+          <p>1035 6499 1130 6500 1131 6501</p>
+          <p>1036 6502 1132 6503 1037 6504</p>
+          <p>1036 6505 1131 6506 1132 6507</p>
+          <p>1132 6508 1038 6509 1037 6510</p>
+          <p>1132 6511 1133 6512 1038 6513</p>
+          <p>1038 6514 1134 6515 1039 6516</p>
+          <p>1038 6517 1133 6518 1134 6519</p>
+          <p>1134 6520 1040 6521 1039 6522</p>
+          <p>1134 6523 1135 6524 1040 6525</p>
+          <p>1135 6526 1041 6527 1040 6528</p>
+          <p>1135 6529 1136 6530 1041 6531</p>
+          <p>1041 6532 1137 6533 1042 6534</p>
+          <p>1041 6535 1136 6536 1137 6537</p>
+          <p>1137 6538 1043 6539 1042 6540</p>
+          <p>1137 6541 1138 6542 1043 6543</p>
+          <p>1043 6544 1139 6545 1044 6546</p>
+          <p>1043 6547 1138 6548 1139 6549</p>
+          <p>1139 6550 1045 6551 1044 6552</p>
+          <p>1139 6553 1140 6554 1045 6555</p>
+          <p>1045 6556 1141 6557 1046 6558</p>
+          <p>1045 6559 1140 6560 1141 6561</p>
+          <p>1046 6562 1142 6563 1047 6564</p>
+          <p>1046 6565 1141 6566 1142 6567</p>
+          <p>1047 6568 1143 6569 1048 6570</p>
+          <p>1047 6571 1142 6572 1143 6573</p>
+          <p>1143 6574 1049 6575 1048 6576</p>
+          <p>1143 6577 1144 6578 1049 6579</p>
+          <p>1049 6580 1145 6581 1050 6582</p>
+          <p>1049 6583 1144 6584 1145 6585</p>
+          <p>1050 6586 1146 6587 1051 6588</p>
+          <p>1050 6589 1145 6590 1146 6591</p>
+          <p>1051 6592 1147 6593 1052 6594</p>
+          <p>1051 6595 1146 6596 1147 6597</p>
+          <p>1052 6598 1148 6599 1053 6600</p>
+          <p>1052 6601 1147 6602 1148 6603</p>
+          <p>1148 6604 1054 6605 1053 6606</p>
+          <p>1148 6607 1149 6608 1054 6609</p>
+          <p>1054 6610 1150 6611 1055 6612</p>
+          <p>1054 6613 1149 6614 1150 6615</p>
+          <p>1055 6616 1151 6617 1056 6618</p>
+          <p>1055 6619 1150 6620 1151 6621</p>
+          <p>1151 6622 1057 6623 1056 6624</p>
+          <p>1151 6625 1152 6626 1057 6627</p>
+          <p>1152 6628 1058 6629 1057 6630</p>
+          <p>1152 6631 1153 6632 1058 6633</p>
+          <p>1058 6634 1154 6635 1059 6636</p>
+          <p>1058 6637 1153 6638 1154 6639</p>
+          <p>1059 6640 1155 6641 1060 6642</p>
+          <p>1059 6643 1154 6644 1155 6645</p>
+          <p>1060 6646 1156 6647 1061 6648</p>
+          <p>1060 6649 1155 6650 1156 6651</p>
+          <p>1156 6652 1062 6653 1061 6654</p>
+          <p>1156 6655 1157 6656 1062 6657</p>
+          <p>1157 6658 1063 6659 1062 6660</p>
+          <p>1157 6661 1158 6662 1063 6663</p>
+          <p>1063 6664 1159 6665 1064 6666</p>
+          <p>1063 6667 1158 6668 1159 6669</p>
+          <p>1064 6670 1160 6671 1065 6672</p>
+          <p>1064 6673 1159 6674 1160 6675</p>
+          <p>1160 6676 1066 6677 1065 6678</p>
+          <p>1160 6679 1161 6680 1066 6681</p>
+          <p>1161 6682 1067 6683 1066 6684</p>
+          <p>1161 6685 1162 6686 1067 6687</p>
+          <p>1067 6688 1163 6689 1068 6690</p>
+          <p>1067 6691 1162 6692 1163 6693</p>
+          <p>1163 6694 1069 6695 1068 6696</p>
+          <p>1163 6697 1164 6698 1069 6699</p>
+          <p>1069 6700 1120 6701 1025 6702</p>
+          <p>1069 6703 1164 6704 1120 6705</p>
+          <p>1120 6706 1216 6707 1121 6708</p>
+          <p>1120 6709 1215 6710 1216 6711</p>
+          <p>1121 6712 1217 6713 1122 6714</p>
+          <p>1121 6715 1216 6716 1217 6717</p>
+          <p>1122 6718 1218 6719 1123 6720</p>
+          <p>1122 6721 1217 6722 1218 6723</p>
+          <p>1123 6724 1219 6725 1124 6726</p>
+          <p>1123 6727 1218 6728 1219 6729</p>
+          <p>1124 6730 1220 6731 1125 6732</p>
+          <p>1124 6733 1219 6734 1220 6735</p>
+          <p>1220 6736 1126 6737 1125 6738</p>
+          <p>1220 6739 1221 6740 1126 6741</p>
+          <p>1126 6742 1222 6743 1127 6744</p>
+          <p>1126 6745 1221 6746 1222 6747</p>
+          <p>1222 6748 1128 6749 1127 6750</p>
+          <p>1222 6751 1223 6752 1128 6753</p>
+          <p>1223 6754 1129 6755 1128 6756</p>
+          <p>1223 6757 1224 6758 1129 6759</p>
+          <p>1129 6760 1225 6761 1130 6762</p>
+          <p>1129 6763 1224 6764 1225 6765</p>
+          <p>1130 6766 1226 6767 1131 6768</p>
+          <p>1130 6769 1225 6770 1226 6771</p>
+          <p>1131 6772 1227 6773 1132 6774</p>
+          <p>1131 6775 1226 6776 1227 6777</p>
+          <p>1227 6778 1133 6779 1132 6780</p>
+          <p>1227 6781 1228 6782 1133 6783</p>
+          <p>1228 6784 1134 6785 1133 6786</p>
+          <p>1228 6787 1229 6788 1134 6789</p>
+          <p>1134 6790 1230 6791 1135 6792</p>
+          <p>1134 6793 1229 6794 1230 6795</p>
+          <p>1135 6796 1231 6797 1136 6798</p>
+          <p>1135 6799 1230 6800 1231 6801</p>
+          <p>1136 6802 1232 6803 1137 6804</p>
+          <p>1136 6805 1231 6806 1232 6807</p>
+          <p>1232 6808 1138 6809 1137 6810</p>
+          <p>1232 6811 1233 6812 1138 6813</p>
+          <p>1138 6814 1234 6815 1139 6816</p>
+          <p>1138 6817 1233 6818 1234 6819</p>
+          <p>1139 6820 1235 6821 1140 6822</p>
+          <p>1139 6823 1234 6824 1235 6825</p>
+          <p>1140 6826 1236 6827 1141 6828</p>
+          <p>1140 6829 1235 6830 1236 6831</p>
+          <p>1141 6832 1237 6833 1142 6834</p>
+          <p>1141 6835 1236 6836 1237 6837</p>
+          <p>1237 6838 1143 6839 1142 6840</p>
+          <p>1237 6841 1238 6842 1143 6843</p>
+          <p>1143 6844 1239 6845 1144 6846</p>
+          <p>1143 6847 1238 6848 1239 6849</p>
+          <p>1144 6850 1240 6851 1145 6852</p>
+          <p>1144 6853 1239 6854 1240 6855</p>
+          <p>1240 6856 1146 6857 1145 6858</p>
+          <p>1240 6859 1241 6860 1146 6861</p>
+          <p>1146 6862 1242 6863 1147 6864</p>
+          <p>1146 6865 1241 6866 1242 6867</p>
+          <p>1147 6868 1243 6869 1148 6870</p>
+          <p>1147 6871 1242 6872 1243 6873</p>
+          <p>1243 6874 1149 6875 1148 6876</p>
+          <p>1243 6877 1244 6878 1149 6879</p>
+          <p>1244 6880 1150 6881 1149 6882</p>
+          <p>1244 6883 1245 6884 1150 6885</p>
+          <p>1245 6886 1151 6887 1150 6888</p>
+          <p>1245 6889 1246 6890 1151 6891</p>
+          <p>1151 6892 1247 6893 1152 6894</p>
+          <p>1151 6895 1246 6896 1247 6897</p>
+          <p>1247 6898 1153 6899 1152 6900</p>
+          <p>1247 6901 1248 6902 1153 6903</p>
+          <p>1153 6904 1249 6905 1154 6906</p>
+          <p>1153 6907 1248 6908 1249 6909</p>
+          <p>1154 6910 1250 6911 1155 6912</p>
+          <p>1154 6913 1249 6914 1250 6915</p>
+          <p>1250 6916 1156 6917 1155 6918</p>
+          <p>1250 6919 1251 6920 1156 6921</p>
+          <p>1156 6922 1252 6923 1157 6924</p>
+          <p>1156 6925 1251 6926 1252 6927</p>
+          <p>1157 6928 1253 6929 1158 6930</p>
+          <p>1157 6931 1252 6932 1253 6933</p>
+          <p>1158 6934 1254 6935 1159 6936</p>
+          <p>1158 6937 1253 6938 1254 6939</p>
+          <p>1254 6940 1160 6941 1159 6942</p>
+          <p>1254 6943 1255 6944 1160 6945</p>
+          <p>1160 6946 1256 6947 1161 6948</p>
+          <p>1160 6949 1255 6950 1256 6951</p>
+          <p>1161 6952 1257 6953 1162 6954</p>
+          <p>1161 6955 1256 6956 1257 6957</p>
+          <p>1257 6958 1163 6959 1162 6960</p>
+          <p>1257 6961 1258 6962 1163 6963</p>
+          <p>1258 6964 1164 6965 1163 6966</p>
+          <p>1258 6967 1259 6968 1164 6969</p>
+          <p>1164 6970 1215 6971 1120 6972</p>
+          <p>1164 6973 1259 6974 1215 6975</p>
+          <p>690 6976 783 6977 739 6978</p>
+          <p>690 6979 691 6980 783 6981</p>
+          <p>691 6982 692 6983 783 6984</p>
+          <p>692 6985 782 6986 783 6987</p>
+          <p>692 6988 693 6989 782 6990</p>
+          <p>693 6991 694 6992 782 6993</p>
+          <p>694 6994 781 6995 782 6996</p>
+          <p>694 6997 695 6998 781 6999</p>
+          <p>695 7000 780 7001 781 7002</p>
+          <p>695 7003 779 7004 780 7005</p>
+          <p>695 7006 696 7007 779 7008</p>
+          <p>696 7009 697 7010 779 7011</p>
+          <p>697 7012 778 7013 779 7014</p>
+          <p>697 7015 698 7016 778 7017</p>
+          <p>698 7018 777 7019 778 7020</p>
+          <p>698 7021 699 7022 777 7023</p>
+          <p>699 7024 776 7025 777 7026</p>
+          <p>699 7027 700 7028 776 7029</p>
+          <p>700 7030 775 7031 776 7032</p>
+          <p>700 7033 774 7034 775 7035</p>
+          <p>700 7036 701 7037 774 7038</p>
+          <p>701 7039 702 7040 774 7041</p>
+          <p>702 7042 773 7043 774 7044</p>
+          <p>702 7045 703 7046 773 7047</p>
+          <p>703 7048 704 7049 773 7050</p>
+          <p>704 7051 772 7052 773 7053</p>
+          <p>704 7054 705 7055 772 7056</p>
+          <p>705 7057 771 7058 772 7059</p>
+          <p>705 7060 706 7061 771 7062</p>
+          <p>706 7063 707 7064 771 7065</p>
+          <p>707 7066 770 7067 771 7068</p>
+          <p>707 7069 708 7070 770 7071</p>
+          <p>708 7072 769 7073 770 7074</p>
+          <p>708 7075 709 7076 769 7077</p>
+          <p>709 7078 768 7079 769 7080</p>
+          <p>709 7081 710 7082 768 7083</p>
+          <p>710 7084 711 7085 768 7086</p>
+          <p>711 7087 712 7088 768 7089</p>
+          <p>712 7090 767 7091 768 7092</p>
+          <p>712 7093 713 7094 767 7095</p>
+          <p>713 7096 766 7097 767 7098</p>
+          <p>713 7099 714 7100 766 7101</p>
+          <p>714 7102 765 7103 766 7104</p>
+          <p>714 7105 715 7106 765 7107</p>
+          <p>715 7108 764 7109 765 7110</p>
+          <p>715 7111 716 7112 764 7113</p>
+          <p>716 7114 717 7115 764 7116</p>
+          <p>717 7117 763 7118 764 7119</p>
+          <p>717 7120 718 7121 763 7122</p>
+          <p>718 7123 762 7124 763 7125</p>
+          <p>718 7126 719 7127 762 7128</p>
+          <p>719 7129 761 7130 762 7131</p>
+          <p>719 7132 720 7133 761 7134</p>
+          <p>720 7135 760 7136 761 7137</p>
+          <p>720 7138 759 7139 760 7140</p>
+          <p>720 7141 721 7142 759 7143</p>
+          <p>721 7144 722 7145 759 7146</p>
+          <p>722 7147 758 7148 759 7149</p>
+          <p>722 7150 723 7151 758 7152</p>
+          <p>723 7153 757 7154 758 7155</p>
+          <p>723 7156 724 7157 757 7158</p>
+          <p>724 7159 756 7160 757 7161</p>
+          <p>724 7162 725 7163 756 7164</p>
+          <p>725 7165 755 7166 756 7167</p>
+          <p>725 7168 754 7169 755 7170</p>
+          <p>725 7171 726 7172 754 7173</p>
+          <p>726 7174 727 7175 754 7176</p>
+          <p>727 7177 753 7178 754 7179</p>
+          <p>727 7180 728 7181 753 7182</p>
+          <p>728 7183 752 7184 753 7185</p>
+          <p>728 7186 729 7187 752 7188</p>
+          <p>729 7189 751 7190 752 7191</p>
+          <p>729 7192 730 7193 751 7194</p>
+          <p>730 7195 750 7196 751 7197</p>
+          <p>730 7198 749 7199 750 7200</p>
+          <p>730 7201 731 7202 749 7203</p>
+          <p>731 7204 732 7205 749 7206</p>
+          <p>732 7207 748 7208 749 7209</p>
+          <p>732 7210 733 7211 748 7212</p>
+          <p>733 7213 747 7214 748 7215</p>
+          <p>733 7216 734 7217 747 7218</p>
+          <p>734 7219 746 7220 747 7221</p>
+          <p>734 7222 745 7223 746 7224</p>
+          <p>734 7225 744 7226 745 7227</p>
+          <p>734 7228 743 7229 744 7230</p>
+          <p>734 7231 735 7232 743 7233</p>
+          <p>735 7234 742 7235 743 7236</p>
+          <p>735 7237 741 7238 742 7239</p>
+          <p>735 7240 740 7241 741 7242</p>
+          <p>735 7243 736 7244 740 7245</p>
+          <p>736 7246 784 7247 740 7248</p>
+          <p>736 7249 737 7250 784 7251</p>
+          <p>737 7252 738 7253 784 7254</p>
+          <p>738 7255 739 7256 784 7257</p>
+          <p>739 7258 783 7259 784 7260</p>
+          <p>1214 7261 1258 7262 1165 7263</p>
+          <p>1214 7264 1259 7265 1258 7266</p>
+          <p>1214 7267 1213 7268 1259 7269</p>
+          <p>1213 7270 1212 7271 1259 7272</p>
+          <p>1212 7273 1211 7274 1259 7275</p>
+          <p>1211 7276 1210 7277 1259 7278</p>
+          <p>1210 7279 1215 7280 1259 7281</p>
+          <p>1210 7282 1216 7283 1215 7284</p>
+          <p>1210 7285 1217 7286 1216 7287</p>
+          <p>1210 7288 1218 7289 1217 7290</p>
+          <p>1210 7291 1209 7292 1218 7293</p>
+          <p>1209 7294 1219 7295 1218 7296</p>
+          <p>1209 7297 1220 7298 1219 7299</p>
+          <p>1209 7300 1221 7301 1220 7302</p>
+          <p>1209 7303 1222 7304 1221 7305</p>
+          <p>1209 7306 1208 7307 1222 7308</p>
+          <p>1208 7309 1223 7310 1222 7311</p>
+          <p>1208 7312 1207 7313 1223 7314</p>
+          <p>1207 7315 1224 7316 1223 7317</p>
+          <p>1207 7318 1206 7319 1224 7320</p>
+          <p>1206 7321 1205 7322 1224 7323</p>
+          <p>1205 7324 1225 7325 1224 7326</p>
+          <p>1205 7327 1226 7328 1225 7329</p>
+          <p>1205 7330 1204 7331 1226 7332</p>
+          <p>1204 7333 1227 7334 1226 7335</p>
+          <p>1204 7336 1203 7337 1227 7338</p>
+          <p>1203 7339 1228 7340 1227 7341</p>
+          <p>1203 7342 1202 7343 1228 7344</p>
+          <p>1202 7345 1229 7346 1228 7347</p>
+          <p>1202 7348 1201 7349 1229 7350</p>
+          <p>1201 7351 1200 7352 1229 7353</p>
+          <p>1200 7354 1230 7355 1229 7356</p>
+          <p>1200 7357 1231 7358 1230 7359</p>
+          <p>1200 7360 1199 7361 1231 7362</p>
+          <p>1199 7363 1232 7364 1231 7365</p>
+          <p>1199 7366 1198 7367 1232 7368</p>
+          <p>1198 7369 1233 7370 1232 7371</p>
+          <p>1198 7372 1197 7373 1233 7374</p>
+          <p>1197 7375 1234 7376 1233 7377</p>
+          <p>1197 7378 1196 7379 1234 7380</p>
+          <p>1196 7381 1195 7382 1234 7383</p>
+          <p>1195 7384 1235 7385 1234 7386</p>
+          <p>1195 7387 1236 7388 1235 7389</p>
+          <p>1195 7390 1194 7391 1236 7392</p>
+          <p>1194 7393 1237 7394 1236 7395</p>
+          <p>1194 7396 1193 7397 1237 7398</p>
+          <p>1193 7399 1238 7400 1237 7401</p>
+          <p>1193 7402 1192 7403 1238 7404</p>
+          <p>1192 7405 1239 7406 1238 7407</p>
+          <p>1192 7408 1191 7409 1239 7410</p>
+          <p>1191 7411 1190 7412 1239 7413</p>
+          <p>1190 7414 1240 7415 1239 7416</p>
+          <p>1190 7417 1189 7418 1240 7419</p>
+          <p>1189 7420 1241 7421 1240 7422</p>
+          <p>1189 7423 1188 7424 1241 7425</p>
+          <p>1188 7426 1242 7427 1241 7428</p>
+          <p>1188 7429 1187 7430 1242 7431</p>
+          <p>1187 7432 1243 7433 1242 7434</p>
+          <p>1187 7435 1186 7436 1243 7437</p>
+          <p>1186 7438 1185 7439 1243 7440</p>
+          <p>1185 7441 1184 7442 1243 7443</p>
+          <p>1184 7444 1244 7445 1243 7446</p>
+          <p>1184 7447 1183 7448 1244 7449</p>
+          <p>1183 7450 1245 7451 1244 7452</p>
+          <p>1183 7453 1182 7454 1245 7455</p>
+          <p>1182 7456 1246 7457 1245 7458</p>
+          <p>1182 7459 1181 7460 1246 7461</p>
+          <p>1181 7462 1180 7463 1246 7464</p>
+          <p>1180 7465 1247 7466 1246 7467</p>
+          <p>1180 7468 1179 7469 1247 7470</p>
+          <p>1179 7471 1248 7472 1247 7473</p>
+          <p>1179 7474 1178 7475 1248 7476</p>
+          <p>1178 7477 1177 7478 1248 7479</p>
+          <p>1177 7480 1249 7481 1248 7482</p>
+          <p>1177 7483 1176 7484 1249 7485</p>
+          <p>1176 7486 1175 7487 1249 7488</p>
+          <p>1175 7489 1250 7490 1249 7491</p>
+          <p>1175 7492 1251 7493 1250 7494</p>
+          <p>1175 7495 1174 7496 1251 7497</p>
+          <p>1174 7498 1252 7499 1251 7500</p>
+          <p>1174 7501 1173 7502 1252 7503</p>
+          <p>1173 7504 1253 7505 1252 7506</p>
+          <p>1173 7507 1172 7508 1253 7509</p>
+          <p>1172 7510 1254 7511 1253 7512</p>
+          <p>1172 7513 1171 7514 1254 7515</p>
+          <p>1171 7516 1170 7517 1254 7518</p>
+          <p>1170 7519 1255 7520 1254 7521</p>
+          <p>1170 7522 1256 7523 1255 7524</p>
+          <p>1170 7525 1169 7526 1256 7527</p>
+          <p>1169 7528 1257 7529 1256 7530</p>
+          <p>1169 7531 1168 7532 1257 7533</p>
+          <p>1168 7534 1167 7535 1257 7536</p>
+          <p>1167 7537 1258 7538 1257 7539</p>
+          <p>1167 7540 1166 7541 1258 7542</p>
+          <p>1166 7543 1165 7544 1258 7545</p>
+          <p>1264 7546 1261 7547 1260 7548</p>
+          <p>1264 7549 1265 7550 1261 7551</p>
+          <p>1261 7552 1266 7553 1262 7554</p>
+          <p>1261 7555 1265 7556 1266 7557</p>
+          <p>1262 7558 1267 7559 1263 7560</p>
+          <p>1262 7561 1266 7562 1267 7563</p>
+          <p>1263 7564 1264 7565 1260 7566</p>
+          <p>1263 7567 1267 7568 1264 7569</p>
+          <p>1264 7570 1269 7571 1265 7572</p>
+          <p>1264 7573 1268 7574 1269 7575</p>
+          <p>1265 7576 1270 7577 1266 7578</p>
+          <p>1265 7579 1269 7580 1270 7581</p>
+          <p>1266 7582 1271 7583 1267 7584</p>
+          <p>1266 7585 1270 7586 1271 7587</p>
+          <p>1267 7588 1268 7589 1264 7590</p>
+          <p>1267 7591 1271 7592 1268 7593</p>
+          <p>1272 7594 1269 7595 1268 7596</p>
+          <p>1272 7597 1273 7598 1269 7599</p>
+          <p>1269 7600 1274 7601 1270 7602</p>
+          <p>1269 7603 1273 7604 1274 7605</p>
+          <p>1270 7606 1275 7607 1271 7608</p>
+          <p>1270 7609 1274 7610 1275 7611</p>
+          <p>1275 7612 1268 7613 1271 7614</p>
+          <p>1275 7615 1272 7616 1268 7617</p>
+          <p>1272 7618 1277 7619 1273 7620</p>
+          <p>1272 7621 1276 7622 1277 7623</p>
+          <p>1273 7624 1278 7625 1274 7626</p>
+          <p>1273 7627 1277 7628 1278 7629</p>
+          <p>1274 7630 1279 7631 1275 7632</p>
+          <p>1274 7633 1278 7634 1279 7635</p>
+          <p>1275 7636 1276 7637 1272 7638</p>
+          <p>1275 7639 1279 7640 1276 7641</p>
+          <p>1276 7642 1281 7643 1277 7644</p>
+          <p>1276 7645 1280 7646 1281 7647</p>
+          <p>1277 7648 1282 7649 1278 7650</p>
+          <p>1277 7651 1281 7652 1282 7653</p>
+          <p>1278 7654 1283 7655 1279 7656</p>
+          <p>1278 7657 1282 7658 1283 7659</p>
+          <p>1279 7660 1280 7661 1276 7662</p>
+          <p>1279 7663 1283 7664 1280 7665</p>
+          <p>1260 7666 1262 7667 1263 7668</p>
+          <p>1260 7669 1261 7670 1262 7671</p>
+          <p>1283 7672 1281 7673 1280 7674</p>
+          <p>1283 7675 1282 7676 1281 7677</p>
+          <p>1288 7678 1285 7679 1284 7680</p>
+          <p>1288 7681 1289 7682 1285 7683</p>
+          <p>1285 7684 1290 7685 1286 7686</p>
+          <p>1285 7687 1289 7688 1290 7689</p>
+          <p>1286 7690 1291 7691 1287 7692</p>
+          <p>1286 7693 1290 7694 1291 7695</p>
+          <p>1291 7696 1284 7697 1287 7698</p>
+          <p>1291 7699 1288 7700 1284 7701</p>
+          <p>1288 7702 1293 7703 1289 7704</p>
+          <p>1288 7705 1292 7706 1293 7707</p>
+          <p>1289 7708 1294 7709 1290 7710</p>
+          <p>1289 7711 1293 7712 1294 7713</p>
+          <p>1290 7714 1295 7715 1291 7716</p>
+          <p>1290 7717 1294 7718 1295 7719</p>
+          <p>1291 7720 1292 7721 1288 7722</p>
+          <p>1291 7723 1295 7724 1292 7725</p>
+          <p>1296 7726 1293 7727 1292 7728</p>
+          <p>1296 7729 1297 7730 1293 7731</p>
+          <p>1297 7732 1294 7733 1293 7734</p>
+          <p>1297 7735 1298 7736 1294 7737</p>
+          <p>1294 7738 1299 7739 1295 7740</p>
+          <p>1294 7741 1298 7742 1299 7743</p>
+          <p>1295 7744 1296 7745 1292 7746</p>
+          <p>1295 7747 1299 7748 1296 7749</p>
+          <p>1296 7750 1301 7751 1297 7752</p>
+          <p>1296 7753 1300 7754 1301 7755</p>
+          <p>1297 7756 1302 7757 1298 7758</p>
+          <p>1297 7759 1301 7760 1302 7761</p>
+          <p>1298 7762 1303 7763 1299 7764</p>
+          <p>1298 7765 1302 7766 1303 7767</p>
+          <p>1299 7768 1300 7769 1296 7770</p>
+          <p>1299 7771 1303 7772 1300 7773</p>
+          <p>1300 7774 1305 7775 1301 7776</p>
+          <p>1300 7777 1304 7778 1305 7779</p>
+          <p>1301 7780 1306 7781 1302 7782</p>
+          <p>1301 7783 1305 7784 1306 7785</p>
+          <p>1302 7786 1307 7787 1303 7788</p>
+          <p>1302 7789 1306 7790 1307 7791</p>
+          <p>1303 7792 1304 7793 1300 7794</p>
+          <p>1303 7795 1307 7796 1304 7797</p>
+          <p>1284 7798 1286 7799 1287 7800</p>
+          <p>1284 7801 1285 7802 1286 7803</p>
+          <p>1307 7804 1305 7805 1304 7806</p>
+          <p>1307 7807 1306 7808 1305 7809</p>
+          <p>1432 7810 1309 7811 1308 7812</p>
+          <p>1432 7813 1433 7814 1309 7815</p>
+          <p>1433 7816 1310 7817 1309 7818</p>
+          <p>1433 7819 1434 7820 1310 7821</p>
+          <p>1434 7822 1311 7823 1310 7824</p>
+          <p>1434 7825 1435 7826 1311 7827</p>
+          <p>1435 7828 1312 7829 1311 7830</p>
+          <p>1435 7831 1436 7832 1312 7833</p>
+          <p>1312 7834 1437 7835 1313 7836</p>
+          <p>1312 7837 1436 7838 1437 7839</p>
+          <p>1313 7840 1438 7841 1314 7842</p>
+          <p>1313 7843 1437 7844 1438 7845</p>
+          <p>1314 7846 1439 7847 1315 7848</p>
+          <p>1314 7849 1438 7850 1439 7851</p>
+          <p>1315 7852 1440 7853 1316 7854</p>
+          <p>1315 7855 1439 7856 1440 7857</p>
+          <p>1440 7858 1317 7859 1316 7860</p>
+          <p>1440 7861 1441 7862 1317 7863</p>
+          <p>1441 7864 1318 7865 1317 7866</p>
+          <p>1441 7867 1442 7868 1318 7869</p>
+          <p>1442 7870 1319 7871 1318 7872</p>
+          <p>1442 7873 1443 7874 1319 7875</p>
+          <p>1443 7876 1320 7877 1319 7878</p>
+          <p>1443 7879 1444 7880 1320 7881</p>
+          <p>1444 7882 1321 7883 1320 7884</p>
+          <p>1444 7885 1445 7886 1321 7887</p>
+          <p>1445 7888 1322 7889 1321 7890</p>
+          <p>1445 7891 1446 7892 1322 7893</p>
+          <p>1446 7894 1323 7895 1322 7896</p>
+          <p>1446 7897 1447 7898 1323 7899</p>
+          <p>1447 7900 1324 7901 1323 7902</p>
+          <p>1447 7903 1448 7904 1324 7905</p>
+          <p>1448 7906 1325 7907 1324 7908</p>
+          <p>1448 7909 1449 7910 1325 7911</p>
+          <p>1325 7912 1450 7913 1326 7914</p>
+          <p>1325 7915 1449 7916 1450 7917</p>
+          <p>1450 7918 1327 7919 1326 7920</p>
+          <p>1450 7921 1451 7922 1327 7923</p>
+          <p>1451 7924 1328 7925 1327 7926</p>
+          <p>1451 7927 1452 7928 1328 7929</p>
+          <p>1328 7930 1453 7931 1329 7932</p>
+          <p>1328 7933 1452 7934 1453 7935</p>
+          <p>1453 7936 1330 7937 1329 7938</p>
+          <p>1453 7939 1454 7940 1330 7941</p>
+          <p>1330 7942 1455 7943 1331 7944</p>
+          <p>1330 7945 1454 7946 1455 7947</p>
+          <p>1331 7948 1456 7949 1332 7950</p>
+          <p>1331 7951 1455 7952 1456 7953</p>
+          <p>1456 7954 1333 7955 1332 7956</p>
+          <p>1456 7957 1457 7958 1333 7959</p>
+          <p>1333 7960 1458 7961 1334 7962</p>
+          <p>1333 7963 1457 7964 1458 7965</p>
+          <p>1334 7966 1459 7967 1335 7968</p>
+          <p>1334 7969 1458 7970 1459 7971</p>
+          <p>1459 7972 1336 7973 1335 7974</p>
+          <p>1459 7975 1460 7976 1336 7977</p>
+          <p>1460 7978 1337 7979 1336 7980</p>
+          <p>1460 7981 1461 7982 1337 7983</p>
+          <p>1337 7984 1462 7985 1338 7986</p>
+          <p>1337 7987 1461 7988 1462 7989</p>
+          <p>1462 7990 1339 7991 1338 7992</p>
+          <p>1462 7993 1463 7994 1339 7995</p>
+          <p>1463 7996 1340 7997 1339 7998</p>
+          <p>1463 7999 1464 8000 1340 8001</p>
+          <p>1464 8002 1341 8003 1340 8004</p>
+          <p>1464 8005 1465 8006 1341 8007</p>
+          <p>1341 8008 1466 8009 1342 8010</p>
+          <p>1341 8011 1465 8012 1466 8013</p>
+          <p>1466 8014 1343 8015 1342 8016</p>
+          <p>1466 8017 1467 8018 1343 8019</p>
+          <p>1467 8020 1344 8021 1343 8022</p>
+          <p>1467 8023 1468 8024 1344 8025</p>
+          <p>1344 8026 1469 8027 1345 8028</p>
+          <p>1344 8029 1468 8030 1469 8031</p>
+          <p>1345 8032 1470 8033 1346 8034</p>
+          <p>1345 8035 1469 8036 1470 8037</p>
+          <p>1346 8038 1471 8039 1347 8040</p>
+          <p>1346 8041 1470 8042 1471 8043</p>
+          <p>1347 8044 1472 8045 1348 8046</p>
+          <p>1347 8047 1471 8048 1472 8049</p>
+          <p>1348 8050 1473 8051 1349 8052</p>
+          <p>1348 8053 1472 8054 1473 8055</p>
+          <p>1473 8056 1350 8057 1349 8058</p>
+          <p>1473 8059 1474 8060 1350 8061</p>
+          <p>1350 8062 1475 8063 1351 8064</p>
+          <p>1350 8065 1474 8066 1475 8067</p>
+          <p>1351 8068 1476 8069 1352 8070</p>
+          <p>1351 8071 1475 8072 1476 8073</p>
+          <p>1476 8074 1353 8075 1352 8076</p>
+          <p>1476 8077 1477 8078 1353 8079</p>
+          <p>1477 8080 1354 8081 1353 8082</p>
+          <p>1477 8083 1478 8084 1354 8085</p>
+          <p>1354 8086 1479 8087 1355 8088</p>
+          <p>1354 8089 1478 8090 1479 8091</p>
+          <p>1355 8092 1480 8093 1356 8094</p>
+          <p>1355 8095 1479 8096 1480 8097</p>
+          <p>1356 8098 1481 8099 1357 8100</p>
+          <p>1356 8101 1480 8102 1481 8103</p>
+          <p>1481 8104 1358 8105 1357 8106</p>
+          <p>1481 8107 1482 8108 1358 8109</p>
+          <p>1358 8110 1483 8111 1359 8112</p>
+          <p>1358 8113 1482 8114 1483 8115</p>
+          <p>1359 8116 1484 8117 1360 8118</p>
+          <p>1359 8119 1483 8120 1484 8121</p>
+          <p>1484 8122 1361 8123 1360 8124</p>
+          <p>1484 8125 1485 8126 1361 8127</p>
+          <p>1361 8128 1486 8129 1362 8130</p>
+          <p>1361 8131 1485 8132 1486 8133</p>
+          <p>1486 8134 1363 8135 1362 8136</p>
+          <p>1486 8137 1487 8138 1363 8139</p>
+          <p>1363 8140 1488 8141 1364 8142</p>
+          <p>1363 8143 1487 8144 1488 8145</p>
+          <p>1364 8146 1489 8147 1365 8148</p>
+          <p>1364 8149 1488 8150 1489 8151</p>
+          <p>1489 8152 1366 8153 1365 8154</p>
+          <p>1489 8155 1490 8156 1366 8157</p>
+          <p>1490 8158 1367 8159 1366 8160</p>
+          <p>1490 8161 1491 8162 1367 8163</p>
+          <p>1491 8164 1368 8165 1367 8166</p>
+          <p>1491 8167 1492 8168 1368 8169</p>
+          <p>1492 8170 1369 8171 1368 8172</p>
+          <p>1492 8173 1493 8174 1369 8175</p>
+          <p>1493 8176 1370 8177 1369 8178</p>
+          <p>1493 8179 1494 8180 1370 8181</p>
+          <p>1370 8182 1495 8183 1371 8184</p>
+          <p>1370 8185 1494 8186 1495 8187</p>
+          <p>1495 8188 1372 8189 1371 8190</p>
+          <p>1495 8191 1496 8192 1372 8193</p>
+          <p>1496 8194 1373 8195 1372 8196</p>
+          <p>1496 8197 1497 8198 1373 8199</p>
+          <p>1497 8200 1374 8201 1373 8202</p>
+          <p>1497 8203 1498 8204 1374 8205</p>
+          <p>1374 8206 1499 8207 1375 8208</p>
+          <p>1374 8209 1498 8210 1499 8211</p>
+          <p>1499 8212 1376 8213 1375 8214</p>
+          <p>1499 8215 1500 8216 1376 8217</p>
+          <p>1500 8218 1377 8219 1376 8220</p>
+          <p>1500 8221 1501 8222 1377 8223</p>
+          <p>1377 8224 1502 8225 1378 8226</p>
+          <p>1377 8227 1501 8228 1502 8229</p>
+          <p>1378 8230 1503 8231 1379 8232</p>
+          <p>1378 8233 1502 8234 1503 8235</p>
+          <p>1503 8236 1380 8237 1379 8238</p>
+          <p>1503 8239 1504 8240 1380 8241</p>
+          <p>1504 8242 1381 8243 1380 8244</p>
+          <p>1504 8245 1505 8246 1381 8247</p>
+          <p>1505 8248 1382 8249 1381 8250</p>
+          <p>1505 8251 1506 8252 1382 8253</p>
+          <p>1382 8254 1507 8255 1383 8256</p>
+          <p>1382 8257 1506 8258 1507 8259</p>
+          <p>1507 8260 1384 8261 1383 8262</p>
+          <p>1507 8263 1508 8264 1384 8265</p>
+          <p>1508 8266 1385 8267 1384 8268</p>
+          <p>1508 8269 1509 8270 1385 8271</p>
+          <p>1385 8272 1510 8273 1386 8274</p>
+          <p>1385 8275 1509 8276 1510 8277</p>
+          <p>1386 8278 1511 8279 1387 8280</p>
+          <p>1386 8281 1510 8282 1511 8283</p>
+          <p>1511 8284 1388 8285 1387 8286</p>
+          <p>1511 8287 1512 8288 1388 8289</p>
+          <p>1512 8290 1389 8291 1388 8292</p>
+          <p>1512 8293 1513 8294 1389 8295</p>
+          <p>1389 8296 1514 8297 1390 8298</p>
+          <p>1389 8299 1513 8300 1514 8301</p>
+          <p>1390 8302 1515 8303 1391 8304</p>
+          <p>1390 8305 1514 8306 1515 8307</p>
+          <p>1515 8308 1392 8309 1391 8310</p>
+          <p>1515 8311 1516 8312 1392 8313</p>
+          <p>1516 8314 1393 8315 1392 8316</p>
+          <p>1516 8317 1517 8318 1393 8319</p>
+          <p>1393 8320 1518 8321 1394 8322</p>
+          <p>1393 8323 1517 8324 1518 8325</p>
+          <p>1394 8326 1519 8327 1395 8328</p>
+          <p>1394 8329 1518 8330 1519 8331</p>
+          <p>1519 8332 1396 8333 1395 8334</p>
+          <p>1519 8335 1520 8336 1396 8337</p>
+          <p>1520 8338 1397 8339 1396 8340</p>
+          <p>1520 8341 1521 8342 1397 8343</p>
+          <p>1397 8344 1522 8345 1398 8346</p>
+          <p>1397 8347 1521 8348 1522 8349</p>
+          <p>1522 8350 1308 8351 1398 8352</p>
+          <p>1522 8353 1432 8354 1308 8355</p>
+          <p>1556 8356 1433 8357 1432 8358</p>
+          <p>1556 8359 1557 8360 1433 8361</p>
+          <p>1557 8362 1434 8363 1433 8364</p>
+          <p>1557 8365 1558 8366 1434 8367</p>
+          <p>1558 8368 1435 8369 1434 8370</p>
+          <p>1558 8371 1559 8372 1435 8373</p>
+          <p>1559 8374 1436 8375 1435 8376</p>
+          <p>1559 8377 1560 8378 1436 8379</p>
+          <p>1436 8380 1561 8381 1437 8382</p>
+          <p>1436 8383 1560 8384 1561 8385</p>
+          <p>1437 8386 1562 8387 1438 8388</p>
+          <p>1437 8389 1561 8390 1562 8391</p>
+          <p>1438 8392 1563 8393 1439 8394</p>
+          <p>1438 8395 1562 8396 1563 8397</p>
+          <p>1439 8398 1564 8399 1440 8400</p>
+          <p>1439 8401 1563 8402 1564 8403</p>
+          <p>1564 8404 1441 8405 1440 8406</p>
+          <p>1564 8407 1565 8408 1441 8409</p>
+          <p>1565 8410 1442 8411 1441 8412</p>
+          <p>1565 8413 1566 8414 1442 8415</p>
+          <p>1566 8416 1443 8417 1442 8418</p>
+          <p>1566 8419 1567 8420 1443 8421</p>
+          <p>1567 8422 1444 8423 1443 8424</p>
+          <p>1567 8425 1568 8426 1444 8427</p>
+          <p>1568 8428 1445 8429 1444 8430</p>
+          <p>1568 8431 1569 8432 1445 8433</p>
+          <p>1569 8434 1446 8435 1445 8436</p>
+          <p>1569 8437 1570 8438 1446 8439</p>
+          <p>1570 8440 1447 8441 1446 8442</p>
+          <p>1570 8443 1571 8444 1447 8445</p>
+          <p>1571 8446 1448 8447 1447 8448</p>
+          <p>1571 8449 1572 8450 1448 8451</p>
+          <p>1572 8452 1449 8453 1448 8454</p>
+          <p>1572 8455 1573 8456 1449 8457</p>
+          <p>1449 8458 1574 8459 1450 8460</p>
+          <p>1449 8461 1573 8462 1574 8463</p>
+          <p>1574 8464 1451 8465 1450 8466</p>
+          <p>1574 8467 1575 8468 1451 8469</p>
+          <p>1575 8470 1452 8471 1451 8472</p>
+          <p>1575 8473 1576 8474 1452 8475</p>
+          <p>1452 8476 1577 8477 1453 8478</p>
+          <p>1452 8479 1576 8480 1577 8481</p>
+          <p>1577 8482 1454 8483 1453 8484</p>
+          <p>1577 8485 1578 8486 1454 8487</p>
+          <p>1454 8488 1579 8489 1455 8490</p>
+          <p>1454 8491 1578 8492 1579 8493</p>
+          <p>1455 8494 1580 8495 1456 8496</p>
+          <p>1455 8497 1579 8498 1580 8499</p>
+          <p>1580 8500 1457 8501 1456 8502</p>
+          <p>1580 8503 1581 8504 1457 8505</p>
+          <p>1457 8506 1582 8507 1458 8508</p>
+          <p>1457 8509 1581 8510 1582 8511</p>
+          <p>1458 8512 1583 8513 1459 8514</p>
+          <p>1458 8515 1582 8516 1583 8517</p>
+          <p>1583 8518 1460 8519 1459 8520</p>
+          <p>1583 8521 1584 8522 1460 8523</p>
+          <p>1584 8524 1461 8525 1460 8526</p>
+          <p>1584 8527 1585 8528 1461 8529</p>
+          <p>1461 8530 1586 8531 1462 8532</p>
+          <p>1461 8533 1585 8534 1586 8535</p>
+          <p>1586 8536 1463 8537 1462 8538</p>
+          <p>1586 8539 1587 8540 1463 8541</p>
+          <p>1587 8542 1464 8543 1463 8544</p>
+          <p>1587 8545 1588 8546 1464 8547</p>
+          <p>1588 8548 1465 8549 1464 8550</p>
+          <p>1588 8551 1589 8552 1465 8553</p>
+          <p>1465 8554 1590 8555 1466 8556</p>
+          <p>1465 8557 1589 8558 1590 8559</p>
+          <p>1590 8560 1467 8561 1466 8562</p>
+          <p>1590 8563 1591 8564 1467 8565</p>
+          <p>1591 8566 1468 8567 1467 8568</p>
+          <p>1591 8569 1592 8570 1468 8571</p>
+          <p>1468 8572 1593 8573 1469 8574</p>
+          <p>1468 8575 1592 8576 1593 8577</p>
+          <p>1469 8578 1594 8579 1470 8580</p>
+          <p>1469 8581 1593 8582 1594 8583</p>
+          <p>1470 8584 1595 8585 1471 8586</p>
+          <p>1470 8587 1594 8588 1595 8589</p>
+          <p>1471 8590 1596 8591 1472 8592</p>
+          <p>1471 8593 1595 8594 1596 8595</p>
+          <p>1472 8596 1597 8597 1473 8598</p>
+          <p>1472 8599 1596 8600 1597 8601</p>
+          <p>1597 8602 1474 8603 1473 8604</p>
+          <p>1597 8605 1598 8606 1474 8607</p>
+          <p>1474 8608 1599 8609 1475 8610</p>
+          <p>1474 8611 1598 8612 1599 8613</p>
+          <p>1475 8614 1600 8615 1476 8616</p>
+          <p>1475 8617 1599 8618 1600 8619</p>
+          <p>1600 8620 1477 8621 1476 8622</p>
+          <p>1600 8623 1601 8624 1477 8625</p>
+          <p>1601 8626 1478 8627 1477 8628</p>
+          <p>1601 8629 1602 8630 1478 8631</p>
+          <p>1478 8632 1603 8633 1479 8634</p>
+          <p>1478 8635 1602 8636 1603 8637</p>
+          <p>1479 8638 1604 8639 1480 8640</p>
+          <p>1479 8641 1603 8642 1604 8643</p>
+          <p>1480 8644 1605 8645 1481 8646</p>
+          <p>1480 8647 1604 8648 1605 8649</p>
+          <p>1605 8650 1482 8651 1481 8652</p>
+          <p>1605 8653 1606 8654 1482 8655</p>
+          <p>1482 8656 1607 8657 1483 8658</p>
+          <p>1482 8659 1606 8660 1607 8661</p>
+          <p>1483 8662 1608 8663 1484 8664</p>
+          <p>1483 8665 1607 8666 1608 8667</p>
+          <p>1608 8668 1485 8669 1484 8670</p>
+          <p>1608 8671 1609 8672 1485 8673</p>
+          <p>1485 8674 1610 8675 1486 8676</p>
+          <p>1485 8677 1609 8678 1610 8679</p>
+          <p>1610 8680 1487 8681 1486 8682</p>
+          <p>1610 8683 1611 8684 1487 8685</p>
+          <p>1487 8686 1612 8687 1488 8688</p>
+          <p>1487 8689 1611 8690 1612 8691</p>
+          <p>1488 8692 1613 8693 1489 8694</p>
+          <p>1488 8695 1612 8696 1613 8697</p>
+          <p>1613 8698 1490 8699 1489 8700</p>
+          <p>1613 8701 1614 8702 1490 8703</p>
+          <p>1614 8704 1491 8705 1490 8706</p>
+          <p>1614 8707 1615 8708 1491 8709</p>
+          <p>1615 8710 1492 8711 1491 8712</p>
+          <p>1615 8713 1616 8714 1492 8715</p>
+          <p>1616 8716 1493 8717 1492 8718</p>
+          <p>1616 8719 1617 8720 1493 8721</p>
+          <p>1617 8722 1494 8723 1493 8724</p>
+          <p>1617 8725 1618 8726 1494 8727</p>
+          <p>1494 8728 1619 8729 1495 8730</p>
+          <p>1494 8731 1618 8732 1619 8733</p>
+          <p>1619 8734 1496 8735 1495 8736</p>
+          <p>1619 8737 1620 8738 1496 8739</p>
+          <p>1620 8740 1497 8741 1496 8742</p>
+          <p>1620 8743 1621 8744 1497 8745</p>
+          <p>1621 8746 1498 8747 1497 8748</p>
+          <p>1621 8749 1622 8750 1498 8751</p>
+          <p>1498 8752 1623 8753 1499 8754</p>
+          <p>1498 8755 1622 8756 1623 8757</p>
+          <p>1623 8758 1500 8759 1499 8760</p>
+          <p>1623 8761 1624 8762 1500 8763</p>
+          <p>1624 8764 1501 8765 1500 8766</p>
+          <p>1624 8767 1625 8768 1501 8769</p>
+          <p>1501 8770 1626 8771 1502 8772</p>
+          <p>1501 8773 1625 8774 1626 8775</p>
+          <p>1502 8776 1627 8777 1503 8778</p>
+          <p>1502 8779 1626 8780 1627 8781</p>
+          <p>1627 8782 1504 8783 1503 8784</p>
+          <p>1627 8785 1628 8786 1504 8787</p>
+          <p>1628 8788 1505 8789 1504 8790</p>
+          <p>1628 8791 1629 8792 1505 8793</p>
+          <p>1629 8794 1506 8795 1505 8796</p>
+          <p>1629 8797 1630 8798 1506 8799</p>
+          <p>1506 8800 1631 8801 1507 8802</p>
+          <p>1506 8803 1630 8804 1631 8805</p>
+          <p>1631 8806 1508 8807 1507 8808</p>
+          <p>1631 8809 1632 8810 1508 8811</p>
+          <p>1632 8812 1509 8813 1508 8814</p>
+          <p>1632 8815 1633 8816 1509 8817</p>
+          <p>1509 8818 1634 8819 1510 8820</p>
+          <p>1509 8821 1633 8822 1634 8823</p>
+          <p>1510 8824 1635 8825 1511 8826</p>
+          <p>1510 8827 1634 8828 1635 8829</p>
+          <p>1635 8830 1512 8831 1511 8832</p>
+          <p>1635 8833 1636 8834 1512 8835</p>
+          <p>1636 8836 1513 8837 1512 8838</p>
+          <p>1636 8839 1637 8840 1513 8841</p>
+          <p>1513 8842 1638 8843 1514 8844</p>
+          <p>1513 8845 1637 8846 1638 8847</p>
+          <p>1514 8848 1639 8849 1515 8850</p>
+          <p>1514 8851 1638 8852 1639 8853</p>
+          <p>1639 8854 1516 8855 1515 8856</p>
+          <p>1639 8857 1640 8858 1516 8859</p>
+          <p>1640 8860 1517 8861 1516 8862</p>
+          <p>1640 8863 1641 8864 1517 8865</p>
+          <p>1517 8866 1642 8867 1518 8868</p>
+          <p>1517 8869 1641 8870 1642 8871</p>
+          <p>1518 8872 1643 8873 1519 8874</p>
+          <p>1518 8875 1642 8876 1643 8877</p>
+          <p>1643 8878 1520 8879 1519 8880</p>
+          <p>1643 8881 1644 8882 1520 8883</p>
+          <p>1644 8884 1521 8885 1520 8886</p>
+          <p>1644 8887 1645 8888 1521 8889</p>
+          <p>1521 8890 1646 8891 1522 8892</p>
+          <p>1521 8893 1645 8894 1646 8895</p>
+          <p>1646 8896 1432 8897 1522 8898</p>
+          <p>1646 8899 1556 8900 1432 8901</p>
+          <p>1680 8902 1557 8903 1556 8904</p>
+          <p>1680 8905 1681 8906 1557 8907</p>
+          <p>1681 8908 1558 8909 1557 8910</p>
+          <p>1681 8911 1682 8912 1558 8913</p>
+          <p>1682 8914 1559 8915 1558 8916</p>
+          <p>1682 8917 1683 8918 1559 8919</p>
+          <p>1683 8920 1560 8921 1559 8922</p>
+          <p>1683 8923 1684 8924 1560 8925</p>
+          <p>1560 8926 1685 8927 1561 8928</p>
+          <p>1560 8929 1684 8930 1685 8931</p>
+          <p>1561 8932 1686 8933 1562 8934</p>
+          <p>1561 8935 1685 8936 1686 8937</p>
+          <p>1562 8938 1687 8939 1563 8940</p>
+          <p>1562 8941 1686 8942 1687 8943</p>
+          <p>1563 8944 1688 8945 1564 8946</p>
+          <p>1563 8947 1687 8948 1688 8949</p>
+          <p>1688 8950 1565 8951 1564 8952</p>
+          <p>1688 8953 1689 8954 1565 8955</p>
+          <p>1689 8956 1566 8957 1565 8958</p>
+          <p>1689 8959 1690 8960 1566 8961</p>
+          <p>1690 8962 1567 8963 1566 8964</p>
+          <p>1690 8965 1691 8966 1567 8967</p>
+          <p>1691 8968 1568 8969 1567 8970</p>
+          <p>1691 8971 1692 8972 1568 8973</p>
+          <p>1692 8974 1569 8975 1568 8976</p>
+          <p>1692 8977 1693 8978 1569 8979</p>
+          <p>1693 8980 1570 8981 1569 8982</p>
+          <p>1693 8983 1694 8984 1570 8985</p>
+          <p>1694 8986 1571 8987 1570 8988</p>
+          <p>1694 8989 1695 8990 1571 8991</p>
+          <p>1695 8992 1572 8993 1571 8994</p>
+          <p>1695 8995 1696 8996 1572 8997</p>
+          <p>1696 8998 1573 8999 1572 9000</p>
+          <p>1696 9001 1697 9002 1573 9003</p>
+          <p>1573 9004 1698 9005 1574 9006</p>
+          <p>1573 9007 1697 9008 1698 9009</p>
+          <p>1698 9010 1575 9011 1574 9012</p>
+          <p>1698 9013 1699 9014 1575 9015</p>
+          <p>1699 9016 1576 9017 1575 9018</p>
+          <p>1699 9019 1700 9020 1576 9021</p>
+          <p>1576 9022 1701 9023 1577 9024</p>
+          <p>1576 9025 1700 9026 1701 9027</p>
+          <p>1701 9028 1578 9029 1577 9030</p>
+          <p>1701 9031 1702 9032 1578 9033</p>
+          <p>1578 9034 1703 9035 1579 9036</p>
+          <p>1578 9037 1702 9038 1703 9039</p>
+          <p>1579 9040 1704 9041 1580 9042</p>
+          <p>1579 9043 1703 9044 1704 9045</p>
+          <p>1704 9046 1581 9047 1580 9048</p>
+          <p>1704 9049 1705 9050 1581 9051</p>
+          <p>1581 9052 1706 9053 1582 9054</p>
+          <p>1581 9055 1705 9056 1706 9057</p>
+          <p>1582 9058 1707 9059 1583 9060</p>
+          <p>1582 9061 1706 9062 1707 9063</p>
+          <p>1707 9064 1584 9065 1583 9066</p>
+          <p>1707 9067 1708 9068 1584 9069</p>
+          <p>1708 9070 1585 9071 1584 9072</p>
+          <p>1708 9073 1709 9074 1585 9075</p>
+          <p>1585 9076 1710 9077 1586 9078</p>
+          <p>1585 9079 1709 9080 1710 9081</p>
+          <p>1710 9082 1587 9083 1586 9084</p>
+          <p>1710 9085 1711 9086 1587 9087</p>
+          <p>1711 9088 1588 9089 1587 9090</p>
+          <p>1711 9091 1712 9092 1588 9093</p>
+          <p>1712 9094 1589 9095 1588 9096</p>
+          <p>1712 9097 1713 9098 1589 9099</p>
+          <p>1589 9100 1714 9101 1590 9102</p>
+          <p>1589 9103 1713 9104 1714 9105</p>
+          <p>1714 9106 1591 9107 1590 9108</p>
+          <p>1714 9109 1715 9110 1591 9111</p>
+          <p>1715 9112 1592 9113 1591 9114</p>
+          <p>1715 9115 1716 9116 1592 9117</p>
+          <p>1592 9118 1717 9119 1593 9120</p>
+          <p>1592 9121 1716 9122 1717 9123</p>
+          <p>1593 9124 1718 9125 1594 9126</p>
+          <p>1593 9127 1717 9128 1718 9129</p>
+          <p>1594 9130 1719 9131 1595 9132</p>
+          <p>1594 9133 1718 9134 1719 9135</p>
+          <p>1595 9136 1720 9137 1596 9138</p>
+          <p>1595 9139 1719 9140 1720 9141</p>
+          <p>1596 9142 1721 9143 1597 9144</p>
+          <p>1596 9145 1720 9146 1721 9147</p>
+          <p>1721 9148 1598 9149 1597 9150</p>
+          <p>1721 9151 1722 9152 1598 9153</p>
+          <p>1598 9154 1723 9155 1599 9156</p>
+          <p>1598 9157 1722 9158 1723 9159</p>
+          <p>1599 9160 1724 9161 1600 9162</p>
+          <p>1599 9163 1723 9164 1724 9165</p>
+          <p>1724 9166 1601 9167 1600 9168</p>
+          <p>1724 9169 1725 9170 1601 9171</p>
+          <p>1725 9172 1602 9173 1601 9174</p>
+          <p>1725 9175 1726 9176 1602 9177</p>
+          <p>1602 9178 1727 9179 1603 9180</p>
+          <p>1602 9181 1726 9182 1727 9183</p>
+          <p>1603 9184 1728 9185 1604 9186</p>
+          <p>1603 9187 1727 9188 1728 9189</p>
+          <p>1604 9190 1729 9191 1605 9192</p>
+          <p>1604 9193 1728 9194 1729 9195</p>
+          <p>1729 9196 1606 9197 1605 9198</p>
+          <p>1729 9199 1730 9200 1606 9201</p>
+          <p>1606 9202 1731 9203 1607 9204</p>
+          <p>1606 9205 1730 9206 1731 9207</p>
+          <p>1607 9208 1732 9209 1608 9210</p>
+          <p>1607 9211 1731 9212 1732 9213</p>
+          <p>1732 9214 1609 9215 1608 9216</p>
+          <p>1732 9217 1733 9218 1609 9219</p>
+          <p>1609 9220 1734 9221 1610 9222</p>
+          <p>1609 9223 1733 9224 1734 9225</p>
+          <p>1734 9226 1611 9227 1610 9228</p>
+          <p>1734 9229 1735 9230 1611 9231</p>
+          <p>1611 9232 1736 9233 1612 9234</p>
+          <p>1611 9235 1735 9236 1736 9237</p>
+          <p>1612 9238 1737 9239 1613 9240</p>
+          <p>1612 9241 1736 9242 1737 9243</p>
+          <p>1737 9244 1614 9245 1613 9246</p>
+          <p>1737 9247 1738 9248 1614 9249</p>
+          <p>1738 9250 1615 9251 1614 9252</p>
+          <p>1738 9253 1739 9254 1615 9255</p>
+          <p>1739 9256 1616 9257 1615 9258</p>
+          <p>1739 9259 1740 9260 1616 9261</p>
+          <p>1740 9262 1617 9263 1616 9264</p>
+          <p>1740 9265 1741 9266 1617 9267</p>
+          <p>1741 9268 1618 9269 1617 9270</p>
+          <p>1741 9271 1742 9272 1618 9273</p>
+          <p>1618 9274 1743 9275 1619 9276</p>
+          <p>1618 9277 1742 9278 1743 9279</p>
+          <p>1743 9280 1620 9281 1619 9282</p>
+          <p>1743 9283 1744 9284 1620 9285</p>
+          <p>1744 9286 1621 9287 1620 9288</p>
+          <p>1744 9289 1745 9290 1621 9291</p>
+          <p>1745 9292 1622 9293 1621 9294</p>
+          <p>1745 9295 1746 9296 1622 9297</p>
+          <p>1622 9298 1747 9299 1623 9300</p>
+          <p>1622 9301 1746 9302 1747 9303</p>
+          <p>1747 9304 1624 9305 1623 9306</p>
+          <p>1747 9307 1748 9308 1624 9309</p>
+          <p>1748 9310 1625 9311 1624 9312</p>
+          <p>1748 9313 1749 9314 1625 9315</p>
+          <p>1625 9316 1750 9317 1626 9318</p>
+          <p>1625 9319 1749 9320 1750 9321</p>
+          <p>1626 9322 1751 9323 1627 9324</p>
+          <p>1626 9325 1750 9326 1751 9327</p>
+          <p>1751 9328 1628 9329 1627 9330</p>
+          <p>1751 9331 1752 9332 1628 9333</p>
+          <p>1752 9334 1629 9335 1628 9336</p>
+          <p>1752 9337 1753 9338 1629 9339</p>
+          <p>1753 9340 1630 9341 1629 9342</p>
+          <p>1753 9343 1754 9344 1630 9345</p>
+          <p>1630 9346 1755 9347 1631 9348</p>
+          <p>1630 9349 1754 9350 1755 9351</p>
+          <p>1755 9352 1632 9353 1631 9354</p>
+          <p>1755 9355 1756 9356 1632 9357</p>
+          <p>1756 9358 1633 9359 1632 9360</p>
+          <p>1756 9361 1757 9362 1633 9363</p>
+          <p>1633 9364 1758 9365 1634 9366</p>
+          <p>1633 9367 1757 9368 1758 9369</p>
+          <p>1634 9370 1759 9371 1635 9372</p>
+          <p>1634 9373 1758 9374 1759 9375</p>
+          <p>1759 9376 1636 9377 1635 9378</p>
+          <p>1759 9379 1760 9380 1636 9381</p>
+          <p>1760 9382 1637 9383 1636 9384</p>
+          <p>1760 9385 1761 9386 1637 9387</p>
+          <p>1637 9388 1762 9389 1638 9390</p>
+          <p>1637 9391 1761 9392 1762 9393</p>
+          <p>1638 9394 1763 9395 1639 9396</p>
+          <p>1638 9397 1762 9398 1763 9399</p>
+          <p>1763 9400 1640 9401 1639 9402</p>
+          <p>1763 9403 1764 9404 1640 9405</p>
+          <p>1764 9406 1641 9407 1640 9408</p>
+          <p>1764 9409 1765 9410 1641 9411</p>
+          <p>1641 9412 1766 9413 1642 9414</p>
+          <p>1641 9415 1765 9416 1766 9417</p>
+          <p>1642 9418 1767 9419 1643 9420</p>
+          <p>1642 9421 1766 9422 1767 9423</p>
+          <p>1767 9424 1644 9425 1643 9426</p>
+          <p>1767 9427 1768 9428 1644 9429</p>
+          <p>1768 9430 1645 9431 1644 9432</p>
+          <p>1768 9433 1769 9434 1645 9435</p>
+          <p>1645 9436 1770 9437 1646 9438</p>
+          <p>1645 9439 1769 9440 1770 9441</p>
+          <p>1770 9442 1556 9443 1646 9444</p>
+          <p>1770 9445 1680 9446 1556 9447</p>
+          <p>1680 9448 1805 9449 1681 9450</p>
+          <p>1680 9451 1804 9452 1805 9453</p>
+          <p>1681 9454 1806 9455 1682 9456</p>
+          <p>1681 9457 1805 9458 1806 9459</p>
+          <p>1682 9460 1807 9461 1683 9462</p>
+          <p>1682 9463 1806 9464 1807 9465</p>
+          <p>1683 9466 1808 9467 1684 9468</p>
+          <p>1683 9469 1807 9470 1808 9471</p>
+          <p>1808 9472 1685 9473 1684 9474</p>
+          <p>1808 9475 1809 9476 1685 9477</p>
+          <p>1809 9478 1686 9479 1685 9480</p>
+          <p>1809 9481 1810 9482 1686 9483</p>
+          <p>1686 9484 1811 9485 1687 9486</p>
+          <p>1686 9487 1810 9488 1811 9489</p>
+          <p>1811 9490 1688 9491 1687 9492</p>
+          <p>1811 9493 1812 9494 1688 9495</p>
+          <p>1688 9496 1813 9497 1689 9498</p>
+          <p>1688 9499 1812 9500 1813 9501</p>
+          <p>1689 9502 1814 9503 1690 9504</p>
+          <p>1689 9505 1813 9506 1814 9507</p>
+          <p>1690 9508 1815 9509 1691 9510</p>
+          <p>1690 9511 1814 9512 1815 9513</p>
+          <p>1691 9514 1816 9515 1692 9516</p>
+          <p>1691 9517 1815 9518 1816 9519</p>
+          <p>1692 9520 1817 9521 1693 9522</p>
+          <p>1692 9523 1816 9524 1817 9525</p>
+          <p>1693 9526 1818 9527 1694 9528</p>
+          <p>1693 9529 1817 9530 1818 9531</p>
+          <p>1694 9532 1819 9533 1695 9534</p>
+          <p>1694 9535 1818 9536 1819 9537</p>
+          <p>1695 9538 1820 9539 1696 9540</p>
+          <p>1695 9541 1819 9542 1820 9543</p>
+          <p>1696 9544 1821 9545 1697 9546</p>
+          <p>1696 9547 1820 9548 1821 9549</p>
+          <p>1821 9550 1698 9551 1697 9552</p>
+          <p>1821 9553 1822 9554 1698 9555</p>
+          <p>1822 9556 1699 9557 1698 9558</p>
+          <p>1822 9559 1823 9560 1699 9561</p>
+          <p>1699 9562 1824 9563 1700 9564</p>
+          <p>1699 9565 1823 9566 1824 9567</p>
+          <p>1700 9568 1825 9569 1701 9570</p>
+          <p>1700 9571 1824 9572 1825 9573</p>
+          <p>1701 9574 1826 9575 1702 9576</p>
+          <p>1701 9577 1825 9578 1826 9579</p>
+          <p>1826 9580 1703 9581 1702 9582</p>
+          <p>1826 9583 1827 9584 1703 9585</p>
+          <p>1703 9586 1828 9587 1704 9588</p>
+          <p>1703 9589 1827 9590 1828 9591</p>
+          <p>1704 9592 1829 9593 1705 9594</p>
+          <p>1704 9595 1828 9596 1829 9597</p>
+          <p>1829 9598 1706 9599 1705 9600</p>
+          <p>1829 9601 1830 9602 1706 9603</p>
+          <p>1706 9604 1831 9605 1707 9606</p>
+          <p>1706 9607 1830 9608 1831 9609</p>
+          <p>1831 9610 1708 9611 1707 9612</p>
+          <p>1831 9613 1832 9614 1708 9615</p>
+          <p>1832 9616 1709 9617 1708 9618</p>
+          <p>1832 9619 1833 9620 1709 9621</p>
+          <p>1709 9622 1834 9623 1710 9624</p>
+          <p>1709 9625 1833 9626 1834 9627</p>
+          <p>1834 9628 1711 9629 1710 9630</p>
+          <p>1834 9631 1835 9632 1711 9633</p>
+          <p>1711 9634 1836 9635 1712 9636</p>
+          <p>1711 9637 1835 9638 1836 9639</p>
+          <p>1712 9640 1837 9641 1713 9642</p>
+          <p>1712 9643 1836 9644 1837 9645</p>
+          <p>1713 9646 1838 9647 1714 9648</p>
+          <p>1713 9649 1837 9650 1838 9651</p>
+          <p>1838 9652 1715 9653 1714 9654</p>
+          <p>1838 9655 1839 9656 1715 9657</p>
+          <p>1715 9658 1840 9659 1716 9660</p>
+          <p>1715 9661 1839 9662 1840 9663</p>
+          <p>1716 9664 1841 9665 1717 9666</p>
+          <p>1716 9667 1840 9668 1841 9669</p>
+          <p>1717 9670 1842 9671 1718 9672</p>
+          <p>1717 9673 1841 9674 1842 9675</p>
+          <p>1842 9676 1719 9677 1718 9678</p>
+          <p>1842 9679 1843 9680 1719 9681</p>
+          <p>1843 9682 1720 9683 1719 9684</p>
+          <p>1843 9685 1844 9686 1720 9687</p>
+          <p>1720 9688 1845 9689 1721 9690</p>
+          <p>1720 9691 1844 9692 1845 9693</p>
+          <p>1721 9694 1846 9695 1722 9696</p>
+          <p>1721 9697 1845 9698 1846 9699</p>
+          <p>1722 9700 1847 9701 1723 9702</p>
+          <p>1722 9703 1846 9704 1847 9705</p>
+          <p>1723 9706 1848 9707 1724 9708</p>
+          <p>1723 9709 1847 9710 1848 9711</p>
+          <p>1848 9712 1725 9713 1724 9714</p>
+          <p>1848 9715 1849 9716 1725 9717</p>
+          <p>1849 9718 1726 9719 1725 9720</p>
+          <p>1849 9721 1850 9722 1726 9723</p>
+          <p>1726 9724 1851 9725 1727 9726</p>
+          <p>1726 9727 1850 9728 1851 9729</p>
+          <p>1851 9730 1728 9731 1727 9732</p>
+          <p>1851 9733 1852 9734 1728 9735</p>
+          <p>1728 9736 1853 9737 1729 9738</p>
+          <p>1728 9739 1852 9740 1853 9741</p>
+          <p>1729 9742 1854 9743 1730 9744</p>
+          <p>1729 9745 1853 9746 1854 9747</p>
+          <p>1730 9748 1855 9749 1731 9750</p>
+          <p>1730 9751 1854 9752 1855 9753</p>
+          <p>1731 9754 1856 9755 1732 9756</p>
+          <p>1731 9757 1855 9758 1856 9759</p>
+          <p>1856 9760 1733 9761 1732 9762</p>
+          <p>1856 9763 1857 9764 1733 9765</p>
+          <p>1733 9766 1858 9767 1734 9768</p>
+          <p>1733 9769 1857 9770 1858 9771</p>
+          <p>1734 9772 1859 9773 1735 9774</p>
+          <p>1734 9775 1858 9776 1859 9777</p>
+          <p>1735 9778 1860 9779 1736 9780</p>
+          <p>1735 9781 1859 9782 1860 9783</p>
+          <p>1736 9784 1861 9785 1737 9786</p>
+          <p>1736 9787 1860 9788 1861 9789</p>
+          <p>1737 9790 1862 9791 1738 9792</p>
+          <p>1737 9793 1861 9794 1862 9795</p>
+          <p>1862 9796 1739 9797 1738 9798</p>
+          <p>1862 9799 1863 9800 1739 9801</p>
+          <p>1739 9802 1864 9803 1740 9804</p>
+          <p>1739 9805 1863 9806 1864 9807</p>
+          <p>1740 9808 1865 9809 1741 9810</p>
+          <p>1740 9811 1864 9812 1865 9813</p>
+          <p>1865 9814 1742 9815 1741 9816</p>
+          <p>1865 9817 1866 9818 1742 9819</p>
+          <p>1742 9820 1867 9821 1743 9822</p>
+          <p>1742 9823 1866 9824 1867 9825</p>
+          <p>1743 9826 1868 9827 1744 9828</p>
+          <p>1743 9829 1867 9830 1868 9831</p>
+          <p>1744 9832 1869 9833 1745 9834</p>
+          <p>1744 9835 1868 9836 1869 9837</p>
+          <p>1869 9838 1746 9839 1745 9840</p>
+          <p>1869 9841 1870 9842 1746 9843</p>
+          <p>1870 9844 1747 9845 1746 9846</p>
+          <p>1870 9847 1871 9848 1747 9849</p>
+          <p>1871 9850 1748 9851 1747 9852</p>
+          <p>1871 9853 1872 9854 1748 9855</p>
+          <p>1748 9856 1873 9857 1749 9858</p>
+          <p>1748 9859 1872 9860 1873 9861</p>
+          <p>1873 9862 1750 9863 1749 9864</p>
+          <p>1873 9865 1874 9866 1750 9867</p>
+          <p>1750 9868 1875 9869 1751 9870</p>
+          <p>1750 9871 1874 9872 1875 9873</p>
+          <p>1751 9874 1876 9875 1752 9876</p>
+          <p>1751 9877 1875 9878 1876 9879</p>
+          <p>1752 9880 1877 9881 1753 9882</p>
+          <p>1752 9883 1876 9884 1877 9885</p>
+          <p>1753 9886 1878 9887 1754 9888</p>
+          <p>1753 9889 1877 9890 1878 9891</p>
+          <p>1754 9892 1879 9893 1755 9894</p>
+          <p>1754 9895 1878 9896 1879 9897</p>
+          <p>1879 9898 1756 9899 1755 9900</p>
+          <p>1879 9901 1880 9902 1756 9903</p>
+          <p>1756 9904 1881 9905 1757 9906</p>
+          <p>1756 9907 1880 9908 1881 9909</p>
+          <p>1881 9910 1758 9911 1757 9912</p>
+          <p>1881 9913 1882 9914 1758 9915</p>
+          <p>1882 9916 1759 9917 1758 9918</p>
+          <p>1882 9919 1883 9920 1759 9921</p>
+          <p>1883 9922 1760 9923 1759 9924</p>
+          <p>1883 9925 1884 9926 1760 9927</p>
+          <p>1760 9928 1885 9929 1761 9930</p>
+          <p>1760 9931 1884 9932 1885 9933</p>
+          <p>1761 9934 1886 9935 1762 9936</p>
+          <p>1761 9937 1885 9938 1886 9939</p>
+          <p>1762 9940 1887 9941 1763 9942</p>
+          <p>1762 9943 1886 9944 1887 9945</p>
+          <p>1763 9946 1888 9947 1764 9948</p>
+          <p>1763 9949 1887 9950 1888 9951</p>
+          <p>1888 9952 1765 9953 1764 9954</p>
+          <p>1888 9955 1889 9956 1765 9957</p>
+          <p>1889 9958 1766 9959 1765 9960</p>
+          <p>1889 9961 1890 9962 1766 9963</p>
+          <p>1766 9964 1891 9965 1767 9966</p>
+          <p>1766 9967 1890 9968 1891 9969</p>
+          <p>1767 9970 1892 9971 1768 9972</p>
+          <p>1767 9973 1891 9974 1892 9975</p>
+          <p>1768 9976 1893 9977 1769 9978</p>
+          <p>1768 9979 1892 9980 1893 9981</p>
+          <p>1769 9982 1894 9983 1770 9984</p>
+          <p>1769 9985 1893 9986 1894 9987</p>
+          <p>1770 9988 1804 9989 1680 9990</p>
+          <p>1770 9991 1894 9992 1804 9993</p>
+          <p>1928 9994 1805 9995 1804 9996</p>
+          <p>1928 9997 1929 9998 1805 9999</p>
+          <p>1805 10000 1930 10001 1806 10002</p>
+          <p>1805 10003 1929 10004 1930 10005</p>
+          <p>1806 10006 1931 10007 1807 10008</p>
+          <p>1806 10009 1930 10010 1931 10011</p>
+          <p>1807 10012 1932 10013 1808 10014</p>
+          <p>1807 10015 1931 10016 1932 10017</p>
+          <p>1808 10018 1933 10019 1809 10020</p>
+          <p>1808 10021 1932 10022 1933 10023</p>
+          <p>1809 10024 1934 10025 1810 10026</p>
+          <p>1809 10027 1933 10028 1934 10029</p>
+          <p>1934 10030 1811 10031 1810 10032</p>
+          <p>1934 10033 1935 10034 1811 10035</p>
+          <p>1811 10036 1936 10037 1812 10038</p>
+          <p>1811 10039 1935 10040 1936 10041</p>
+          <p>1936 10042 1813 10043 1812 10044</p>
+          <p>1936 10045 1937 10046 1813 10047</p>
+          <p>1813 10048 1938 10049 1814 10050</p>
+          <p>1813 10051 1937 10052 1938 10053</p>
+          <p>1814 10054 1939 10055 1815 10056</p>
+          <p>1814 10057 1938 10058 1939 10059</p>
+          <p>1815 10060 1940 10061 1816 10062</p>
+          <p>1815 10063 1939 10064 1940 10065</p>
+          <p>1816 10066 1941 10067 1817 10068</p>
+          <p>1816 10069 1940 10070 1941 10071</p>
+          <p>1817 10072 1942 10073 1818 10074</p>
+          <p>1817 10075 1941 10076 1942 10077</p>
+          <p>1818 10078 1943 10079 1819 10080</p>
+          <p>1818 10081 1942 10082 1943 10083</p>
+          <p>1819 10084 1944 10085 1820 10086</p>
+          <p>1819 10087 1943 10088 1944 10089</p>
+          <p>1944 10090 1821 10091 1820 10092</p>
+          <p>1944 10093 1945 10094 1821 10095</p>
+          <p>1945 10096 1822 10097 1821 10098</p>
+          <p>1945 10099 1946 10100 1822 10101</p>
+          <p>1822 10102 1947 10103 1823 10104</p>
+          <p>1822 10105 1946 10106 1947 10107</p>
+          <p>1823 10108 1948 10109 1824 10110</p>
+          <p>1823 10111 1947 10112 1948 10113</p>
+          <p>1948 10114 1825 10115 1824 10116</p>
+          <p>1948 10117 1949 10118 1825 10119</p>
+          <p>1825 10120 1950 10121 1826 10122</p>
+          <p>1825 10123 1949 10124 1950 10125</p>
+          <p>1826 10126 1951 10127 1827 10128</p>
+          <p>1826 10129 1950 10130 1951 10131</p>
+          <p>1827 10132 1952 10133 1828 10134</p>
+          <p>1827 10135 1951 10136 1952 10137</p>
+          <p>1828 10138 1953 10139 1829 10140</p>
+          <p>1828 10141 1952 10142 1953 10143</p>
+          <p>1953 10144 1830 10145 1829 10146</p>
+          <p>1953 10147 1954 10148 1830 10149</p>
+          <p>1830 10150 1955 10151 1831 10152</p>
+          <p>1830 10153 1954 10154 1955 10155</p>
+          <p>1831 10156 1956 10157 1832 10158</p>
+          <p>1831 10159 1955 10160 1956 10161</p>
+          <p>1832 10162 1957 10163 1833 10164</p>
+          <p>1832 10165 1956 10166 1957 10167</p>
+          <p>1833 10168 1958 10169 1834 10170</p>
+          <p>1833 10171 1957 10172 1958 10173</p>
+          <p>1834 10174 1959 10175 1835 10176</p>
+          <p>1834 10177 1958 10178 1959 10179</p>
+          <p>1835 10180 1960 10181 1836 10182</p>
+          <p>1835 10183 1959 10184 1960 10185</p>
+          <p>1960 10186 1837 10187 1836 10188</p>
+          <p>1960 10189 1961 10190 1837 10191</p>
+          <p>1837 10192 1962 10193 1838 10194</p>
+          <p>1837 10195 1961 10196 1962 10197</p>
+          <p>1962 10198 1839 10199 1838 10200</p>
+          <p>1962 10201 1963 10202 1839 10203</p>
+          <p>1839 10204 1964 10205 1840 10206</p>
+          <p>1839 10207 1963 10208 1964 10209</p>
+          <p>1840 10210 1965 10211 1841 10212</p>
+          <p>1840 10213 1964 10214 1965 10215</p>
+          <p>1841 10216 1966 10217 1842 10218</p>
+          <p>1841 10219 1965 10220 1966 10221</p>
+          <p>1842 10222 1967 10223 1843 10224</p>
+          <p>1842 10225 1966 10226 1967 10227</p>
+          <p>1967 10228 1844 10229 1843 10230</p>
+          <p>1967 10231 1968 10232 1844 10233</p>
+          <p>1844 10234 1969 10235 1845 10236</p>
+          <p>1844 10237 1968 10238 1969 10239</p>
+          <p>1845 10240 1970 10241 1846 10242</p>
+          <p>1845 10243 1969 10244 1970 10245</p>
+          <p>1846 10246 1971 10247 1847 10248</p>
+          <p>1846 10249 1970 10250 1971 10251</p>
+          <p>1847 10252 1972 10253 1848 10254</p>
+          <p>1847 10255 1971 10256 1972 10257</p>
+          <p>1972 10258 1849 10259 1848 10260</p>
+          <p>1972 10261 1973 10262 1849 10263</p>
+          <p>1849 10264 1974 10265 1850 10266</p>
+          <p>1849 10267 1973 10268 1974 10269</p>
+          <p>1974 10270 1851 10271 1850 10272</p>
+          <p>1974 10273 1975 10274 1851 10275</p>
+          <p>1851 10276 1976 10277 1852 10278</p>
+          <p>1851 10279 1975 10280 1976 10281</p>
+          <p>1976 10282 1853 10283 1852 10284</p>
+          <p>1976 10285 1977 10286 1853 10287</p>
+          <p>1853 10288 1978 10289 1854 10290</p>
+          <p>1853 10291 1977 10292 1978 10293</p>
+          <p>1978 10294 1855 10295 1854 10296</p>
+          <p>1978 10297 1979 10298 1855 10299</p>
+          <p>1855 10300 1980 10301 1856 10302</p>
+          <p>1855 10303 1979 10304 1980 10305</p>
+          <p>1856 10306 1981 10307 1857 10308</p>
+          <p>1856 10309 1980 10310 1981 10311</p>
+          <p>1857 10312 1982 10313 1858 10314</p>
+          <p>1857 10315 1981 10316 1982 10317</p>
+          <p>1858 10318 1983 10319 1859 10320</p>
+          <p>1858 10321 1982 10322 1983 10323</p>
+          <p>1983 10324 1860 10325 1859 10326</p>
+          <p>1983 10327 1984 10328 1860 10329</p>
+          <p>1984 10330 1861 10331 1860 10332</p>
+          <p>1984 10333 1985 10334 1861 10335</p>
+          <p>1985 10336 1862 10337 1861 10338</p>
+          <p>1985 10339 1986 10340 1862 10341</p>
+          <p>1862 10342 1987 10343 1863 10344</p>
+          <p>1862 10345 1986 10346 1987 10347</p>
+          <p>1987 10348 1864 10349 1863 10350</p>
+          <p>1987 10351 1988 10352 1864 10353</p>
+          <p>1864 10354 1989 10355 1865 10356</p>
+          <p>1864 10357 1988 10358 1989 10359</p>
+          <p>1989 10360 1866 10361 1865 10362</p>
+          <p>1989 10363 1990 10364 1866 10365</p>
+          <p>1866 10366 1991 10367 1867 10368</p>
+          <p>1866 10369 1990 10370 1991 10371</p>
+          <p>1991 10372 1868 10373 1867 10374</p>
+          <p>1991 10375 1992 10376 1868 10377</p>
+          <p>1868 10378 1993 10379 1869 10380</p>
+          <p>1868 10381 1992 10382 1993 10383</p>
+          <p>1993 10384 1870 10385 1869 10386</p>
+          <p>1993 10387 1994 10388 1870 10389</p>
+          <p>1870 10390 1995 10391 1871 10392</p>
+          <p>1870 10393 1994 10394 1995 10395</p>
+          <p>1871 10396 1996 10397 1872 10398</p>
+          <p>1871 10399 1995 10400 1996 10401</p>
+          <p>1872 10402 1997 10403 1873 10404</p>
+          <p>1872 10405 1996 10406 1997 10407</p>
+          <p>1873 10408 1998 10409 1874 10410</p>
+          <p>1873 10411 1997 10412 1998 10413</p>
+          <p>1998 10414 1875 10415 1874 10416</p>
+          <p>1998 10417 1999 10418 1875 10419</p>
+          <p>1875 10420 2000 10421 1876 10422</p>
+          <p>1875 10423 1999 10424 2000 10425</p>
+          <p>2000 10426 1877 10427 1876 10428</p>
+          <p>2000 10429 2001 10430 1877 10431</p>
+          <p>1877 10432 2002 10433 1878 10434</p>
+          <p>1877 10435 2001 10436 2002 10437</p>
+          <p>2002 10438 1879 10439 1878 10440</p>
+          <p>2002 10441 2003 10442 1879 10443</p>
+          <p>2003 10444 1880 10445 1879 10446</p>
+          <p>2003 10447 2004 10448 1880 10449</p>
+          <p>1880 10450 2005 10451 1881 10452</p>
+          <p>1880 10453 2004 10454 2005 10455</p>
+          <p>1881 10456 2006 10457 1882 10458</p>
+          <p>1881 10459 2005 10460 2006 10461</p>
+          <p>1882 10462 2007 10463 1883 10464</p>
+          <p>1882 10465 2006 10466 2007 10467</p>
+          <p>1883 10468 2008 10469 1884 10470</p>
+          <p>1883 10471 2007 10472 2008 10473</p>
+          <p>1884 10474 2009 10475 1885 10476</p>
+          <p>1884 10477 2008 10478 2009 10479</p>
+          <p>1885 10480 2010 10481 1886 10482</p>
+          <p>1885 10483 2009 10484 2010 10485</p>
+          <p>2010 10486 1887 10487 1886 10488</p>
+          <p>2010 10489 2011 10490 1887 10491</p>
+          <p>1887 10492 2012 10493 1888 10494</p>
+          <p>1887 10495 2011 10496 2012 10497</p>
+          <p>2012 10498 1889 10499 1888 10500</p>
+          <p>2012 10501 2013 10502 1889 10503</p>
+          <p>1889 10504 2014 10505 1890 10506</p>
+          <p>1889 10507 2013 10508 2014 10509</p>
+          <p>1890 10510 2015 10511 1891 10512</p>
+          <p>1890 10513 2014 10514 2015 10515</p>
+          <p>1891 10516 2016 10517 1892 10518</p>
+          <p>1891 10519 2015 10520 2016 10521</p>
+          <p>1892 10522 2017 10523 1893 10524</p>
+          <p>1892 10525 2016 10526 2017 10527</p>
+          <p>2017 10528 1894 10529 1893 10530</p>
+          <p>2017 10531 2018 10532 1894 10533</p>
+          <p>2018 10534 1804 10535 1894 10536</p>
+          <p>2018 10537 1928 10538 1804 10539</p>
+          <p>1399 10540 1524 10541 1400 10542</p>
+          <p>1399 10543 1523 10544 1524 10545</p>
+          <p>1400 10546 1525 10547 1401 10548</p>
+          <p>1400 10549 1524 10550 1525 10551</p>
+          <p>1401 10552 1526 10553 1402 10554</p>
+          <p>1401 10555 1525 10556 1526 10557</p>
+          <p>1402 10558 1527 10559 1403 10560</p>
+          <p>1402 10561 1526 10562 1527 10563</p>
+          <p>1527 10564 1404 10565 1403 10566</p>
+          <p>1527 10567 1528 10568 1404 10569</p>
+          <p>1404 10570 1529 10571 1405 10572</p>
+          <p>1404 10573 1528 10574 1529 10575</p>
+          <p>1405 10576 1530 10577 1406 10578</p>
+          <p>1405 10579 1529 10580 1530 10581</p>
+          <p>1530 10582 1407 10583 1406 10584</p>
+          <p>1530 10585 1531 10586 1407 10587</p>
+          <p>1531 10588 1408 10589 1407 10590</p>
+          <p>1531 10591 1532 10592 1408 10593</p>
+          <p>1408 10594 1533 10595 1409 10596</p>
+          <p>1408 10597 1532 10598 1533 10599</p>
+          <p>1409 10600 1534 10601 1410 10602</p>
+          <p>1409 10603 1533 10604 1534 10605</p>
+          <p>1534 10606 1411 10607 1410 10608</p>
+          <p>1534 10609 1535 10610 1411 10611</p>
+          <p>1535 10612 1412 10613 1411 10614</p>
+          <p>1535 10615 1536 10616 1412 10617</p>
+          <p>1412 10618 1537 10619 1413 10620</p>
+          <p>1412 10621 1536 10622 1537 10623</p>
+          <p>1413 10624 1538 10625 1414 10626</p>
+          <p>1413 10627 1537 10628 1538 10629</p>
+          <p>1414 10630 1539 10631 1415 10632</p>
+          <p>1414 10633 1538 10634 1539 10635</p>
+          <p>1539 10636 1416 10637 1415 10638</p>
+          <p>1539 10639 1540 10640 1416 10641</p>
+          <p>1416 10642 1541 10643 1417 10644</p>
+          <p>1416 10645 1540 10646 1541 10647</p>
+          <p>1541 10648 1418 10649 1417 10650</p>
+          <p>1541 10651 1542 10652 1418 10653</p>
+          <p>1542 10654 1419 10655 1418 10656</p>
+          <p>1542 10657 1543 10658 1419 10659</p>
+          <p>1419 10660 1544 10661 1420 10662</p>
+          <p>1419 10663 1543 10664 1544 10665</p>
+          <p>1420 10666 1545 10667 1421 10668</p>
+          <p>1420 10669 1544 10670 1545 10671</p>
+          <p>1545 10672 1422 10673 1421 10674</p>
+          <p>1545 10675 1546 10676 1422 10677</p>
+          <p>1422 10678 1547 10679 1423 10680</p>
+          <p>1422 10681 1546 10682 1547 10683</p>
+          <p>1547 10684 1424 10685 1423 10686</p>
+          <p>1547 10687 1548 10688 1424 10689</p>
+          <p>1548 10690 1425 10691 1424 10692</p>
+          <p>1548 10693 1549 10694 1425 10695</p>
+          <p>1549 10696 1426 10697 1425 10698</p>
+          <p>1549 10699 1550 10700 1426 10701</p>
+          <p>1550 10702 1427 10703 1426 10704</p>
+          <p>1550 10705 1551 10706 1427 10707</p>
+          <p>1551 10708 1428 10709 1427 10710</p>
+          <p>1551 10711 1552 10712 1428 10713</p>
+          <p>1552 10714 1429 10715 1428 10716</p>
+          <p>1552 10717 1553 10718 1429 10719</p>
+          <p>1553 10720 1430 10721 1429 10722</p>
+          <p>1553 10723 1554 10724 1430 10725</p>
+          <p>1430 10726 1555 10727 1431 10728</p>
+          <p>1430 10729 1554 10730 1555 10731</p>
+          <p>1555 10732 1399 10733 1431 10734</p>
+          <p>1555 10735 1523 10736 1399 10737</p>
+          <p>1523 10738 1648 10739 1524 10740</p>
+          <p>1523 10741 1647 10742 1648 10743</p>
+          <p>1524 10744 1649 10745 1525 10746</p>
+          <p>1524 10747 1648 10748 1649 10749</p>
+          <p>1525 10750 1650 10751 1526 10752</p>
+          <p>1525 10753 1649 10754 1650 10755</p>
+          <p>1526 10756 1651 10757 1527 10758</p>
+          <p>1526 10759 1650 10760 1651 10761</p>
+          <p>1651 10762 1528 10763 1527 10764</p>
+          <p>1651 10765 1652 10766 1528 10767</p>
+          <p>1528 10768 1653 10769 1529 10770</p>
+          <p>1528 10771 1652 10772 1653 10773</p>
+          <p>1529 10774 1654 10775 1530 10776</p>
+          <p>1529 10777 1653 10778 1654 10779</p>
+          <p>1654 10780 1531 10781 1530 10782</p>
+          <p>1654 10783 1655 10784 1531 10785</p>
+          <p>1655 10786 1532 10787 1531 10788</p>
+          <p>1655 10789 1656 10790 1532 10791</p>
+          <p>1532 10792 1657 10793 1533 10794</p>
+          <p>1532 10795 1656 10796 1657 10797</p>
+          <p>1533 10798 1658 10799 1534 10800</p>
+          <p>1533 10801 1657 10802 1658 10803</p>
+          <p>1658 10804 1535 10805 1534 10806</p>
+          <p>1658 10807 1659 10808 1535 10809</p>
+          <p>1659 10810 1536 10811 1535 10812</p>
+          <p>1659 10813 1660 10814 1536 10815</p>
+          <p>1536 10816 1661 10817 1537 10818</p>
+          <p>1536 10819 1660 10820 1661 10821</p>
+          <p>1537 10822 1662 10823 1538 10824</p>
+          <p>1537 10825 1661 10826 1662 10827</p>
+          <p>1538 10828 1663 10829 1539 10830</p>
+          <p>1538 10831 1662 10832 1663 10833</p>
+          <p>1663 10834 1540 10835 1539 10836</p>
+          <p>1663 10837 1664 10838 1540 10839</p>
+          <p>1540 10840 1665 10841 1541 10842</p>
+          <p>1540 10843 1664 10844 1665 10845</p>
+          <p>1665 10846 1542 10847 1541 10848</p>
+          <p>1665 10849 1666 10850 1542 10851</p>
+          <p>1666 10852 1543 10853 1542 10854</p>
+          <p>1666 10855 1667 10856 1543 10857</p>
+          <p>1543 10858 1668 10859 1544 10860</p>
+          <p>1543 10861 1667 10862 1668 10863</p>
+          <p>1544 10864 1669 10865 1545 10866</p>
+          <p>1544 10867 1668 10868 1669 10869</p>
+          <p>1669 10870 1546 10871 1545 10872</p>
+          <p>1669 10873 1670 10874 1546 10875</p>
+          <p>1546 10876 1671 10877 1547 10878</p>
+          <p>1546 10879 1670 10880 1671 10881</p>
+          <p>1671 10882 1548 10883 1547 10884</p>
+          <p>1671 10885 1672 10886 1548 10887</p>
+          <p>1672 10888 1549 10889 1548 10890</p>
+          <p>1672 10891 1673 10892 1549 10893</p>
+          <p>1549 10894 1674 10895 1550 10896</p>
+          <p>1549 10897 1673 10898 1674 10899</p>
+          <p>1674 10900 1551 10901 1550 10902</p>
+          <p>1674 10903 1675 10904 1551 10905</p>
+          <p>1675 10906 1552 10907 1551 10908</p>
+          <p>1675 10909 1676 10910 1552 10911</p>
+          <p>1676 10912 1553 10913 1552 10914</p>
+          <p>1676 10915 1677 10916 1553 10917</p>
+          <p>1677 10918 1554 10919 1553 10920</p>
+          <p>1677 10921 1678 10922 1554 10923</p>
+          <p>1554 10924 1679 10925 1555 10926</p>
+          <p>1554 10927 1678 10928 1679 10929</p>
+          <p>1679 10930 1523 10931 1555 10932</p>
+          <p>1679 10933 1647 10934 1523 10935</p>
+          <p>1647 10936 1772 10937 1648 10938</p>
+          <p>1647 10939 1771 10940 1772 10941</p>
+          <p>1648 10942 1773 10943 1649 10944</p>
+          <p>1648 10945 1772 10946 1773 10947</p>
+          <p>1649 10948 1774 10949 1650 10950</p>
+          <p>1649 10951 1773 10952 1774 10953</p>
+          <p>1650 10954 1775 10955 1651 10956</p>
+          <p>1650 10957 1774 10958 1775 10959</p>
+          <p>1775 10960 1652 10961 1651 10962</p>
+          <p>1775 10963 1776 10964 1652 10965</p>
+          <p>1652 10966 1777 10967 1653 10968</p>
+          <p>1652 10969 1776 10970 1777 10971</p>
+          <p>1653 10972 1778 10973 1654 10974</p>
+          <p>1653 10975 1777 10976 1778 10977</p>
+          <p>1778 10978 1655 10979 1654 10980</p>
+          <p>1778 10981 1779 10982 1655 10983</p>
+          <p>1779 10984 1656 10985 1655 10986</p>
+          <p>1779 10987 1780 10988 1656 10989</p>
+          <p>1656 10990 1781 10991 1657 10992</p>
+          <p>1656 10993 1780 10994 1781 10995</p>
+          <p>1657 10996 1782 10997 1658 10998</p>
+          <p>1657 10999 1781 11000 1782 11001</p>
+          <p>1782 11002 1659 11003 1658 11004</p>
+          <p>1782 11005 1783 11006 1659 11007</p>
+          <p>1783 11008 1660 11009 1659 11010</p>
+          <p>1783 11011 1784 11012 1660 11013</p>
+          <p>1660 11014 1785 11015 1661 11016</p>
+          <p>1660 11017 1784 11018 1785 11019</p>
+          <p>1661 11020 1786 11021 1662 11022</p>
+          <p>1661 11023 1785 11024 1786 11025</p>
+          <p>1662 11026 1787 11027 1663 11028</p>
+          <p>1662 11029 1786 11030 1787 11031</p>
+          <p>1787 11032 1664 11033 1663 11034</p>
+          <p>1787 11035 1788 11036 1664 11037</p>
+          <p>1664 11038 1789 11039 1665 11040</p>
+          <p>1664 11041 1788 11042 1789 11043</p>
+          <p>1789 11044 1666 11045 1665 11046</p>
+          <p>1789 11047 1790 11048 1666 11049</p>
+          <p>1790 11050 1667 11051 1666 11052</p>
+          <p>1790 11053 1791 11054 1667 11055</p>
+          <p>1667 11056 1792 11057 1668 11058</p>
+          <p>1667 11059 1791 11060 1792 11061</p>
+          <p>1668 11062 1793 11063 1669 11064</p>
+          <p>1668 11065 1792 11066 1793 11067</p>
+          <p>1793 11068 1670 11069 1669 11070</p>
+          <p>1793 11071 1794 11072 1670 11073</p>
+          <p>1670 11074 1795 11075 1671 11076</p>
+          <p>1670 11077 1794 11078 1795 11079</p>
+          <p>1795 11080 1672 11081 1671 11082</p>
+          <p>1795 11083 1796 11084 1672 11085</p>
+          <p>1796 11086 1673 11087 1672 11088</p>
+          <p>1796 11089 1797 11090 1673 11091</p>
+          <p>1673 11092 1798 11093 1674 11094</p>
+          <p>1673 11095 1797 11096 1798 11097</p>
+          <p>1798 11098 1675 11099 1674 11100</p>
+          <p>1798 11101 1799 11102 1675 11103</p>
+          <p>1799 11104 1676 11105 1675 11106</p>
+          <p>1799 11107 1800 11108 1676 11109</p>
+          <p>1800 11110 1677 11111 1676 11112</p>
+          <p>1800 11113 1801 11114 1677 11115</p>
+          <p>1801 11116 1678 11117 1677 11118</p>
+          <p>1801 11119 1802 11120 1678 11121</p>
+          <p>1678 11122 1803 11123 1679 11124</p>
+          <p>1678 11125 1802 11126 1803 11127</p>
+          <p>1803 11128 1647 11129 1679 11130</p>
+          <p>1803 11131 1771 11132 1647 11133</p>
+          <p>1895 11134 1772 11135 1771 11136</p>
+          <p>1895 11137 1896 11138 1772 11139</p>
+          <p>1896 11140 1773 11141 1772 11142</p>
+          <p>1896 11143 1897 11144 1773 11145</p>
+          <p>1773 11146 1898 11147 1774 11148</p>
+          <p>1773 11149 1897 11150 1898 11151</p>
+          <p>1774 11152 1899 11153 1775 11154</p>
+          <p>1774 11155 1898 11156 1899 11157</p>
+          <p>1899 11158 1776 11159 1775 11160</p>
+          <p>1899 11161 1900 11162 1776 11163</p>
+          <p>1776 11164 1901 11165 1777 11166</p>
+          <p>1776 11167 1900 11168 1901 11169</p>
+          <p>1901 11170 1778 11171 1777 11172</p>
+          <p>1901 11173 1902 11174 1778 11175</p>
+          <p>1902 11176 1779 11177 1778 11178</p>
+          <p>1902 11179 1903 11180 1779 11181</p>
+          <p>1779 11182 1904 11183 1780 11184</p>
+          <p>1779 11185 1903 11186 1904 11187</p>
+          <p>1780 11188 1905 11189 1781 11190</p>
+          <p>1780 11191 1904 11192 1905 11193</p>
+          <p>1781 11194 1906 11195 1782 11196</p>
+          <p>1781 11197 1905 11198 1906 11199</p>
+          <p>1906 11200 1783 11201 1782 11202</p>
+          <p>1906 11203 1907 11204 1783 11205</p>
+          <p>1907 11206 1784 11207 1783 11208</p>
+          <p>1907 11209 1908 11210 1784 11211</p>
+          <p>1784 11212 1909 11213 1785 11214</p>
+          <p>1784 11215 1908 11216 1909 11217</p>
+          <p>1785 11218 1910 11219 1786 11220</p>
+          <p>1785 11221 1909 11222 1910 11223</p>
+          <p>1910 11224 1787 11225 1786 11226</p>
+          <p>1910 11227 1911 11228 1787 11229</p>
+          <p>1787 11230 1912 11231 1788 11232</p>
+          <p>1787 11233 1911 11234 1912 11235</p>
+          <p>1912 11236 1789 11237 1788 11238</p>
+          <p>1912 11239 1913 11240 1789 11241</p>
+          <p>1913 11242 1790 11243 1789 11244</p>
+          <p>1913 11245 1914 11246 1790 11247</p>
+          <p>1790 11248 1915 11249 1791 11250</p>
+          <p>1790 11251 1914 11252 1915 11253</p>
+          <p>1915 11254 1792 11255 1791 11256</p>
+          <p>1915 11257 1916 11258 1792 11259</p>
+          <p>1916 11260 1793 11261 1792 11262</p>
+          <p>1916 11263 1917 11264 1793 11265</p>
+          <p>1793 11266 1918 11267 1794 11268</p>
+          <p>1793 11269 1917 11270 1918 11271</p>
+          <p>1794 11272 1919 11273 1795 11274</p>
+          <p>1794 11275 1918 11276 1919 11277</p>
+          <p>1919 11278 1796 11279 1795 11280</p>
+          <p>1919 11281 1920 11282 1796 11283</p>
+          <p>1796 11284 1921 11285 1797 11286</p>
+          <p>1796 11287 1920 11288 1921 11289</p>
+          <p>1797 11290 1922 11291 1798 11292</p>
+          <p>1797 11293 1921 11294 1922 11295</p>
+          <p>1922 11296 1799 11297 1798 11298</p>
+          <p>1922 11299 1923 11300 1799 11301</p>
+          <p>1799 11302 1924 11303 1800 11304</p>
+          <p>1799 11305 1923 11306 1924 11307</p>
+          <p>1800 11308 1925 11309 1801 11310</p>
+          <p>1800 11311 1924 11312 1925 11313</p>
+          <p>1801 11314 1926 11315 1802 11316</p>
+          <p>1801 11317 1925 11318 1926 11319</p>
+          <p>1802 11320 1927 11321 1803 11322</p>
+          <p>1802 11323 1926 11324 1927 11325</p>
+          <p>1803 11326 1895 11327 1771 11328</p>
+          <p>1803 11329 1927 11330 1895 11331</p>
+          <p>1895 11332 2020 11333 1896 11334</p>
+          <p>1895 11335 2019 11336 2020 11337</p>
+          <p>2020 11338 1897 11339 1896 11340</p>
+          <p>2020 11341 2021 11342 1897 11343</p>
+          <p>1897 11344 2022 11345 1898 11346</p>
+          <p>1897 11347 2021 11348 2022 11349</p>
+          <p>1898 11350 2023 11351 1899 11352</p>
+          <p>1898 11353 2022 11354 2023 11355</p>
+          <p>1899 11356 2024 11357 1900 11358</p>
+          <p>1899 11359 2023 11360 2024 11361</p>
+          <p>2024 11362 1901 11363 1900 11364</p>
+          <p>2024 11365 2025 11366 1901 11367</p>
+          <p>2025 11368 1902 11369 1901 11370</p>
+          <p>2025 11371 2026 11372 1902 11373</p>
+          <p>2026 11374 1903 11375 1902 11376</p>
+          <p>2026 11377 2027 11378 1903 11379</p>
+          <p>2027 11380 1904 11381 1903 11382</p>
+          <p>2027 11383 2028 11384 1904 11385</p>
+          <p>2028 11386 1905 11387 1904 11388</p>
+          <p>2028 11389 2029 11390 1905 11391</p>
+          <p>1905 11392 2030 11393 1906 11394</p>
+          <p>1905 11395 2029 11396 2030 11397</p>
+          <p>1906 11398 2031 11399 1907 11400</p>
+          <p>1906 11401 2030 11402 2031 11403</p>
+          <p>1907 11404 2032 11405 1908 11406</p>
+          <p>1907 11407 2031 11408 2032 11409</p>
+          <p>1908 11410 2033 11411 1909 11412</p>
+          <p>1908 11413 2032 11414 2033 11415</p>
+          <p>1909 11416 2034 11417 1910 11418</p>
+          <p>1909 11419 2033 11420 2034 11421</p>
+          <p>1910 11422 2035 11423 1911 11424</p>
+          <p>1910 11425 2034 11426 2035 11427</p>
+          <p>1911 11428 2036 11429 1912 11430</p>
+          <p>1911 11431 2035 11432 2036 11433</p>
+          <p>1912 11434 2037 11435 1913 11436</p>
+          <p>1912 11437 2036 11438 2037 11439</p>
+          <p>1913 11440 2038 11441 1914 11442</p>
+          <p>1913 11443 2037 11444 2038 11445</p>
+          <p>2038 11446 1915 11447 1914 11448</p>
+          <p>2038 11449 2039 11450 1915 11451</p>
+          <p>2039 11452 1916 11453 1915 11454</p>
+          <p>2039 11455 2040 11456 1916 11457</p>
+          <p>1916 11458 2041 11459 1917 11460</p>
+          <p>1916 11461 2040 11462 2041 11463</p>
+          <p>1917 11464 2042 11465 1918 11466</p>
+          <p>1917 11467 2041 11468 2042 11469</p>
+          <p>1918 11470 2043 11471 1919 11472</p>
+          <p>1918 11473 2042 11474 2043 11475</p>
+          <p>1919 11476 2044 11477 1920 11478</p>
+          <p>1919 11479 2043 11480 2044 11481</p>
+          <p>1920 11482 2045 11483 1921 11484</p>
+          <p>1920 11485 2044 11486 2045 11487</p>
+          <p>2045 11488 1922 11489 1921 11490</p>
+          <p>2045 11491 2046 11492 1922 11493</p>
+          <p>1922 11494 2047 11495 1923 11496</p>
+          <p>1922 11497 2046 11498 2047 11499</p>
+          <p>2047 11500 1924 11501 1923 11502</p>
+          <p>2047 11503 2048 11504 1924 11505</p>
+          <p>1924 11506 2049 11507 1925 11508</p>
+          <p>1924 11509 2048 11510 2049 11511</p>
+          <p>2049 11512 1926 11513 1925 11514</p>
+          <p>2049 11515 2050 11516 1926 11517</p>
+          <p>1926 11518 2051 11519 1927 11520</p>
+          <p>1926 11521 2050 11522 2051 11523</p>
+          <p>1927 11524 2019 11525 1895 11526</p>
+          <p>1927 11527 2051 11528 2019 11529</p>
+          <p>1308 11530 1317 11531 1398 11532</p>
+          <p>1308 11533 1316 11534 1317 11535</p>
+          <p>1308 11536 1309 11537 1316 11538</p>
+          <p>1309 11539 1310 11540 1316 11541</p>
+          <p>1310 11542 1315 11543 1316 11544</p>
+          <p>1310 11545 1311 11546 1315 11547</p>
+          <p>1311 11548 1314 11549 1315 11550</p>
+          <p>1311 11551 1313 11552 1314 11553</p>
+          <p>1311 11554 1312 11555 1313 11556</p>
+          <p>1317 11557 1318 11558 1398 11559</p>
+          <p>1318 11560 1403 11561 1398 11562</p>
+          <p>1318 11563 1319 11564 1403 11565</p>
+          <p>1319 11566 1402 11567 1403 11568</p>
+          <p>1319 11569 1401 11570 1402 11571</p>
+          <p>1319 11572 1320 11573 1401 11574</p>
+          <p>1320 11575 1400 11576 1401 11577</p>
+          <p>1320 11578 1399 11579 1400 11580</p>
+          <p>1320 11581 1431 11582 1399 11583</p>
+          <p>1320 11584 1321 11585 1431 11586</p>
+          <p>1321 11587 1362 11588 1431 11589</p>
+          <p>1321 11590 1361 11591 1362 11592</p>
+          <p>1321 11593 1322 11594 1361 11595</p>
+          <p>1322 11596 1323 11597 1361 11598</p>
+          <p>1323 11599 1360 11600 1361 11601</p>
+          <p>1323 11602 1324 11603 1360 11604</p>
+          <p>1324 11605 1325 11606 1360 11607</p>
+          <p>1325 11608 1326 11609 1360 11610</p>
+          <p>1326 11611 1359 11612 1360 11613</p>
+          <p>1326 11614 1327 11615 1359 11616</p>
+          <p>1327 11617 1328 11618 1359 11619</p>
+          <p>1328 11620 1358 11621 1359 11622</p>
+          <p>1328 11623 1329 11624 1358 11625</p>
+          <p>1329 11626 1330 11627 1358 11628</p>
+          <p>1330 11629 1357 11630 1358 11631</p>
+          <p>1330 11632 1331 11633 1357 11634</p>
+          <p>1331 11635 1356 11636 1357 11637</p>
+          <p>1331 11638 1332 11639 1356 11640</p>
+          <p>1332 11641 1333 11642 1356 11643</p>
+          <p>1333 11644 1355 11645 1356 11646</p>
+          <p>1333 11647 1334 11648 1355 11649</p>
+          <p>1334 11650 1354 11651 1355 11652</p>
+          <p>1334 11653 1353 11654 1354 11655</p>
+          <p>1334 11656 1335 11657 1353 11658</p>
+          <p>1335 11659 1352 11660 1353 11661</p>
+          <p>1335 11662 1336 11663 1352 11664</p>
+          <p>1336 11665 1351 11666 1352 11667</p>
+          <p>1336 11668 1337 11669 1351 11670</p>
+          <p>1337 11671 1350 11672 1351 11673</p>
+          <p>1337 11674 1338 11675 1350 11676</p>
+          <p>1338 11677 1339 11678 1350 11679</p>
+          <p>1339 11680 1349 11681 1350 11682</p>
+          <p>1339 11683 1340 11684 1349 11685</p>
+          <p>1340 11686 1348 11687 1349 11688</p>
+          <p>1340 11689 1341 11690 1348 11691</p>
+          <p>1341 11692 1342 11693 1348 11694</p>
+          <p>1342 11695 1347 11696 1348 11697</p>
+          <p>1342 11698 1343 11699 1347 11700</p>
+          <p>1343 11701 1346 11702 1347 11703</p>
+          <p>1343 11704 1344 11705 1346 11706</p>
+          <p>1344 11707 1345 11708 1346 11709</p>
+          <p>1362 11710 1363 11711 1431 11712</p>
+          <p>1363 11713 1364 11714 1431 11715</p>
+          <p>1364 11716 1430 11717 1431 11718</p>
+          <p>1364 11719 1365 11720 1430 11721</p>
+          <p>1365 11722 1429 11723 1430 11724</p>
+          <p>1365 11725 1428 11726 1429 11727</p>
+          <p>1365 11728 1366 11729 1428 11730</p>
+          <p>1366 11731 1427 11732 1428 11733</p>
+          <p>1366 11734 1367 11735 1427 11736</p>
+          <p>1367 11737 1368 11738 1427 11739</p>
+          <p>1368 11740 1426 11741 1427 11742</p>
+          <p>1368 11743 1369 11744 1426 11745</p>
+          <p>1369 11746 1425 11747 1426 11748</p>
+          <p>1369 11749 1370 11750 1425 11751</p>
+          <p>1370 11752 1371 11753 1425 11754</p>
+          <p>1371 11755 1424 11756 1425 11757</p>
+          <p>1371 11758 1372 11759 1424 11760</p>
+          <p>1372 11761 1373 11762 1424 11763</p>
+          <p>1373 11764 1423 11765 1424 11766</p>
+          <p>1373 11767 1374 11768 1423 11769</p>
+          <p>1374 11770 1422 11771 1423 11772</p>
+          <p>1374 11773 1375 11774 1422 11775</p>
+          <p>1375 11776 1376 11777 1422 11778</p>
+          <p>1376 11779 1421 11780 1422 11781</p>
+          <p>1376 11782 1377 11783 1421 11784</p>
+          <p>1377 11785 1378 11786 1421 11787</p>
+          <p>1378 11788 1420 11789 1421 11790</p>
+          <p>1378 11791 1379 11792 1420 11793</p>
+          <p>1379 11794 1380 11795 1420 11796</p>
+          <p>1380 11797 1419 11798 1420 11799</p>
+          <p>1380 11800 1381 11801 1419 11802</p>
+          <p>1381 11803 1382 11804 1419 11805</p>
+          <p>1382 11806 1418 11807 1419 11808</p>
+          <p>1382 11809 1383 11810 1418 11811</p>
+          <p>1383 11812 1384 11813 1418 11814</p>
+          <p>1384 11815 1417 11816 1418 11817</p>
+          <p>1384 11818 1385 11819 1417 11820</p>
+          <p>1385 11821 1386 11822 1417 11823</p>
+          <p>1386 11824 1416 11825 1417 11826</p>
+          <p>1386 11827 1387 11828 1416 11829</p>
+          <p>1387 11830 1415 11831 1416 11832</p>
+          <p>1387 11833 1388 11834 1415 11835</p>
+          <p>1388 11836 1414 11837 1415 11838</p>
+          <p>1388 11839 1389 11840 1414 11841</p>
+          <p>1389 11842 1413 11843 1414 11844</p>
+          <p>1389 11845 1390 11846 1413 11847</p>
+          <p>1390 11848 1412 11849 1413 11850</p>
+          <p>1390 11851 1391 11852 1412 11853</p>
+          <p>1391 11854 1411 11855 1412 11856</p>
+          <p>1391 11857 1392 11858 1411 11859</p>
+          <p>1392 11860 1393 11861 1411 11862</p>
+          <p>1393 11863 1410 11864 1411 11865</p>
+          <p>1393 11866 1394 11867 1410 11868</p>
+          <p>1394 11869 1409 11870 1410 11871</p>
+          <p>1394 11872 1395 11873 1409 11874</p>
+          <p>1395 11875 1396 11876 1409 11877</p>
+          <p>1396 11878 1408 11879 1409 11880</p>
+          <p>1396 11881 1407 11882 1408 11883</p>
+          <p>1396 11884 1397 11885 1407 11886</p>
+          <p>1397 11887 1406 11888 1407 11889</p>
+          <p>1397 11890 1398 11891 1406 11892</p>
+          <p>1398 11893 1405 11894 1406 11895</p>
+          <p>1398 11896 1404 11897 1405 11898</p>
+          <p>1398 11899 1403 11900 1404 11901</p>
+          <p>2018 11902 1936 11903 1928 11904</p>
+          <p>2018 11905 1937 11906 1936 11907</p>
+          <p>2018 11908 1938 11909 1937 11910</p>
+          <p>2018 11911 2023 11912 1938 11913</p>
+          <p>2018 11914 2024 11915 2023 11916</p>
+          <p>2018 11917 2025 11918 2024 11919</p>
+          <p>2018 11920 2026 11921 2025 11922</p>
+          <p>2018 11923 2017 11924 2026 11925</p>
+          <p>2017 11926 2027 11927 2026 11928</p>
+          <p>2017 11929 2016 11930 2027 11931</p>
+          <p>2016 11932 2028 11933 2027 11934</p>
+          <p>2016 11935 2029 11936 2028 11937</p>
+          <p>2016 11938 2015 11939 2029 11940</p>
+          <p>2015 11941 2014 11942 2029 11943</p>
+          <p>2014 11944 2030 11945 2029 11946</p>
+          <p>2014 11947 2013 11948 2030 11949</p>
+          <p>2013 11950 2031 11951 2030 11952</p>
+          <p>2013 11953 2012 11954 2031 11955</p>
+          <p>2012 11956 2011 11957 2031 11958</p>
+          <p>2011 11959 2032 11960 2031 11961</p>
+          <p>2011 11962 2010 11963 2032 11964</p>
+          <p>2010 11965 2033 11966 2032 11967</p>
+          <p>2010 11968 2009 11969 2033 11970</p>
+          <p>2009 11971 2034 11972 2033 11973</p>
+          <p>2009 11974 2008 11975 2034 11976</p>
+          <p>2008 11977 2035 11978 2034 11979</p>
+          <p>2008 11980 2007 11981 2035 11982</p>
+          <p>2007 11983 2036 11984 2035 11985</p>
+          <p>2007 11986 2006 11987 2036 11988</p>
+          <p>2006 11989 2037 11990 2036 11991</p>
+          <p>2006 11992 2005 11993 2037 11994</p>
+          <p>2005 11995 2004 11996 2037 11997</p>
+          <p>2004 11998 2038 11999 2037 12000</p>
+          <p>2004 12001 2003 12002 2038 12003</p>
+          <p>2003 12004 2002 12005 2038 12006</p>
+          <p>2002 12007 2001 12008 2038 12009</p>
+          <p>2001 12010 2039 12011 2038 12012</p>
+          <p>2001 12013 2000 12014 2039 12015</p>
+          <p>2000 12016 2040 12017 2039 12018</p>
+          <p>2000 12019 1999 12020 2040 12021</p>
+          <p>1999 12022 1998 12023 2040 12024</p>
+          <p>1998 12025 2041 12026 2040 12027</p>
+          <p>1998 12028 1997 12029 2041 12030</p>
+          <p>1997 12031 1996 12032 2041 12033</p>
+          <p>1996 12034 2042 12035 2041 12036</p>
+          <p>1996 12037 1995 12038 2042 12039</p>
+          <p>1995 12040 1994 12041 2042 12042</p>
+          <p>1994 12043 2043 12044 2042 12045</p>
+          <p>1994 12046 1993 12047 2043 12048</p>
+          <p>1993 12049 2044 12050 2043 12051</p>
+          <p>1993 12052 1992 12053 2044 12054</p>
+          <p>1992 12055 1991 12056 2044 12057</p>
+          <p>1991 12058 2045 12059 2044 12060</p>
+          <p>1991 12061 1990 12062 2045 12063</p>
+          <p>1990 12064 1989 12065 2045 12066</p>
+          <p>1989 12067 2046 12068 2045 12069</p>
+          <p>1989 12070 1988 12071 2046 12072</p>
+          <p>1988 12073 2047 12074 2046 12075</p>
+          <p>1988 12076 1987 12077 2047 12078</p>
+          <p>1987 12079 1986 12080 2047 12081</p>
+          <p>1986 12082 2048 12083 2047 12084</p>
+          <p>1986 12085 1985 12086 2048 12087</p>
+          <p>1985 12088 2049 12089 2048 12090</p>
+          <p>1985 12091 2050 12092 2049 12093</p>
+          <p>1985 12094 1984 12095 2050 12096</p>
+          <p>1984 12097 2051 12098 2050 12099</p>
+          <p>1984 12100 1983 12101 2051 12102</p>
+          <p>1983 12103 1982 12104 2051 12105</p>
+          <p>1982 12106 1941 12107 2051 12108</p>
+          <p>1982 12109 1942 12110 1941 12111</p>
+          <p>1982 12112 1981 12113 1942 12114</p>
+          <p>1981 12115 1943 12116 1942 12117</p>
+          <p>1981 12118 1980 12119 1943 12120</p>
+          <p>1980 12121 1944 12122 1943 12123</p>
+          <p>1980 12124 1945 12125 1944 12126</p>
+          <p>1980 12127 1946 12128 1945 12129</p>
+          <p>1980 12130 1979 12131 1946 12132</p>
+          <p>1979 12133 1947 12134 1946 12135</p>
+          <p>1979 12136 1948 12137 1947 12138</p>
+          <p>1979 12139 1978 12140 1948 12141</p>
+          <p>1978 12142 1949 12143 1948 12144</p>
+          <p>1978 12145 1950 12146 1949 12147</p>
+          <p>1978 12148 1977 12149 1950 12150</p>
+          <p>1977 12151 1951 12152 1950 12153</p>
+          <p>1977 12154 1976 12155 1951 12156</p>
+          <p>1976 12157 1952 12158 1951 12159</p>
+          <p>1976 12160 1953 12161 1952 12162</p>
+          <p>1976 12163 1975 12164 1953 12165</p>
+          <p>1975 12166 1954 12167 1953 12168</p>
+          <p>1975 12169 1974 12170 1954 12171</p>
+          <p>1974 12172 1973 12173 1954 12174</p>
+          <p>1973 12175 1955 12176 1954 12177</p>
+          <p>1973 12178 1972 12179 1955 12180</p>
+          <p>1972 12181 1956 12182 1955 12183</p>
+          <p>1972 12184 1971 12185 1956 12186</p>
+          <p>1971 12187 1957 12188 1956 12189</p>
+          <p>1971 12190 1970 12191 1957 12192</p>
+          <p>1970 12193 1958 12194 1957 12195</p>
+          <p>1970 12196 1959 12197 1958 12198</p>
+          <p>1970 12199 1969 12200 1959 12201</p>
+          <p>1969 12202 1960 12203 1959 12204</p>
+          <p>1969 12205 1968 12206 1960 12207</p>
+          <p>1968 12208 1961 12209 1960 12210</p>
+          <p>1968 12211 1962 12212 1961 12213</p>
+          <p>1968 12214 1967 12215 1962 12216</p>
+          <p>1967 12217 1963 12218 1962 12219</p>
+          <p>1967 12220 1966 12221 1963 12222</p>
+          <p>1966 12223 1964 12224 1963 12225</p>
+          <p>1966 12226 1965 12227 1964 12228</p>
+          <p>1941 12229 1940 12230 2051 12231</p>
+          <p>1940 12232 2019 12233 2051 12234</p>
+          <p>1940 12235 2020 12236 2019 12237</p>
+          <p>1940 12238 2021 12239 2020 12240</p>
+          <p>1940 12241 1939 12242 2021 12243</p>
+          <p>1939 12244 2022 12245 2021 12246</p>
+          <p>1939 12247 2023 12248 2022 12249</p>
+          <p>1939 12250 1938 12251 2023 12252</p>
+          <p>1936 12253 1929 12254 1928 12255</p>
+          <p>1936 12256 1930 12257 1929 12258</p>
+          <p>1936 12259 1935 12260 1930 12261</p>
+          <p>1935 12262 1931 12263 1930 12264</p>
+          <p>1935 12265 1934 12266 1931 12267</p>
+          <p>1934 12268 1933 12269 1931 12270</p>
+          <p>1933 12271 1932 12272 1931 12273</p>
+          <p>2147 12274 2053 12275 2052 12276</p>
+          <p>2147 12277 2148 12278 2053 12279</p>
+          <p>2148 12280 2054 12281 2053 12282</p>
+          <p>2148 12283 2149 12284 2054 12285</p>
+          <p>2054 12286 2150 12287 2055 12288</p>
+          <p>2054 12289 2149 12290 2150 12291</p>
+          <p>2150 12292 2056 12293 2055 12294</p>
+          <p>2150 12295 2151 12296 2056 12297</p>
+          <p>2151 12298 2057 12299 2056 12300</p>
+          <p>2151 12301 2152 12302 2057 12303</p>
+          <p>2152 12304 2058 12305 2057 12306</p>
+          <p>2152 12307 2153 12308 2058 12309</p>
+          <p>2153 12310 2059 12311 2058 12312</p>
+          <p>2153 12313 2154 12314 2059 12315</p>
+          <p>2059 12316 2155 12317 2060 12318</p>
+          <p>2059 12319 2154 12320 2155 12321</p>
+          <p>2060 12322 2156 12323 2061 12324</p>
+          <p>2060 12325 2155 12326 2156 12327</p>
+          <p>2156 12328 2062 12329 2061 12330</p>
+          <p>2156 12331 2157 12332 2062 12333</p>
+          <p>2157 12334 2063 12335 2062 12336</p>
+          <p>2157 12337 2158 12338 2063 12339</p>
+          <p>2158 12340 2064 12341 2063 12342</p>
+          <p>2158 12343 2159 12344 2064 12345</p>
+          <p>2064 12346 2160 12347 2065 12348</p>
+          <p>2064 12349 2159 12350 2160 12351</p>
+          <p>2065 12352 2161 12353 2066 12354</p>
+          <p>2065 12355 2160 12356 2161 12357</p>
+          <p>2161 12358 2067 12359 2066 12360</p>
+          <p>2161 12361 2162 12362 2067 12363</p>
+          <p>2162 12364 2068 12365 2067 12366</p>
+          <p>2162 12367 2163 12368 2068 12369</p>
+          <p>2163 12370 2069 12371 2068 12372</p>
+          <p>2163 12373 2164 12374 2069 12375</p>
+          <p>2069 12376 2165 12377 2070 12378</p>
+          <p>2069 12379 2164 12380 2165 12381</p>
+          <p>2070 12382 2166 12383 2071 12384</p>
+          <p>2070 12385 2165 12386 2166 12387</p>
+          <p>2166 12388 2072 12389 2071 12390</p>
+          <p>2166 12391 2167 12392 2072 12393</p>
+          <p>2167 12394 2073 12395 2072 12396</p>
+          <p>2167 12397 2168 12398 2073 12399</p>
+          <p>2168 12400 2074 12401 2073 12402</p>
+          <p>2168 12403 2169 12404 2074 12405</p>
+          <p>2074 12406 2170 12407 2075 12408</p>
+          <p>2074 12409 2169 12410 2170 12411</p>
+          <p>2075 12412 2171 12413 2076 12414</p>
+          <p>2075 12415 2170 12416 2171 12417</p>
+          <p>2171 12418 2077 12419 2076 12420</p>
+          <p>2171 12421 2172 12422 2077 12423</p>
+          <p>2172 12424 2078 12425 2077 12426</p>
+          <p>2172 12427 2173 12428 2078 12429</p>
+          <p>2173 12430 2079 12431 2078 12432</p>
+          <p>2173 12433 2174 12434 2079 12435</p>
+          <p>2079 12436 2175 12437 2080 12438</p>
+          <p>2079 12439 2174 12440 2175 12441</p>
+          <p>2080 12442 2176 12443 2081 12444</p>
+          <p>2080 12445 2175 12446 2176 12447</p>
+          <p>2176 12448 2082 12449 2081 12450</p>
+          <p>2176 12451 2177 12452 2082 12453</p>
+          <p>2177 12454 2083 12455 2082 12456</p>
+          <p>2177 12457 2178 12458 2083 12459</p>
+          <p>2178 12460 2084 12461 2083 12462</p>
+          <p>2178 12463 2179 12464 2084 12465</p>
+          <p>2084 12466 2180 12467 2085 12468</p>
+          <p>2084 12469 2179 12470 2180 12471</p>
+          <p>2085 12472 2181 12473 2086 12474</p>
+          <p>2085 12475 2180 12476 2181 12477</p>
+          <p>2181 12478 2087 12479 2086 12480</p>
+          <p>2181 12481 2182 12482 2087 12483</p>
+          <p>2182 12484 2088 12485 2087 12486</p>
+          <p>2182 12487 2183 12488 2088 12489</p>
+          <p>2183 12490 2089 12491 2088 12492</p>
+          <p>2183 12493 2184 12494 2089 12495</p>
+          <p>2089 12496 2185 12497 2090 12498</p>
+          <p>2089 12499 2184 12500 2185 12501</p>
+          <p>2090 12502 2186 12503 2091 12504</p>
+          <p>2090 12505 2185 12506 2186 12507</p>
+          <p>2186 12508 2092 12509 2091 12510</p>
+          <p>2186 12511 2187 12512 2092 12513</p>
+          <p>2187 12514 2093 12515 2092 12516</p>
+          <p>2187 12517 2188 12518 2093 12519</p>
+          <p>2188 12520 2094 12521 2093 12522</p>
+          <p>2188 12523 2189 12524 2094 12525</p>
+          <p>2094 12526 2190 12527 2095 12528</p>
+          <p>2094 12529 2189 12530 2190 12531</p>
+          <p>2095 12532 2191 12533 2096 12534</p>
+          <p>2095 12535 2190 12536 2191 12537</p>
+          <p>2191 12538 2097 12539 2096 12540</p>
+          <p>2191 12541 2192 12542 2097 12543</p>
+          <p>2192 12544 2098 12545 2097 12546</p>
+          <p>2192 12547 2193 12548 2098 12549</p>
+          <p>2193 12550 2099 12551 2098 12552</p>
+          <p>2193 12553 2194 12554 2099 12555</p>
+          <p>2099 12556 2195 12557 2100 12558</p>
+          <p>2099 12559 2194 12560 2195 12561</p>
+          <p>2195 12562 2101 12563 2100 12564</p>
+          <p>2195 12565 2196 12566 2101 12567</p>
+          <p>2101 12568 2147 12569 2052 12570</p>
+          <p>2101 12571 2196 12572 2147 12573</p>
+          <p>2147 12574 2243 12575 2148 12576</p>
+          <p>2147 12577 2242 12578 2243 12579</p>
+          <p>2148 12580 2244 12581 2149 12582</p>
+          <p>2148 12583 2243 12584 2244 12585</p>
+          <p>2149 12586 2245 12587 2150 12588</p>
+          <p>2149 12589 2244 12590 2245 12591</p>
+          <p>2245 12592 2151 12593 2150 12594</p>
+          <p>2245 12595 2246 12596 2151 12597</p>
+          <p>2246 12598 2152 12599 2151 12600</p>
+          <p>2246 12601 2247 12602 2152 12603</p>
+          <p>2247 12604 2153 12605 2152 12606</p>
+          <p>2247 12607 2248 12608 2153 12609</p>
+          <p>2248 12610 2154 12611 2153 12612</p>
+          <p>2248 12613 2249 12614 2154 12615</p>
+          <p>2154 12616 2250 12617 2155 12618</p>
+          <p>2154 12619 2249 12620 2250 12621</p>
+          <p>2155 12622 2251 12623 2156 12624</p>
+          <p>2155 12625 2250 12626 2251 12627</p>
+          <p>2251 12628 2157 12629 2156 12630</p>
+          <p>2251 12631 2252 12632 2157 12633</p>
+          <p>2252 12634 2158 12635 2157 12636</p>
+          <p>2252 12637 2253 12638 2158 12639</p>
+          <p>2253 12640 2159 12641 2158 12642</p>
+          <p>2253 12643 2254 12644 2159 12645</p>
+          <p>2159 12646 2255 12647 2160 12648</p>
+          <p>2159 12649 2254 12650 2255 12651</p>
+          <p>2160 12652 2256 12653 2161 12654</p>
+          <p>2160 12655 2255 12656 2256 12657</p>
+          <p>2256 12658 2162 12659 2161 12660</p>
+          <p>2256 12661 2257 12662 2162 12663</p>
+          <p>2257 12664 2163 12665 2162 12666</p>
+          <p>2257 12667 2258 12668 2163 12669</p>
+          <p>2258 12670 2164 12671 2163 12672</p>
+          <p>2258 12673 2259 12674 2164 12675</p>
+          <p>2164 12676 2260 12677 2165 12678</p>
+          <p>2164 12679 2259 12680 2260 12681</p>
+          <p>2165 12682 2261 12683 2166 12684</p>
+          <p>2165 12685 2260 12686 2261 12687</p>
+          <p>2261 12688 2167 12689 2166 12690</p>
+          <p>2261 12691 2262 12692 2167 12693</p>
+          <p>2262 12694 2168 12695 2167 12696</p>
+          <p>2262 12697 2263 12698 2168 12699</p>
+          <p>2263 12700 2169 12701 2168 12702</p>
+          <p>2263 12703 2264 12704 2169 12705</p>
+          <p>2169 12706 2265 12707 2170 12708</p>
+          <p>2169 12709 2264 12710 2265 12711</p>
+          <p>2170 12712 2266 12713 2171 12714</p>
+          <p>2170 12715 2265 12716 2266 12717</p>
+          <p>2266 12718 2172 12719 2171 12720</p>
+          <p>2266 12721 2267 12722 2172 12723</p>
+          <p>2267 12724 2173 12725 2172 12726</p>
+          <p>2267 12727 2268 12728 2173 12729</p>
+          <p>2268 12730 2174 12731 2173 12732</p>
+          <p>2268 12733 2269 12734 2174 12735</p>
+          <p>2174 12736 2270 12737 2175 12738</p>
+          <p>2174 12739 2269 12740 2270 12741</p>
+          <p>2175 12742 2271 12743 2176 12744</p>
+          <p>2175 12745 2270 12746 2271 12747</p>
+          <p>2271 12748 2177 12749 2176 12750</p>
+          <p>2271 12751 2272 12752 2177 12753</p>
+          <p>2272 12754 2178 12755 2177 12756</p>
+          <p>2272 12757 2273 12758 2178 12759</p>
+          <p>2273 12760 2179 12761 2178 12762</p>
+          <p>2273 12763 2274 12764 2179 12765</p>
+          <p>2179 12766 2275 12767 2180 12768</p>
+          <p>2179 12769 2274 12770 2275 12771</p>
+          <p>2180 12772 2276 12773 2181 12774</p>
+          <p>2180 12775 2275 12776 2276 12777</p>
+          <p>2276 12778 2182 12779 2181 12780</p>
+          <p>2276 12781 2277 12782 2182 12783</p>
+          <p>2277 12784 2183 12785 2182 12786</p>
+          <p>2277 12787 2278 12788 2183 12789</p>
+          <p>2278 12790 2184 12791 2183 12792</p>
+          <p>2278 12793 2279 12794 2184 12795</p>
+          <p>2184 12796 2280 12797 2185 12798</p>
+          <p>2184 12799 2279 12800 2280 12801</p>
+          <p>2185 12802 2281 12803 2186 12804</p>
+          <p>2185 12805 2280 12806 2281 12807</p>
+          <p>2281 12808 2187 12809 2186 12810</p>
+          <p>2281 12811 2282 12812 2187 12813</p>
+          <p>2282 12814 2188 12815 2187 12816</p>
+          <p>2282 12817 2283 12818 2188 12819</p>
+          <p>2283 12820 2189 12821 2188 12822</p>
+          <p>2283 12823 2284 12824 2189 12825</p>
+          <p>2189 12826 2285 12827 2190 12828</p>
+          <p>2189 12829 2284 12830 2285 12831</p>
+          <p>2190 12832 2286 12833 2191 12834</p>
+          <p>2190 12835 2285 12836 2286 12837</p>
+          <p>2286 12838 2192 12839 2191 12840</p>
+          <p>2286 12841 2287 12842 2192 12843</p>
+          <p>2287 12844 2193 12845 2192 12846</p>
+          <p>2287 12847 2288 12848 2193 12849</p>
+          <p>2288 12850 2194 12851 2193 12852</p>
+          <p>2288 12853 2289 12854 2194 12855</p>
+          <p>2194 12856 2290 12857 2195 12858</p>
+          <p>2194 12859 2289 12860 2290 12861</p>
+          <p>2290 12862 2196 12863 2195 12864</p>
+          <p>2290 12865 2291 12866 2196 12867</p>
+          <p>2196 12868 2242 12869 2147 12870</p>
+          <p>2196 12871 2291 12872 2242 12873</p>
+          <p>2337 12874 2243 12875 2242 12876</p>
+          <p>2337 12877 2338 12878 2243 12879</p>
+          <p>2243 12880 2339 12881 2244 12882</p>
+          <p>2243 12883 2338 12884 2339 12885</p>
+          <p>2244 12886 2340 12887 2245 12888</p>
+          <p>2244 12889 2339 12890 2340 12891</p>
+          <p>2340 12892 2246 12893 2245 12894</p>
+          <p>2340 12895 2341 12896 2246 12897</p>
+          <p>2341 12898 2247 12899 2246 12900</p>
+          <p>2341 12901 2342 12902 2247 12903</p>
+          <p>2342 12904 2248 12905 2247 12906</p>
+          <p>2342 12907 2343 12908 2248 12909</p>
+          <p>2343 12910 2249 12911 2248 12912</p>
+          <p>2343 12913 2344 12914 2249 12915</p>
+          <p>2249 12916 2345 12917 2250 12918</p>
+          <p>2249 12919 2344 12920 2345 12921</p>
+          <p>2250 12922 2346 12923 2251 12924</p>
+          <p>2250 12925 2345 12926 2346 12927</p>
+          <p>2346 12928 2252 12929 2251 12930</p>
+          <p>2346 12931 2347 12932 2252 12933</p>
+          <p>2347 12934 2253 12935 2252 12936</p>
+          <p>2347 12937 2348 12938 2253 12939</p>
+          <p>2348 12940 2254 12941 2253 12942</p>
+          <p>2348 12943 2349 12944 2254 12945</p>
+          <p>2254 12946 2350 12947 2255 12948</p>
+          <p>2254 12949 2349 12950 2350 12951</p>
+          <p>2255 12952 2351 12953 2256 12954</p>
+          <p>2255 12955 2350 12956 2351 12957</p>
+          <p>2351 12958 2257 12959 2256 12960</p>
+          <p>2351 12961 2352 12962 2257 12963</p>
+          <p>2352 12964 2258 12965 2257 12966</p>
+          <p>2352 12967 2353 12968 2258 12969</p>
+          <p>2353 12970 2259 12971 2258 12972</p>
+          <p>2353 12973 2354 12974 2259 12975</p>
+          <p>2259 12976 2355 12977 2260 12978</p>
+          <p>2259 12979 2354 12980 2355 12981</p>
+          <p>2260 12982 2356 12983 2261 12984</p>
+          <p>2260 12985 2355 12986 2356 12987</p>
+          <p>2356 12988 2262 12989 2261 12990</p>
+          <p>2356 12991 2357 12992 2262 12993</p>
+          <p>2357 12994 2263 12995 2262 12996</p>
+          <p>2357 12997 2358 12998 2263 12999</p>
+          <p>2358 13000 2264 13001 2263 13002</p>
+          <p>2358 13003 2359 13004 2264 13005</p>
+          <p>2264 13006 2360 13007 2265 13008</p>
+          <p>2264 13009 2359 13010 2360 13011</p>
+          <p>2265 13012 2361 13013 2266 13014</p>
+          <p>2265 13015 2360 13016 2361 13017</p>
+          <p>2361 13018 2267 13019 2266 13020</p>
+          <p>2361 13021 2362 13022 2267 13023</p>
+          <p>2362 13024 2268 13025 2267 13026</p>
+          <p>2362 13027 2363 13028 2268 13029</p>
+          <p>2363 13030 2269 13031 2268 13032</p>
+          <p>2363 13033 2364 13034 2269 13035</p>
+          <p>2269 13036 2365 13037 2270 13038</p>
+          <p>2269 13039 2364 13040 2365 13041</p>
+          <p>2270 13042 2366 13043 2271 13044</p>
+          <p>2270 13045 2365 13046 2366 13047</p>
+          <p>2366 13048 2272 13049 2271 13050</p>
+          <p>2366 13051 2367 13052 2272 13053</p>
+          <p>2367 13054 2273 13055 2272 13056</p>
+          <p>2367 13057 2368 13058 2273 13059</p>
+          <p>2368 13060 2274 13061 2273 13062</p>
+          <p>2368 13063 2369 13064 2274 13065</p>
+          <p>2274 13066 2370 13067 2275 13068</p>
+          <p>2274 13069 2369 13070 2370 13071</p>
+          <p>2275 13072 2371 13073 2276 13074</p>
+          <p>2275 13075 2370 13076 2371 13077</p>
+          <p>2371 13078 2277 13079 2276 13080</p>
+          <p>2371 13081 2372 13082 2277 13083</p>
+          <p>2372 13084 2278 13085 2277 13086</p>
+          <p>2372 13087 2373 13088 2278 13089</p>
+          <p>2373 13090 2279 13091 2278 13092</p>
+          <p>2373 13093 2374 13094 2279 13095</p>
+          <p>2279 13096 2375 13097 2280 13098</p>
+          <p>2279 13099 2374 13100 2375 13101</p>
+          <p>2280 13102 2376 13103 2281 13104</p>
+          <p>2280 13105 2375 13106 2376 13107</p>
+          <p>2376 13108 2282 13109 2281 13110</p>
+          <p>2376 13111 2377 13112 2282 13113</p>
+          <p>2377 13114 2283 13115 2282 13116</p>
+          <p>2377 13117 2378 13118 2283 13119</p>
+          <p>2378 13120 2284 13121 2283 13122</p>
+          <p>2378 13123 2379 13124 2284 13125</p>
+          <p>2284 13126 2380 13127 2285 13128</p>
+          <p>2284 13129 2379 13130 2380 13131</p>
+          <p>2285 13132 2381 13133 2286 13134</p>
+          <p>2285 13135 2380 13136 2381 13137</p>
+          <p>2381 13138 2287 13139 2286 13140</p>
+          <p>2381 13141 2382 13142 2287 13143</p>
+          <p>2382 13144 2288 13145 2287 13146</p>
+          <p>2382 13147 2383 13148 2288 13149</p>
+          <p>2383 13150 2289 13151 2288 13152</p>
+          <p>2383 13153 2384 13154 2289 13155</p>
+          <p>2289 13156 2385 13157 2290 13158</p>
+          <p>2289 13159 2384 13160 2385 13161</p>
+          <p>2385 13162 2291 13163 2290 13164</p>
+          <p>2385 13165 2386 13166 2291 13167</p>
+          <p>2291 13168 2337 13169 2242 13170</p>
+          <p>2291 13171 2386 13172 2337 13173</p>
+          <p>2337 13174 2433 13175 2338 13176</p>
+          <p>2337 13177 2432 13178 2433 13179</p>
+          <p>2338 13180 2434 13181 2339 13182</p>
+          <p>2338 13183 2433 13184 2434 13185</p>
+          <p>2339 13186 2435 13187 2340 13188</p>
+          <p>2339 13189 2434 13190 2435 13191</p>
+          <p>2340 13192 2436 13193 2341 13194</p>
+          <p>2340 13195 2435 13196 2436 13197</p>
+          <p>2341 13198 2437 13199 2342 13200</p>
+          <p>2341 13201 2436 13202 2437 13203</p>
+          <p>2342 13204 2438 13205 2343 13206</p>
+          <p>2342 13207 2437 13208 2438 13209</p>
+          <p>2343 13210 2439 13211 2344 13212</p>
+          <p>2343 13213 2438 13214 2439 13215</p>
+          <p>2439 13216 2345 13217 2344 13218</p>
+          <p>2439 13219 2440 13220 2345 13221</p>
+          <p>2345 13222 2441 13223 2346 13224</p>
+          <p>2345 13225 2440 13226 2441 13227</p>
+          <p>2346 13228 2442 13229 2347 13230</p>
+          <p>2346 13231 2441 13232 2442 13233</p>
+          <p>2347 13234 2443 13235 2348 13236</p>
+          <p>2347 13237 2442 13238 2443 13239</p>
+          <p>2348 13240 2444 13241 2349 13242</p>
+          <p>2348 13243 2443 13244 2444 13245</p>
+          <p>2349 13246 2445 13247 2350 13248</p>
+          <p>2349 13249 2444 13250 2445 13251</p>
+          <p>2350 13252 2446 13253 2351 13254</p>
+          <p>2350 13255 2445 13256 2446 13257</p>
+          <p>2351 13258 2447 13259 2352 13260</p>
+          <p>2351 13261 2446 13262 2447 13263</p>
+          <p>2352 13264 2448 13265 2353 13266</p>
+          <p>2352 13267 2447 13268 2448 13269</p>
+          <p>2353 13270 2449 13271 2354 13272</p>
+          <p>2353 13273 2448 13274 2449 13275</p>
+          <p>2449 13276 2355 13277 2354 13278</p>
+          <p>2449 13279 2450 13280 2355 13281</p>
+          <p>2355 13282 2451 13283 2356 13284</p>
+          <p>2355 13285 2450 13286 2451 13287</p>
+          <p>2451 13288 2357 13289 2356 13290</p>
+          <p>2451 13291 2452 13292 2357 13293</p>
+          <p>2452 13294 2358 13295 2357 13296</p>
+          <p>2452 13297 2453 13298 2358 13299</p>
+          <p>2358 13300 2454 13301 2359 13302</p>
+          <p>2358 13303 2453 13304 2454 13305</p>
+          <p>2454 13306 2360 13307 2359 13308</p>
+          <p>2454 13309 2455 13310 2360 13311</p>
+          <p>2455 13312 2361 13313 2360 13314</p>
+          <p>2455 13315 2456 13316 2361 13317</p>
+          <p>2361 13318 2457 13319 2362 13320</p>
+          <p>2361 13321 2456 13322 2457 13323</p>
+          <p>2362 13324 2458 13325 2363 13326</p>
+          <p>2362 13327 2457 13328 2458 13329</p>
+          <p>2363 13330 2459 13331 2364 13332</p>
+          <p>2363 13333 2458 13334 2459 13335</p>
+          <p>2364 13336 2460 13337 2365 13338</p>
+          <p>2364 13339 2459 13340 2460 13341</p>
+          <p>2460 13342 2366 13343 2365 13344</p>
+          <p>2460 13345 2461 13346 2366 13347</p>
+          <p>2366 13348 2462 13349 2367 13350</p>
+          <p>2366 13351 2461 13352 2462 13353</p>
+          <p>2367 13354 2463 13355 2368 13356</p>
+          <p>2367 13357 2462 13358 2463 13359</p>
+          <p>2463 13360 2369 13361 2368 13362</p>
+          <p>2463 13363 2464 13364 2369 13365</p>
+          <p>2464 13366 2370 13367 2369 13368</p>
+          <p>2464 13369 2465 13370 2370 13371</p>
+          <p>2370 13372 2466 13373 2371 13374</p>
+          <p>2370 13375 2465 13376 2466 13377</p>
+          <p>2371 13378 2467 13379 2372 13380</p>
+          <p>2371 13381 2466 13382 2467 13383</p>
+          <p>2372 13384 2468 13385 2373 13386</p>
+          <p>2372 13387 2467 13388 2468 13389</p>
+          <p>2373 13390 2469 13391 2374 13392</p>
+          <p>2373 13393 2468 13394 2469 13395</p>
+          <p>2374 13396 2470 13397 2375 13398</p>
+          <p>2374 13399 2469 13400 2470 13401</p>
+          <p>2375 13402 2471 13403 2376 13404</p>
+          <p>2375 13405 2470 13406 2471 13407</p>
+          <p>2471 13408 2377 13409 2376 13410</p>
+          <p>2471 13411 2472 13412 2377 13413</p>
+          <p>2377 13414 2473 13415 2378 13416</p>
+          <p>2377 13417 2472 13418 2473 13419</p>
+          <p>2473 13420 2379 13421 2378 13422</p>
+          <p>2473 13423 2474 13424 2379 13425</p>
+          <p>2379 13426 2475 13427 2380 13428</p>
+          <p>2379 13429 2474 13430 2475 13431</p>
+          <p>2380 13432 2476 13433 2381 13434</p>
+          <p>2380 13435 2475 13436 2476 13437</p>
+          <p>2381 13438 2477 13439 2382 13440</p>
+          <p>2381 13441 2476 13442 2477 13443</p>
+          <p>2382 13444 2478 13445 2383 13446</p>
+          <p>2382 13447 2477 13448 2478 13449</p>
+          <p>2383 13450 2479 13451 2384 13452</p>
+          <p>2383 13453 2478 13454 2479 13455</p>
+          <p>2384 13456 2480 13457 2385 13458</p>
+          <p>2384 13459 2479 13460 2480 13461</p>
+          <p>2385 13462 2481 13463 2386 13464</p>
+          <p>2385 13465 2480 13466 2481 13467</p>
+          <p>2386 13468 2432 13469 2337 13470</p>
+          <p>2386 13471 2481 13472 2432 13473</p>
+          <p>2432 13474 2528 13475 2433 13476</p>
+          <p>2432 13477 2527 13478 2528 13479</p>
+          <p>2433 13480 2529 13481 2434 13482</p>
+          <p>2433 13483 2528 13484 2529 13485</p>
+          <p>2434 13486 2530 13487 2435 13488</p>
+          <p>2434 13489 2529 13490 2530 13491</p>
+          <p>2530 13492 2436 13493 2435 13494</p>
+          <p>2530 13495 2531 13496 2436 13497</p>
+          <p>2436 13498 2532 13499 2437 13500</p>
+          <p>2436 13501 2531 13502 2532 13503</p>
+          <p>2437 13504 2533 13505 2438 13506</p>
+          <p>2437 13507 2532 13508 2533 13509</p>
+          <p>2438 13510 2534 13511 2439 13512</p>
+          <p>2438 13513 2533 13514 2534 13515</p>
+          <p>2534 13516 2440 13517 2439 13518</p>
+          <p>2534 13519 2535 13520 2440 13521</p>
+          <p>2535 13522 2441 13523 2440 13524</p>
+          <p>2535 13525 2536 13526 2441 13527</p>
+          <p>2441 13528 2537 13529 2442 13530</p>
+          <p>2441 13531 2536 13532 2537 13533</p>
+          <p>2537 13534 2443 13535 2442 13536</p>
+          <p>2537 13537 2538 13538 2443 13539</p>
+          <p>2538 13540 2444 13541 2443 13542</p>
+          <p>2538 13543 2539 13544 2444 13545</p>
+          <p>2539 13546 2445 13547 2444 13548</p>
+          <p>2539 13549 2540 13550 2445 13551</p>
+          <p>2445 13552 2541 13553 2446 13554</p>
+          <p>2445 13555 2540 13556 2541 13557</p>
+          <p>2541 13558 2447 13559 2446 13560</p>
+          <p>2541 13561 2542 13562 2447 13563</p>
+          <p>2542 13564 2448 13565 2447 13566</p>
+          <p>2542 13567 2543 13568 2448 13569</p>
+          <p>2448 13570 2544 13571 2449 13572</p>
+          <p>2448 13573 2543 13574 2544 13575</p>
+          <p>2449 13576 2545 13577 2450 13578</p>
+          <p>2449 13579 2544 13580 2545 13581</p>
+          <p>2545 13582 2451 13583 2450 13584</p>
+          <p>2545 13585 2546 13586 2451 13587</p>
+          <p>2451 13588 2547 13589 2452 13590</p>
+          <p>2451 13591 2546 13592 2547 13593</p>
+          <p>2547 13594 2453 13595 2452 13596</p>
+          <p>2547 13597 2548 13598 2453 13599</p>
+          <p>2453 13600 2549 13601 2454 13602</p>
+          <p>2453 13603 2548 13604 2549 13605</p>
+          <p>2454 13606 2550 13607 2455 13608</p>
+          <p>2454 13609 2549 13610 2550 13611</p>
+          <p>2455 13612 2551 13613 2456 13614</p>
+          <p>2455 13615 2550 13616 2551 13617</p>
+          <p>2456 13618 2552 13619 2457 13620</p>
+          <p>2456 13621 2551 13622 2552 13623</p>
+          <p>2552 13624 2458 13625 2457 13626</p>
+          <p>2552 13627 2553 13628 2458 13629</p>
+          <p>2458 13630 2554 13631 2459 13632</p>
+          <p>2458 13633 2553 13634 2554 13635</p>
+          <p>2459 13636 2555 13637 2460 13638</p>
+          <p>2459 13639 2554 13640 2555 13641</p>
+          <p>2555 13642 2461 13643 2460 13644</p>
+          <p>2555 13645 2556 13646 2461 13647</p>
+          <p>2556 13648 2462 13649 2461 13650</p>
+          <p>2556 13651 2557 13652 2462 13653</p>
+          <p>2557 13654 2463 13655 2462 13656</p>
+          <p>2557 13657 2558 13658 2463 13659</p>
+          <p>2463 13660 2559 13661 2464 13662</p>
+          <p>2463 13663 2558 13664 2559 13665</p>
+          <p>2559 13666 2465 13667 2464 13668</p>
+          <p>2559 13669 2560 13670 2465 13671</p>
+          <p>2560 13672 2466 13673 2465 13674</p>
+          <p>2560 13675 2561 13676 2466 13677</p>
+          <p>2466 13678 2562 13679 2467 13680</p>
+          <p>2466 13681 2561 13682 2562 13683</p>
+          <p>2562 13684 2468 13685 2467 13686</p>
+          <p>2562 13687 2563 13688 2468 13689</p>
+          <p>2563 13690 2469 13691 2468 13692</p>
+          <p>2563 13693 2564 13694 2469 13695</p>
+          <p>2469 13696 2565 13697 2470 13698</p>
+          <p>2469 13699 2564 13700 2565 13701</p>
+          <p>2470 13702 2566 13703 2471 13704</p>
+          <p>2470 13705 2565 13706 2566 13707</p>
+          <p>2471 13708 2567 13709 2472 13710</p>
+          <p>2471 13711 2566 13712 2567 13713</p>
+          <p>2567 13714 2473 13715 2472 13716</p>
+          <p>2567 13717 2568 13718 2473 13719</p>
+          <p>2473 13720 2569 13721 2474 13722</p>
+          <p>2473 13723 2568 13724 2569 13725</p>
+          <p>2474 13726 2570 13727 2475 13728</p>
+          <p>2474 13729 2569 13730 2570 13731</p>
+          <p>2570 13732 2476 13733 2475 13734</p>
+          <p>2570 13735 2571 13736 2476 13737</p>
+          <p>2476 13738 2572 13739 2477 13740</p>
+          <p>2476 13741 2571 13742 2572 13743</p>
+          <p>2572 13744 2478 13745 2477 13746</p>
+          <p>2572 13747 2573 13748 2478 13749</p>
+          <p>2573 13750 2479 13751 2478 13752</p>
+          <p>2573 13753 2574 13754 2479 13755</p>
+          <p>2479 13756 2575 13757 2480 13758</p>
+          <p>2479 13759 2574 13760 2575 13761</p>
+          <p>2480 13762 2576 13763 2481 13764</p>
+          <p>2480 13765 2575 13766 2576 13767</p>
+          <p>2481 13768 2527 13769 2432 13770</p>
+          <p>2481 13771 2576 13772 2527 13773</p>
+          <p>2102 13774 2198 13775 2103 13776</p>
+          <p>2102 13777 2197 13778 2198 13779</p>
+          <p>2103 13780 2199 13781 2104 13782</p>
+          <p>2103 13783 2198 13784 2199 13785</p>
+          <p>2104 13786 2200 13787 2105 13788</p>
+          <p>2104 13789 2199 13790 2200 13791</p>
+          <p>2105 13792 2201 13793 2106 13794</p>
+          <p>2105 13795 2200 13796 2201 13797</p>
+          <p>2106 13798 2202 13799 2107 13800</p>
+          <p>2106 13801 2201 13802 2202 13803</p>
+          <p>2107 13804 2203 13805 2108 13806</p>
+          <p>2107 13807 2202 13808 2203 13809</p>
+          <p>2108 13810 2204 13811 2109 13812</p>
+          <p>2108 13813 2203 13814 2204 13815</p>
+          <p>2109 13816 2205 13817 2110 13818</p>
+          <p>2109 13819 2204 13820 2205 13821</p>
+          <p>2205 13822 2111 13823 2110 13824</p>
+          <p>2205 13825 2206 13826 2111 13827</p>
+          <p>2206 13828 2112 13829 2111 13830</p>
+          <p>2206 13831 2207 13832 2112 13833</p>
+          <p>2112 13834 2208 13835 2113 13836</p>
+          <p>2112 13837 2207 13838 2208 13839</p>
+          <p>2113 13840 2209 13841 2114 13842</p>
+          <p>2113 13843 2208 13844 2209 13845</p>
+          <p>2114 13846 2210 13847 2115 13848</p>
+          <p>2114 13849 2209 13850 2210 13851</p>
+          <p>2210 13852 2116 13853 2115 13854</p>
+          <p>2210 13855 2211 13856 2116 13857</p>
+          <p>2211 13858 2117 13859 2116 13860</p>
+          <p>2211 13861 2212 13862 2117 13863</p>
+          <p>2117 13864 2213 13865 2118 13866</p>
+          <p>2117 13867 2212 13868 2213 13869</p>
+          <p>2118 13870 2214 13871 2119 13872</p>
+          <p>2118 13873 2213 13874 2214 13875</p>
+          <p>2119 13876 2215 13877 2120 13878</p>
+          <p>2119 13879 2214 13880 2215 13881</p>
+          <p>2215 13882 2121 13883 2120 13884</p>
+          <p>2215 13885 2216 13886 2121 13887</p>
+          <p>2216 13888 2122 13889 2121 13890</p>
+          <p>2216 13891 2217 13892 2122 13893</p>
+          <p>2122 13894 2218 13895 2123 13896</p>
+          <p>2122 13897 2217 13898 2218 13899</p>
+          <p>2123 13900 2219 13901 2124 13902</p>
+          <p>2123 13903 2218 13904 2219 13905</p>
+          <p>2124 13906 2220 13907 2125 13908</p>
+          <p>2124 13909 2219 13910 2220 13911</p>
+          <p>2220 13912 2126 13913 2125 13914</p>
+          <p>2220 13915 2221 13916 2126 13917</p>
+          <p>2221 13918 2127 13919 2126 13920</p>
+          <p>2221 13921 2222 13922 2127 13923</p>
+          <p>2127 13924 2223 13925 2128 13926</p>
+          <p>2127 13927 2222 13928 2223 13929</p>
+          <p>2128 13930 2224 13931 2129 13932</p>
+          <p>2128 13933 2223 13934 2224 13935</p>
+          <p>2129 13936 2225 13937 2130 13938</p>
+          <p>2129 13939 2224 13940 2225 13941</p>
+          <p>2225 13942 2131 13943 2130 13944</p>
+          <p>2225 13945 2226 13946 2131 13947</p>
+          <p>2226 13948 2132 13949 2131 13950</p>
+          <p>2226 13951 2227 13952 2132 13953</p>
+          <p>2132 13954 2228 13955 2133 13956</p>
+          <p>2132 13957 2227 13958 2228 13959</p>
+          <p>2133 13960 2229 13961 2134 13962</p>
+          <p>2133 13963 2228 13964 2229 13965</p>
+          <p>2134 13966 2230 13967 2135 13968</p>
+          <p>2134 13969 2229 13970 2230 13971</p>
+          <p>2230 13972 2136 13973 2135 13974</p>
+          <p>2230 13975 2231 13976 2136 13977</p>
+          <p>2231 13978 2137 13979 2136 13980</p>
+          <p>2231 13981 2232 13982 2137 13983</p>
+          <p>2137 13984 2233 13985 2138 13986</p>
+          <p>2137 13987 2232 13988 2233 13989</p>
+          <p>2138 13990 2234 13991 2139 13992</p>
+          <p>2138 13993 2233 13994 2234 13995</p>
+          <p>2139 13996 2235 13997 2140 13998</p>
+          <p>2139 13999 2234 14000 2235 14001</p>
+          <p>2235 14002 2141 14003 2140 14004</p>
+          <p>2235 14005 2236 14006 2141 14007</p>
+          <p>2236 14008 2142 14009 2141 14010</p>
+          <p>2236 14011 2237 14012 2142 14013</p>
+          <p>2142 14014 2238 14015 2143 14016</p>
+          <p>2142 14017 2237 14018 2238 14019</p>
+          <p>2143 14020 2239 14021 2144 14022</p>
+          <p>2143 14023 2238 14024 2239 14025</p>
+          <p>2144 14026 2240 14027 2145 14028</p>
+          <p>2144 14029 2239 14030 2240 14031</p>
+          <p>2240 14032 2146 14033 2145 14034</p>
+          <p>2240 14035 2241 14036 2146 14037</p>
+          <p>2241 14038 2102 14039 2146 14040</p>
+          <p>2241 14041 2197 14042 2102 14043</p>
+          <p>2197 14044 2293 14045 2198 14046</p>
+          <p>2197 14047 2292 14048 2293 14049</p>
+          <p>2198 14050 2294 14051 2199 14052</p>
+          <p>2198 14053 2293 14054 2294 14055</p>
+          <p>2199 14056 2295 14057 2200 14058</p>
+          <p>2199 14059 2294 14060 2295 14061</p>
+          <p>2200 14062 2296 14063 2201 14064</p>
+          <p>2200 14065 2295 14066 2296 14067</p>
+          <p>2201 14068 2297 14069 2202 14070</p>
+          <p>2201 14071 2296 14072 2297 14073</p>
+          <p>2202 14074 2298 14075 2203 14076</p>
+          <p>2202 14077 2297 14078 2298 14079</p>
+          <p>2203 14080 2299 14081 2204 14082</p>
+          <p>2203 14083 2298 14084 2299 14085</p>
+          <p>2204 14086 2300 14087 2205 14088</p>
+          <p>2204 14089 2299 14090 2300 14091</p>
+          <p>2300 14092 2206 14093 2205 14094</p>
+          <p>2300 14095 2301 14096 2206 14097</p>
+          <p>2301 14098 2207 14099 2206 14100</p>
+          <p>2301 14101 2302 14102 2207 14103</p>
+          <p>2207 14104 2303 14105 2208 14106</p>
+          <p>2207 14107 2302 14108 2303 14109</p>
+          <p>2208 14110 2304 14111 2209 14112</p>
+          <p>2208 14113 2303 14114 2304 14115</p>
+          <p>2209 14116 2305 14117 2210 14118</p>
+          <p>2209 14119 2304 14120 2305 14121</p>
+          <p>2305 14122 2211 14123 2210 14124</p>
+          <p>2305 14125 2306 14126 2211 14127</p>
+          <p>2306 14128 2212 14129 2211 14130</p>
+          <p>2306 14131 2307 14132 2212 14133</p>
+          <p>2212 14134 2308 14135 2213 14136</p>
+          <p>2212 14137 2307 14138 2308 14139</p>
+          <p>2213 14140 2309 14141 2214 14142</p>
+          <p>2213 14143 2308 14144 2309 14145</p>
+          <p>2214 14146 2310 14147 2215 14148</p>
+          <p>2214 14149 2309 14150 2310 14151</p>
+          <p>2310 14152 2216 14153 2215 14154</p>
+          <p>2310 14155 2311 14156 2216 14157</p>
+          <p>2311 14158 2217 14159 2216 14160</p>
+          <p>2311 14161 2312 14162 2217 14163</p>
+          <p>2217 14164 2313 14165 2218 14166</p>
+          <p>2217 14167 2312 14168 2313 14169</p>
+          <p>2218 14170 2314 14171 2219 14172</p>
+          <p>2218 14173 2313 14174 2314 14175</p>
+          <p>2219 14176 2315 14177 2220 14178</p>
+          <p>2219 14179 2314 14180 2315 14181</p>
+          <p>2315 14182 2221 14183 2220 14184</p>
+          <p>2315 14185 2316 14186 2221 14187</p>
+          <p>2316 14188 2222 14189 2221 14190</p>
+          <p>2316 14191 2317 14192 2222 14193</p>
+          <p>2222 14194 2318 14195 2223 14196</p>
+          <p>2222 14197 2317 14198 2318 14199</p>
+          <p>2223 14200 2319 14201 2224 14202</p>
+          <p>2223 14203 2318 14204 2319 14205</p>
+          <p>2224 14206 2320 14207 2225 14208</p>
+          <p>2224 14209 2319 14210 2320 14211</p>
+          <p>2320 14212 2226 14213 2225 14214</p>
+          <p>2320 14215 2321 14216 2226 14217</p>
+          <p>2321 14218 2227 14219 2226 14220</p>
+          <p>2321 14221 2322 14222 2227 14223</p>
+          <p>2227 14224 2323 14225 2228 14226</p>
+          <p>2227 14227 2322 14228 2323 14229</p>
+          <p>2228 14230 2324 14231 2229 14232</p>
+          <p>2228 14233 2323 14234 2324 14235</p>
+          <p>2229 14236 2325 14237 2230 14238</p>
+          <p>2229 14239 2324 14240 2325 14241</p>
+          <p>2325 14242 2231 14243 2230 14244</p>
+          <p>2325 14245 2326 14246 2231 14247</p>
+          <p>2326 14248 2232 14249 2231 14250</p>
+          <p>2326 14251 2327 14252 2232 14253</p>
+          <p>2232 14254 2328 14255 2233 14256</p>
+          <p>2232 14257 2327 14258 2328 14259</p>
+          <p>2233 14260 2329 14261 2234 14262</p>
+          <p>2233 14263 2328 14264 2329 14265</p>
+          <p>2234 14266 2330 14267 2235 14268</p>
+          <p>2234 14269 2329 14270 2330 14271</p>
+          <p>2330 14272 2236 14273 2235 14274</p>
+          <p>2330 14275 2331 14276 2236 14277</p>
+          <p>2331 14278 2237 14279 2236 14280</p>
+          <p>2331 14281 2332 14282 2237 14283</p>
+          <p>2237 14284 2333 14285 2238 14286</p>
+          <p>2237 14287 2332 14288 2333 14289</p>
+          <p>2238 14290 2334 14291 2239 14292</p>
+          <p>2238 14293 2333 14294 2334 14295</p>
+          <p>2239 14296 2335 14297 2240 14298</p>
+          <p>2239 14299 2334 14300 2335 14301</p>
+          <p>2335 14302 2241 14303 2240 14304</p>
+          <p>2335 14305 2336 14306 2241 14307</p>
+          <p>2336 14308 2197 14309 2241 14310</p>
+          <p>2336 14311 2292 14312 2197 14313</p>
+          <p>2292 14314 2388 14315 2293 14316</p>
+          <p>2292 14317 2387 14318 2388 14319</p>
+          <p>2293 14320 2389 14321 2294 14322</p>
+          <p>2293 14323 2388 14324 2389 14325</p>
+          <p>2294 14326 2390 14327 2295 14328</p>
+          <p>2294 14329 2389 14330 2390 14331</p>
+          <p>2295 14332 2391 14333 2296 14334</p>
+          <p>2295 14335 2390 14336 2391 14337</p>
+          <p>2296 14338 2392 14339 2297 14340</p>
+          <p>2296 14341 2391 14342 2392 14343</p>
+          <p>2297 14344 2393 14345 2298 14346</p>
+          <p>2297 14347 2392 14348 2393 14349</p>
+          <p>2298 14350 2394 14351 2299 14352</p>
+          <p>2298 14353 2393 14354 2394 14355</p>
+          <p>2299 14356 2395 14357 2300 14358</p>
+          <p>2299 14359 2394 14360 2395 14361</p>
+          <p>2395 14362 2301 14363 2300 14364</p>
+          <p>2395 14365 2396 14366 2301 14367</p>
+          <p>2396 14368 2302 14369 2301 14370</p>
+          <p>2396 14371 2397 14372 2302 14373</p>
+          <p>2302 14374 2398 14375 2303 14376</p>
+          <p>2302 14377 2397 14378 2398 14379</p>
+          <p>2303 14380 2399 14381 2304 14382</p>
+          <p>2303 14383 2398 14384 2399 14385</p>
+          <p>2304 14386 2400 14387 2305 14388</p>
+          <p>2304 14389 2399 14390 2400 14391</p>
+          <p>2400 14392 2306 14393 2305 14394</p>
+          <p>2400 14395 2401 14396 2306 14397</p>
+          <p>2401 14398 2307 14399 2306 14400</p>
+          <p>2401 14401 2402 14402 2307 14403</p>
+          <p>2307 14404 2403 14405 2308 14406</p>
+          <p>2307 14407 2402 14408 2403 14409</p>
+          <p>2308 14410 2404 14411 2309 14412</p>
+          <p>2308 14413 2403 14414 2404 14415</p>
+          <p>2309 14416 2405 14417 2310 14418</p>
+          <p>2309 14419 2404 14420 2405 14421</p>
+          <p>2405 14422 2311 14423 2310 14424</p>
+          <p>2405 14425 2406 14426 2311 14427</p>
+          <p>2406 14428 2312 14429 2311 14430</p>
+          <p>2406 14431 2407 14432 2312 14433</p>
+          <p>2312 14434 2408 14435 2313 14436</p>
+          <p>2312 14437 2407 14438 2408 14439</p>
+          <p>2313 14440 2409 14441 2314 14442</p>
+          <p>2313 14443 2408 14444 2409 14445</p>
+          <p>2314 14446 2410 14447 2315 14448</p>
+          <p>2314 14449 2409 14450 2410 14451</p>
+          <p>2410 14452 2316 14453 2315 14454</p>
+          <p>2410 14455 2411 14456 2316 14457</p>
+          <p>2411 14458 2317 14459 2316 14460</p>
+          <p>2411 14461 2412 14462 2317 14463</p>
+          <p>2317 14464 2413 14465 2318 14466</p>
+          <p>2317 14467 2412 14468 2413 14469</p>
+          <p>2318 14470 2414 14471 2319 14472</p>
+          <p>2318 14473 2413 14474 2414 14475</p>
+          <p>2319 14476 2415 14477 2320 14478</p>
+          <p>2319 14479 2414 14480 2415 14481</p>
+          <p>2415 14482 2321 14483 2320 14484</p>
+          <p>2415 14485 2416 14486 2321 14487</p>
+          <p>2416 14488 2322 14489 2321 14490</p>
+          <p>2416 14491 2417 14492 2322 14493</p>
+          <p>2322 14494 2418 14495 2323 14496</p>
+          <p>2322 14497 2417 14498 2418 14499</p>
+          <p>2323 14500 2419 14501 2324 14502</p>
+          <p>2323 14503 2418 14504 2419 14505</p>
+          <p>2324 14506 2420 14507 2325 14508</p>
+          <p>2324 14509 2419 14510 2420 14511</p>
+          <p>2420 14512 2326 14513 2325 14514</p>
+          <p>2420 14515 2421 14516 2326 14517</p>
+          <p>2421 14518 2327 14519 2326 14520</p>
+          <p>2421 14521 2422 14522 2327 14523</p>
+          <p>2327 14524 2423 14525 2328 14526</p>
+          <p>2327 14527 2422 14528 2423 14529</p>
+          <p>2328 14530 2424 14531 2329 14532</p>
+          <p>2328 14533 2423 14534 2424 14535</p>
+          <p>2329 14536 2425 14537 2330 14538</p>
+          <p>2329 14539 2424 14540 2425 14541</p>
+          <p>2425 14542 2331 14543 2330 14544</p>
+          <p>2425 14545 2426 14546 2331 14547</p>
+          <p>2426 14548 2332 14549 2331 14550</p>
+          <p>2426 14551 2427 14552 2332 14553</p>
+          <p>2332 14554 2428 14555 2333 14556</p>
+          <p>2332 14557 2427 14558 2428 14559</p>
+          <p>2333 14560 2429 14561 2334 14562</p>
+          <p>2333 14563 2428 14564 2429 14565</p>
+          <p>2334 14566 2430 14567 2335 14568</p>
+          <p>2334 14569 2429 14570 2430 14571</p>
+          <p>2430 14572 2336 14573 2335 14574</p>
+          <p>2430 14575 2431 14576 2336 14577</p>
+          <p>2431 14578 2292 14579 2336 14580</p>
+          <p>2431 14581 2387 14582 2292 14583</p>
+          <p>2387 14584 2483 14585 2388 14586</p>
+          <p>2387 14587 2482 14588 2483 14589</p>
+          <p>2388 14590 2484 14591 2389 14592</p>
+          <p>2388 14593 2483 14594 2484 14595</p>
+          <p>2389 14596 2485 14597 2390 14598</p>
+          <p>2389 14599 2484 14600 2485 14601</p>
+          <p>2390 14602 2486 14603 2391 14604</p>
+          <p>2390 14605 2485 14606 2486 14607</p>
+          <p>2391 14608 2487 14609 2392 14610</p>
+          <p>2391 14611 2486 14612 2487 14613</p>
+          <p>2487 14614 2393 14615 2392 14616</p>
+          <p>2487 14617 2488 14618 2393 14619</p>
+          <p>2393 14620 2489 14621 2394 14622</p>
+          <p>2393 14623 2488 14624 2489 14625</p>
+          <p>2489 14626 2395 14627 2394 14628</p>
+          <p>2489 14629 2490 14630 2395 14631</p>
+          <p>2490 14632 2396 14633 2395 14634</p>
+          <p>2490 14635 2491 14636 2396 14637</p>
+          <p>2491 14638 2397 14639 2396 14640</p>
+          <p>2491 14641 2492 14642 2397 14643</p>
+          <p>2492 14644 2398 14645 2397 14646</p>
+          <p>2492 14647 2493 14648 2398 14649</p>
+          <p>2493 14650 2399 14651 2398 14652</p>
+          <p>2493 14653 2494 14654 2399 14655</p>
+          <p>2494 14656 2400 14657 2399 14658</p>
+          <p>2494 14659 2495 14660 2400 14661</p>
+          <p>2400 14662 2496 14663 2401 14664</p>
+          <p>2400 14665 2495 14666 2496 14667</p>
+          <p>2496 14668 2402 14669 2401 14670</p>
+          <p>2496 14671 2497 14672 2402 14673</p>
+          <p>2402 14674 2498 14675 2403 14676</p>
+          <p>2402 14677 2497 14678 2498 14679</p>
+          <p>2498 14680 2404 14681 2403 14682</p>
+          <p>2498 14683 2499 14684 2404 14685</p>
+          <p>2499 14686 2405 14687 2404 14688</p>
+          <p>2499 14689 2500 14690 2405 14691</p>
+          <p>2405 14692 2501 14693 2406 14694</p>
+          <p>2405 14695 2500 14696 2501 14697</p>
+          <p>2501 14698 2407 14699 2406 14700</p>
+          <p>2501 14701 2502 14702 2407 14703</p>
+          <p>2502 14704 2408 14705 2407 14706</p>
+          <p>2502 14707 2503 14708 2408 14709</p>
+          <p>2408 14710 2504 14711 2409 14712</p>
+          <p>2408 14713 2503 14714 2504 14715</p>
+          <p>2504 14716 2410 14717 2409 14718</p>
+          <p>2504 14719 2505 14720 2410 14721</p>
+          <p>2410 14722 2506 14723 2411 14724</p>
+          <p>2410 14725 2505 14726 2506 14727</p>
+          <p>2411 14728 2507 14729 2412 14730</p>
+          <p>2411 14731 2506 14732 2507 14733</p>
+          <p>2412 14734 2508 14735 2413 14736</p>
+          <p>2412 14737 2507 14738 2508 14739</p>
+          <p>2413 14740 2509 14741 2414 14742</p>
+          <p>2413 14743 2508 14744 2509 14745</p>
+          <p>2509 14746 2415 14747 2414 14748</p>
+          <p>2509 14749 2510 14750 2415 14751</p>
+          <p>2510 14752 2416 14753 2415 14754</p>
+          <p>2510 14755 2511 14756 2416 14757</p>
+          <p>2416 14758 2512 14759 2417 14760</p>
+          <p>2416 14761 2511 14762 2512 14763</p>
+          <p>2417 14764 2513 14765 2418 14766</p>
+          <p>2417 14767 2512 14768 2513 14769</p>
+          <p>2418 14770 2514 14771 2419 14772</p>
+          <p>2418 14773 2513 14774 2514 14775</p>
+          <p>2514 14776 2420 14777 2419 14778</p>
+          <p>2514 14779 2515 14780 2420 14781</p>
+          <p>2515 14782 2421 14783 2420 14784</p>
+          <p>2515 14785 2516 14786 2421 14787</p>
+          <p>2421 14788 2517 14789 2422 14790</p>
+          <p>2421 14791 2516 14792 2517 14793</p>
+          <p>2422 14794 2518 14795 2423 14796</p>
+          <p>2422 14797 2517 14798 2518 14799</p>
+          <p>2518 14800 2424 14801 2423 14802</p>
+          <p>2518 14803 2519 14804 2424 14805</p>
+          <p>2424 14806 2520 14807 2425 14808</p>
+          <p>2424 14809 2519 14810 2520 14811</p>
+          <p>2425 14812 2521 14813 2426 14814</p>
+          <p>2425 14815 2520 14816 2521 14817</p>
+          <p>2426 14818 2522 14819 2427 14820</p>
+          <p>2426 14821 2521 14822 2522 14823</p>
+          <p>2427 14824 2523 14825 2428 14826</p>
+          <p>2427 14827 2522 14828 2523 14829</p>
+          <p>2428 14830 2524 14831 2429 14832</p>
+          <p>2428 14833 2523 14834 2524 14835</p>
+          <p>2524 14836 2430 14837 2429 14838</p>
+          <p>2524 14839 2525 14840 2430 14841</p>
+          <p>2525 14842 2431 14843 2430 14844</p>
+          <p>2525 14845 2526 14846 2431 14847</p>
+          <p>2431 14848 2482 14849 2387 14850</p>
+          <p>2431 14851 2526 14852 2482 14853</p>
+          <p>2482 14854 2578 14855 2483 14856</p>
+          <p>2482 14857 2577 14858 2578 14859</p>
+          <p>2483 14860 2579 14861 2484 14862</p>
+          <p>2483 14863 2578 14864 2579 14865</p>
+          <p>2484 14866 2580 14867 2485 14868</p>
+          <p>2484 14869 2579 14870 2580 14871</p>
+          <p>2485 14872 2581 14873 2486 14874</p>
+          <p>2485 14875 2580 14876 2581 14877</p>
+          <p>2581 14878 2487 14879 2486 14880</p>
+          <p>2581 14881 2582 14882 2487 14883</p>
+          <p>2487 14884 2583 14885 2488 14886</p>
+          <p>2487 14887 2582 14888 2583 14889</p>
+          <p>2488 14890 2584 14891 2489 14892</p>
+          <p>2488 14893 2583 14894 2584 14895</p>
+          <p>2584 14896 2490 14897 2489 14898</p>
+          <p>2584 14899 2585 14900 2490 14901</p>
+          <p>2585 14902 2491 14903 2490 14904</p>
+          <p>2585 14905 2586 14906 2491 14907</p>
+          <p>2586 14908 2492 14909 2491 14910</p>
+          <p>2586 14911 2587 14912 2492 14913</p>
+          <p>2492 14914 2588 14915 2493 14916</p>
+          <p>2492 14917 2587 14918 2588 14919</p>
+          <p>2588 14920 2494 14921 2493 14922</p>
+          <p>2588 14923 2589 14924 2494 14925</p>
+          <p>2494 14926 2590 14927 2495 14928</p>
+          <p>2494 14929 2589 14930 2590 14931</p>
+          <p>2495 14932 2591 14933 2496 14934</p>
+          <p>2495 14935 2590 14936 2591 14937</p>
+          <p>2591 14938 2497 14939 2496 14940</p>
+          <p>2591 14941 2592 14942 2497 14943</p>
+          <p>2497 14944 2593 14945 2498 14946</p>
+          <p>2497 14947 2592 14948 2593 14949</p>
+          <p>2498 14950 2594 14951 2499 14952</p>
+          <p>2498 14953 2593 14954 2594 14955</p>
+          <p>2594 14956 2500 14957 2499 14958</p>
+          <p>2594 14959 2595 14960 2500 14961</p>
+          <p>2500 14962 2596 14963 2501 14964</p>
+          <p>2500 14965 2595 14966 2596 14967</p>
+          <p>2501 14968 2597 14969 2502 14970</p>
+          <p>2501 14971 2596 14972 2597 14973</p>
+          <p>2502 14974 2598 14975 2503 14976</p>
+          <p>2502 14977 2597 14978 2598 14979</p>
+          <p>2598 14980 2504 14981 2503 14982</p>
+          <p>2598 14983 2599 14984 2504 14985</p>
+          <p>2599 14986 2505 14987 2504 14988</p>
+          <p>2599 14989 2600 14990 2505 14991</p>
+          <p>2505 14992 2601 14993 2506 14994</p>
+          <p>2505 14995 2600 14996 2601 14997</p>
+          <p>2506 14998 2602 14999 2507 15000</p>
+          <p>2506 15001 2601 15002 2602 15003</p>
+          <p>2602 15004 2508 15005 2507 15006</p>
+          <p>2602 15007 2603 15008 2508 15009</p>
+          <p>2603 15010 2509 15011 2508 15012</p>
+          <p>2603 15013 2604 15014 2509 15015</p>
+          <p>2604 15016 2510 15017 2509 15018</p>
+          <p>2604 15019 2605 15020 2510 15021</p>
+          <p>2510 15022 2606 15023 2511 15024</p>
+          <p>2510 15025 2605 15026 2606 15027</p>
+          <p>2511 15028 2607 15029 2512 15030</p>
+          <p>2511 15031 2606 15032 2607 15033</p>
+          <p>2607 15034 2513 15035 2512 15036</p>
+          <p>2607 15037 2608 15038 2513 15039</p>
+          <p>2608 15040 2514 15041 2513 15042</p>
+          <p>2608 15043 2609 15044 2514 15045</p>
+          <p>2514 15046 2610 15047 2515 15048</p>
+          <p>2514 15049 2609 15050 2610 15051</p>
+          <p>2610 15052 2516 15053 2515 15054</p>
+          <p>2610 15055 2611 15056 2516 15057</p>
+          <p>2516 15058 2612 15059 2517 15060</p>
+          <p>2516 15061 2611 15062 2612 15063</p>
+          <p>2517 15064 2613 15065 2518 15066</p>
+          <p>2517 15067 2612 15068 2613 15069</p>
+          <p>2518 15070 2614 15071 2519 15072</p>
+          <p>2518 15073 2613 15074 2614 15075</p>
+          <p>2519 15076 2615 15077 2520 15078</p>
+          <p>2519 15079 2614 15080 2615 15081</p>
+          <p>2615 15082 2521 15083 2520 15084</p>
+          <p>2615 15085 2616 15086 2521 15087</p>
+          <p>2521 15088 2617 15089 2522 15090</p>
+          <p>2521 15091 2616 15092 2617 15093</p>
+          <p>2522 15094 2618 15095 2523 15096</p>
+          <p>2522 15097 2617 15098 2618 15099</p>
+          <p>2618 15100 2524 15101 2523 15102</p>
+          <p>2618 15103 2619 15104 2524 15105</p>
+          <p>2524 15106 2620 15107 2525 15108</p>
+          <p>2524 15109 2619 15110 2620 15111</p>
+          <p>2525 15112 2621 15113 2526 15114</p>
+          <p>2525 15115 2620 15116 2621 15117</p>
+          <p>2526 15118 2577 15119 2482 15120</p>
+          <p>2526 15121 2621 15122 2577 15123</p>
+          <p>2052 15124 2100 15125 2101 15126</p>
+          <p>2052 15127 2129 15128 2100 15129</p>
+          <p>2052 15130 2128 15131 2129 15132</p>
+          <p>2052 15133 2127 15134 2128 15135</p>
+          <p>2052 15136 2126 15137 2127 15138</p>
+          <p>2052 15139 2125 15140 2126 15141</p>
+          <p>2052 15142 2053 15143 2125 15144</p>
+          <p>2053 15145 2055 15146 2125 15147</p>
+          <p>2053 15148 2054 15149 2055 15150</p>
+          <p>2055 15151 2124 15152 2125 15153</p>
+          <p>2055 15154 2123 15155 2124 15156</p>
+          <p>2055 15157 2122 15158 2123 15159</p>
+          <p>2055 15160 2121 15161 2122 15162</p>
+          <p>2055 15163 2056 15164 2121 15165</p>
+          <p>2056 15166 2120 15167 2121 15168</p>
+          <p>2056 15169 2057 15170 2120 15171</p>
+          <p>2057 15172 2058 15173 2120 15174</p>
+          <p>2058 15175 2059 15176 2120 15177</p>
+          <p>2059 15178 2119 15179 2120 15180</p>
+          <p>2059 15181 2060 15182 2119 15183</p>
+          <p>2060 15184 2061 15185 2119 15186</p>
+          <p>2061 15187 2062 15188 2119 15189</p>
+          <p>2062 15190 2118 15191 2119 15192</p>
+          <p>2062 15193 2063 15194 2118 15195</p>
+          <p>2063 15196 2064 15197 2118 15198</p>
+          <p>2064 15199 2117 15200 2118 15201</p>
+          <p>2064 15202 2116 15203 2117 15204</p>
+          <p>2064 15205 2065 15206 2116 15207</p>
+          <p>2065 15208 2066 15209 2116 15210</p>
+          <p>2066 15211 2067 15212 2116 15213</p>
+          <p>2067 15214 2115 15215 2116 15216</p>
+          <p>2067 15217 2068 15218 2115 15219</p>
+          <p>2068 15220 2114 15221 2115 15222</p>
+          <p>2068 15223 2069 15224 2114 15225</p>
+          <p>2069 15226 2070 15227 2114 15228</p>
+          <p>2070 15229 2113 15230 2114 15231</p>
+          <p>2070 15232 2071 15233 2113 15234</p>
+          <p>2071 15235 2072 15236 2113 15237</p>
+          <p>2072 15238 2112 15239 2113 15240</p>
+          <p>2072 15241 2073 15242 2112 15243</p>
+          <p>2073 15244 2111 15245 2112 15246</p>
+          <p>2073 15247 2074 15248 2111 15249</p>
+          <p>2074 15250 2110 15251 2111 15252</p>
+          <p>2074 15253 2075 15254 2110 15255</p>
+          <p>2075 15256 2109 15257 2110 15258</p>
+          <p>2075 15259 2076 15260 2109 15261</p>
+          <p>2076 15262 2077 15263 2109 15264</p>
+          <p>2077 15265 2108 15266 2109 15267</p>
+          <p>2077 15268 2078 15269 2108 15270</p>
+          <p>2078 15271 2107 15272 2108 15273</p>
+          <p>2078 15274 2106 15275 2107 15276</p>
+          <p>2078 15277 2079 15278 2106 15279</p>
+          <p>2079 15280 2105 15281 2106 15282</p>
+          <p>2079 15283 2080 15284 2105 15285</p>
+          <p>2080 15286 2104 15287 2105 15288</p>
+          <p>2080 15289 2103 15290 2104 15291</p>
+          <p>2080 15292 2102 15293 2103 15294</p>
+          <p>2080 15295 2146 15296 2102 15297</p>
+          <p>2080 15298 2081 15299 2146 15300</p>
+          <p>2081 15301 2082 15302 2146 15303</p>
+          <p>2082 15304 2145 15305 2146 15306</p>
+          <p>2082 15307 2083 15308 2145 15309</p>
+          <p>2083 15310 2084 15311 2145 15312</p>
+          <p>2084 15313 2144 15314 2145 15315</p>
+          <p>2084 15316 2085 15317 2144 15318</p>
+          <p>2085 15319 2086 15320 2144 15321</p>
+          <p>2086 15322 2143 15323 2144 15324</p>
+          <p>2086 15325 2087 15326 2143 15327</p>
+          <p>2087 15328 2088 15329 2143 15330</p>
+          <p>2088 15331 2142 15332 2143 15333</p>
+          <p>2088 15334 2141 15335 2142 15336</p>
+          <p>2088 15337 2089 15338 2141 15339</p>
+          <p>2089 15340 2140 15341 2141 15342</p>
+          <p>2089 15343 2090 15344 2140 15345</p>
+          <p>2090 15346 2091 15347 2140 15348</p>
+          <p>2091 15349 2092 15350 2140 15351</p>
+          <p>2092 15352 2139 15353 2140 15354</p>
+          <p>2092 15355 2093 15356 2139 15357</p>
+          <p>2093 15358 2094 15359 2139 15360</p>
+          <p>2094 15361 2138 15362 2139 15363</p>
+          <p>2094 15364 2095 15365 2138 15366</p>
+          <p>2095 15367 2137 15368 2138 15369</p>
+          <p>2095 15370 2096 15371 2137 15372</p>
+          <p>2096 15373 2136 15374 2137 15375</p>
+          <p>2096 15376 2097 15377 2136 15378</p>
+          <p>2097 15379 2135 15380 2136 15381</p>
+          <p>2097 15382 2098 15383 2135 15384</p>
+          <p>2098 15385 2134 15386 2135 15387</p>
+          <p>2098 15388 2099 15389 2134 15390</p>
+          <p>2099 15391 2133 15392 2134 15393</p>
+          <p>2099 15394 2100 15395 2133 15396</p>
+          <p>2100 15397 2132 15398 2133 15399</p>
+          <p>2100 15400 2131 15401 2132 15402</p>
+          <p>2100 15403 2130 15404 2131 15405</p>
+          <p>2100 15406 2129 15407 2130 15408</p>
+          <p>2575 15409 2527 15410 2576 15411</p>
+          <p>2575 15412 2604 15413 2527 15414</p>
+          <p>2575 15415 2605 15416 2604 15417</p>
+          <p>2575 15418 2606 15419 2605 15420</p>
+          <p>2575 15421 2607 15422 2606 15423</p>
+          <p>2575 15424 2608 15425 2607 15426</p>
+          <p>2575 15427 2574 15428 2608 15429</p>
+          <p>2574 15430 2609 15431 2608 15432</p>
+          <p>2574 15433 2573 15434 2609 15435</p>
+          <p>2573 15436 2610 15437 2609 15438</p>
+          <p>2573 15439 2572 15440 2610 15441</p>
+          <p>2572 15442 2611 15443 2610 15444</p>
+          <p>2572 15445 2571 15446 2611 15447</p>
+          <p>2571 15448 2570 15449 2611 15450</p>
+          <p>2570 15451 2612 15452 2611 15453</p>
+          <p>2570 15454 2613 15455 2612 15456</p>
+          <p>2570 15457 2569 15458 2613 15459</p>
+          <p>2569 15460 2614 15461 2613 15462</p>
+          <p>2569 15463 2568 15464 2614 15465</p>
+          <p>2568 15466 2567 15467 2614 15468</p>
+          <p>2567 15469 2615 15470 2614 15471</p>
+          <p>2567 15472 2566 15473 2615 15474</p>
+          <p>2566 15475 2565 15476 2615 15477</p>
+          <p>2565 15478 2564 15479 2615 15480</p>
+          <p>2564 15481 2616 15482 2615 15483</p>
+          <p>2564 15484 2563 15485 2616 15486</p>
+          <p>2563 15487 2617 15488 2616 15489</p>
+          <p>2563 15490 2618 15491 2617 15492</p>
+          <p>2563 15493 2562 15494 2618 15495</p>
+          <p>2562 15496 2561 15497 2618 15498</p>
+          <p>2561 15499 2619 15500 2618 15501</p>
+          <p>2561 15502 2560 15503 2619 15504</p>
+          <p>2560 15505 2559 15506 2619 15507</p>
+          <p>2559 15508 2620 15509 2619 15510</p>
+          <p>2559 15511 2558 15512 2620 15513</p>
+          <p>2558 15514 2557 15515 2620 15516</p>
+          <p>2557 15517 2621 15518 2620 15519</p>
+          <p>2557 15520 2556 15521 2621 15522</p>
+          <p>2556 15523 2555 15524 2621 15525</p>
+          <p>2555 15526 2577 15527 2621 15528</p>
+          <p>2555 15529 2578 15530 2577 15531</p>
+          <p>2555 15532 2579 15533 2578 15534</p>
+          <p>2555 15535 2580 15536 2579 15537</p>
+          <p>2555 15538 2554 15539 2580 15540</p>
+          <p>2554 15541 2581 15542 2580 15543</p>
+          <p>2554 15544 2553 15545 2581 15546</p>
+          <p>2553 15547 2582 15548 2581 15549</p>
+          <p>2553 15550 2583 15551 2582 15552</p>
+          <p>2553 15553 2552 15554 2583 15555</p>
+          <p>2552 15556 2584 15557 2583 15558</p>
+          <p>2552 15559 2551 15560 2584 15561</p>
+          <p>2551 15562 2550 15563 2584 15564</p>
+          <p>2550 15565 2585 15566 2584 15567</p>
+          <p>2550 15568 2549 15569 2585 15570</p>
+          <p>2549 15571 2586 15572 2585 15573</p>
+          <p>2549 15574 2548 15575 2586 15576</p>
+          <p>2548 15577 2587 15578 2586 15579</p>
+          <p>2548 15580 2547 15581 2587 15582</p>
+          <p>2547 15583 2588 15584 2587 15585</p>
+          <p>2547 15586 2546 15587 2588 15588</p>
+          <p>2546 15589 2545 15590 2588 15591</p>
+          <p>2545 15592 2589 15593 2588 15594</p>
+          <p>2545 15595 2544 15596 2589 15597</p>
+          <p>2544 15598 2543 15599 2589 15600</p>
+          <p>2543 15601 2590 15602 2589 15603</p>
+          <p>2543 15604 2542 15605 2590 15606</p>
+          <p>2542 15607 2591 15608 2590 15609</p>
+          <p>2542 15610 2541 15611 2591 15612</p>
+          <p>2541 15613 2540 15614 2591 15615</p>
+          <p>2540 15616 2539 15617 2591 15618</p>
+          <p>2539 15619 2592 15620 2591 15621</p>
+          <p>2539 15622 2593 15623 2592 15624</p>
+          <p>2539 15625 2538 15626 2593 15627</p>
+          <p>2538 15628 2537 15629 2593 15630</p>
+          <p>2537 15631 2594 15632 2593 15633</p>
+          <p>2537 15634 2536 15635 2594 15636</p>
+          <p>2536 15637 2535 15638 2594 15639</p>
+          <p>2535 15640 2534 15641 2594 15642</p>
+          <p>2534 15643 2595 15644 2594 15645</p>
+          <p>2534 15646 2533 15647 2595 15648</p>
+          <p>2533 15649 2532 15650 2595 15651</p>
+          <p>2532 15652 2531 15653 2595 15654</p>
+          <p>2531 15655 2596 15656 2595 15657</p>
+          <p>2531 15658 2530 15659 2596 15660</p>
+          <p>2530 15661 2597 15662 2596 15663</p>
+          <p>2530 15664 2598 15665 2597 15666</p>
+          <p>2530 15667 2599 15668 2598 15669</p>
+          <p>2530 15670 2600 15671 2599 15672</p>
+          <p>2530 15673 2528 15674 2600 15675</p>
+          <p>2530 15676 2529 15677 2528 15678</p>
+          <p>2528 15679 2527 15680 2600 15681</p>
+          <p>2527 15682 2601 15683 2600 15684</p>
+          <p>2527 15685 2602 15686 2601 15687</p>
+          <p>2527 15688 2603 15689 2602 15690</p>
+          <p>2527 15691 2604 15692 2603 15693</p>
+          <p>2746 15694 2623 15695 2622 15696</p>
+          <p>2746 15697 2747 15698 2623 15699</p>
+          <p>2747 15700 2624 15701 2623 15702</p>
+          <p>2747 15703 2748 15704 2624 15705</p>
+          <p>2748 15706 2625 15707 2624 15708</p>
+          <p>2748 15709 2749 15710 2625 15711</p>
+          <p>2749 15712 2626 15713 2625 15714</p>
+          <p>2749 15715 2750 15716 2626 15717</p>
+          <p>2626 15718 2751 15719 2627 15720</p>
+          <p>2626 15721 2750 15722 2751 15723</p>
+          <p>2627 15724 2752 15725 2628 15726</p>
+          <p>2627 15727 2751 15728 2752 15729</p>
+          <p>2628 15730 2753 15731 2629 15732</p>
+          <p>2628 15733 2752 15734 2753 15735</p>
+          <p>2629 15736 2754 15737 2630 15738</p>
+          <p>2629 15739 2753 15740 2754 15741</p>
+          <p>2754 15742 2631 15743 2630 15744</p>
+          <p>2754 15745 2755 15746 2631 15747</p>
+          <p>2755 15748 2632 15749 2631 15750</p>
+          <p>2755 15751 2756 15752 2632 15753</p>
+          <p>2756 15754 2633 15755 2632 15756</p>
+          <p>2756 15757 2757 15758 2633 15759</p>
+          <p>2757 15760 2634 15761 2633 15762</p>
+          <p>2757 15763 2758 15764 2634 15765</p>
+          <p>2758 15766 2635 15767 2634 15768</p>
+          <p>2758 15769 2759 15770 2635 15771</p>
+          <p>2759 15772 2636 15773 2635 15774</p>
+          <p>2759 15775 2760 15776 2636 15777</p>
+          <p>2760 15778 2637 15779 2636 15780</p>
+          <p>2760 15781 2761 15782 2637 15783</p>
+          <p>2761 15784 2638 15785 2637 15786</p>
+          <p>2761 15787 2762 15788 2638 15789</p>
+          <p>2762 15790 2639 15791 2638 15792</p>
+          <p>2762 15793 2763 15794 2639 15795</p>
+          <p>2639 15796 2764 15797 2640 15798</p>
+          <p>2639 15799 2763 15800 2764 15801</p>
+          <p>2764 15802 2641 15803 2640 15804</p>
+          <p>2764 15805 2765 15806 2641 15807</p>
+          <p>2765 15808 2642 15809 2641 15810</p>
+          <p>2765 15811 2766 15812 2642 15813</p>
+          <p>2642 15814 2767 15815 2643 15816</p>
+          <p>2642 15817 2766 15818 2767 15819</p>
+          <p>2767 15820 2644 15821 2643 15822</p>
+          <p>2767 15823 2768 15824 2644 15825</p>
+          <p>2644 15826 2769 15827 2645 15828</p>
+          <p>2644 15829 2768 15830 2769 15831</p>
+          <p>2645 15832 2770 15833 2646 15834</p>
+          <p>2645 15835 2769 15836 2770 15837</p>
+          <p>2770 15838 2647 15839 2646 15840</p>
+          <p>2770 15841 2771 15842 2647 15843</p>
+          <p>2647 15844 2772 15845 2648 15846</p>
+          <p>2647 15847 2771 15848 2772 15849</p>
+          <p>2648 15850 2773 15851 2649 15852</p>
+          <p>2648 15853 2772 15854 2773 15855</p>
+          <p>2773 15856 2650 15857 2649 15858</p>
+          <p>2773 15859 2774 15860 2650 15861</p>
+          <p>2774 15862 2651 15863 2650 15864</p>
+          <p>2774 15865 2775 15866 2651 15867</p>
+          <p>2651 15868 2776 15869 2652 15870</p>
+          <p>2651 15871 2775 15872 2776 15873</p>
+          <p>2776 15874 2653 15875 2652 15876</p>
+          <p>2776 15877 2777 15878 2653 15879</p>
+          <p>2777 15880 2654 15881 2653 15882</p>
+          <p>2777 15883 2778 15884 2654 15885</p>
+          <p>2778 15886 2655 15887 2654 15888</p>
+          <p>2778 15889 2779 15890 2655 15891</p>
+          <p>2655 15892 2780 15893 2656 15894</p>
+          <p>2655 15895 2779 15896 2780 15897</p>
+          <p>2780 15898 2657 15899 2656 15900</p>
+          <p>2780 15901 2781 15902 2657 15903</p>
+          <p>2781 15904 2658 15905 2657 15906</p>
+          <p>2781 15907 2782 15908 2658 15909</p>
+          <p>2658 15910 2783 15911 2659 15912</p>
+          <p>2658 15913 2782 15914 2783 15915</p>
+          <p>2659 15916 2784 15917 2660 15918</p>
+          <p>2659 15919 2783 15920 2784 15921</p>
+          <p>2660 15922 2785 15923 2661 15924</p>
+          <p>2660 15925 2784 15926 2785 15927</p>
+          <p>2661 15928 2786 15929 2662 15930</p>
+          <p>2661 15931 2785 15932 2786 15933</p>
+          <p>2662 15934 2787 15935 2663 15936</p>
+          <p>2662 15937 2786 15938 2787 15939</p>
+          <p>2787 15940 2664 15941 2663 15942</p>
+          <p>2787 15943 2788 15944 2664 15945</p>
+          <p>2664 15946 2789 15947 2665 15948</p>
+          <p>2664 15949 2788 15950 2789 15951</p>
+          <p>2665 15952 2790 15953 2666 15954</p>
+          <p>2665 15955 2789 15956 2790 15957</p>
+          <p>2790 15958 2667 15959 2666 15960</p>
+          <p>2790 15961 2791 15962 2667 15963</p>
+          <p>2791 15964 2668 15965 2667 15966</p>
+          <p>2791 15967 2792 15968 2668 15969</p>
+          <p>2668 15970 2793 15971 2669 15972</p>
+          <p>2668 15973 2792 15974 2793 15975</p>
+          <p>2669 15976 2794 15977 2670 15978</p>
+          <p>2669 15979 2793 15980 2794 15981</p>
+          <p>2670 15982 2795 15983 2671 15984</p>
+          <p>2670 15985 2794 15986 2795 15987</p>
+          <p>2795 15988 2672 15989 2671 15990</p>
+          <p>2795 15991 2796 15992 2672 15993</p>
+          <p>2672 15994 2797 15995 2673 15996</p>
+          <p>2672 15997 2796 15998 2797 15999</p>
+          <p>2673 16000 2798 16001 2674 16002</p>
+          <p>2673 16003 2797 16004 2798 16005</p>
+          <p>2798 16006 2675 16007 2674 16008</p>
+          <p>2798 16009 2799 16010 2675 16011</p>
+          <p>2675 16012 2800 16013 2676 16014</p>
+          <p>2675 16015 2799 16016 2800 16017</p>
+          <p>2800 16018 2677 16019 2676 16020</p>
+          <p>2800 16021 2801 16022 2677 16023</p>
+          <p>2677 16024 2802 16025 2678 16026</p>
+          <p>2677 16027 2801 16028 2802 16029</p>
+          <p>2802 16030 2679 16031 2678 16032</p>
+          <p>2802 16033 2803 16034 2679 16035</p>
+          <p>2803 16036 2680 16037 2679 16038</p>
+          <p>2803 16039 2804 16040 2680 16041</p>
+          <p>2804 16042 2681 16043 2680 16044</p>
+          <p>2804 16045 2805 16046 2681 16047</p>
+          <p>2805 16048 2682 16049 2681 16050</p>
+          <p>2805 16051 2806 16052 2682 16053</p>
+          <p>2806 16054 2683 16055 2682 16056</p>
+          <p>2806 16057 2807 16058 2683 16059</p>
+          <p>2807 16060 2684 16061 2683 16062</p>
+          <p>2807 16063 2808 16064 2684 16065</p>
+          <p>2684 16066 2809 16067 2685 16068</p>
+          <p>2684 16069 2808 16070 2809 16071</p>
+          <p>2809 16072 2686 16073 2685 16074</p>
+          <p>2809 16075 2810 16076 2686 16077</p>
+          <p>2810 16078 2687 16079 2686 16080</p>
+          <p>2810 16081 2811 16082 2687 16083</p>
+          <p>2811 16084 2688 16085 2687 16086</p>
+          <p>2811 16087 2812 16088 2688 16089</p>
+          <p>2688 16090 2813 16091 2689 16092</p>
+          <p>2688 16093 2812 16094 2813 16095</p>
+          <p>2813 16096 2690 16097 2689 16098</p>
+          <p>2813 16099 2814 16100 2690 16101</p>
+          <p>2814 16102 2691 16103 2690 16104</p>
+          <p>2814 16105 2815 16106 2691 16107</p>
+          <p>2691 16108 2816 16109 2692 16110</p>
+          <p>2691 16111 2815 16112 2816 16113</p>
+          <p>2692 16114 2817 16115 2693 16116</p>
+          <p>2692 16117 2816 16118 2817 16119</p>
+          <p>2817 16120 2694 16121 2693 16122</p>
+          <p>2817 16123 2818 16124 2694 16125</p>
+          <p>2818 16126 2695 16127 2694 16128</p>
+          <p>2818 16129 2819 16130 2695 16131</p>
+          <p>2819 16132 2696 16133 2695 16134</p>
+          <p>2819 16135 2820 16136 2696 16137</p>
+          <p>2696 16138 2821 16139 2697 16140</p>
+          <p>2696 16141 2820 16142 2821 16143</p>
+          <p>2821 16144 2698 16145 2697 16146</p>
+          <p>2821 16147 2822 16148 2698 16149</p>
+          <p>2822 16150 2699 16151 2698 16152</p>
+          <p>2822 16153 2823 16154 2699 16155</p>
+          <p>2699 16156 2824 16157 2700 16158</p>
+          <p>2699 16159 2823 16160 2824 16161</p>
+          <p>2700 16162 2825 16163 2701 16164</p>
+          <p>2700 16165 2824 16166 2825 16167</p>
+          <p>2825 16168 2702 16169 2701 16170</p>
+          <p>2825 16171 2826 16172 2702 16173</p>
+          <p>2826 16174 2703 16175 2702 16176</p>
+          <p>2826 16177 2827 16178 2703 16179</p>
+          <p>2703 16180 2828 16181 2704 16182</p>
+          <p>2703 16183 2827 16184 2828 16185</p>
+          <p>2704 16186 2829 16187 2705 16188</p>
+          <p>2704 16189 2828 16190 2829 16191</p>
+          <p>2829 16192 2706 16193 2705 16194</p>
+          <p>2829 16195 2830 16196 2706 16197</p>
+          <p>2830 16198 2707 16199 2706 16200</p>
+          <p>2830 16201 2831 16202 2707 16203</p>
+          <p>2831 16204 2708 16205 2707 16206</p>
+          <p>2831 16207 2832 16208 2708 16209</p>
+          <p>2708 16210 2833 16211 2709 16212</p>
+          <p>2708 16213 2832 16214 2833 16215</p>
+          <p>2833 16216 2710 16217 2709 16218</p>
+          <p>2833 16219 2834 16220 2710 16221</p>
+          <p>2834 16222 2711 16223 2710 16224</p>
+          <p>2834 16225 2835 16226 2711 16227</p>
+          <p>2711 16228 2836 16229 2712 16230</p>
+          <p>2711 16231 2835 16232 2836 16233</p>
+          <p>2836 16234 2622 16235 2712 16236</p>
+          <p>2836 16237 2746 16238 2622 16239</p>
+          <p>2870 16240 2747 16241 2746 16242</p>
+          <p>2870 16243 2871 16244 2747 16245</p>
+          <p>2871 16246 2748 16247 2747 16248</p>
+          <p>2871 16249 2872 16250 2748 16251</p>
+          <p>2872 16252 2749 16253 2748 16254</p>
+          <p>2872 16255 2873 16256 2749 16257</p>
+          <p>2873 16258 2750 16259 2749 16260</p>
+          <p>2873 16261 2874 16262 2750 16263</p>
+          <p>2750 16264 2875 16265 2751 16266</p>
+          <p>2750 16267 2874 16268 2875 16269</p>
+          <p>2751 16270 2876 16271 2752 16272</p>
+          <p>2751 16273 2875 16274 2876 16275</p>
+          <p>2752 16276 2877 16277 2753 16278</p>
+          <p>2752 16279 2876 16280 2877 16281</p>
+          <p>2753 16282 2878 16283 2754 16284</p>
+          <p>2753 16285 2877 16286 2878 16287</p>
+          <p>2878 16288 2755 16289 2754 16290</p>
+          <p>2878 16291 2879 16292 2755 16293</p>
+          <p>2879 16294 2756 16295 2755 16296</p>
+          <p>2879 16297 2880 16298 2756 16299</p>
+          <p>2880 16300 2757 16301 2756 16302</p>
+          <p>2880 16303 2881 16304 2757 16305</p>
+          <p>2881 16306 2758 16307 2757 16308</p>
+          <p>2881 16309 2882 16310 2758 16311</p>
+          <p>2882 16312 2759 16313 2758 16314</p>
+          <p>2882 16315 2883 16316 2759 16317</p>
+          <p>2883 16318 2760 16319 2759 16320</p>
+          <p>2883 16321 2884 16322 2760 16323</p>
+          <p>2884 16324 2761 16325 2760 16326</p>
+          <p>2884 16327 2885 16328 2761 16329</p>
+          <p>2885 16330 2762 16331 2761 16332</p>
+          <p>2885 16333 2886 16334 2762 16335</p>
+          <p>2886 16336 2763 16337 2762 16338</p>
+          <p>2886 16339 2887 16340 2763 16341</p>
+          <p>2763 16342 2888 16343 2764 16344</p>
+          <p>2763 16345 2887 16346 2888 16347</p>
+          <p>2888 16348 2765 16349 2764 16350</p>
+          <p>2888 16351 2889 16352 2765 16353</p>
+          <p>2889 16354 2766 16355 2765 16356</p>
+          <p>2889 16357 2890 16358 2766 16359</p>
+          <p>2766 16360 2891 16361 2767 16362</p>
+          <p>2766 16363 2890 16364 2891 16365</p>
+          <p>2891 16366 2768 16367 2767 16368</p>
+          <p>2891 16369 2892 16370 2768 16371</p>
+          <p>2768 16372 2893 16373 2769 16374</p>
+          <p>2768 16375 2892 16376 2893 16377</p>
+          <p>2769 16378 2894 16379 2770 16380</p>
+          <p>2769 16381 2893 16382 2894 16383</p>
+          <p>2894 16384 2771 16385 2770 16386</p>
+          <p>2894 16387 2895 16388 2771 16389</p>
+          <p>2771 16390 2896 16391 2772 16392</p>
+          <p>2771 16393 2895 16394 2896 16395</p>
+          <p>2772 16396 2897 16397 2773 16398</p>
+          <p>2772 16399 2896 16400 2897 16401</p>
+          <p>2897 16402 2774 16403 2773 16404</p>
+          <p>2897 16405 2898 16406 2774 16407</p>
+          <p>2898 16408 2775 16409 2774 16410</p>
+          <p>2898 16411 2899 16412 2775 16413</p>
+          <p>2775 16414 2900 16415 2776 16416</p>
+          <p>2775 16417 2899 16418 2900 16419</p>
+          <p>2900 16420 2777 16421 2776 16422</p>
+          <p>2900 16423 2901 16424 2777 16425</p>
+          <p>2901 16426 2778 16427 2777 16428</p>
+          <p>2901 16429 2902 16430 2778 16431</p>
+          <p>2902 16432 2779 16433 2778 16434</p>
+          <p>2902 16435 2903 16436 2779 16437</p>
+          <p>2779 16438 2904 16439 2780 16440</p>
+          <p>2779 16441 2903 16442 2904 16443</p>
+          <p>2904 16444 2781 16445 2780 16446</p>
+          <p>2904 16447 2905 16448 2781 16449</p>
+          <p>2905 16450 2782 16451 2781 16452</p>
+          <p>2905 16453 2906 16454 2782 16455</p>
+          <p>2782 16456 2907 16457 2783 16458</p>
+          <p>2782 16459 2906 16460 2907 16461</p>
+          <p>2783 16462 2908 16463 2784 16464</p>
+          <p>2783 16465 2907 16466 2908 16467</p>
+          <p>2784 16468 2909 16469 2785 16470</p>
+          <p>2784 16471 2908 16472 2909 16473</p>
+          <p>2785 16474 2910 16475 2786 16476</p>
+          <p>2785 16477 2909 16478 2910 16479</p>
+          <p>2786 16480 2911 16481 2787 16482</p>
+          <p>2786 16483 2910 16484 2911 16485</p>
+          <p>2911 16486 2788 16487 2787 16488</p>
+          <p>2911 16489 2912 16490 2788 16491</p>
+          <p>2788 16492 2913 16493 2789 16494</p>
+          <p>2788 16495 2912 16496 2913 16497</p>
+          <p>2789 16498 2914 16499 2790 16500</p>
+          <p>2789 16501 2913 16502 2914 16503</p>
+          <p>2914 16504 2791 16505 2790 16506</p>
+          <p>2914 16507 2915 16508 2791 16509</p>
+          <p>2915 16510 2792 16511 2791 16512</p>
+          <p>2915 16513 2916 16514 2792 16515</p>
+          <p>2792 16516 2917 16517 2793 16518</p>
+          <p>2792 16519 2916 16520 2917 16521</p>
+          <p>2793 16522 2918 16523 2794 16524</p>
+          <p>2793 16525 2917 16526 2918 16527</p>
+          <p>2794 16528 2919 16529 2795 16530</p>
+          <p>2794 16531 2918 16532 2919 16533</p>
+          <p>2919 16534 2796 16535 2795 16536</p>
+          <p>2919 16537 2920 16538 2796 16539</p>
+          <p>2796 16540 2921 16541 2797 16542</p>
+          <p>2796 16543 2920 16544 2921 16545</p>
+          <p>2797 16546 2922 16547 2798 16548</p>
+          <p>2797 16549 2921 16550 2922 16551</p>
+          <p>2922 16552 2799 16553 2798 16554</p>
+          <p>2922 16555 2923 16556 2799 16557</p>
+          <p>2799 16558 2924 16559 2800 16560</p>
+          <p>2799 16561 2923 16562 2924 16563</p>
+          <p>2924 16564 2801 16565 2800 16566</p>
+          <p>2924 16567 2925 16568 2801 16569</p>
+          <p>2801 16570 2926 16571 2802 16572</p>
+          <p>2801 16573 2925 16574 2926 16575</p>
+          <p>2802 16576 2927 16577 2803 16578</p>
+          <p>2802 16579 2926 16580 2927 16581</p>
+          <p>2927 16582 2804 16583 2803 16584</p>
+          <p>2927 16585 2928 16586 2804 16587</p>
+          <p>2928 16588 2805 16589 2804 16590</p>
+          <p>2928 16591 2929 16592 2805 16593</p>
+          <p>2929 16594 2806 16595 2805 16596</p>
+          <p>2929 16597 2930 16598 2806 16599</p>
+          <p>2930 16600 2807 16601 2806 16602</p>
+          <p>2930 16603 2931 16604 2807 16605</p>
+          <p>2931 16606 2808 16607 2807 16608</p>
+          <p>2931 16609 2932 16610 2808 16611</p>
+          <p>2808 16612 2933 16613 2809 16614</p>
+          <p>2808 16615 2932 16616 2933 16617</p>
+          <p>2933 16618 2810 16619 2809 16620</p>
+          <p>2933 16621 2934 16622 2810 16623</p>
+          <p>2934 16624 2811 16625 2810 16626</p>
+          <p>2934 16627 2935 16628 2811 16629</p>
+          <p>2935 16630 2812 16631 2811 16632</p>
+          <p>2935 16633 2936 16634 2812 16635</p>
+          <p>2812 16636 2937 16637 2813 16638</p>
+          <p>2812 16639 2936 16640 2937 16641</p>
+          <p>2937 16642 2814 16643 2813 16644</p>
+          <p>2937 16645 2938 16646 2814 16647</p>
+          <p>2938 16648 2815 16649 2814 16650</p>
+          <p>2938 16651 2939 16652 2815 16653</p>
+          <p>2815 16654 2940 16655 2816 16656</p>
+          <p>2815 16657 2939 16658 2940 16659</p>
+          <p>2816 16660 2941 16661 2817 16662</p>
+          <p>2816 16663 2940 16664 2941 16665</p>
+          <p>2941 16666 2818 16667 2817 16668</p>
+          <p>2941 16669 2942 16670 2818 16671</p>
+          <p>2942 16672 2819 16673 2818 16674</p>
+          <p>2942 16675 2943 16676 2819 16677</p>
+          <p>2943 16678 2820 16679 2819 16680</p>
+          <p>2943 16681 2944 16682 2820 16683</p>
+          <p>2820 16684 2945 16685 2821 16686</p>
+          <p>2820 16687 2944 16688 2945 16689</p>
+          <p>2945 16690 2822 16691 2821 16692</p>
+          <p>2945 16693 2946 16694 2822 16695</p>
+          <p>2946 16696 2823 16697 2822 16698</p>
+          <p>2946 16699 2947 16700 2823 16701</p>
+          <p>2823 16702 2948 16703 2824 16704</p>
+          <p>2823 16705 2947 16706 2948 16707</p>
+          <p>2824 16708 2949 16709 2825 16710</p>
+          <p>2824 16711 2948 16712 2949 16713</p>
+          <p>2949 16714 2826 16715 2825 16716</p>
+          <p>2949 16717 2950 16718 2826 16719</p>
+          <p>2950 16720 2827 16721 2826 16722</p>
+          <p>2950 16723 2951 16724 2827 16725</p>
+          <p>2827 16726 2952 16727 2828 16728</p>
+          <p>2827 16729 2951 16730 2952 16731</p>
+          <p>2828 16732 2953 16733 2829 16734</p>
+          <p>2828 16735 2952 16736 2953 16737</p>
+          <p>2953 16738 2830 16739 2829 16740</p>
+          <p>2953 16741 2954 16742 2830 16743</p>
+          <p>2954 16744 2831 16745 2830 16746</p>
+          <p>2954 16747 2955 16748 2831 16749</p>
+          <p>2831 16750 2956 16751 2832 16752</p>
+          <p>2831 16753 2955 16754 2956 16755</p>
+          <p>2832 16756 2957 16757 2833 16758</p>
+          <p>2832 16759 2956 16760 2957 16761</p>
+          <p>2957 16762 2834 16763 2833 16764</p>
+          <p>2957 16765 2958 16766 2834 16767</p>
+          <p>2958 16768 2835 16769 2834 16770</p>
+          <p>2958 16771 2959 16772 2835 16773</p>
+          <p>2835 16774 2960 16775 2836 16776</p>
+          <p>2835 16777 2959 16778 2960 16779</p>
+          <p>2960 16780 2746 16781 2836 16782</p>
+          <p>2960 16783 2870 16784 2746 16785</p>
+          <p>2994 16786 2871 16787 2870 16788</p>
+          <p>2994 16789 2995 16790 2871 16791</p>
+          <p>2995 16792 2872 16793 2871 16794</p>
+          <p>2995 16795 2996 16796 2872 16797</p>
+          <p>2996 16798 2873 16799 2872 16800</p>
+          <p>2996 16801 2997 16802 2873 16803</p>
+          <p>2997 16804 2874 16805 2873 16806</p>
+          <p>2997 16807 2998 16808 2874 16809</p>
+          <p>2874 16810 2999 16811 2875 16812</p>
+          <p>2874 16813 2998 16814 2999 16815</p>
+          <p>2875 16816 3000 16817 2876 16818</p>
+          <p>2875 16819 2999 16820 3000 16821</p>
+          <p>2876 16822 3001 16823 2877 16824</p>
+          <p>2876 16825 3000 16826 3001 16827</p>
+          <p>2877 16828 3002 16829 2878 16830</p>
+          <p>2877 16831 3001 16832 3002 16833</p>
+          <p>3002 16834 2879 16835 2878 16836</p>
+          <p>3002 16837 3003 16838 2879 16839</p>
+          <p>3003 16840 2880 16841 2879 16842</p>
+          <p>3003 16843 3004 16844 2880 16845</p>
+          <p>3004 16846 2881 16847 2880 16848</p>
+          <p>3004 16849 3005 16850 2881 16851</p>
+          <p>3005 16852 2882 16853 2881 16854</p>
+          <p>3005 16855 3006 16856 2882 16857</p>
+          <p>3006 16858 2883 16859 2882 16860</p>
+          <p>3006 16861 3007 16862 2883 16863</p>
+          <p>3007 16864 2884 16865 2883 16866</p>
+          <p>3007 16867 3008 16868 2884 16869</p>
+          <p>3008 16870 2885 16871 2884 16872</p>
+          <p>3008 16873 3009 16874 2885 16875</p>
+          <p>3009 16876 2886 16877 2885 16878</p>
+          <p>3009 16879 3010 16880 2886 16881</p>
+          <p>3010 16882 2887 16883 2886 16884</p>
+          <p>3010 16885 3011 16886 2887 16887</p>
+          <p>2887 16888 3012 16889 2888 16890</p>
+          <p>2887 16891 3011 16892 3012 16893</p>
+          <p>3012 16894 2889 16895 2888 16896</p>
+          <p>3012 16897 3013 16898 2889 16899</p>
+          <p>3013 16900 2890 16901 2889 16902</p>
+          <p>3013 16903 3014 16904 2890 16905</p>
+          <p>2890 16906 3015 16907 2891 16908</p>
+          <p>2890 16909 3014 16910 3015 16911</p>
+          <p>3015 16912 2892 16913 2891 16914</p>
+          <p>3015 16915 3016 16916 2892 16917</p>
+          <p>2892 16918 3017 16919 2893 16920</p>
+          <p>2892 16921 3016 16922 3017 16923</p>
+          <p>2893 16924 3018 16925 2894 16926</p>
+          <p>2893 16927 3017 16928 3018 16929</p>
+          <p>3018 16930 2895 16931 2894 16932</p>
+          <p>3018 16933 3019 16934 2895 16935</p>
+          <p>2895 16936 3020 16937 2896 16938</p>
+          <p>2895 16939 3019 16940 3020 16941</p>
+          <p>2896 16942 3021 16943 2897 16944</p>
+          <p>2896 16945 3020 16946 3021 16947</p>
+          <p>3021 16948 2898 16949 2897 16950</p>
+          <p>3021 16951 3022 16952 2898 16953</p>
+          <p>3022 16954 2899 16955 2898 16956</p>
+          <p>3022 16957 3023 16958 2899 16959</p>
+          <p>2899 16960 3024 16961 2900 16962</p>
+          <p>2899 16963 3023 16964 3024 16965</p>
+          <p>3024 16966 2901 16967 2900 16968</p>
+          <p>3024 16969 3025 16970 2901 16971</p>
+          <p>3025 16972 2902 16973 2901 16974</p>
+          <p>3025 16975 3026 16976 2902 16977</p>
+          <p>3026 16978 2903 16979 2902 16980</p>
+          <p>3026 16981 3027 16982 2903 16983</p>
+          <p>2903 16984 3028 16985 2904 16986</p>
+          <p>2903 16987 3027 16988 3028 16989</p>
+          <p>3028 16990 2905 16991 2904 16992</p>
+          <p>3028 16993 3029 16994 2905 16995</p>
+          <p>3029 16996 2906 16997 2905 16998</p>
+          <p>3029 16999 3030 17000 2906 17001</p>
+          <p>2906 17002 3031 17003 2907 17004</p>
+          <p>2906 17005 3030 17006 3031 17007</p>
+          <p>2907 17008 3032 17009 2908 17010</p>
+          <p>2907 17011 3031 17012 3032 17013</p>
+          <p>2908 17014 3033 17015 2909 17016</p>
+          <p>2908 17017 3032 17018 3033 17019</p>
+          <p>2909 17020 3034 17021 2910 17022</p>
+          <p>2909 17023 3033 17024 3034 17025</p>
+          <p>2910 17026 3035 17027 2911 17028</p>
+          <p>2910 17029 3034 17030 3035 17031</p>
+          <p>3035 17032 2912 17033 2911 17034</p>
+          <p>3035 17035 3036 17036 2912 17037</p>
+          <p>2912 17038 3037 17039 2913 17040</p>
+          <p>2912 17041 3036 17042 3037 17043</p>
+          <p>2913 17044 3038 17045 2914 17046</p>
+          <p>2913 17047 3037 17048 3038 17049</p>
+          <p>3038 17050 2915 17051 2914 17052</p>
+          <p>3038 17053 3039 17054 2915 17055</p>
+          <p>3039 17056 2916 17057 2915 17058</p>
+          <p>3039 17059 3040 17060 2916 17061</p>
+          <p>2916 17062 3041 17063 2917 17064</p>
+          <p>2916 17065 3040 17066 3041 17067</p>
+          <p>2917 17068 3042 17069 2918 17070</p>
+          <p>2917 17071 3041 17072 3042 17073</p>
+          <p>2918 17074 3043 17075 2919 17076</p>
+          <p>2918 17077 3042 17078 3043 17079</p>
+          <p>3043 17080 2920 17081 2919 17082</p>
+          <p>3043 17083 3044 17084 2920 17085</p>
+          <p>2920 17086 3045 17087 2921 17088</p>
+          <p>2920 17089 3044 17090 3045 17091</p>
+          <p>2921 17092 3046 17093 2922 17094</p>
+          <p>2921 17095 3045 17096 3046 17097</p>
+          <p>3046 17098 2923 17099 2922 17100</p>
+          <p>3046 17101 3047 17102 2923 17103</p>
+          <p>2923 17104 3048 17105 2924 17106</p>
+          <p>2923 17107 3047 17108 3048 17109</p>
+          <p>3048 17110 2925 17111 2924 17112</p>
+          <p>3048 17113 3049 17114 2925 17115</p>
+          <p>2925 17116 3050 17117 2926 17118</p>
+          <p>2925 17119 3049 17120 3050 17121</p>
+          <p>2926 17122 3051 17123 2927 17124</p>
+          <p>2926 17125 3050 17126 3051 17127</p>
+          <p>3051 17128 2928 17129 2927 17130</p>
+          <p>3051 17131 3052 17132 2928 17133</p>
+          <p>3052 17134 2929 17135 2928 17136</p>
+          <p>3052 17137 3053 17138 2929 17139</p>
+          <p>3053 17140 2930 17141 2929 17142</p>
+          <p>3053 17143 3054 17144 2930 17145</p>
+          <p>3054 17146 2931 17147 2930 17148</p>
+          <p>3054 17149 3055 17150 2931 17151</p>
+          <p>3055 17152 2932 17153 2931 17154</p>
+          <p>3055 17155 3056 17156 2932 17157</p>
+          <p>2932 17158 3057 17159 2933 17160</p>
+          <p>2932 17161 3056 17162 3057 17163</p>
+          <p>3057 17164 2934 17165 2933 17166</p>
+          <p>3057 17167 3058 17168 2934 17169</p>
+          <p>3058 17170 2935 17171 2934 17172</p>
+          <p>3058 17173 3059 17174 2935 17175</p>
+          <p>3059 17176 2936 17177 2935 17178</p>
+          <p>3059 17179 3060 17180 2936 17181</p>
+          <p>2936 17182 3061 17183 2937 17184</p>
+          <p>2936 17185 3060 17186 3061 17187</p>
+          <p>3061 17188 2938 17189 2937 17190</p>
+          <p>3061 17191 3062 17192 2938 17193</p>
+          <p>3062 17194 2939 17195 2938 17196</p>
+          <p>3062 17197 3063 17198 2939 17199</p>
+          <p>2939 17200 3064 17201 2940 17202</p>
+          <p>2939 17203 3063 17204 3064 17205</p>
+          <p>2940 17206 3065 17207 2941 17208</p>
+          <p>2940 17209 3064 17210 3065 17211</p>
+          <p>3065 17212 2942 17213 2941 17214</p>
+          <p>3065 17215 3066 17216 2942 17217</p>
+          <p>3066 17218 2943 17219 2942 17220</p>
+          <p>3066 17221 3067 17222 2943 17223</p>
+          <p>3067 17224 2944 17225 2943 17226</p>
+          <p>3067 17227 3068 17228 2944 17229</p>
+          <p>2944 17230 3069 17231 2945 17232</p>
+          <p>2944 17233 3068 17234 3069 17235</p>
+          <p>3069 17236 2946 17237 2945 17238</p>
+          <p>3069 17239 3070 17240 2946 17241</p>
+          <p>3070 17242 2947 17243 2946 17244</p>
+          <p>3070 17245 3071 17246 2947 17247</p>
+          <p>2947 17248 3072 17249 2948 17250</p>
+          <p>2947 17251 3071 17252 3072 17253</p>
+          <p>2948 17254 3073 17255 2949 17256</p>
+          <p>2948 17257 3072 17258 3073 17259</p>
+          <p>3073 17260 2950 17261 2949 17262</p>
+          <p>3073 17263 3074 17264 2950 17265</p>
+          <p>3074 17266 2951 17267 2950 17268</p>
+          <p>3074 17269 3075 17270 2951 17271</p>
+          <p>2951 17272 3076 17273 2952 17274</p>
+          <p>2951 17275 3075 17276 3076 17277</p>
+          <p>2952 17278 3077 17279 2953 17280</p>
+          <p>2952 17281 3076 17282 3077 17283</p>
+          <p>3077 17284 2954 17285 2953 17286</p>
+          <p>3077 17287 3078 17288 2954 17289</p>
+          <p>3078 17290 2955 17291 2954 17292</p>
+          <p>3078 17293 3079 17294 2955 17295</p>
+          <p>2955 17296 3080 17297 2956 17298</p>
+          <p>2955 17299 3079 17300 3080 17301</p>
+          <p>2956 17302 3081 17303 2957 17304</p>
+          <p>2956 17305 3080 17306 3081 17307</p>
+          <p>3081 17308 2958 17309 2957 17310</p>
+          <p>3081 17311 3082 17312 2958 17313</p>
+          <p>3082 17314 2959 17315 2958 17316</p>
+          <p>3082 17317 3083 17318 2959 17319</p>
+          <p>2959 17320 3084 17321 2960 17322</p>
+          <p>2959 17323 3083 17324 3084 17325</p>
+          <p>3084 17326 2870 17327 2960 17328</p>
+          <p>3084 17329 2994 17330 2870 17331</p>
+          <p>2994 17332 3119 17333 2995 17334</p>
+          <p>2994 17335 3118 17336 3119 17337</p>
+          <p>2995 17338 3120 17339 2996 17340</p>
+          <p>2995 17341 3119 17342 3120 17343</p>
+          <p>2996 17344 3121 17345 2997 17346</p>
+          <p>2996 17347 3120 17348 3121 17349</p>
+          <p>2997 17350 3122 17351 2998 17352</p>
+          <p>2997 17353 3121 17354 3122 17355</p>
+          <p>3122 17356 2999 17357 2998 17358</p>
+          <p>3122 17359 3123 17360 2999 17361</p>
+          <p>3123 17362 3000 17363 2999 17364</p>
+          <p>3123 17365 3124 17366 3000 17367</p>
+          <p>3124 17368 3001 17369 3000 17370</p>
+          <p>3124 17371 3125 17372 3001 17373</p>
+          <p>3001 17374 3126 17375 3002 17376</p>
+          <p>3001 17377 3125 17378 3126 17379</p>
+          <p>3002 17380 3127 17381 3003 17382</p>
+          <p>3002 17383 3126 17384 3127 17385</p>
+          <p>3003 17386 3128 17387 3004 17388</p>
+          <p>3003 17389 3127 17390 3128 17391</p>
+          <p>3004 17392 3129 17393 3005 17394</p>
+          <p>3004 17395 3128 17396 3129 17397</p>
+          <p>3129 17398 3006 17399 3005 17400</p>
+          <p>3129 17401 3130 17402 3006 17403</p>
+          <p>3006 17404 3131 17405 3007 17406</p>
+          <p>3006 17407 3130 17408 3131 17409</p>
+          <p>3007 17410 3132 17411 3008 17412</p>
+          <p>3007 17413 3131 17414 3132 17415</p>
+          <p>3008 17416 3133 17417 3009 17418</p>
+          <p>3008 17419 3132 17420 3133 17421</p>
+          <p>3009 17422 3134 17423 3010 17424</p>
+          <p>3009 17425 3133 17426 3134 17427</p>
+          <p>3134 17428 3011 17429 3010 17430</p>
+          <p>3134 17431 3135 17432 3011 17433</p>
+          <p>3135 17434 3012 17435 3011 17436</p>
+          <p>3135 17437 3136 17438 3012 17439</p>
+          <p>3136 17440 3013 17441 3012 17442</p>
+          <p>3136 17443 3137 17444 3013 17445</p>
+          <p>3013 17446 3138 17447 3014 17448</p>
+          <p>3013 17449 3137 17450 3138 17451</p>
+          <p>3138 17452 3015 17453 3014 17454</p>
+          <p>3138 17455 3139 17456 3015 17457</p>
+          <p>3139 17458 3016 17459 3015 17460</p>
+          <p>3139 17461 3140 17462 3016 17463</p>
+          <p>3016 17464 3141 17465 3017 17466</p>
+          <p>3016 17467 3140 17468 3141 17469</p>
+          <p>3017 17470 3142 17471 3018 17472</p>
+          <p>3017 17473 3141 17474 3142 17475</p>
+          <p>3142 17476 3019 17477 3018 17478</p>
+          <p>3142 17479 3143 17480 3019 17481</p>
+          <p>3143 17482 3020 17483 3019 17484</p>
+          <p>3143 17485 3144 17486 3020 17487</p>
+          <p>3144 17488 3021 17489 3020 17490</p>
+          <p>3144 17491 3145 17492 3021 17493</p>
+          <p>3145 17494 3022 17495 3021 17496</p>
+          <p>3145 17497 3146 17498 3022 17499</p>
+          <p>3146 17500 3023 17501 3022 17502</p>
+          <p>3146 17503 3147 17504 3023 17505</p>
+          <p>3023 17506 3148 17507 3024 17508</p>
+          <p>3023 17509 3147 17510 3148 17511</p>
+          <p>3024 17512 3149 17513 3025 17514</p>
+          <p>3024 17515 3148 17516 3149 17517</p>
+          <p>3025 17518 3150 17519 3026 17520</p>
+          <p>3025 17521 3149 17522 3150 17523</p>
+          <p>3026 17524 3151 17525 3027 17526</p>
+          <p>3026 17527 3150 17528 3151 17529</p>
+          <p>3151 17530 3028 17531 3027 17532</p>
+          <p>3151 17533 3152 17534 3028 17535</p>
+          <p>3152 17536 3029 17537 3028 17538</p>
+          <p>3152 17539 3153 17540 3029 17541</p>
+          <p>3029 17542 3154 17543 3030 17544</p>
+          <p>3029 17545 3153 17546 3154 17547</p>
+          <p>3030 17548 3155 17549 3031 17550</p>
+          <p>3030 17551 3154 17552 3155 17553</p>
+          <p>3031 17554 3156 17555 3032 17556</p>
+          <p>3031 17557 3155 17558 3156 17559</p>
+          <p>3032 17560 3157 17561 3033 17562</p>
+          <p>3032 17563 3156 17564 3157 17565</p>
+          <p>3033 17566 3158 17567 3034 17568</p>
+          <p>3033 17569 3157 17570 3158 17571</p>
+          <p>3158 17572 3035 17573 3034 17574</p>
+          <p>3158 17575 3159 17576 3035 17577</p>
+          <p>3035 17578 3160 17579 3036 17580</p>
+          <p>3035 17581 3159 17582 3160 17583</p>
+          <p>3036 17584 3161 17585 3037 17586</p>
+          <p>3036 17587 3160 17588 3161 17589</p>
+          <p>3161 17590 3038 17591 3037 17592</p>
+          <p>3161 17593 3162 17594 3038 17595</p>
+          <p>3162 17596 3039 17597 3038 17598</p>
+          <p>3162 17599 3163 17600 3039 17601</p>
+          <p>3039 17602 3164 17603 3040 17604</p>
+          <p>3039 17605 3163 17606 3164 17607</p>
+          <p>3040 17608 3165 17609 3041 17610</p>
+          <p>3040 17611 3164 17612 3165 17613</p>
+          <p>3041 17614 3166 17615 3042 17616</p>
+          <p>3041 17617 3165 17618 3166 17619</p>
+          <p>3042 17620 3167 17621 3043 17622</p>
+          <p>3042 17623 3166 17624 3167 17625</p>
+          <p>3167 17626 3044 17627 3043 17628</p>
+          <p>3167 17629 3168 17630 3044 17631</p>
+          <p>3044 17632 3169 17633 3045 17634</p>
+          <p>3044 17635 3168 17636 3169 17637</p>
+          <p>3045 17638 3170 17639 3046 17640</p>
+          <p>3045 17641 3169 17642 3170 17643</p>
+          <p>3170 17644 3047 17645 3046 17646</p>
+          <p>3170 17647 3171 17648 3047 17649</p>
+          <p>3047 17650 3172 17651 3048 17652</p>
+          <p>3047 17653 3171 17654 3172 17655</p>
+          <p>3172 17656 3049 17657 3048 17658</p>
+          <p>3172 17659 3173 17660 3049 17661</p>
+          <p>3173 17662 3050 17663 3049 17664</p>
+          <p>3173 17665 3174 17666 3050 17667</p>
+          <p>3050 17668 3175 17669 3051 17670</p>
+          <p>3050 17671 3174 17672 3175 17673</p>
+          <p>3051 17674 3176 17675 3052 17676</p>
+          <p>3051 17677 3175 17678 3176 17679</p>
+          <p>3052 17680 3177 17681 3053 17682</p>
+          <p>3052 17683 3176 17684 3177 17685</p>
+          <p>3053 17686 3178 17687 3054 17688</p>
+          <p>3053 17689 3177 17690 3178 17691</p>
+          <p>3178 17692 3055 17693 3054 17694</p>
+          <p>3178 17695 3179 17696 3055 17697</p>
+          <p>3179 17698 3056 17699 3055 17700</p>
+          <p>3179 17701 3180 17702 3056 17703</p>
+          <p>3056 17704 3181 17705 3057 17706</p>
+          <p>3056 17707 3180 17708 3181 17709</p>
+          <p>3057 17710 3182 17711 3058 17712</p>
+          <p>3057 17713 3181 17714 3182 17715</p>
+          <p>3058 17716 3183 17717 3059 17718</p>
+          <p>3058 17719 3182 17720 3183 17721</p>
+          <p>3059 17722 3184 17723 3060 17724</p>
+          <p>3059 17725 3183 17726 3184 17727</p>
+          <p>3184 17728 3061 17729 3060 17730</p>
+          <p>3184 17731 3185 17732 3061 17733</p>
+          <p>3185 17734 3062 17735 3061 17736</p>
+          <p>3185 17737 3186 17738 3062 17739</p>
+          <p>3062 17740 3187 17741 3063 17742</p>
+          <p>3062 17743 3186 17744 3187 17745</p>
+          <p>3063 17746 3188 17747 3064 17748</p>
+          <p>3063 17749 3187 17750 3188 17751</p>
+          <p>3064 17752 3189 17753 3065 17754</p>
+          <p>3064 17755 3188 17756 3189 17757</p>
+          <p>3065 17758 3190 17759 3066 17760</p>
+          <p>3065 17761 3189 17762 3190 17763</p>
+          <p>3066 17764 3191 17765 3067 17766</p>
+          <p>3066 17767 3190 17768 3191 17769</p>
+          <p>3067 17770 3192 17771 3068 17772</p>
+          <p>3067 17773 3191 17774 3192 17775</p>
+          <p>3068 17776 3193 17777 3069 17778</p>
+          <p>3068 17779 3192 17780 3193 17781</p>
+          <p>3193 17782 3070 17783 3069 17784</p>
+          <p>3193 17785 3194 17786 3070 17787</p>
+          <p>3194 17788 3071 17789 3070 17790</p>
+          <p>3194 17791 3195 17792 3071 17793</p>
+          <p>3071 17794 3196 17795 3072 17796</p>
+          <p>3071 17797 3195 17798 3196 17799</p>
+          <p>3196 17800 3073 17801 3072 17802</p>
+          <p>3196 17803 3197 17804 3073 17805</p>
+          <p>3073 17806 3198 17807 3074 17808</p>
+          <p>3073 17809 3197 17810 3198 17811</p>
+          <p>3074 17812 3199 17813 3075 17814</p>
+          <p>3074 17815 3198 17816 3199 17817</p>
+          <p>3075 17818 3200 17819 3076 17820</p>
+          <p>3075 17821 3199 17822 3200 17823</p>
+          <p>3076 17824 3201 17825 3077 17826</p>
+          <p>3076 17827 3200 17828 3201 17829</p>
+          <p>3077 17830 3202 17831 3078 17832</p>
+          <p>3077 17833 3201 17834 3202 17835</p>
+          <p>3078 17836 3203 17837 3079 17838</p>
+          <p>3078 17839 3202 17840 3203 17841</p>
+          <p>3079 17842 3204 17843 3080 17844</p>
+          <p>3079 17845 3203 17846 3204 17847</p>
+          <p>3204 17848 3081 17849 3080 17850</p>
+          <p>3204 17851 3205 17852 3081 17853</p>
+          <p>3081 17854 3206 17855 3082 17856</p>
+          <p>3081 17857 3205 17858 3206 17859</p>
+          <p>3082 17860 3207 17861 3083 17862</p>
+          <p>3082 17863 3206 17864 3207 17865</p>
+          <p>3207 17866 3084 17867 3083 17868</p>
+          <p>3207 17869 3208 17870 3084 17871</p>
+          <p>3084 17872 3118 17873 2994 17874</p>
+          <p>3084 17875 3208 17876 3118 17877</p>
+          <p>3242 17878 3119 17879 3118 17880</p>
+          <p>3242 17881 3243 17882 3119 17883</p>
+          <p>3243 17884 3120 17885 3119 17886</p>
+          <p>3243 17887 3244 17888 3120 17889</p>
+          <p>3120 17890 3245 17891 3121 17892</p>
+          <p>3120 17893 3244 17894 3245 17895</p>
+          <p>3121 17896 3246 17897 3122 17898</p>
+          <p>3121 17899 3245 17900 3246 17901</p>
+          <p>3122 17902 3247 17903 3123 17904</p>
+          <p>3122 17905 3246 17906 3247 17907</p>
+          <p>3123 17908 3248 17909 3124 17910</p>
+          <p>3123 17911 3247 17912 3248 17913</p>
+          <p>3124 17914 3249 17915 3125 17916</p>
+          <p>3124 17917 3248 17918 3249 17919</p>
+          <p>3249 17920 3126 17921 3125 17922</p>
+          <p>3249 17923 3250 17924 3126 17925</p>
+          <p>3126 17926 3251 17927 3127 17928</p>
+          <p>3126 17929 3250 17930 3251 17931</p>
+          <p>3251 17932 3128 17933 3127 17934</p>
+          <p>3251 17935 3252 17936 3128 17937</p>
+          <p>3128 17938 3253 17939 3129 17940</p>
+          <p>3128 17941 3252 17942 3253 17943</p>
+          <p>3129 17944 3254 17945 3130 17946</p>
+          <p>3129 17947 3253 17948 3254 17949</p>
+          <p>3130 17950 3255 17951 3131 17952</p>
+          <p>3130 17953 3254 17954 3255 17955</p>
+          <p>3131 17956 3256 17957 3132 17958</p>
+          <p>3131 17959 3255 17960 3256 17961</p>
+          <p>3132 17962 3257 17963 3133 17964</p>
+          <p>3132 17965 3256 17966 3257 17967</p>
+          <p>3257 17968 3134 17969 3133 17970</p>
+          <p>3257 17971 3258 17972 3134 17973</p>
+          <p>3258 17974 3135 17975 3134 17976</p>
+          <p>3258 17977 3259 17978 3135 17979</p>
+          <p>3135 17980 3260 17981 3136 17982</p>
+          <p>3135 17983 3259 17984 3260 17985</p>
+          <p>3136 17986 3261 17987 3137 17988</p>
+          <p>3136 17989 3260 17990 3261 17991</p>
+          <p>3137 17992 3262 17993 3138 17994</p>
+          <p>3137 17995 3261 17996 3262 17997</p>
+          <p>3138 17998 3263 17999 3139 18000</p>
+          <p>3138 18001 3262 18002 3263 18003</p>
+          <p>3139 18004 3264 18005 3140 18006</p>
+          <p>3139 18007 3263 18008 3264 18009</p>
+          <p>3140 18010 3265 18011 3141 18012</p>
+          <p>3140 18013 3264 18014 3265 18015</p>
+          <p>3141 18016 3266 18017 3142 18018</p>
+          <p>3141 18019 3265 18020 3266 18021</p>
+          <p>3266 18022 3143 18023 3142 18024</p>
+          <p>3266 18025 3267 18026 3143 18027</p>
+          <p>3143 18028 3268 18029 3144 18030</p>
+          <p>3143 18031 3267 18032 3268 18033</p>
+          <p>3144 18034 3269 18035 3145 18036</p>
+          <p>3144 18037 3268 18038 3269 18039</p>
+          <p>3145 18040 3270 18041 3146 18042</p>
+          <p>3145 18043 3269 18044 3270 18045</p>
+          <p>3146 18046 3271 18047 3147 18048</p>
+          <p>3146 18049 3270 18050 3271 18051</p>
+          <p>3147 18052 3272 18053 3148 18054</p>
+          <p>3147 18055 3271 18056 3272 18057</p>
+          <p>3148 18058 3273 18059 3149 18060</p>
+          <p>3148 18061 3272 18062 3273 18063</p>
+          <p>3273 18064 3150 18065 3149 18066</p>
+          <p>3273 18067 3274 18068 3150 18069</p>
+          <p>3150 18070 3275 18071 3151 18072</p>
+          <p>3150 18073 3274 18074 3275 18075</p>
+          <p>3151 18076 3276 18077 3152 18078</p>
+          <p>3151 18079 3275 18080 3276 18081</p>
+          <p>3276 18082 3153 18083 3152 18084</p>
+          <p>3276 18085 3277 18086 3153 18087</p>
+          <p>3277 18088 3154 18089 3153 18090</p>
+          <p>3277 18091 3278 18092 3154 18093</p>
+          <p>3154 18094 3279 18095 3155 18096</p>
+          <p>3154 18097 3278 18098 3279 18099</p>
+          <p>3155 18100 3280 18101 3156 18102</p>
+          <p>3155 18103 3279 18104 3280 18105</p>
+          <p>3156 18106 3281 18107 3157 18108</p>
+          <p>3156 18109 3280 18110 3281 18111</p>
+          <p>3281 18112 3158 18113 3157 18114</p>
+          <p>3281 18115 3282 18116 3158 18117</p>
+          <p>3282 18118 3159 18119 3158 18120</p>
+          <p>3282 18121 3283 18122 3159 18123</p>
+          <p>3283 18124 3160 18125 3159 18126</p>
+          <p>3283 18127 3284 18128 3160 18129</p>
+          <p>3284 18130 3161 18131 3160 18132</p>
+          <p>3284 18133 3285 18134 3161 18135</p>
+          <p>3161 18136 3286 18137 3162 18138</p>
+          <p>3161 18139 3285 18140 3286 18141</p>
+          <p>3286 18142 3163 18143 3162 18144</p>
+          <p>3286 18145 3287 18146 3163 18147</p>
+          <p>3163 18148 3288 18149 3164 18150</p>
+          <p>3163 18151 3287 18152 3288 18153</p>
+          <p>3288 18154 3165 18155 3164 18156</p>
+          <p>3288 18157 3289 18158 3165 18159</p>
+          <p>3165 18160 3290 18161 3166 18162</p>
+          <p>3165 18163 3289 18164 3290 18165</p>
+          <p>3290 18166 3167 18167 3166 18168</p>
+          <p>3290 18169 3291 18170 3167 18171</p>
+          <p>3291 18172 3168 18173 3167 18174</p>
+          <p>3291 18175 3292 18176 3168 18177</p>
+          <p>3168 18178 3293 18179 3169 18180</p>
+          <p>3168 18181 3292 18182 3293 18183</p>
+          <p>3169 18184 3294 18185 3170 18186</p>
+          <p>3169 18187 3293 18188 3294 18189</p>
+          <p>3170 18190 3295 18191 3171 18192</p>
+          <p>3170 18193 3294 18194 3295 18195</p>
+          <p>3171 18196 3296 18197 3172 18198</p>
+          <p>3171 18199 3295 18200 3296 18201</p>
+          <p>3296 18202 3173 18203 3172 18204</p>
+          <p>3296 18205 3297 18206 3173 18207</p>
+          <p>3297 18208 3174 18209 3173 18210</p>
+          <p>3297 18211 3298 18212 3174 18213</p>
+          <p>3298 18214 3175 18215 3174 18216</p>
+          <p>3298 18217 3299 18218 3175 18219</p>
+          <p>3299 18220 3176 18221 3175 18222</p>
+          <p>3299 18223 3300 18224 3176 18225</p>
+          <p>3176 18226 3301 18227 3177 18228</p>
+          <p>3176 18229 3300 18230 3301 18231</p>
+          <p>3301 18232 3178 18233 3177 18234</p>
+          <p>3301 18235 3302 18236 3178 18237</p>
+          <p>3178 18238 3303 18239 3179 18240</p>
+          <p>3178 18241 3302 18242 3303 18243</p>
+          <p>3179 18244 3304 18245 3180 18246</p>
+          <p>3179 18247 3303 18248 3304 18249</p>
+          <p>3304 18250 3181 18251 3180 18252</p>
+          <p>3304 18253 3305 18254 3181 18255</p>
+          <p>3305 18256 3182 18257 3181 18258</p>
+          <p>3305 18259 3306 18260 3182 18261</p>
+          <p>3182 18262 3307 18263 3183 18264</p>
+          <p>3182 18265 3306 18266 3307 18267</p>
+          <p>3183 18268 3308 18269 3184 18270</p>
+          <p>3183 18271 3307 18272 3308 18273</p>
+          <p>3184 18274 3309 18275 3185 18276</p>
+          <p>3184 18277 3308 18278 3309 18279</p>
+          <p>3309 18280 3186 18281 3185 18282</p>
+          <p>3309 18283 3310 18284 3186 18285</p>
+          <p>3186 18286 3311 18287 3187 18288</p>
+          <p>3186 18289 3310 18290 3311 18291</p>
+          <p>3187 18292 3312 18293 3188 18294</p>
+          <p>3187 18295 3311 18296 3312 18297</p>
+          <p>3188 18298 3313 18299 3189 18300</p>
+          <p>3188 18301 3312 18302 3313 18303</p>
+          <p>3313 18304 3190 18305 3189 18306</p>
+          <p>3313 18307 3314 18308 3190 18309</p>
+          <p>3314 18310 3191 18311 3190 18312</p>
+          <p>3314 18313 3315 18314 3191 18315</p>
+          <p>3315 18316 3192 18317 3191 18318</p>
+          <p>3315 18319 3316 18320 3192 18321</p>
+          <p>3316 18322 3193 18323 3192 18324</p>
+          <p>3316 18325 3317 18326 3193 18327</p>
+          <p>3317 18328 3194 18329 3193 18330</p>
+          <p>3317 18331 3318 18332 3194 18333</p>
+          <p>3318 18334 3195 18335 3194 18336</p>
+          <p>3318 18337 3319 18338 3195 18339</p>
+          <p>3319 18340 3196 18341 3195 18342</p>
+          <p>3319 18343 3320 18344 3196 18345</p>
+          <p>3320 18346 3197 18347 3196 18348</p>
+          <p>3320 18349 3321 18350 3197 18351</p>
+          <p>3197 18352 3322 18353 3198 18354</p>
+          <p>3197 18355 3321 18356 3322 18357</p>
+          <p>3198 18358 3323 18359 3199 18360</p>
+          <p>3198 18361 3322 18362 3323 18363</p>
+          <p>3199 18364 3324 18365 3200 18366</p>
+          <p>3199 18367 3323 18368 3324 18369</p>
+          <p>3200 18370 3325 18371 3201 18372</p>
+          <p>3200 18373 3324 18374 3325 18375</p>
+          <p>3201 18376 3326 18377 3202 18378</p>
+          <p>3201 18379 3325 18380 3326 18381</p>
+          <p>3202 18382 3327 18383 3203 18384</p>
+          <p>3202 18385 3326 18386 3327 18387</p>
+          <p>3203 18388 3328 18389 3204 18390</p>
+          <p>3203 18391 3327 18392 3328 18393</p>
+          <p>3204 18394 3329 18395 3205 18396</p>
+          <p>3204 18397 3328 18398 3329 18399</p>
+          <p>3329 18400 3206 18401 3205 18402</p>
+          <p>3329 18403 3330 18404 3206 18405</p>
+          <p>3206 18406 3331 18407 3207 18408</p>
+          <p>3206 18409 3330 18410 3331 18411</p>
+          <p>3207 18412 3332 18413 3208 18414</p>
+          <p>3207 18415 3331 18416 3332 18417</p>
+          <p>3208 18418 3242 18419 3118 18420</p>
+          <p>3208 18421 3332 18422 3242 18423</p>
+          <p>2713 18424 2838 18425 2714 18426</p>
+          <p>2713 18427 2837 18428 2838 18429</p>
+          <p>2714 18430 2839 18431 2715 18432</p>
+          <p>2714 18433 2838 18434 2839 18435</p>
+          <p>2715 18436 2840 18437 2716 18438</p>
+          <p>2715 18439 2839 18440 2840 18441</p>
+          <p>2716 18442 2841 18443 2717 18444</p>
+          <p>2716 18445 2840 18446 2841 18447</p>
+          <p>2841 18448 2718 18449 2717 18450</p>
+          <p>2841 18451 2842 18452 2718 18453</p>
+          <p>2718 18454 2843 18455 2719 18456</p>
+          <p>2718 18457 2842 18458 2843 18459</p>
+          <p>2719 18460 2844 18461 2720 18462</p>
+          <p>2719 18463 2843 18464 2844 18465</p>
+          <p>2844 18466 2721 18467 2720 18468</p>
+          <p>2844 18469 2845 18470 2721 18471</p>
+          <p>2845 18472 2722 18473 2721 18474</p>
+          <p>2845 18475 2846 18476 2722 18477</p>
+          <p>2722 18478 2847 18479 2723 18480</p>
+          <p>2722 18481 2846 18482 2847 18483</p>
+          <p>2723 18484 2848 18485 2724 18486</p>
+          <p>2723 18487 2847 18488 2848 18489</p>
+          <p>2848 18490 2725 18491 2724 18492</p>
+          <p>2848 18493 2849 18494 2725 18495</p>
+          <p>2849 18496 2726 18497 2725 18498</p>
+          <p>2849 18499 2850 18500 2726 18501</p>
+          <p>2726 18502 2851 18503 2727 18504</p>
+          <p>2726 18505 2850 18506 2851 18507</p>
+          <p>2727 18508 2852 18509 2728 18510</p>
+          <p>2727 18511 2851 18512 2852 18513</p>
+          <p>2728 18514 2853 18515 2729 18516</p>
+          <p>2728 18517 2852 18518 2853 18519</p>
+          <p>2853 18520 2730 18521 2729 18522</p>
+          <p>2853 18523 2854 18524 2730 18525</p>
+          <p>2730 18526 2855 18527 2731 18528</p>
+          <p>2730 18529 2854 18530 2855 18531</p>
+          <p>2855 18532 2732 18533 2731 18534</p>
+          <p>2855 18535 2856 18536 2732 18537</p>
+          <p>2856 18538 2733 18539 2732 18540</p>
+          <p>2856 18541 2857 18542 2733 18543</p>
+          <p>2733 18544 2858 18545 2734 18546</p>
+          <p>2733 18547 2857 18548 2858 18549</p>
+          <p>2734 18550 2859 18551 2735 18552</p>
+          <p>2734 18553 2858 18554 2859 18555</p>
+          <p>2859 18556 2736 18557 2735 18558</p>
+          <p>2859 18559 2860 18560 2736 18561</p>
+          <p>2736 18562 2861 18563 2737 18564</p>
+          <p>2736 18565 2860 18566 2861 18567</p>
+          <p>2861 18568 2738 18569 2737 18570</p>
+          <p>2861 18571 2862 18572 2738 18573</p>
+          <p>2862 18574 2739 18575 2738 18576</p>
+          <p>2862 18577 2863 18578 2739 18579</p>
+          <p>2739 18580 2864 18581 2740 18582</p>
+          <p>2739 18583 2863 18584 2864 18585</p>
+          <p>2864 18586 2741 18587 2740 18588</p>
+          <p>2864 18589 2865 18590 2741 18591</p>
+          <p>2865 18592 2742 18593 2741 18594</p>
+          <p>2865 18595 2866 18596 2742 18597</p>
+          <p>2866 18598 2743 18599 2742 18600</p>
+          <p>2866 18601 2867 18602 2743 18603</p>
+          <p>2867 18604 2744 18605 2743 18606</p>
+          <p>2867 18607 2868 18608 2744 18609</p>
+          <p>2744 18610 2869 18611 2745 18612</p>
+          <p>2744 18613 2868 18614 2869 18615</p>
+          <p>2869 18616 2713 18617 2745 18618</p>
+          <p>2869 18619 2837 18620 2713 18621</p>
+          <p>2837 18622 2962 18623 2838 18624</p>
+          <p>2837 18625 2961 18626 2962 18627</p>
+          <p>2838 18628 2963 18629 2839 18630</p>
+          <p>2838 18631 2962 18632 2963 18633</p>
+          <p>2839 18634 2964 18635 2840 18636</p>
+          <p>2839 18637 2963 18638 2964 18639</p>
+          <p>2840 18640 2965 18641 2841 18642</p>
+          <p>2840 18643 2964 18644 2965 18645</p>
+          <p>2965 18646 2842 18647 2841 18648</p>
+          <p>2965 18649 2966 18650 2842 18651</p>
+          <p>2842 18652 2967 18653 2843 18654</p>
+          <p>2842 18655 2966 18656 2967 18657</p>
+          <p>2843 18658 2968 18659 2844 18660</p>
+          <p>2843 18661 2967 18662 2968 18663</p>
+          <p>2968 18664 2845 18665 2844 18666</p>
+          <p>2968 18667 2969 18668 2845 18669</p>
+          <p>2969 18670 2846 18671 2845 18672</p>
+          <p>2969 18673 2970 18674 2846 18675</p>
+          <p>2846 18676 2971 18677 2847 18678</p>
+          <p>2846 18679 2970 18680 2971 18681</p>
+          <p>2847 18682 2972 18683 2848 18684</p>
+          <p>2847 18685 2971 18686 2972 18687</p>
+          <p>2972 18688 2849 18689 2848 18690</p>
+          <p>2972 18691 2973 18692 2849 18693</p>
+          <p>2973 18694 2850 18695 2849 18696</p>
+          <p>2973 18697 2974 18698 2850 18699</p>
+          <p>2850 18700 2975 18701 2851 18702</p>
+          <p>2850 18703 2974 18704 2975 18705</p>
+          <p>2851 18706 2976 18707 2852 18708</p>
+          <p>2851 18709 2975 18710 2976 18711</p>
+          <p>2852 18712 2977 18713 2853 18714</p>
+          <p>2852 18715 2976 18716 2977 18717</p>
+          <p>2977 18718 2854 18719 2853 18720</p>
+          <p>2977 18721 2978 18722 2854 18723</p>
+          <p>2854 18724 2979 18725 2855 18726</p>
+          <p>2854 18727 2978 18728 2979 18729</p>
+          <p>2979 18730 2856 18731 2855 18732</p>
+          <p>2979 18733 2980 18734 2856 18735</p>
+          <p>2980 18736 2857 18737 2856 18738</p>
+          <p>2980 18739 2981 18740 2857 18741</p>
+          <p>2857 18742 2982 18743 2858 18744</p>
+          <p>2857 18745 2981 18746 2982 18747</p>
+          <p>2858 18748 2983 18749 2859 18750</p>
+          <p>2858 18751 2982 18752 2983 18753</p>
+          <p>2983 18754 2860 18755 2859 18756</p>
+          <p>2983 18757 2984 18758 2860 18759</p>
+          <p>2860 18760 2985 18761 2861 18762</p>
+          <p>2860 18763 2984 18764 2985 18765</p>
+          <p>2985 18766 2862 18767 2861 18768</p>
+          <p>2985 18769 2986 18770 2862 18771</p>
+          <p>2986 18772 2863 18773 2862 18774</p>
+          <p>2986 18775 2987 18776 2863 18777</p>
+          <p>2863 18778 2988 18779 2864 18780</p>
+          <p>2863 18781 2987 18782 2988 18783</p>
+          <p>2988 18784 2865 18785 2864 18786</p>
+          <p>2988 18787 2989 18788 2865 18789</p>
+          <p>2989 18790 2866 18791 2865 18792</p>
+          <p>2989 18793 2990 18794 2866 18795</p>
+          <p>2990 18796 2867 18797 2866 18798</p>
+          <p>2990 18799 2991 18800 2867 18801</p>
+          <p>2991 18802 2868 18803 2867 18804</p>
+          <p>2991 18805 2992 18806 2868 18807</p>
+          <p>2868 18808 2993 18809 2869 18810</p>
+          <p>2868 18811 2992 18812 2993 18813</p>
+          <p>2993 18814 2837 18815 2869 18816</p>
+          <p>2993 18817 2961 18818 2837 18819</p>
+          <p>2961 18820 3086 18821 2962 18822</p>
+          <p>2961 18823 3085 18824 3086 18825</p>
+          <p>2962 18826 3087 18827 2963 18828</p>
+          <p>2962 18829 3086 18830 3087 18831</p>
+          <p>2963 18832 3088 18833 2964 18834</p>
+          <p>2963 18835 3087 18836 3088 18837</p>
+          <p>2964 18838 3089 18839 2965 18840</p>
+          <p>2964 18841 3088 18842 3089 18843</p>
+          <p>3089 18844 2966 18845 2965 18846</p>
+          <p>3089 18847 3090 18848 2966 18849</p>
+          <p>2966 18850 3091 18851 2967 18852</p>
+          <p>2966 18853 3090 18854 3091 18855</p>
+          <p>2967 18856 3092 18857 2968 18858</p>
+          <p>2967 18859 3091 18860 3092 18861</p>
+          <p>3092 18862 2969 18863 2968 18864</p>
+          <p>3092 18865 3093 18866 2969 18867</p>
+          <p>3093 18868 2970 18869 2969 18870</p>
+          <p>3093 18871 3094 18872 2970 18873</p>
+          <p>2970 18874 3095 18875 2971 18876</p>
+          <p>2970 18877 3094 18878 3095 18879</p>
+          <p>2971 18880 3096 18881 2972 18882</p>
+          <p>2971 18883 3095 18884 3096 18885</p>
+          <p>3096 18886 2973 18887 2972 18888</p>
+          <p>3096 18889 3097 18890 2973 18891</p>
+          <p>3097 18892 2974 18893 2973 18894</p>
+          <p>3097 18895 3098 18896 2974 18897</p>
+          <p>2974 18898 3099 18899 2975 18900</p>
+          <p>2974 18901 3098 18902 3099 18903</p>
+          <p>2975 18904 3100 18905 2976 18906</p>
+          <p>2975 18907 3099 18908 3100 18909</p>
+          <p>2976 18910 3101 18911 2977 18912</p>
+          <p>2976 18913 3100 18914 3101 18915</p>
+          <p>3101 18916 2978 18917 2977 18918</p>
+          <p>3101 18919 3102 18920 2978 18921</p>
+          <p>2978 18922 3103 18923 2979 18924</p>
+          <p>2978 18925 3102 18926 3103 18927</p>
+          <p>3103 18928 2980 18929 2979 18930</p>
+          <p>3103 18931 3104 18932 2980 18933</p>
+          <p>3104 18934 2981 18935 2980 18936</p>
+          <p>3104 18937 3105 18938 2981 18939</p>
+          <p>2981 18940 3106 18941 2982 18942</p>
+          <p>2981 18943 3105 18944 3106 18945</p>
+          <p>2982 18946 3107 18947 2983 18948</p>
+          <p>2982 18949 3106 18950 3107 18951</p>
+          <p>3107 18952 2984 18953 2983 18954</p>
+          <p>3107 18955 3108 18956 2984 18957</p>
+          <p>2984 18958 3109 18959 2985 18960</p>
+          <p>2984 18961 3108 18962 3109 18963</p>
+          <p>3109 18964 2986 18965 2985 18966</p>
+          <p>3109 18967 3110 18968 2986 18969</p>
+          <p>3110 18970 2987 18971 2986 18972</p>
+          <p>3110 18973 3111 18974 2987 18975</p>
+          <p>2987 18976 3112 18977 2988 18978</p>
+          <p>2987 18979 3111 18980 3112 18981</p>
+          <p>3112 18982 2989 18983 2988 18984</p>
+          <p>3112 18985 3113 18986 2989 18987</p>
+          <p>3113 18988 2990 18989 2989 18990</p>
+          <p>3113 18991 3114 18992 2990 18993</p>
+          <p>3114 18994 2991 18995 2990 18996</p>
+          <p>3114 18997 3115 18998 2991 18999</p>
+          <p>3115 19000 2992 19001 2991 19002</p>
+          <p>3115 19003 3116 19004 2992 19005</p>
+          <p>2992 19006 3117 19007 2993 19008</p>
+          <p>2992 19009 3116 19010 3117 19011</p>
+          <p>3117 19012 2961 19013 2993 19014</p>
+          <p>3117 19015 3085 19016 2961 19017</p>
+          <p>3209 19018 3086 19019 3085 19020</p>
+          <p>3209 19021 3210 19022 3086 19023</p>
+          <p>3086 19024 3211 19025 3087 19026</p>
+          <p>3086 19027 3210 19028 3211 19029</p>
+          <p>3087 19030 3212 19031 3088 19032</p>
+          <p>3087 19033 3211 19034 3212 19035</p>
+          <p>3212 19036 3089 19037 3088 19038</p>
+          <p>3212 19039 3213 19040 3089 19041</p>
+          <p>3213 19042 3090 19043 3089 19044</p>
+          <p>3213 19045 3214 19046 3090 19047</p>
+          <p>3090 19048 3215 19049 3091 19050</p>
+          <p>3090 19051 3214 19052 3215 19053</p>
+          <p>3215 19054 3092 19055 3091 19056</p>
+          <p>3215 19057 3216 19058 3092 19059</p>
+          <p>3092 19060 3217 19061 3093 19062</p>
+          <p>3092 19063 3216 19064 3217 19065</p>
+          <p>3093 19066 3218 19067 3094 19068</p>
+          <p>3093 19069 3217 19070 3218 19071</p>
+          <p>3094 19072 3219 19073 3095 19074</p>
+          <p>3094 19075 3218 19076 3219 19077</p>
+          <p>3095 19078 3220 19079 3096 19080</p>
+          <p>3095 19081 3219 19082 3220 19083</p>
+          <p>3096 19084 3221 19085 3097 19086</p>
+          <p>3096 19087 3220 19088 3221 19089</p>
+          <p>3097 19090 3222 19091 3098 19092</p>
+          <p>3097 19093 3221 19094 3222 19095</p>
+          <p>3098 19096 3223 19097 3099 19098</p>
+          <p>3098 19099 3222 19100 3223 19101</p>
+          <p>3099 19102 3224 19103 3100 19104</p>
+          <p>3099 19105 3223 19106 3224 19107</p>
+          <p>3100 19108 3225 19109 3101 19110</p>
+          <p>3100 19111 3224 19112 3225 19113</p>
+          <p>3101 19114 3226 19115 3102 19116</p>
+          <p>3101 19117 3225 19118 3226 19119</p>
+          <p>3226 19120 3103 19121 3102 19122</p>
+          <p>3226 19123 3227 19124 3103 19125</p>
+          <p>3227 19126 3104 19127 3103 19128</p>
+          <p>3227 19129 3228 19130 3104 19131</p>
+          <p>3228 19132 3105 19133 3104 19134</p>
+          <p>3228 19135 3229 19136 3105 19137</p>
+          <p>3229 19138 3106 19139 3105 19140</p>
+          <p>3229 19141 3230 19142 3106 19143</p>
+          <p>3230 19144 3107 19145 3106 19146</p>
+          <p>3230 19147 3231 19148 3107 19149</p>
+          <p>3107 19150 3232 19151 3108 19152</p>
+          <p>3107 19153 3231 19154 3232 19155</p>
+          <p>3108 19156 3233 19157 3109 19158</p>
+          <p>3108 19159 3232 19160 3233 19161</p>
+          <p>3109 19162 3234 19163 3110 19164</p>
+          <p>3109 19165 3233 19166 3234 19167</p>
+          <p>3234 19168 3111 19169 3110 19170</p>
+          <p>3234 19171 3235 19172 3111 19173</p>
+          <p>3235 19174 3112 19175 3111 19176</p>
+          <p>3235 19177 3236 19178 3112 19179</p>
+          <p>3236 19180 3113 19181 3112 19182</p>
+          <p>3236 19183 3237 19184 3113 19185</p>
+          <p>3113 19186 3238 19187 3114 19188</p>
+          <p>3113 19189 3237 19190 3238 19191</p>
+          <p>3114 19192 3239 19193 3115 19194</p>
+          <p>3114 19195 3238 19196 3239 19197</p>
+          <p>3115 19198 3240 19199 3116 19200</p>
+          <p>3115 19201 3239 19202 3240 19203</p>
+          <p>3116 19204 3241 19205 3117 19206</p>
+          <p>3116 19207 3240 19208 3241 19209</p>
+          <p>3117 19210 3209 19211 3085 19212</p>
+          <p>3117 19213 3241 19214 3209 19215</p>
+          <p>3333 19216 3210 19217 3209 19218</p>
+          <p>3333 19219 3334 19220 3210 19221</p>
+          <p>3210 19222 3335 19223 3211 19224</p>
+          <p>3210 19225 3334 19226 3335 19227</p>
+          <p>3211 19228 3336 19229 3212 19230</p>
+          <p>3211 19231 3335 19232 3336 19233</p>
+          <p>3336 19234 3213 19235 3212 19236</p>
+          <p>3336 19237 3337 19238 3213 19239</p>
+          <p>3337 19240 3214 19241 3213 19242</p>
+          <p>3337 19243 3338 19244 3214 19245</p>
+          <p>3338 19246 3215 19247 3214 19248</p>
+          <p>3338 19249 3339 19250 3215 19251</p>
+          <p>3215 19252 3340 19253 3216 19254</p>
+          <p>3215 19255 3339 19256 3340 19257</p>
+          <p>3340 19258 3217 19259 3216 19260</p>
+          <p>3340 19261 3341 19262 3217 19263</p>
+          <p>3217 19264 3342 19265 3218 19266</p>
+          <p>3217 19267 3341 19268 3342 19269</p>
+          <p>3342 19270 3219 19271 3218 19272</p>
+          <p>3342 19273 3343 19274 3219 19275</p>
+          <p>3219 19276 3344 19277 3220 19278</p>
+          <p>3219 19279 3343 19280 3344 19281</p>
+          <p>3220 19282 3345 19283 3221 19284</p>
+          <p>3220 19285 3344 19286 3345 19287</p>
+          <p>3221 19288 3346 19289 3222 19290</p>
+          <p>3221 19291 3345 19292 3346 19293</p>
+          <p>3222 19294 3347 19295 3223 19296</p>
+          <p>3222 19297 3346 19298 3347 19299</p>
+          <p>3347 19300 3224 19301 3223 19302</p>
+          <p>3347 19303 3348 19304 3224 19305</p>
+          <p>3224 19306 3349 19307 3225 19308</p>
+          <p>3224 19309 3348 19310 3349 19311</p>
+          <p>3225 19312 3350 19313 3226 19314</p>
+          <p>3225 19315 3349 19316 3350 19317</p>
+          <p>3226 19318 3351 19319 3227 19320</p>
+          <p>3226 19321 3350 19322 3351 19323</p>
+          <p>3227 19324 3352 19325 3228 19326</p>
+          <p>3227 19327 3351 19328 3352 19329</p>
+          <p>3228 19330 3353 19331 3229 19332</p>
+          <p>3228 19333 3352 19334 3353 19335</p>
+          <p>3353 19336 3230 19337 3229 19338</p>
+          <p>3353 19339 3354 19340 3230 19341</p>
+          <p>3354 19342 3231 19343 3230 19344</p>
+          <p>3354 19345 3355 19346 3231 19347</p>
+          <p>3355 19348 3232 19349 3231 19350</p>
+          <p>3355 19351 3356 19352 3232 19353</p>
+          <p>3356 19354 3233 19355 3232 19356</p>
+          <p>3356 19357 3357 19358 3233 19359</p>
+          <p>3233 19360 3358 19361 3234 19362</p>
+          <p>3233 19363 3357 19364 3358 19365</p>
+          <p>3358 19366 3235 19367 3234 19368</p>
+          <p>3358 19369 3359 19370 3235 19371</p>
+          <p>3359 19372 3236 19373 3235 19374</p>
+          <p>3359 19375 3360 19376 3236 19377</p>
+          <p>3360 19378 3237 19379 3236 19380</p>
+          <p>3360 19381 3361 19382 3237 19383</p>
+          <p>3237 19384 3362 19385 3238 19386</p>
+          <p>3237 19387 3361 19388 3362 19389</p>
+          <p>3362 19390 3239 19391 3238 19392</p>
+          <p>3362 19393 3363 19394 3239 19395</p>
+          <p>3363 19396 3240 19397 3239 19398</p>
+          <p>3363 19399 3364 19400 3240 19401</p>
+          <p>3364 19402 3241 19403 3240 19404</p>
+          <p>3364 19405 3365 19406 3241 19407</p>
+          <p>3241 19408 3333 19409 3209 19410</p>
+          <p>3241 19411 3365 19412 3333 19413</p>
+          <p>2622 19414 2631 19415 2712 19416</p>
+          <p>2622 19417 2630 19418 2631 19419</p>
+          <p>2622 19420 2623 19421 2630 19422</p>
+          <p>2623 19423 2624 19424 2630 19425</p>
+          <p>2624 19426 2629 19427 2630 19428</p>
+          <p>2624 19429 2625 19430 2629 19431</p>
+          <p>2625 19432 2628 19433 2629 19434</p>
+          <p>2625 19435 2627 19436 2628 19437</p>
+          <p>2625 19438 2626 19439 2627 19440</p>
+          <p>2631 19441 2632 19442 2712 19443</p>
+          <p>2632 19444 2717 19445 2712 19446</p>
+          <p>2632 19447 2633 19448 2717 19449</p>
+          <p>2633 19450 2716 19451 2717 19452</p>
+          <p>2633 19453 2715 19454 2716 19455</p>
+          <p>2633 19456 2634 19457 2715 19458</p>
+          <p>2634 19459 2714 19460 2715 19461</p>
+          <p>2634 19462 2713 19463 2714 19464</p>
+          <p>2634 19465 2745 19466 2713 19467</p>
+          <p>2634 19468 2635 19469 2745 19470</p>
+          <p>2635 19471 2676 19472 2745 19473</p>
+          <p>2635 19474 2675 19475 2676 19476</p>
+          <p>2635 19477 2636 19478 2675 19479</p>
+          <p>2636 19480 2637 19481 2675 19482</p>
+          <p>2637 19483 2674 19484 2675 19485</p>
+          <p>2637 19486 2638 19487 2674 19488</p>
+          <p>2638 19489 2639 19490 2674 19491</p>
+          <p>2639 19492 2640 19493 2674 19494</p>
+          <p>2640 19495 2673 19496 2674 19497</p>
+          <p>2640 19498 2641 19499 2673 19500</p>
+          <p>2641 19501 2642 19502 2673 19503</p>
+          <p>2642 19504 2672 19505 2673 19506</p>
+          <p>2642 19507 2643 19508 2672 19509</p>
+          <p>2643 19510 2644 19511 2672 19512</p>
+          <p>2644 19513 2671 19514 2672 19515</p>
+          <p>2644 19516 2645 19517 2671 19518</p>
+          <p>2645 19519 2670 19520 2671 19521</p>
+          <p>2645 19522 2646 19523 2670 19524</p>
+          <p>2646 19525 2647 19526 2670 19527</p>
+          <p>2647 19528 2669 19529 2670 19530</p>
+          <p>2647 19531 2648 19532 2669 19533</p>
+          <p>2648 19534 2668 19535 2669 19536</p>
+          <p>2648 19537 2667 19538 2668 19539</p>
+          <p>2648 19540 2649 19541 2667 19542</p>
+          <p>2649 19543 2666 19544 2667 19545</p>
+          <p>2649 19546 2650 19547 2666 19548</p>
+          <p>2650 19549 2665 19550 2666 19551</p>
+          <p>2650 19552 2651 19553 2665 19554</p>
+          <p>2651 19555 2664 19556 2665 19557</p>
+          <p>2651 19558 2652 19559 2664 19560</p>
+          <p>2652 19561 2653 19562 2664 19563</p>
+          <p>2653 19564 2663 19565 2664 19566</p>
+          <p>2653 19567 2654 19568 2663 19569</p>
+          <p>2654 19570 2662 19571 2663 19572</p>
+          <p>2654 19573 2655 19574 2662 19575</p>
+          <p>2655 19576 2656 19577 2662 19578</p>
+          <p>2656 19579 2661 19580 2662 19581</p>
+          <p>2656 19582 2657 19583 2661 19584</p>
+          <p>2657 19585 2660 19586 2661 19587</p>
+          <p>2657 19588 2658 19589 2660 19590</p>
+          <p>2658 19591 2659 19592 2660 19593</p>
+          <p>2676 19594 2677 19595 2745 19596</p>
+          <p>2677 19597 2678 19598 2745 19599</p>
+          <p>2678 19600 2744 19601 2745 19602</p>
+          <p>2678 19603 2679 19604 2744 19605</p>
+          <p>2679 19606 2743 19607 2744 19608</p>
+          <p>2679 19609 2742 19610 2743 19611</p>
+          <p>2679 19612 2680 19613 2742 19614</p>
+          <p>2680 19615 2741 19616 2742 19617</p>
+          <p>2680 19618 2681 19619 2741 19620</p>
+          <p>2681 19621 2682 19622 2741 19623</p>
+          <p>2682 19624 2740 19625 2741 19626</p>
+          <p>2682 19627 2683 19628 2740 19629</p>
+          <p>2683 19630 2739 19631 2740 19632</p>
+          <p>2683 19633 2684 19634 2739 19635</p>
+          <p>2684 19636 2685 19637 2739 19638</p>
+          <p>2685 19639 2738 19640 2739 19641</p>
+          <p>2685 19642 2686 19643 2738 19644</p>
+          <p>2686 19645 2687 19646 2738 19647</p>
+          <p>2687 19648 2737 19649 2738 19650</p>
+          <p>2687 19651 2688 19652 2737 19653</p>
+          <p>2688 19654 2736 19655 2737 19656</p>
+          <p>2688 19657 2689 19658 2736 19659</p>
+          <p>2689 19660 2690 19661 2736 19662</p>
+          <p>2690 19663 2735 19664 2736 19665</p>
+          <p>2690 19666 2691 19667 2735 19668</p>
+          <p>2691 19669 2692 19670 2735 19671</p>
+          <p>2692 19672 2734 19673 2735 19674</p>
+          <p>2692 19675 2693 19676 2734 19677</p>
+          <p>2693 19678 2694 19679 2734 19680</p>
+          <p>2694 19681 2733 19682 2734 19683</p>
+          <p>2694 19684 2695 19685 2733 19686</p>
+          <p>2695 19687 2696 19688 2733 19689</p>
+          <p>2696 19690 2732 19691 2733 19692</p>
+          <p>2696 19693 2697 19694 2732 19695</p>
+          <p>2697 19696 2698 19697 2732 19698</p>
+          <p>2698 19699 2731 19700 2732 19701</p>
+          <p>2698 19702 2699 19703 2731 19704</p>
+          <p>2699 19705 2700 19706 2731 19707</p>
+          <p>2700 19708 2730 19709 2731 19710</p>
+          <p>2700 19711 2701 19712 2730 19713</p>
+          <p>2701 19714 2729 19715 2730 19716</p>
+          <p>2701 19717 2702 19718 2729 19719</p>
+          <p>2702 19720 2728 19721 2729 19722</p>
+          <p>2702 19723 2703 19724 2728 19725</p>
+          <p>2703 19726 2727 19727 2728 19728</p>
+          <p>2703 19729 2704 19730 2727 19731</p>
+          <p>2704 19732 2726 19733 2727 19734</p>
+          <p>2704 19735 2705 19736 2726 19737</p>
+          <p>2705 19738 2725 19739 2726 19740</p>
+          <p>2705 19741 2706 19742 2725 19743</p>
+          <p>2706 19744 2707 19745 2725 19746</p>
+          <p>2707 19747 2724 19748 2725 19749</p>
+          <p>2707 19750 2708 19751 2724 19752</p>
+          <p>2708 19753 2723 19754 2724 19755</p>
+          <p>2708 19756 2709 19757 2723 19758</p>
+          <p>2709 19759 2710 19760 2723 19761</p>
+          <p>2710 19762 2722 19763 2723 19764</p>
+          <p>2710 19765 2721 19766 2722 19767</p>
+          <p>2710 19768 2711 19769 2721 19770</p>
+          <p>2711 19771 2720 19772 2721 19773</p>
+          <p>2711 19774 2712 19775 2720 19776</p>
+          <p>2712 19777 2719 19778 2720 19779</p>
+          <p>2712 19780 2718 19781 2719 19782</p>
+          <p>2712 19783 2717 19784 2718 19785</p>
+          <p>3332 19786 3250 19787 3242 19788</p>
+          <p>3332 19789 3251 19790 3250 19791</p>
+          <p>3332 19792 3252 19793 3251 19794</p>
+          <p>3332 19795 3337 19796 3252 19797</p>
+          <p>3332 19798 3338 19799 3337 19800</p>
+          <p>3332 19801 3339 19802 3338 19803</p>
+          <p>3332 19804 3340 19805 3339 19806</p>
+          <p>3332 19807 3331 19808 3340 19809</p>
+          <p>3331 19810 3341 19811 3340 19812</p>
+          <p>3331 19813 3330 19814 3341 19815</p>
+          <p>3330 19816 3342 19817 3341 19818</p>
+          <p>3330 19819 3343 19820 3342 19821</p>
+          <p>3330 19822 3329 19823 3343 19824</p>
+          <p>3329 19825 3328 19826 3343 19827</p>
+          <p>3328 19828 3344 19829 3343 19830</p>
+          <p>3328 19831 3327 19832 3344 19833</p>
+          <p>3327 19834 3345 19835 3344 19836</p>
+          <p>3327 19837 3326 19838 3345 19839</p>
+          <p>3326 19840 3325 19841 3345 19842</p>
+          <p>3325 19843 3346 19844 3345 19845</p>
+          <p>3325 19846 3324 19847 3346 19848</p>
+          <p>3324 19849 3347 19850 3346 19851</p>
+          <p>3324 19852 3323 19853 3347 19854</p>
+          <p>3323 19855 3348 19856 3347 19857</p>
+          <p>3323 19858 3322 19859 3348 19860</p>
+          <p>3322 19861 3349 19862 3348 19863</p>
+          <p>3322 19864 3321 19865 3349 19866</p>
+          <p>3321 19867 3350 19868 3349 19869</p>
+          <p>3321 19870 3320 19871 3350 19872</p>
+          <p>3320 19873 3351 19874 3350 19875</p>
+          <p>3320 19876 3319 19877 3351 19878</p>
+          <p>3319 19879 3318 19880 3351 19881</p>
+          <p>3318 19882 3352 19883 3351 19884</p>
+          <p>3318 19885 3317 19886 3352 19887</p>
+          <p>3317 19888 3316 19889 3352 19890</p>
+          <p>3316 19891 3315 19892 3352 19893</p>
+          <p>3315 19894 3353 19895 3352 19896</p>
+          <p>3315 19897 3314 19898 3353 19899</p>
+          <p>3314 19900 3354 19901 3353 19902</p>
+          <p>3314 19903 3313 19904 3354 19905</p>
+          <p>3313 19906 3312 19907 3354 19908</p>
+          <p>3312 19909 3355 19910 3354 19911</p>
+          <p>3312 19912 3311 19913 3355 19914</p>
+          <p>3311 19915 3310 19916 3355 19917</p>
+          <p>3310 19918 3356 19919 3355 19920</p>
+          <p>3310 19921 3309 19922 3356 19923</p>
+          <p>3309 19924 3308 19925 3356 19926</p>
+          <p>3308 19927 3357 19928 3356 19929</p>
+          <p>3308 19930 3307 19931 3357 19932</p>
+          <p>3307 19933 3358 19934 3357 19935</p>
+          <p>3307 19936 3306 19937 3358 19938</p>
+          <p>3306 19939 3305 19940 3358 19941</p>
+          <p>3305 19942 3359 19943 3358 19944</p>
+          <p>3305 19945 3304 19946 3359 19947</p>
+          <p>3304 19948 3303 19949 3359 19950</p>
+          <p>3303 19951 3360 19952 3359 19953</p>
+          <p>3303 19954 3302 19955 3360 19956</p>
+          <p>3302 19957 3361 19958 3360 19959</p>
+          <p>3302 19960 3301 19961 3361 19962</p>
+          <p>3301 19963 3300 19964 3361 19965</p>
+          <p>3300 19966 3362 19967 3361 19968</p>
+          <p>3300 19969 3299 19970 3362 19971</p>
+          <p>3299 19972 3363 19973 3362 19974</p>
+          <p>3299 19975 3364 19976 3363 19977</p>
+          <p>3299 19978 3298 19979 3364 19980</p>
+          <p>3298 19981 3365 19982 3364 19983</p>
+          <p>3298 19984 3297 19985 3365 19986</p>
+          <p>3297 19987 3296 19988 3365 19989</p>
+          <p>3296 19990 3255 19991 3365 19992</p>
+          <p>3296 19993 3256 19994 3255 19995</p>
+          <p>3296 19996 3295 19997 3256 19998</p>
+          <p>3295 19999 3257 20000 3256 20001</p>
+          <p>3295 20002 3294 20003 3257 20004</p>
+          <p>3294 20005 3258 20006 3257 20007</p>
+          <p>3294 20008 3259 20009 3258 20010</p>
+          <p>3294 20011 3260 20012 3259 20013</p>
+          <p>3294 20014 3293 20015 3260 20016</p>
+          <p>3293 20017 3261 20018 3260 20019</p>
+          <p>3293 20020 3262 20021 3261 20022</p>
+          <p>3293 20023 3292 20024 3262 20025</p>
+          <p>3292 20026 3263 20027 3262 20028</p>
+          <p>3292 20029 3264 20030 3263 20031</p>
+          <p>3292 20032 3291 20033 3264 20034</p>
+          <p>3291 20035 3265 20036 3264 20037</p>
+          <p>3291 20038 3290 20039 3265 20040</p>
+          <p>3290 20041 3266 20042 3265 20043</p>
+          <p>3290 20044 3267 20045 3266 20046</p>
+          <p>3290 20047 3289 20048 3267 20049</p>
+          <p>3289 20050 3268 20051 3267 20052</p>
+          <p>3289 20053 3288 20054 3268 20055</p>
+          <p>3288 20056 3287 20057 3268 20058</p>
+          <p>3287 20059 3269 20060 3268 20061</p>
+          <p>3287 20062 3286 20063 3269 20064</p>
+          <p>3286 20065 3270 20066 3269 20067</p>
+          <p>3286 20068 3285 20069 3270 20070</p>
+          <p>3285 20071 3271 20072 3270 20073</p>
+          <p>3285 20074 3284 20075 3271 20076</p>
+          <p>3284 20077 3272 20078 3271 20079</p>
+          <p>3284 20080 3273 20081 3272 20082</p>
+          <p>3284 20083 3283 20084 3273 20085</p>
+          <p>3283 20086 3274 20087 3273 20088</p>
+          <p>3283 20089 3282 20090 3274 20091</p>
+          <p>3282 20092 3275 20093 3274 20094</p>
+          <p>3282 20095 3276 20096 3275 20097</p>
+          <p>3282 20098 3281 20099 3276 20100</p>
+          <p>3281 20101 3277 20102 3276 20103</p>
+          <p>3281 20104 3280 20105 3277 20106</p>
+          <p>3280 20107 3278 20108 3277 20109</p>
+          <p>3280 20110 3279 20111 3278 20112</p>
+          <p>3255 20113 3254 20114 3365 20115</p>
+          <p>3254 20116 3333 20117 3365 20118</p>
+          <p>3254 20119 3334 20120 3333 20121</p>
+          <p>3254 20122 3335 20123 3334 20124</p>
+          <p>3254 20125 3253 20126 3335 20127</p>
+          <p>3253 20128 3336 20129 3335 20130</p>
+          <p>3253 20131 3337 20132 3336 20133</p>
+          <p>3253 20134 3252 20135 3337 20136</p>
+          <p>3250 20137 3243 20138 3242 20139</p>
+          <p>3250 20140 3244 20141 3243 20142</p>
+          <p>3250 20143 3249 20144 3244 20145</p>
+          <p>3249 20146 3245 20147 3244 20148</p>
+          <p>3249 20149 3248 20150 3245 20151</p>
+          <p>3248 20152 3247 20153 3245 20154</p>
+          <p>3247 20155 3246 20156 3245 20157</p>
+        </polygons>
+      </mesh>
+    </geometry>
+  </library>
+  <library type="LIGHT">
+    <light id="light-lib" name="light" type="POINT">
+      <param name="COLOR" type="float3" flow="IN" sid="param0">1. 1. 1.</param>
+      <param name="ATTENUATION" type="function" flow="IN">CONSTANT</param>
+      <param name="ATTENUATION_SCALE" type="float" flow="IN">1.</param>
+    </light>
+    <light id="pointLightShape1-lib" name="pointLightShape1" type="POINT">
+      <param name="COLOR" type="float3" flow="IN" sid="param0">1. 1. 1.</param>
+      <param name="ATTENUATION" type="function" flow="IN">CONSTANT</param>
+      <param name="ATTENUATION_SCALE" type="float" flow="IN">1.</param>
+    </light>
+  </library>
+  <library type="CAMERA">
+    <camera id="Camera_-lib" name="Camera_">
+      <technique profile="MAYA">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="VERTICAL_APERTURE" type="float" flow="IN">2.4</param>
+            <param name="HORIZONTAL_APERTURE" type="float" flow="IN" sid="param1">3.59999</param>
+            <param name="LENS_SQUEEZE" type="float" flow="IN" sid="param2">1.</param>
+          </program>
+        </optics>
+      </technique>
+      <technique profile="COMMON">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="YFOV" type="float" flow="IN" sid="param0">36.</param>
+            <param name="ZNEAR" type="float" flow="IN" sid="param1">10.</param>
+            <param name="ZFAR" type="float" flow="IN" sid="param2">3.2768e+006</param>
+          </program>
+        </optics>
+      </technique>
+    </camera>
+    <camera id="testCameraShape-lib" name="testCameraShape">
+      <technique profile="MAYA">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="VERTICAL_APERTURE" type="float" flow="IN">2.40005</param>
+            <param name="HORIZONTAL_APERTURE" type="float" flow="IN" sid="param1">3.59994</param>
+            <param name="LENS_SQUEEZE" type="float" flow="IN" sid="param2">1.</param>
+          </program>
+        </optics>
+      </technique>
+      <technique profile="COMMON">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="YFOV" type="float" flow="IN" sid="param0">37.85</param>
+            <param name="ZNEAR" type="float" flow="IN" sid="param1">1.e-002</param>
+            <param name="ZFAR" type="float" flow="IN" sid="param2">1000.</param>
+          </program>
+        </optics>
+      </technique>
+    </camera>
+  </library>
+  <scene name="collada_I-Maya">
+    <extra>
+      <technique profile="MAYA">
+        <param name="START_TIME" type="float" flow="IN">4.16667e-002</param>
+        <param name="END_TIME" type="float" flow="IN">2.</param>
+      </technique>
+    </extra>
+    <boundingbox>
+      <min>-501. 0 -200.</min>
+      <max>400. 1001. 644.304</max>
+    </boundingbox>
+    <node id="Camera" name="Camera">
+      <boundingbox>
+        <min>-167.798 281.582 639.692</min>
+        <max>-164.925 284.574 644.279</max>
+      </boundingbox>
+      <translate sid="translate">-166.392 282.884 642.115</translate>
+      <rotate sid="rotateY">0 1 0 -13.25</rotate>
+      <rotate sid="rotateX">1 0 0 -20.25</rotate>
+      <skew sid="shearYZ">3.7179e-007 0 0 1 0 1 0</skew>
+      <instance url="#Camera_-lib"/>
+    </node>
+    <node id="Light" name="Light">
+      <boundingbox>
+        <min>-501. 999. 399.</min>
+        <max>-499. 1001. 401.</max>
+      </boundingbox>
+      <translate sid="translate">-500. 1000. 400.</translate>
+      <instance url="#light-lib"/>
+    </node>
+    <node id="Floor" name="Floor">
+      <boundingbox>
+        <min>-400. 0 -200.</min>
+        <max>400. 0 200.</max>
+      </boundingbox>
+      <instance url="#floor-lib"/>
+    </node>
+    <node id="Collada" name="Collada">
+      <boundingbox>
+        <min>-242.747 0.2933 -100.</min>
+        <max>237.741 108.098 0.78</max>
+      </boundingbox>
+      <instance url="#collada-lib"/>
+    </node>
+    <node id="testCamera" name="testCamera">
+      <boundingbox>
+        <min>-167.853 281.548 639.68</min>
+        <max>-164.873 284.574 644.304</max>
+      </boundingbox>
+      <translate sid="translate">-166.392 282.884 642.115</translate>
+      <rotate sid="rotateY">0 1 0 -13.25</rotate>
+      <rotate sid="rotateX">1 0 0 -20.25</rotate>
+      <instance url="#testCameraShape-lib"/>
+    </node>
+    <node id="pointLight1" name="pointLight1">
+      <boundingbox>
+        <min>2. 3. 9.</min>
+        <max>4. 5. 11.</max>
+      </boundingbox>
+      <translate sid="translate">3. 4. 10.</translate>
+      <instance url="#pointLightShape1-lib"/>
+    </node>
+  </scene>
+</COLLADA>
Index: /ColladaPlugin/demo/media/dae/cubes.dae
===================================================================
--- /ColladaPlugin/demo/media/dae/cubes.dae	(revision 21)
+++ /ColladaPlugin/demo/media/dae/cubes.dae	(revision 21)
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="utf-8"?>
+<COLLADA xmlns="http://www.collada.org/2005/COLLADASchema" version="1.3.0">
+  <asset>
+<copyright>Copyright 2005 Sony Computer Entertainment Inc., All Rights Reserved.</copyright>
+    <authoring_tool>Maya 6.0.1 COLLADA exporter</authoring_tool>
+    <source_data>file://C:/COLLADA_DataExchange_Test/Results/OutputFiles/Maya/Other/cube_I-Maya.mb</source_data>
+    <up_axis>Y_UP</up_axis>
+    <unit name="centimeter" meter="1.e-002"/>
+    <author>lthompson</author>
+    <modified>2005-07-28T18:12:59Z</modified>
+  </asset>
+  <library type="MATERIAL">
+    <material id="Blue" name="Blue">
+      <shader>
+        <technique profile="COMMON">
+          <pass>
+            <program url="PHONG">
+              <param name="DIFFUSE" type="float3" flow="IN" sid="diffuse">0.137255 0.403922 0.870588</param>
+              <param name="AMBIENT" type="float3" flow="IN" sid="param1">0 0 0</param>
+              <param name="TRANSPARENT" type="float3" flow="IN" sid="transparent">0 0 0</param>
+              <param name="TRANSPARENCY" type="float" flow="IN">0</param>
+              <param name="EMISSION" type="float3" flow="IN" sid="param4">0 0 0</param>
+              <param name="SPECULAR" type="float3" flow="IN" sid="param5">0.5 0.5 0.5</param>
+              <param name="REFLECTIVE" type="float3" flow="IN" sid="param6">0 0 0</param>
+              <param name="REFLECTIVITY" type="float" flow="IN" sid="param7">0.5</param>
+              <param name="SHININESS" type="float" flow="IN" sid="param8">16.</param>
+            </program>
+          </pass>
+        </technique>
+      </shader>
+    </material>
+  </library>
+  <library type="GEOMETRY">
+    <geometry id="box-lib" name="box">
+      <mesh>
+        <source id="box-lib-Position">
+          <float_array id="box-lib-Position-array" count="24">
+-50. 50. 50.
+50. 50. 50.
+-50. -50. 50.
+50. -50. 50.
+-50. 50. -50.
+50. 50. -50.
+-50. -50. -50.
+50. -50. -50.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#box-lib-Position-array" count="8" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+        </source>
+        <source id="box-lib-Normal">
+          <float_array id="box-lib-Normal-array" count="72">
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 1. 0
+0 1. 0
+0 1. 0
+0 1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#box-lib-Normal-array" count="24" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+          <technique profile="MAYA">
+            <param name="DOUBLE_SIDED" type="bool" flow="OUT">TRUE</param>
+          </technique>
+        </source>
+        <vertices id="box-lib-Vertex">
+          <input semantic="POSITION" source="#box-lib-Position"/>
+        </vertices>
+        <polygons material="#Blue" count="6">
+          <input semantic="VERTEX" idx="0" source="#box-lib-Vertex"/>
+          <input semantic="NORMAL" idx="1" source="#box-lib-Normal"/>
+          <p>0 0 2 1 3 2 1 3</p>
+          <p>0 4 1 5 5 6 4 7</p>
+          <p>6 8 7 9 3 10 2 11</p>
+          <p>0 12 4 13 6 14 2 15</p>
+          <p>3 16 7 17 5 18 1 19</p>
+          <p>5 20 7 21 6 22 4 23</p>
+        </polygons>
+      </mesh>
+    </geometry>
+  </library>
+  <library type="LIGHT">
+    <light id="light-lib" name="light" type="POINT">
+      <param name="COLOR" type="float3" flow="IN" sid="param0">1. 1. 1.</param>
+      <param name="ATTENUATION" type="function" flow="IN">CONSTANT</param>
+      <param name="ATTENUATION_SCALE" type="float" flow="IN">1.</param>
+    </light>
+    <light id="pointLightShape1-lib" name="pointLightShape1" type="POINT">
+      <param name="COLOR" type="float3" flow="IN" sid="param0">1. 1. 1.</param>
+      <param name="ATTENUATION" type="function" flow="IN">CONSTANT</param>
+      <param name="ATTENUATION_SCALE" type="float" flow="IN">1.</param>
+    </light>
+  </library>
+  <library type="CAMERA">
+    <camera id="PerspCamera-lib" name="PerspCamera">
+      <technique profile="MAYA">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="VERTICAL_APERTURE" type="float" flow="IN">2.4</param>
+            <param name="HORIZONTAL_APERTURE" type="float" flow="IN" sid="param1">3.59999</param>
+            <param name="LENS_SQUEEZE" type="float" flow="IN" sid="param2">1.</param>
+          </program>
+        </optics>
+      </technique>
+      <technique profile="COMMON">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="YFOV" type="float" flow="IN" sid="param0">36.</param>
+            <param name="ZNEAR" type="float" flow="IN" sid="param1">10.</param>
+            <param name="ZFAR" type="float" flow="IN" sid="param2">3.2767e+006</param>
+          </program>
+        </optics>
+      </technique>
+    </camera>
+    <camera id="testCameraShape-lib" name="testCameraShape">
+      <technique profile="MAYA">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="VERTICAL_APERTURE" type="float" flow="IN">2.40005</param>
+            <param name="HORIZONTAL_APERTURE" type="float" flow="IN" sid="param1">3.59994</param>
+            <param name="LENS_SQUEEZE" type="float" flow="IN" sid="param2">1.</param>
+          </program>
+        </optics>
+      </technique>
+      <technique profile="COMMON">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="YFOV" type="float" flow="IN" sid="param0">37.85</param>
+            <param name="ZNEAR" type="float" flow="IN" sid="param1">1.e-002</param>
+            <param name="ZFAR" type="float" flow="IN" sid="param2">1000.</param>
+          </program>
+        </optics>
+      </technique>
+    </camera>
+  </library>
+  <scene name="cube_I-Maya">
+    <extra>
+      <technique profile="MAYA">
+        <param name="START_TIME" type="float" flow="IN">4.16667e-002</param>
+        <param name="END_TIME" type="float" flow="IN">2.</param>
+      </technique>
+    </extra>
+    <boundingbox>
+      <min>-501. -50. -50.</min>
+      <max>50. 1001. 657.259</max>
+    </boundingbox>
+    <node id="Camera" name="Camera">
+      <boundingbox>
+        <min>-429.651 332.498 652.583</min>
+        <max>-425.695 335.592 657.218</max>
+      </boundingbox>
+      <translate sid="translate">-427.749 333.855 655.017</translate>
+      <rotate sid="rotateY">0 1 0 -33.</rotate>
+      <rotate sid="rotateX">1 0 0 -22.1954</rotate>
+      <skew sid="shearYZ">1.46672e-007 0 0 1 0 1 0</skew>
+      <instance url="#PerspCamera-lib"/>
+    </node>
+    <node id="Light" name="Light">
+      <boundingbox>
+        <min>-501. 999. 399.</min>
+        <max>-499. 1001. 401.</max>
+      </boundingbox>
+      <translate sid="translate">-500. 1000. 400.</translate>
+      <instance url="#light-lib"/>
+    </node>
+    <node id="cubes" name="2Cubes">
+        <node id="Box1" name="Box1">
+          <boundingbox>
+            <min>-50. -50. -50.</min>
+            <max>50. 50. 50.</max>
+          </boundingbox>
+          <translate sid="translate">100. 100. 100.</translate>
+          <instance url="#box-lib"/>
+        </node>
+        <node id="Hypercube" name="Hypercube">
+            <node id="Box2" name="Box2">
+              <boundingbox>
+                <min>-50. -50. -50.</min>
+                <max>50. 50. 50.</max>
+              </boundingbox>
+              <translate sid="translate">-100. -100. -100.</translate>
+              <instance url="#box-lib"/>
+            </node>
+        </node>
+    </node>
+    <node id="testCamera" name="testCamera">
+      <boundingbox>
+        <min>-429.703 332.465 652.554</min>
+        <max>-425.65 335.592 657.259</max>
+      </boundingbox>
+      <translate sid="translate">-427.749 333.855 655.017</translate>
+      <rotate sid="rotateY">0 1 0 -33.</rotate>
+      <rotate sid="rotateX">1 0 0 -22.1954</rotate>
+      <instance url="#testCameraShape-lib"/>
+    </node>
+    <node id="pointLight1" name="pointLight1">
+      <boundingbox>
+        <min>2. 3. 9.</min>
+        <max>4. 5. 11.</max>
+      </boundingbox>
+      <translate sid="translate">3. 4. 10.</translate>
+      <instance url="#pointLightShape1-lib"/>
+    </node>
+  </scene>
+</COLLADA>
Index: /ColladaPlugin/demo/media/dae/multimtl.dae
===================================================================
--- /ColladaPlugin/demo/media/dae/multimtl.dae	(revision 21)
+++ /ColladaPlugin/demo/media/dae/multimtl.dae	(revision 21)
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="utf-8"?>
+<COLLADA xmlns="http://www.collada.org/2005/COLLADASchema" version="1.3.0">
+  <asset>
+<copyright>Copyright 2005 Sony Computer Entertainment Inc., All Rights Reserved.</copyright>
+    <authoring_tool>Maya 6.0.1 COLLADA exporter</authoring_tool>
+    <source_data>file://C:/COLLADA_DataExchange_Test/Results/OutputFiles/Maya/Other/multimtl_I-Maya.mb</source_data>
+    <up_axis>Y_UP</up_axis>
+    <unit name="centimeter" meter="1.e-002"/>
+    <author>lthompson</author>
+    <modified>2005-07-28T18:13:06Z</modified>
+  </asset>
+  <library type="MATERIAL">
+    <material id="Blue" name="Blue">
+      <shader>
+        <technique profile="COMMON">
+          <pass>
+            <program url="PHONG">
+              <param name="DIFFUSE" type="float3" flow="IN" sid="diffuse">0.137255 0.403922 0.870588</param>
+              <param name="AMBIENT" type="float3" flow="IN" sid="param1">0 0 0</param>
+              <param name="TRANSPARENT" type="float3" flow="IN" sid="transparent">0 0 0</param>
+              <param name="TRANSPARENCY" type="float" flow="IN">0</param>
+              <param name="EMISSION" type="float3" flow="IN" sid="param4">0 0 0</param>
+              <param name="SPECULAR" type="float3" flow="IN" sid="param5">0.5 0.5 0.5</param>
+              <param name="REFLECTIVE" type="float3" flow="IN" sid="param6">0 0 0</param>
+              <param name="REFLECTIVITY" type="float" flow="IN" sid="param7">0.5</param>
+              <param name="SHININESS" type="float" flow="IN" sid="param8">10.</param>
+            </program>
+          </pass>
+        </technique>
+      </shader>
+    </material>
+    <material id="Red" name="Red">
+      <shader>
+        <technique profile="COMMON">
+          <pass>
+            <program url="PHONG">
+              <param name="DIFFUSE" type="float3" flow="IN" sid="diffuse">0.658824 0.101961 0.109804</param>
+              <param name="AMBIENT" type="float3" flow="IN" sid="param1">0 0 0</param>
+              <param name="TRANSPARENT" type="float3" flow="IN" sid="transparent">0 0 0</param>
+              <param name="TRANSPARENCY" type="float" flow="IN">0</param>
+              <param name="EMISSION" type="float3" flow="IN" sid="param4">0 0 0</param>
+              <param name="SPECULAR" type="float3" flow="IN" sid="param5">0.368627 0.368627 0.368627</param>
+              <param name="REFLECTIVE" type="float3" flow="IN" sid="param6">0 0 0</param>
+              <param name="REFLECTIVITY" type="float" flow="IN" sid="param7">0.5</param>
+              <param name="SHININESS" type="float" flow="IN" sid="param8">10.</param>
+            </program>
+          </pass>
+        </technique>
+      </shader>
+    </material>
+  </library>
+  <library type="GEOMETRY">
+    <geometry id="box-lib" name="box">
+      <mesh>
+        <source id="box-lib-Position">
+          <float_array id="box-lib-Position-array" count="24">
+-50. 50. 50.
+50. 50. 50.
+-50. -50. 50.
+50. -50. 50.
+-50. 50. -50.
+50. 50. -50.
+-50. -50. -50.
+50. -50. -50.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#box-lib-Position-array" count="8" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+        </source>
+        <source id="box-lib-Normal">
+          <float_array id="box-lib-Normal-array" count="72">
+0 1. 0
+0 1. 0
+0 1. 0
+0 1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+0 -1. 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+-1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+1. 0 0
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 -1.
+0 0 1.
+0 0 1.
+0 0 1.
+0 0 1.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#box-lib-Normal-array" count="24" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+          <technique profile="MAYA">
+            <param name="DOUBLE_SIDED" type="bool" flow="OUT">TRUE</param>
+          </technique>
+        </source>
+        <vertices id="box-lib-Vertex">
+          <input semantic="POSITION" source="#box-lib-Position"/>
+        </vertices>
+        <polygons material="#Blue" count="5">
+          <input semantic="VERTEX" idx="0" source="#box-lib-Vertex"/>
+          <input semantic="NORMAL" idx="1" source="#box-lib-Normal"/>
+          <p>0 0 1 1 5 2 4 3</p>
+          <p>6 4 7 5 3 6 2 7</p>
+          <p>0 8 4 9 6 10 2 11</p>
+          <p>3 12 7 13 5 14 1 15</p>
+          <p>5 16 7 17 6 18 4 19</p>
+        </polygons>
+        <polygons material="#Red" count="1">
+          <input semantic="VERTEX" idx="0" source="#box-lib-Vertex"/>
+          <input semantic="NORMAL" idx="1" source="#box-lib-Normal"/>
+          <p>0 20 2 21 3 22 1 23</p>
+        </polygons>
+      </mesh>
+    </geometry>
+  </library>
+  <library type="LIGHT">
+    <light id="Lt_Light-lib" name="Lt_Light" type="POINT">
+      <param name="COLOR" type="float3" flow="IN" sid="param0">1. 1. 1.</param>
+      <param name="ATTENUATION" type="function" flow="IN">CONSTANT</param>
+      <param name="ATTENUATION_SCALE" type="float" flow="IN">1.</param>
+    </light>
+    <light id="pointLightShape1-lib" name="pointLightShape1" type="POINT">
+      <param name="COLOR" type="float3" flow="IN" sid="param0">1. 1. 1.</param>
+      <param name="ATTENUATION" type="function" flow="IN">CONSTANT</param>
+      <param name="ATTENUATION_SCALE" type="float" flow="IN">1.</param>
+    </light>
+  </library>
+  <library type="CAMERA">
+    <camera id="cl_unnamed_1-lib" name="cl_unnamed_1">
+      <technique profile="MAYA">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="VERTICAL_APERTURE" type="float" flow="IN">2.4</param>
+            <param name="HORIZONTAL_APERTURE" type="float" flow="IN" sid="param1">3.59999</param>
+            <param name="LENS_SQUEEZE" type="float" flow="IN" sid="param2">1.</param>
+          </program>
+        </optics>
+      </technique>
+      <technique profile="COMMON">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="YFOV" type="float" flow="IN" sid="param0">36.</param>
+            <param name="ZNEAR" type="float" flow="IN" sid="param1">10.</param>
+            <param name="ZFAR" type="float" flow="IN" sid="param2">3.2768e+006</param>
+          </program>
+        </optics>
+      </technique>
+    </camera>
+    <camera id="testCameraShape-lib" name="testCameraShape">
+      <technique profile="MAYA">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="VERTICAL_APERTURE" type="float" flow="IN">2.40005</param>
+            <param name="HORIZONTAL_APERTURE" type="float" flow="IN" sid="param1">3.59994</param>
+            <param name="LENS_SQUEEZE" type="float" flow="IN" sid="param2">1.</param>
+          </program>
+        </optics>
+      </technique>
+      <technique profile="COMMON">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="YFOV" type="float" flow="IN" sid="param0">37.85</param>
+            <param name="ZNEAR" type="float" flow="IN" sid="param1">1.e-002</param>
+            <param name="ZFAR" type="float" flow="IN" sid="param2">1000.</param>
+          </program>
+        </optics>
+      </technique>
+    </camera>
+  </library>
+  <scene name="multimtl_I-Maya">
+    <extra>
+      <technique profile="MAYA">
+        <param name="START_TIME" type="float" flow="IN">4.16667e-002</param>
+        <param name="END_TIME" type="float" flow="IN">2.</param>
+      </technique>
+    </extra>
+    <boundingbox>
+      <min>-326. -50. -50.</min>
+      <max>50. 226. 401.</max>
+    </boundingbox>
+    <node id="Camera" name="Camera">
+      <boundingbox>
+        <min>-143.414 91.3445 293.878</min>
+        <max>-139.816 94.0573 298.517</max>
+      </boundingbox>
+      <translate sid="translate">-141.666 92.4958 296.3</translate>
+      <rotate sid="rotateY">0 1 0 -26.</rotate>
+      <rotate sid="rotateX">1 0 0 -15.1954</rotate>
+      <skew sid="shearYZ">1.8023e-007 0 0 1 0 1 0</skew>
+      <instance url="#cl_unnamed_1-lib"/>
+    </node>
+    <node id="Light" name="Light">
+      <boundingbox>
+        <min>-326. 224. 399.</min>
+        <max>-324. 226. 401.</max>
+      </boundingbox>
+      <translate sid="translate">-325. 225. 400.</translate>
+      <instance url="#Lt_Light-lib"/>
+    </node>
+    <node id="Box" name="Box">
+      <boundingbox>
+        <min>-50. -50. -50.</min>
+        <max>50. 50. 50.</max>
+      </boundingbox>
+      <instance url="#box-lib"/>
+    </node>
+    <node id="testCamera" name="testCamera">
+      <boundingbox>
+        <min>-143.467 91.3098 293.854</min>
+        <max>-139.768 94.0573 298.549</max>
+      </boundingbox>
+      <translate sid="translate">-141.666 92.4958 296.3</translate>
+      <rotate sid="rotateY">0 1 0 -26.</rotate>
+      <rotate sid="rotateX">1 0 0 -15.1954</rotate>
+      <instance url="#testCameraShape-lib"/>
+    </node>
+    <node id="pointLight1" name="pointLight1">
+      <boundingbox>
+        <min>2. 3. 9.</min>
+        <max>4. 5. 11.</max>
+      </boundingbox>
+      <translate sid="translate">3. 4. 10.</translate>
+      <instance url="#pointLightShape1-lib"/>
+    </node>
+  </scene>
+</COLLADA>
Index: /ColladaPlugin/demo/media/dae/nehe_cube.dae
===================================================================
--- /ColladaPlugin/demo/media/dae/nehe_cube.dae	(revision 21)
+++ /ColladaPlugin/demo/media/dae/nehe_cube.dae	(revision 21)
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<COLLADA xmlns="http://www.collada.org/2005/COLLADASchema" version="1.3.0">
+  <asset>
+<copyright>Copyright 2005 Sony Computer Entertainment Inc., All Rights Reserved.</copyright>
+    <authoring_tool>editor</authoring_tool>
+    <up_axis>Y_UP</up_axis>
+    <unit name="centimeter" meter="1.e-002"/>
+    <author>fup</author>
+    <modified>2006-02-12</modified>
+  </asset>
+  <library type="IMAGE">
+    <image id="Img_Textures_Checker" name="Img_Textures_Checker" source="NeHe.bmp"/>
+  </library>
+  <library type="TEXTURE">
+    <texture id="Img_Textures_Checker-DIFFUSE">
+      <param name="DIFFUSE" type="float3" flow="OUT"/>
+      <technique profile="COMMON">
+        <input semantic="IMAGE" source="#Img_Textures_Checker"/>
+      </technique>
+    </texture>
+  </library>
+  <library type="MATERIAL">
+    <material id="Default" name="Default">
+      <shader>
+        <technique profile="COMMON">
+          <pass>
+            <input semantic="TEXTURE" source="#Img_Textures_Checker-DIFFUSE"/>
+            <program url="PHONG">
+              <param name="DIFFUSE" type="float3" flow="IN" sid="diffuse">1. 1. 1.</param>
+              <param name="AMBIENT" type="float3" flow="IN" sid="param1">0 0 0</param>
+              <param name="TRANSPARENT" type="float3" flow="IN" sid="transparent">0 0 0</param>
+              <param name="TRANSPARENCY" type="float" flow="IN">0</param>
+              <param name="EMISSION" type="float3" flow="IN" sid="param4">0 0 0</param>
+              <param name="SPECULAR" type="float3" flow="IN" sid="param5">0.5 0.5 0.5</param>
+              <param name="REFLECTIVE" type="float3" flow="IN" sid="param6">1. 1. 1.</param>
+              <param name="REFLECTIVITY" type="float" flow="IN" sid="param7">0.5</param>
+              <param name="SHININESS" type="float" flow="IN" sid="param8">10.</param>
+            </program>
+          </pass>
+        </technique>
+      </shader>
+    </material>
+  </library>
+  <library type="GEOMETRY">
+    <geometry id="box-lib" name="box">
+      <mesh>
+        <source id="box-lib-Position">
+          <float_array id="box-lib-Position-array" count="24">
+50. -50. 50.
+50. 50. 50.
+-50. 50. 50.
+-50. -50. 50.
+50. -50. -50.
+50. 50. -50.
+-50. 50. -50.
+-50. -50. -50.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#box-lib-Position-array" count="8" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+        </source>
+        <source id="box-lib-Normal">
+          <float_array id="box-lib-Normal-array" count="18">
+0 0 1.
+1. 0 0
+0 1. 0
+-1. 0 0
+0 -1. 0
+0 0 -1.
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#box-lib-Normal-array" count="6" stride="3">
+              <param name="X" type="float" flow="OUT"/>
+              <param name="Y" type="float" flow="OUT"/>
+              <param name="Z" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+        </source>
+        <source id="box-lib-map1" name="map1">
+          <float_array id="box-lib-map1-array" count="8">
+0 1
+1 1
+1 0
+0 0
+</float_array>
+          <technique profile="COMMON">
+            <accessor source="#box-lib-map1-array" count="4" stride="2">
+              <param name="S" type="float" flow="OUT"/>
+              <param name="T" type="float" flow="OUT"/>
+            </accessor>
+          </technique>
+        </source>
+        <vertices id="box-lib-Vertex">
+          <input semantic="POSITION" source="#box-lib-Position"/>
+        </vertices>
+        <polygons material="#Default" count="6">
+          <input semantic="VERTEX" idx="0" source="#box-lib-Vertex"/>
+          <input semantic="NORMAL" idx="1" source="#box-lib-Normal"/>
+          <input semantic="TEXCOORD" idx="2" source="#box-lib-map1"/>
+          <p>3 0 0 0 0 1 1 0 2 2 0 3</p>
+          <p>0 1 3 4 1 0 5 1 1 1 1 2</p>
+          <p>1 2 1 5 2 2 6 2 3 2 2 0</p>
+          <p>6 3 3 7 3 0 3 3 1 2 3 2</p>
+          <p>3 4 3 7 4 0 4 4 1 0 4 2</p>
+          <p>4 5 3 7 5 0 6 5 1 5 5 2</p>
+        </polygons>
+      </mesh>
+    </geometry>
+  </library>
+  <library type="LIGHT">
+    <light id="Lt_Light-lib" name="Lt_Light" type="POINT">
+      <param name="COLOR" type="float3" flow="IN" sid="param0">1. 1. 1.</param>
+      <param name="ATTENUATION" type="function" flow="IN">CONSTANT</param>
+      <param name="ATTENUATION_SCALE" type="float" flow="IN">1.</param>
+    </light>
+    <light id="pointLightShape1-lib" name="pointLightShape1" type="POINT">
+      <param name="COLOR" type="float3" flow="IN" sid="param0">1. 1. 1.</param>
+      <param name="ATTENUATION" type="function" flow="IN">CONSTANT</param>
+      <param name="ATTENUATION_SCALE" type="float" flow="IN">1.</param>
+    </light>
+  </library>
+  <library type="CAMERA">
+    <camera id="PerspCamera-lib" name="PerspCamera">
+      <technique profile="COMMON">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="YFOV" type="float" flow="IN" sid="param0">36.</param>
+            <param name="ZNEAR" type="float" flow="IN" sid="param1">10.</param>
+            <param name="ZFAR" type="float" flow="IN" sid="param2">3.2767e+006</param>
+          </program>
+        </optics>
+      </technique>
+    </camera>
+    <camera id="testCameraShape-lib" name="testCameraShape">
+      <technique profile="COMMON">
+        <optics>
+          <program url="PERSPECTIVE">
+            <param name="YFOV" type="float" flow="IN" sid="param0">37.85</param>
+            <param name="ZNEAR" type="float" flow="IN" sid="param1">1.e-002</param>
+            <param name="ZFAR" type="float" flow="IN" sid="param2">1000.</param>
+          </program>
+        </optics>
+      </technique>
+    </camera>
+  </library>
+  <scene name="texturedcube_I-Maya">
+    <boundingbox>
+      <min>-501. -50. -50.</min>
+      <max>50. 1001. 424.262</max>
+    </boundingbox>
+    <node id="Camera" name="Camera">
+      <boundingbox>
+        <min>-187.469 140.618 419.567</min>
+        <max>-184.005 143.486 424.231</max>
+      </boundingbox>
+      <translate sid="translate">-185.786 141.852 422.013</translate>
+      <rotate sid="rotateY">0 1 0 -23.25</rotate>
+      <rotate sid="rotateX">1 0 0 -17.9454</rotate>
+      <skew sid="shearYZ">1.51835e-007 0 0 1 0 1 0</skew>
+      <instance url="#PerspCamera-lib"/>
+    </node>
+    <node id="Light" name="Light">
+      <boundingbox>
+        <min>-501. 999. 399.</min>
+        <max>-499. 1001. 401.</max>
+      </boundingbox>
+      <translate sid="translate">-500. 1000. 400.</translate>
+      <instance url="#Lt_Light-lib"/>
+    </node>
+    <node id="Box" name="Box">
+      <boundingbox>
+        <min>-50. -50. -50.</min>
+        <max>50. 50. 50.</max>
+      </boundingbox>
+      <instance url="#box-lib"/>
+    </node>
+    <node id="testCamera" name="testCamera">
+      <boundingbox>
+        <min>-187.523 140.584 419.546</min>
+        <max>-183.955 143.486 424.262</max>
+      </boundingbox>
+      <translate sid="translate">-185.786 141.852 422.013</translate>
+      <rotate sid="rotateY">0 1 0 -23.25</rotate>
+      <rotate sid="rotateX">1 0 0 -17.9454</rotate>
+      <instance url="#testCameraShape-lib"/>
+    </node>
+    <node id="pointLight1" name="pointLight1">
+      <boundingbox>
+        <min>2. 3. 9.</min>
+        <max>4. 5. 11.</max>
+      </boundingbox>
+      <translate sid="translate">3. 4. 10.</translate>
+      <instance url="#pointLightShape1-lib"/>
+    </node>
+  </scene>
+</COLLADA>
Index: /ColladaPlugin/demo/media/gui/ColladaDemo.Layout
===================================================================
--- /ColladaPlugin/demo/media/gui/ColladaDemo.Layout	(revision 21)
+++ /ColladaPlugin/demo/media/gui/ColladaDemo.Layout	(revision 21)
@@ -0,0 +1,224 @@
+<?xml version="1.0" ?>
+<GUILayout>
+<Window Type="DefaultGUISheet" Name="root">
+
+	<Window Type="DefaultGUISheet" Name="debug_overlay">
+		<Property Name="AlwaysOnTop" Value="True" />
+		<Property Name="Disabled" Value="True" />
+		
+		<Window Type="TaharezLook/StaticText" Name="Panel 1">
+      <Property Name="UnifiedPosition" Value="{{0,0},{0.83,0}}" />
+      <Property Name="UnifiedSize" Value="{{0.23,0},{0.17,0}}" />
+			<Property Name="TopLeftFrameImage" Value="set:OgreGuiImagery image:BoxTopLeft" />
+			<Property Name="TopRightFrameImage" Value="set:OgreGuiImagery image:BoxTopRight" />
+			<Property Name="BottomLeftFrameImage" Value="set:OgreGuiImagery image:BoxBottomLeft" />
+			<Property Name="BottomRightFrameImage" Value="set:OgreGuiImagery image:BoxBottomRight" />
+			<Property Name="LeftFrameImage" Value="set:OgreGuiImagery image:BoxLeft" />
+			<Property Name="TopFrameImage" Value="set:OgreGuiImagery image:BoxTop" />
+			<Property Name="RightFrameImage" Value="set:OgreGuiImagery image:BoxRight" />
+			<Property Name="BottomFrameImage" Value="set:OgreGuiImagery image:BoxBottom" />
+			<Property Name="BackgroundImage" Value="set:OgreGuiImagery image:BoxBack" />
+			<Property Name="Alpha" Value="0.9" />
+			<Property Name="InheritsAlpha" Value="False" />
+	
+			<Window Type="TaharezLook/StaticText" Name="OPCurrentFPS">
+				<Property Name="FrameEnabled" Value="False" />
+				<Property Name="BackgroundEnabled" Value="False" />
+				<Property Name="Font" Value="BlueHighway-10" />
+        <Property Name="UnifiedPosition" Value="{{0.075,0},{0.12,0}}" />
+        <Property Name="UnifiedSize" Value="{{0.85,0},{0.25,0}}" />
+				<Property Name="TextColours" Value="tl:FF4FF06F tr:FF4FF06F bl:FF4FF06F br:FF4FF06F" />
+				<Property Name="HorzFormatting" Value="HorzCentred" />
+				<Property Name="Text" Value="Current FPS: " />
+			</Window>
+
+      <Window Type="TaharezLook/StaticImage" Name="OPBar1">
+        <Property Name="FrameEnabled" Value="False" />
+        <Property Name="BackgroundEnabled" Value="False" />
+        <Property Name="UnifiedPosition" Value="{{0.2,0},{0.27,0}}" />
+        <Property Name="UnifiedSize" Value="{{0.6,0},{0.025,0}}" />
+      </Window>
+
+      <Window Type="TaharezLook/StaticText" Name="OPAverageFPS">
+        <Property Name="FrameEnabled" Value="False" />
+        <Property Name="BackgroundEnabled" Value="False" />
+        <Property Name="Font" Value="BlueHighway-10" />
+        <Property Name="UnifiedPosition" Value="{{0.075,0},{0.32,0}}" />
+        <Property Name="UnifiedSize" Value="{{1.0,0},{0.25,0}}" />
+        <Property Name="TextColours" Value="tl:FFFFF5F0 tr:FFFFF5F0 bl:FFFFF510 br:FFFFF5F0" />
+        <Property Name="Text" Value="Average FPS: " />
+      </Window>
+      
+			<Window Type="TaharezLook/StaticText" Name="OPWorstFPS">
+				<Property Name="FrameEnabled" Value="False" />
+				<Property Name="BackgroundEnabled" Value="False" />
+				<Property Name="Font" Value="BlueHighway-10" />
+				<Property Name="UnifiedPosition" Value="{{0.075,0},{0.45,0}}" />
+				<Property Name="UnifiedSize" Value="{{1.0,0},{0.25,0}}" />
+				<Property Name="TextColours" Value="tl:FFFFF5F0 tr:FFFFF5F0 bl:FFFFF510 br:FFFFF5F0" />
+				<Property Name="Text" Value="Worst FPS: " />
+			</Window>
+
+			<Window Type="TaharezLook/StaticText" Name="OPBestFPS">
+				<Property Name="FrameEnabled" Value="False" />
+				<Property Name="BackgroundEnabled" Value="False" />
+				<Property Name="Font" Value="BlueHighway-10" />
+				<Property Name="UnifiedPosition" Value="{{0.075,0},{0.58,0}}" />
+				<Property Name="UnifiedSize" Value="{{1.0,0},{0.25,0}}" />
+				<Property Name="TextColours" Value="tl:FFFFF5F0 tr:FFFFF5F0 bl:FFFFF510 br:FFFFF5F0" />
+				<Property Name="Text" Value="Best FPS: " />
+			</Window>
+
+			<Window Type="TaharezLook/StaticText" Name="OPTriCount">
+				<Property Name="FrameEnabled" Value="False" />
+				<Property Name="BackgroundEnabled" Value="False" />
+				<Property Name="Font" Value="BlueHighway-10" />
+				<Property Name="UnifiedPosition" Value="{{0.075,0},{0.71,0}}" />
+				<Property Name="UnifiedSize" Value="{{1.0,0},{0.25,0}}" />
+				<Property Name="TextColours" Value="tl:FFFFF5F0 tr:FFFFF5F0 bl:FFFFF510 br:FFFFF5F0" />
+				<Property Name="Text" Value="Triangle Count: " />
+			</Window>
+
+		</Window>
+
+		<Window Type="TaharezLook/StaticText" Name="OPDebugMsg">
+			<Property Name="FrameEnabled" Value="False" />
+			<Property Name="BackgroundEnabled" Value="False" />
+			<Property Name="Font" Value="BlueHighway-10" />
+			<Property Name="UnifiedPosition" Value="{{0.25,0},{0.93,0}}" />
+			<Property Name="UnifiedSize" Value="{{0.65,0},{0.07,0}}" />
+			<Property Name="TextColours" Value="tl:A0FFFFFF tr:A0FFFFFF bl:A0FFFFFF br:A0FFFFFF" />
+			<Property Name="InheritsAlpha" Value="False" />
+			<Property Name="VertFormatting" Value="VertCentred" />
+			<Property Name="HorzFormatting" Value="WordWrapCentred" />
+		</Window>
+
+		<Window Type="TaharezLook/StaticImage" Name="OgreLogo">
+			<Property Name="FrameEnabled" Value="False" />
+			<Property Name="BackgroundEnabled" Value="False" />
+			<Property Name="UnifiedPosition" Value="{{0.9,0},{0.95,0}}" />
+			<Property Name="UnifiedSize" Value="{{0.1,0},{0.05,0}}" />
+			<Property Name="Image" Value="set:OgreGuiImagery image:OgreLogo" />
+			<Property Name="Alpha" Value="0.75" />
+			<Property Name="InheritsAlpha" Value="False" />
+		</Window>
+
+		<Window Type="TaharezLook/StaticImage" Name="CeguiLogo">
+			<Property Name="FrameEnabled" Value="False" />
+			<Property Name="BackgroundEnabled" Value="False" />
+			<Property Name="UnifiedPosition" Value="{{0.9125,0},{0.9115,0}}" />
+			<Property Name="UnifiedSize" Value="{{0.075,0},{0.0385,0}}" />
+			<Property Name="Image" Value="set:OgreGuiImagery image:CeguiLogo" />
+			<Property Name="Alpha" Value="0.75" />
+			<Property Name="InheritsAlpha" Value="False" />
+		</Window>
+
+	</Window>
+
+	<Window Type="DefaultGUISheet" Name="ColladaDemo">
+
+		<Property Name="RelativeMaxSize" Value="{{1,0},{2,0}}" />
+		<Property Name="UnifiedSize" Value="{{1,0},{2,0}}" />
+
+
+		<Window Type="TaharezLook/FrameWindow" Name="ColladaDemo/MainWin">
+			<Property Name="UnifiedPosition" Value="{{0,0},{0,0}}" />
+			<Property Name="RelativeMaxSize" Value="{{0.23,0},{0.4,0}}" />
+			<Property Name="RelativeMinSize" Value="{{0.23,0},{0.4,0}}" />
+			<Property Name="UnifiedSize" Value="{{0.23,0},{0.4,0}}" />
+			<Property Name="Text" Value="Ogre Collada Demo" />
+			<Property Name="Alpha" Value="0.8" />
+			<Property Name="CloseButtonEnabled" Value="False" />
+
+			<Window Type="TaharezLook/StaticText" Name="DaeTxt">
+				<Property Name="UnifiedPosition" Value="{{0.05,0},{0.17,0}}" />
+				<Property Name="RelativeMaxSize" Value="{{0.9,0},{0.06,0}}" />
+				<Property Name="RelativeMinSize" Value="{{0.9,0},{0.06,0}}" />
+				<Property Name="UnifiedSize" Value="{{0.9,0},{0.06,0}}" />
+				<Property Name="HorzFormatting" Value="LeftAligned" />
+				<Property Name="Text" Value="Active Collada Document" />
+				<Property Name="FrameEnabled" Value="False" />
+				<Property Name="BackgroundEnabled" Value="False" />
+				<Property Name="InheritsAlpha" Value="False" />
+			</Window>
+
+			<Window Type="TaharezLook/Combobox" Name="DaeCombos">
+				<Property Name="UnifiedPosition" Value="{{0.05,0},{0.28,0}}" />
+				<Property Name="RelativeMaxSize" Value="{{0.9,0},{0.25,0}}" />
+				<Property Name="RelativeMinSize" Value="{{0.9,0},{0.25,0}}" />
+				<Property Name="UnifiedSize" Value="{{0.9,0},{0.25,0}}" />
+				<Property Name="InheritsAlpha" Value="False" />
+				<Property Name="ReadOnly" Value="True" />
+				<Property Name="ClippedByParent" Value="False" />
+			</Window>
+
+			<Window Type="TaharezLook/Checkbox" Name="AutoReloadCB">
+				<Property Name="UnifiedPosition" Value="{{0.25,0},{0.37,0}}" />
+				<Property Name="RelativeMaxSize" Value="{{0.12,0},{0.04,0}}" />
+				<Property Name="RelativeMinSize" Value="{{0.12,0},{0.04,0}}" />
+				<Property Name="UnifiedSize" Value="{{0.33,0},{0.04,0}}" />
+				<Property Name="Text" Value="Auto Reload" />
+				<Property Name="InheritsAlpha" Value="False" />
+			</Window>
+			
+			<Window Type="TaharezLook/StaticText" Name="CameraTxt">
+				<Property Name="UnifiedPosition" Value="{{0.05,0},{0.47,0}}" />
+				<Property Name="RelativeMaxSize" Value="{{0.9,0},{0.06,0}}" />
+				<Property Name="RelativeMinSize" Value="{{0.9,0},{0.06,0}}" />
+				<Property Name="UnifiedSize" Value="{{0.9,0},{0.06,0}}" />
+				<Property Name="HorzFormatting" Value="LeftAligned" />
+				<Property Name="Text" Value="Active Camera" />
+				<Property Name="FrameEnabled" Value="False" />
+				<Property Name="BackgroundEnabled" Value="False" />
+				<Property Name="InheritsAlpha" Value="False" />
+			</Window>
+
+			<Window Type="TaharezLook/Combobox" Name="CameraCombos">
+				<Property Name="UnifiedPosition" Value="{{0.05,0},{0.58,0}}" />
+				<Property Name="RelativeMaxSize" Value="{{0.9,0},{0.25,0}}" />
+				<Property Name="RelativeMinSize" Value="{{0.9,0},{0.25,0}}" />
+				<Property Name="UnifiedSize" Value="{{0.9,0},{0.25,0}}" />
+				<Property Name="InheritsAlpha" Value="False" />
+				<Property Name="ReadOnly" Value="True" />
+				<Property Name="ClippedByParent" Value="False" />
+			</Window>
+
+			
+			<Window Type="TaharezLook/Button" Name="ExitDemoBtn">
+				<Property Name="UnifiedPosition" Value="{{0.25,0},{0.8,0}}" />
+				<Property Name="RelativeMaxSize" Value="{{0.12,0},{0.04,0}}" />
+				<Property Name="RelativeMinSize" Value="{{0.12,0},{0.04,0}}" />
+				<Property Name="UnifiedSize" Value="{{0.33,0},{0.04,0}}" />
+				<Property Name="Text" Value="Exit Demo" />
+				<Property Name="InheritsAlpha" Value="False" />
+			</Window>
+
+
+		</Window>
+
+		<Window Type="TaharezLook/FrameWindow" Name="ColladaDemo/LoadWin">
+			<Property Name="UnifiedPosition" Value="{{0.43,0},{0.20,0}}" />
+			<Property Name="RelativeMaxSize" Value="{{0.23,0},{0.2,0}}" />
+			<Property Name="RelativeMinSize" Value="{{0.23,0},{0.2,0}}" />
+			<Property Name="UnifiedSize" Value="{{0.23,0},{0.2,0}}" />
+			<Property Name="Alpha" Value="0.8" />
+			<Property Name="CloseButtonEnabled" Value="False" />
+			
+			<Window Type="TaharezLook/StaticText" Name="LoadingTxt">
+				<Property Name="UnifiedPosition" Value="{{0.2,0},{0.4,0}}" />
+				<Property Name="RelativeMaxSize" Value="{{0.3,0},{0.06,0}}" />
+				<Property Name="RelativeMinSize" Value="{{0.3,0},{0.06,0}}" />
+				<Property Name="UnifiedSize" Value="{{0.3,0},{0.08,0}}" />
+				<Property Name="HorzFormatting" Value="LeftAligned" />
+				<Property Name="Text" Value="Loading dae file..." />
+				<Property Name="FrameEnabled" Value="False" />
+				<Property Name="BackgroundEnabled" Value="False" />
+				<Property Name="InheritsAlpha" Value="False" />
+			</Window>
+		</Window>	
+
+	</Window>
+
+</Window>
+
+</GUILayout>
Index: /ColladaPlugin/demo/media/gui/ColladaDemoCegui.config
===================================================================
--- /ColladaPlugin/demo/media/gui/ColladaDemoCegui.config	(revision 21)
+++ /ColladaPlugin/demo/media/gui/ColladaDemoCegui.config	(revision 21)
@@ -0,0 +1,6 @@
+<?xml version="1.0" ?>
+<CEGUIConfig
+	Scheme="TaharezLookSkin.scheme"
+	Layout="ColladaDemo.layout"
+	DefaultFont="BlueHighway-12"
+/>
Index: /ColladaPlugin/demo/media/gui/TaharezLook.imageset
===================================================================
--- /ColladaPlugin/demo/media/gui/TaharezLook.imageset	(revision 21)
+++ /ColladaPlugin/demo/media/gui/TaharezLook.imageset	(revision 21)
@@ -0,0 +1,233 @@
+<?xml version="1.0" ?>
+<Imageset Name="TaharezLook" Imagefile="TaharezLook.tga" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true">
+	<Image Name="ClientBrush" XPos="2" YPos="2" Width="64" Height="64" />
+	<Image Name="WindowLeftEdge" XPos="6" YPos="95" Width="1" Height="22" XOffset="4" />
+	<Image Name="WindowRightEdge" XPos="34" YPos="95" Width="1" Height="22" XOffset="-5" />
+	<Image Name="WindowTopEdge" XPos="9" YPos="68" Width="23" Height="1" />
+	<Image Name="WindowBottomEdge" XPos="9" YPos="143" Width="23" Height="1" />
+	<Image Name="WindowTopLeft" XPos="2" YPos="68" Width="5" Height="24" />
+	<Image Name="WindowTopRight" XPos="34" YPos="68" Width="5" Height="24" />
+	<Image Name="WindowBottomLeft" XPos="2" YPos="120" Width="5" Height="24" />
+	<Image Name="WindowBottomRight" XPos="34" YPos="120" Width="5" Height="24" />
+	<Image Name="ButtonLeftNormal" XPos="68" YPos="20" Width="12" Height="16" />
+	<Image Name="ButtonMiddleNormal" XPos="82" YPos="20" Width="12" Height="16" />
+	<Image Name="ButtonRightNormal" XPos="96" YPos="20" Width="12" Height="16" />
+	<Image Name="ButtonLeftPushed" XPos="68" YPos="38" Width="12" Height="16" />
+	<Image Name="ButtonMiddlePushed" XPos="82" YPos="38" Width="12" Height="16" />
+	<Image Name="ButtonRightPushed" XPos="96" YPos="38" Width="12" Height="16" />
+	<Image Name="ButtonLeftHighlight" XPos="68" YPos="56" Width="12" Height="16" />
+	<Image Name="ButtonMiddleHighlight" XPos="82" YPos="56" Width="12" Height="16" />
+	<Image Name="ButtonRightHighlight" XPos="96" YPos="56" Width="12" Height="16" />
+	<Image Name="CheckboxNormal" XPos="110" YPos="2" Width="12" Height="12" />
+	<Image Name="CheckboxHover" XPos="110" YPos="30" Width="12" Height="12" />
+	<Image Name="CheckboxMark" XPos="110" YPos="16" Width="12" Height="12" />
+	<Image Name="RadioButtonNormal" XPos="124" YPos="2" Width="12" Height="12" />
+	<Image Name="RadioButtonHover" XPos="124" YPos="30" Width="12" Height="12" />
+	<Image Name="RadioButtonMark" XPos="124" YPos="16" Width="12" Height="12" />
+	<Image Name="TitlebarLeft" XPos="68" YPos="2" Width="8" Height="16" />
+	<Image Name="TitlebarMiddle" XPos="78" YPos="2" Width="8" Height="16" />
+	<Image Name="TitlebarRight" XPos="88" YPos="2" Width="8" Height="16" />
+	<Image Name="NewTitlebarLeft" XPos="61" YPos="127" Width="13" Height="16" />
+	<Image Name="NewTitlebarMiddle" XPos="77" YPos="127" Width="12" Height="16" />
+	<Image Name="NewTitlebarRight" XPos="92" YPos="127" Width="12" Height="16" />
+	<Image Name="SysAreaMiddle" XPos="107" YPos="127" Width="12" Height="16" />
+	<Image Name="SysAreaRight" XPos="122" YPos="127" Width="13" Height="16" />
+	<Image Name="StaticLeft" XPos="41" YPos="89" Width="6" Height="6" />
+	<Image Name="StaticRight" XPos="63" YPos="89" Width="6" Height="6" />
+	<Image Name="StaticTop" XPos="52" YPos="78" Width="6" Height="6" />
+	<Image Name="StaticBottom" XPos="52" YPos="100" Width="6" Height="6" />
+	<Image Name="StaticTopLeft" XPos="41" YPos="78" Width="6" Height="6" />
+	<Image Name="StaticTopRight" XPos="63" YPos="78" Width="6" Height="6" />
+	<Image Name="StaticBottomLeft" XPos="41" YPos="100" Width="6" Height="6" />
+	<Image Name="StaticBottomRight" XPos="63" YPos="100" Width="6" Height="6" />
+	<Image Name="StaticBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="ProgressBarLeft" XPos="71" YPos="74" Width="7" Height="12" />
+	<Image Name="ProgressBarMiddle" XPos="80" YPos="74" Width="6" Height="12" />
+	<Image Name="ProgressBarRight" XPos="88" YPos="74" Width="6" Height="12" />
+	<Image Name="ProgressBarDimSegment" XPos="96" YPos="74" Width="8" Height="12" />
+	<Image Name="ProgressBarLitSegment" XPos="106" YPos="74" Width="8" Height="12" />
+	<Image Name="EditBoxLeft" XPos="41" YPos="108" Width="4" Height="18" />
+	<Image Name="EditBoxMiddle" XPos="47" YPos="108" Width="4" Height="18" />
+	<Image Name="EditBoxRight" XPos="53" YPos="108" Width="4" Height="18" />
+	<Image Name="EditBoxCarat" XPos="60" YPos="108" Width="4" Height="18" />
+	<Image Name="SpinnerUpNormal" XPos="68" YPos="110" Width="10" Height="6" />
+	<Image Name="SpinnerDownNormal" XPos="68" YPos="118" Width="10" Height="6" />
+	<Image Name="SpinnerUpHover" XPos="82" YPos="110" Width="10" Height="6" />
+	<Image Name="SpinnerDownHover" XPos="82" YPos="118" Width="10" Height="6" />
+	<Image Name="TextSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
+	<Image Name="VertScrollTop" XPos="182" YPos="2" Width="20" Height="8" />
+	<Image Name="VertScrollMiddle" XPos="182" YPos="12" Width="20" Height="8" />
+	<Image Name="VertScrollBottom" XPos="182" YPos="22" Width="20" Height="8" />
+	<Image Name="VertScrollBarSegment" XPos="206" YPos="2" Width="4" Height="10" />
+	<Image Name="VertScrollThumbNormal" XPos="214" YPos="2" Width="8" Height="24" />
+	<Image Name="VertScrollThumbHover" XPos="224" YPos="2" Width="8" Height="24" />
+	<Image Name="VertScrollUpNormal" XPos="196" YPos="32" Width="12" Height="12" />
+	<Image Name="VertScrollDownNormal" XPos="182" YPos="32" Width="12" Height="12" />
+	<Image Name="VertScrollUpHover" XPos="196" YPos="46" Width="12" Height="12" />
+	<Image Name="VertScrollDownHover" XPos="182" YPos="46" Width="12" Height="12" />
+	<Image Name="MiniVertScrollBarSegment" XPos="207" YPos="60" Width="4" Height="10" />
+	<Image Name="MiniVertScrollThumbNormal" XPos="214" YPos="59" Width="7" Height="22" />
+	<Image Name="MiniVertScrollThumbTopNormal" XPos="214" YPos="59" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbMiddleNormal" XPos="214" YPos="65" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbBottomNormal" XPos="214" YPos="76" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbTopHover" XPos="223" YPos="59" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbMiddleHover" XPos="223" YPos="65" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbBottomHover" XPos="223" YPos="76" Width="7" Height="5" />
+	<Image Name="MiniVertScrollThumbHover" XPos="223" YPos="59" Width="7" Height="22" />
+	<Image Name="MiniVertScrollUpNormal" XPos="194" YPos="60" Width="10" Height="9" />
+	<Image Name="MiniVertScrollDownNormal" XPos="182" YPos="59" Width="10" Height="9" />
+	<Image Name="MiniVertScrollUpHover" XPos="194" YPos="70" Width="10" Height="9" />
+	<Image Name="MiniVertScrollDownHover" XPos="182" YPos="69" Width="10" Height="9" />
+	<Image Name="VertSliderBody" XPos="234" YPos="2" Width="9" Height="48" />
+	<Image Name="VertSliderThumbNormal" XPos="217" YPos="28" Width="15" Height="6" />
+	<Image Name="VertSliderThumbHover" XPos="217" YPos="36" Width="15" Height="6" />
+	<Image Name="MiniHorzScrollBarSegment" XPos="244" YPos="80" Width="10" Height="4" />
+	<Image Name="MiniHorzScrollThumbNormal" XPos="233" YPos="87" Width="22" Height="7" />
+	<Image Name="MiniHorzScrollThumbLeftNormal" XPos="233" YPos="87" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbMiddleNormal" XPos="239" YPos="87" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbRightNormal" XPos="250" YPos="87" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbHover" XPos="233" YPos="96" Width="22" Height="7" />
+	<Image Name="MiniHorzScrollThumbLeftHover" XPos="233" YPos="96" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbMiddleHover" XPos="239" YPos="96" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollThumbRightHover" XPos="250" YPos="96" Width="5" Height="7" />
+	<Image Name="MiniHorzScrollLeftNormal" XPos="246" YPos="55" Width="9" Height="10" />
+	<Image Name="MiniHorzScrollRightNormal" XPos="245" YPos="67" Width="9" Height="10" />
+	<Image Name="MiniHorzScrollLeftHover" XPos="236" YPos="55" Width="9" Height="10" />
+	<Image Name="MiniHorzScrollRightHover" XPos="235" YPos="67" Width="9" Height="10" />
+	<Image Name="ListboxLeft" XPos="41" YPos="89" Width="7" Height="6" />
+	<Image Name="ListboxRight" XPos="62" YPos="89" Width="7" Height="6" />
+	<Image Name="ListboxTop" XPos="52" YPos="78" Width="6" Height="7" />
+	<Image Name="ListboxBottom" XPos="52" YPos="99" Width="6" Height="7" />
+	<Image Name="ListboxTopLeft" XPos="41" YPos="78" Width="7" Height="7" />
+	<Image Name="ListboxTopRight" XPos="62" YPos="78" Width="7" Height="7" />
+	<Image Name="ListboxBottomLeft" XPos="41" YPos="99" Width="7" Height="7" />
+	<Image Name="ListboxBottomRight" XPos="62" YPos="99" Width="7" Height="7" />
+	<Image Name="ListboxBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="ListboxSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
+	<Image Name="ComboboxEditLeft" XPos="138" YPos="2" Width="8" Height="16" />
+	<Image Name="ComboboxEditMiddle" XPos="148" YPos="2" Width="8" Height="16" />
+	<Image Name="ComboboxListButtonNormal" XPos="158" YPos="2" Width="16" Height="16" />
+	<Image Name="ComboboxListButtonHover" XPos="158" YPos="20" Width="16" Height="16" />
+	<Image Name="ComboboxListLeft" XPos="138" YPos="48" Width="8" Height="8" />
+	<Image Name="ComboboxListRight" XPos="158" YPos="48" Width="8" Height="8" />
+	<Image Name="ComboboxListTop" XPos="148" YPos="48" Width="8" Height="8" />
+	<Image Name="ComboboxListBottom" XPos="148" YPos="58" Width="8" Height="8" />
+	<Image Name="ComboboxListTopLeft" XPos="138" YPos="38" Width="8" Height="8" />
+	<Image Name="ComboboxListTopRight" XPos="158" YPos="38" Width="8" Height="8" />
+	<Image Name="ComboboxListBottomLeft" XPos="138" YPos="58" Width="8" Height="8" />
+	<Image Name="ComboboxListBottomRight" XPos="158" YPos="58" Width="8" Height="8" />
+	<Image Name="ComboboxListBackdrop" XPos="148" YPos="48" Width="8" Height="8" />
+	<Image Name="ComboboxSelectionBrush" XPos="8" YPos="70" Width="16" Height="16" />
+	<Image Name="ComboboxDividerLeft" XPos="138" YPos="68" Width="14" Height="1" />
+	<Image Name="ComboboxDividerMiddle" XPos="154" YPos="68" Width="8" Height="1" />
+	<Image Name="ComboboxDividerRight" XPos="164" YPos="68" Width="14" Height="1" />
+	<Image Name="HeaderBarBackdropNormal" XPos="230" YPos="163" Width="10" Height="12" />
+	<Image Name="HeaderBarBackdropHover" XPos="230" YPos="163" Width="10" Height="12" />
+	<Image Name="HeaderBarSplitterNormal" XPos="225" YPos="92" Width="3" Height="16" />
+	<Image Name="HeaderBarSplitterHover" XPos="200" YPos="92" Width="3" Height="16" />
+	<Image Name="HeaderBarSortUp" XPos="233" YPos="178" Width="8" Height="8" />
+	<Image Name="HeaderBarSortDown" XPos="244" YPos="178" Width="8" Height="8" />
+	<Image Name="MultiListLeft" XPos="170" YPos="92" Width="7" Height="6" />
+	<Image Name="MultiListRight" XPos="191" YPos="92" Width="7" Height="6" />
+	<Image Name="MultiListTop" XPos="181" YPos="81" Width="6" Height="7" />
+	<Image Name="MultiListBottom" XPos="181" YPos="102" Width="6" Height="7" />
+	<Image Name="MultiListTopLeft" XPos="170" YPos="81" Width="7" Height="7" />
+	<Image Name="MultiListTopRight" XPos="191" YPos="81" Width="7" Height="7" />
+	<Image Name="MultiListBottomLeft" XPos="170" YPos="102" Width="7" Height="7" />
+	<Image Name="MultiListBottomRight" XPos="191" YPos="102" Width="7" Height="7" />
+	<Image Name="MultiListBackdrop" XPos="181" YPos="92" Width="6" Height="6" />
+	<Image Name="MultiListSelectionBrush" XPos="9" YPos="71" Width="14" Height="14" />
+	<Image Name="AltProgressLeft" XPos="71" YPos="88" Width="8" Height="12" />
+	<Image Name="AltProgressMiddle" XPos="81" YPos="88" Width="8" Height="12" />
+	<Image Name="AltProgressRight" XPos="91" YPos="88" Width="8" Height="12" />
+	<Image Name="AltProgressQuarter" XPos="102" YPos="89" Width="3" Height="4" />
+	<Image Name="AltProgressHalf" XPos="109" YPos="89" Width="4" Height="5" />
+	<Image Name="AltProgressLight1" XPos="100" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight2" XPos="106" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight3" XPos="112" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight4" XPos="118" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight5" XPos="124" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight6" XPos="130" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight7" XPos="136" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight8" XPos="142" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight9" XPos="148" YPos="97" Width="4" Height="8" />
+	<Image Name="AltProgressLight10" XPos="154" YPos="97" Width="4" Height="8" />
+	<Image Name="CloseButtonNormal" XPos="41" YPos="128" Width="16" Height="16" />
+	<Image Name="CloseButtonHover" XPos="41" YPos="146" Width="16" Height="16" />
+	<Image Name="CloseButtonPressed" XPos="41" YPos="164" Width="16" Height="16" />
+	<Image Name="NewCloseButtonNormal" XPos="90" YPos="146" Width="10" Height="10" />
+	<Image Name="NewCloseButtonHover" XPos="90" YPos="146" Width="10" Height="10" />
+	<Image Name="NewCloseButtonPressed" XPos="90" YPos="146" Width="10" Height="10" />
+	<Image Name="MultiLineEditboxLeft" XPos="41" YPos="89" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxRight" XPos="63" YPos="89" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxTop" XPos="52" YPos="78" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxBottom" XPos="52" YPos="100" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxTopLeft" XPos="41" YPos="78" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxTopRight" XPos="63" YPos="78" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxBottomLeft" XPos="41" YPos="100" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxBottomRight" XPos="63" YPos="100" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxBackdrop" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="MultiLineEditboxSelectionBrush" XPos="9" YPos="71" Width="14" Height="14" />
+	<Image Name="MouseTarget" XPos="182" YPos="127" Width="17" Height="17" XOffset="-8" YOffset="-8" />
+	<Image Name="MouseArrow" XPos="138" YPos="127" Width="31" Height="25" XOffset="0" YOffset="0" />
+	<Image Name="MouseMoveCursor" XPos="201" YPos="127" Width="18" Height="18" XOffset="-8" YOffset="-8" />
+	<Image Name="MouseNoSoCursor" XPos="221" YPos="127" Width="8" Height="18" XOffset="-3" YOffset="-8" />
+	<Image Name="MouseEsWeCursor" XPos="182" YPos="150" Width="18" Height="8" XOffset="-8" YOffset="-3" />
+	<Image Name="MouseNeSwCursor" XPos="201" YPos="147" Width="14" Height="14" XOffset="-7" YOffset="-7" />
+	<Image Name="MouseNwSeCursor" XPos="230" YPos="126" Width="14" Height="14" XOffset="-7" YOffset="-7" />
+	<Image Name="MouseTextBar" XPos="173" YPos="127" Width="7" Height="18" XOffset="-2" YOffset="-9" />
+	<Image Name="TabControlButtonPaneFiller" XPos="197" YPos="201" Width="7" Height="1" />
+	<Image Name="TabPaneLeft" XPos="41" YPos="89" Width="7" Height="6" />
+	<Image Name="TabPaneRight" XPos="62" YPos="89" Width="7" Height="6" />
+	<Image Name="TabPaneLower" XPos="52" YPos="99" Width="6" Height="7" />
+	<Image Name="TabPaneLowerLeft" XPos="41" YPos="99" Width="7" Height="7" />
+	<Image Name="TabPaneLowerRight" XPos="62" YPos="99" Width="7" Height="7" />
+	<Image Name="TabPaneMiddle" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="TabButtonLeftNormal" XPos="41" YPos="89" Width="7" Height="6" />
+	<Image Name="TabButtonRightNormal" XPos="62" YPos="89" Width="7" Height="6" />
+	<Image Name="TabButtonUpperNormal" XPos="52" YPos="78" Width="6" Height="7" />
+	<Image Name="TabButtonLowerNormal" XPos="52" YPos="99" Width="6" Height="7" />
+	<Image Name="TabButtonUpperLeftNormal" XPos="41" YPos="78" Width="7" Height="7" />
+	<Image Name="TabButtonUpperRightNormal" XPos="62" YPos="78" Width="7" Height="7" />
+	<Image Name="TabButtonLowerLeftNormal" XPos="41" YPos="99" Width="7" Height="7" />
+	<Image Name="TabButtonLowerRightNormal" XPos="187" YPos="195" Width="7" Height="7" />
+	<Image Name="TabButtonMiddleNormal" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="TabButtonLeftSelected" XPos="41" YPos="89" Width="7" Height="6" />
+	<Image Name="TabButtonRightSelected" XPos="62" YPos="89" Width="7" Height="6" />
+	<Image Name="TabButtonUpperSelected" XPos="52" YPos="78" Width="6" Height="7" />
+	<Image Name="TabButtonLowerSelected" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="TabButtonUpperLeftSelected" XPos="41" YPos="78" Width="7" Height="7" />
+	<Image Name="TabButtonUpperRightSelected" XPos="62" YPos="78" Width="7" Height="7" />
+	<Image Name="TabButtonLowerLeftSelected" XPos="41" YPos="99" Width="7" Height="7" />
+	<Image Name="TabButtonLowerRightSelected" XPos="62" YPos="99" Width="7" Height="7" />
+	<Image Name="TabButtonMiddleSelected" XPos="52" YPos="89" Width="6" Height="6" />
+	<Image Name="TooltipTopLeft" XPos="61" YPos="160" Width="4" Height="4" />
+	<Image Name="TooltipTopRight" XPos="85" YPos="160" Width="5" Height="4" />
+	<Image Name="TooltipBottomLeft" XPos="61" YPos="184" Width="4" Height="5" />
+	<Image Name="TooltipBottomRight" XPos="85" YPos="184" Width="5" Height="5" />
+	<Image Name="TooltipLeftEdge" XPos="61" YPos="171" Width="4" Height="6" />
+	<Image Name="TooltipRightEdge" XPos="85" YPos="171" Width="5" Height="6" />
+	<Image Name="TooltipTopEdge" XPos="72" YPos="160" Width="6" Height="4" />
+	<Image Name="TooltipBottomEdge" XPos="72" YPos="184" Width="6" Height="5" />
+	<Image Name="TooltipMiddle" XPos="72" YPos="171" Width="6" Height="6" />
+	<Image Name="MenuTopLeft" XPos="166" YPos="204" Width="2" Height="2" />
+	<Image Name="MenuTopRight" XPos="175" YPos="204" Width="3" Height="2" />
+	<Image Name="MenuBottomLeft" XPos="166" YPos="213" Width="2" Height="3" />
+	<Image Name="MenuBottomRight" XPos="175" YPos="213" Width="3" Height="3" />
+	<Image Name="MenuLeft" XPos="166" YPos="209" Width="2" Height="1" />
+	<Image Name="MenuRight" XPos="175" YPos="209" Width="3" Height="1" />
+	<Image Name="MenuTop" XPos="171" YPos="204" Width="1" Height="2" />
+	<Image Name="MenuBottom" XPos="171" YPos="213" Width="1" Height="3" />
+	<Image Name="MenuMiddle" XPos="171" YPos="209" Width="1" Height="1" />
+	<Image Name="PopupMenuFrameTopLeft" XPos="186" YPos="204" Width="2" Height="2" />
+	<Image Name="PopupMenuFrameTopRight" XPos="195" YPos="204" Width="4" Height="2" />
+	<Image Name="PopupMenuFrameBottomLeft" XPos="186" YPos="213" Width="2" Height="4" />
+	<Image Name="PopupMenuFrameBottomRight" XPos="195" YPos="213" Width="4" Height="4" />
+	<Image Name="PopupMenuFrameLeft" XPos="186" YPos="209" Width="2" Height="1" />
+	<Image Name="PopupMenuFrameRight" XPos="195" YPos="209" Width="4" Height="1" />
+	<Image Name="PopupMenuFrameTop" XPos="191" YPos="204" Width="1" Height="2" />
+	<Image Name="PopupMenuFrameBottom" XPos="191" YPos="213" Width="1" Height="4" />
+	<Image Name="PopupMenuMiddle" XPos="191" YPos="209" Width="1" Height="1" />
+	<Image Name="PopupMenuArrowRight" XPos="179" YPos="204" Width="5" Height="5" />
+	<Image Name="PopupMenuArrowLeft" XPos="179" YPos="210" Width="5" Height="5" />
+</Imageset>
Index: /ColladaPlugin/demo/media/gui/TaharezLook.looknfeel
===================================================================
--- /ColladaPlugin/demo/media/gui/TaharezLook.looknfeel	(revision 21)
+++ /ColladaPlugin/demo/media/gui/TaharezLook.looknfeel	(revision 21)
@@ -0,0 +1,3546 @@
+<?xml version="1.0" ?>
+<Falagard>
+    <!--
+    ***************************************************
+        TaharezLook/Button
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Button">
+        <PropertyDefinition name="VertLabelFormatting" initialValue="CentreAligned" />
+        <PropertyDefinition name="HorzLabelFormatting" initialValue="CentreAligned" />
+        <ImagerySection name="label">
+            <TextComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <VertFormatProperty name="VertLabelFormatting" />
+                <HorzFormatProperty name="HorzLabelFormatting" />
+            </TextComponent>
+        </ImagerySection>
+        <ImagerySection name="normal">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="ButtonLeftNormal" />
+                <Image type="RightEdge" imageset="TaharezLook" image="ButtonRightNormal" />
+                <Image type="Background" imageset="TaharezLook" image="ButtonMiddleNormal" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="hover">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="ButtonLeftHighlight" />
+                <Image type="RightEdge" imageset="TaharezLook" image="ButtonRightHighlight" />
+                <Image type="Background" imageset="TaharezLook" image="ButtonMiddleHighlight" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="pushed">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="ButtonLeftPushed" />
+                <Image type="RightEdge" imageset="TaharezLook" image="ButtonRightPushed" />
+                <Image type="Background" imageset="TaharezLook" image="ButtonMiddlePushed" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="normal" />
+                <Section section="label">
+                    <ColourProperty name="NormalTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="hover" />
+                <Section section="label">
+                    <ColourProperty name="HoverTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Pushed">
+            <Layer>
+                <Section section="pushed" />
+                <Section section="label">
+                    <ColourProperty name="PushedTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <ColourProperty name="DisabledTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/RadioButton
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/RadioButton">
+        <ImagerySection name="label">
+            <TextComponent>
+                <Area>
+                    <Dim type="LeftEdge" >
+                        <ImageDim imageset="TaharezLook" image="RadioButtonNormal" dimension="Width">
+                            <DimOperator op="Add">
+                                <AbsoluteDim value="3" />
+                            </DimOperator>
+                        </ImageDim>
+                    </Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </TextComponent>
+        </ImagerySection>
+        <ImagerySection name="normal">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="RadioButtonNormal" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="hover">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="RadioButtonHover" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="select_mark">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="RadioButtonMark" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="normal" />
+                <Section section="label">
+                    <ColourProperty name="NormalTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="hover" />
+                <Section section="label">
+                    <ColourProperty name="HoverTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <ColourProperty name="DisabledTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="SelectedNormal">
+            <Layer>
+                <Section section="normal" />
+                <Section section="select_mark" />
+                <Section section="label">
+                    <ColourProperty name="NormalTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="SelectedHover">
+            <Layer>
+                <Section section="hover" />
+                <Section section="select_mark" />
+                <Section section="label">
+                    <ColourProperty name="HoverTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="SelectedDisabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="select_mark">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <ColourProperty name="DisabledTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/Checkbox
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Checkbox">
+        <ImagerySection name="label">
+            <TextComponent>
+                <Area>
+                    <Dim type="LeftEdge" >
+                        <ImageDim imageset="TaharezLook" image="CheckboxNormal" dimension="Width">
+                            <DimOperator op="Add">
+                                <AbsoluteDim value="3" />
+                            </DimOperator>
+                        </ImageDim>
+                    </Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </TextComponent>
+        </ImagerySection>
+        <ImagerySection name="normal">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="CheckboxNormal" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="hover">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="CheckboxHover" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="select_mark">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="CheckboxMark" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="normal" />
+                <Section section="label">
+                    <ColourProperty name="NormalTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="hover" />
+                <Section section="label">
+                    <ColourProperty name="HoverTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <ColourProperty name="DisabledTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="SelectedNormal">
+            <Layer>
+                <Section section="normal" />
+                <Section section="select_mark" />
+                <Section section="label">
+                    <ColourProperty name="NormalTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="SelectedHover">
+            <Layer>
+                <Section section="hover" />
+                <Section section="select_mark" />
+                <Section section="label">
+                    <ColourProperty name="HoverTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="SelectedDisabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="select_mark">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <ColourProperty name="DisabledTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/Editbox
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Editbox">
+        <Property name="MouseCursorImage" value="set:TaharezLook image:MouseTextBar" />
+        <NamedArea name="TextArea">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="5" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="5" /></Dim>
+                <Dim type="RightEdge" ><UnifiedDim scale="1.0" offset="-5" type="RightEdge" /></Dim>
+                <Dim type="BottomEdge" ><UnifiedDim scale="1.0" offset="-5" type="BottomEdge" /></Dim>
+            </Area>
+        </NamedArea>
+        <ImagerySection name="container_normal">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="EditBoxLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="EditBoxRight" />
+                <Image type="Background" imageset="TaharezLook" image="EditBoxMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="selection">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                    <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="TextSelectionBrush" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="Carat">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><ImageDim imageset="TaharezLook" image="EditBoxCarat" dimension="Width" /></Dim>
+                    <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="EditBoxCarat" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="container_normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="ReadOnly">
+            <Layer>
+                <Section section="container_normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="container_normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="ActiveSelection">
+            <Layer>
+                <Section section="selection">
+                    <ColourProperty name="ActiveSelectionColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="InactiveSelection">
+            <Layer>
+                <Section section="selection">
+                    <ColourProperty name="InactiveSelectionColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/Titlebar
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Titlebar">
+        <Property name="CaptionColour" value="FFFFFFFF" />
+        <ImagerySection name="main">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="NewTitlebarLeft" />
+                <VertFormat type="Stretched" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="SysAreaRight" dimension="Width">
+                                    <DimOperator op="Add">
+                                        <ImageDim imageset="TaharezLook" image="SysAreaMiddle" dimension="Width" />
+                                    </DimOperator>
+                                </ImageDim>
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="NewTitlebarRight" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="RightAligned" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="SysAreaRight" dimension="Width" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="SysAreaMiddle" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="RightAligned" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="SysAreaRight" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="RightAligned" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="NewTitlebarLeft" dimension="Width" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="SysAreaRight" dimension="Width">
+                                    <DimOperator op="Add">
+                                        <ImageDim imageset="TaharezLook" image="SysAreaMiddle" dimension="Width">
+                                            <DimOperator op="Add">
+                                                <ImageDim imageset="TaharezLook" image="NewTitlebarRight" dimension="Width" />
+                                            </DimOperator>
+                                        </ImageDim>
+                                    </DimOperator>
+                                </ImageDim>
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="NewTitlebarMiddle" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="caption">
+            <TextComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="NewTitlebarLeft" dimension="Width" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" offset="-75" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <ColourProperty name="CaptionColour" />
+                <VertFormat type="CentreAligned" />
+            </TextComponent>
+        </ImagerySection>
+        <StateImagery name="Active">
+            <Layer>
+                <Section section="main" />
+                <Section section="caption" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Inactive">
+            <Layer>
+                <Section section="main" />
+                <Section section="caption" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="caption">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/FrameWindow
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/FrameWindow">
+        <Property name="NSSizingCursorImage" value="set:TaharezLook image:MouseNoSoCursor" />
+        <Property name="EWSizingCursorImage" value="set:TaharezLook image:MouseEsWeCursor" />
+        <Property name="NWSESizingCursorImage" value="set:TaharezLook image:MouseNwSeCursor" />
+        <Property name="NESWSizingCursorImage" value="set:TaharezLook image:MouseNeSwCursor" />
+        <NamedArea name="ClientWithTitleWithFrame">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="WindowTopLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><WidgetDim widget="__auto_titlebar__" dimension="BottomEdge" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="WindowTopRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="WindowBottomEdge" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ClientWithTitleNoFrame">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><WidgetDim widget="__auto_titlebar__" dimension="BottomEdge" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="BottomEdge" ><WidgetDim dimension="BottomEdge" /></Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ClientNoTitleWithFrame">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="WindowTopLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="WindowTopEdge" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="WindowTopRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="WindowBottomEdge" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ClientNoTitleNoFrame">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+        </NamedArea>
+        <Child type="TaharezLook/Titlebar" nameSuffix="__auto_titlebar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><FontDim type="LineSpacing" padding="8" /></Dim>
+            </Area>
+            <Property name="AlwaysOnTop" value="False" />
+        </Child>
+        <Child type="TaharezLook/SystemButton" nameSuffix="__auto_closebutton__">
+            <Area>
+                <Dim type="LeftEdge" >
+                    <UnifiedDim scale="1" type="LeftEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="SysAreaRight" dimension="Width">
+                                <DimOperator op="Add">
+                                    <ImageDim imageset="TaharezLook" image="SysAreaMiddle" dimension="Width" />
+                                </DimOperator>
+                            </ImageDim>
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="TopEdge" >
+                    <AbsoluteDim value="0.5">
+                        <DimOperator op="Multiply">
+                            <WidgetDim widget="__auto_titlebar__" dimension="Height">
+                                <DimOperator op="Subtract">
+                                    <ImageDim imageset="TaharezLook" image="NewCloseButtonNormal" dimension="Width" />
+                                </DimOperator>
+                            </WidgetDim>
+                        </DimOperator>
+                    </AbsoluteDim>
+                </Dim>
+                <Dim type="Width" ><ImageDim imageset="TaharezLook" image="NewCloseButtonNormal" dimension="Width" /></Dim>
+                <Dim type="Height" ><ImageDim imageset="TaharezLook" image="NewCloseButtonNormal" dimension="Width" /></Dim>
+            </Area>
+            <Property name="AlwaysOnTop" value="True" />
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:NewCloseButtonNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:NewCloseButtonHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:NewCloseButtonPressed" />
+        </Child>
+        <ImagerySection name="withtitle_frame">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><WidgetDim widget="__auto_titlebar__" dimension="BottomEdge" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="BottomEdge" ><UnifiedDim scale="1" type="BottomEdge" /></Dim>
+                </Area>
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="WindowBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="WindowBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="WindowLeftEdge" />
+                <Image type="RightEdge" imageset="TaharezLook" image="WindowRightEdge" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="WindowBottomEdge" />
+                <Image type="Background" imageset="TaharezLook" image="ClientBrush" />
+                <VertFormat type="Tiled" />
+                <HorzFormat type="Tiled" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="notitle_frame">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="WindowTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="WindowTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="WindowBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="WindowBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="WindowLeftEdge" />
+                <Image type="RightEdge" imageset="TaharezLook" image="WindowRightEdge" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="WindowBottomEdge" />
+                <Image type="Background" imageset="TaharezLook" image="ClientBrush" />
+                <VertFormat type="Tiled" />
+                <HorzFormat type="Tiled" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="withtitle_noframe_client_area">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><WidgetDim widget="__auto_titlebar__" dimension="Height" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="BottomEdge" ><UnifiedDim scale="1" type="BottomEdge" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="ClientBrush" />
+                <VertFormat type="Tiled" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="notitle_noframe_client_area">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="ClientBrush" />
+                <VertFormat type="Tiled" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="ActiveWithTitleWithFrame">
+            <Layer>
+                <Section section="withtitle_frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="InactiveWithTitleWithFrame">
+            <Layer>
+                <Section section="withtitle_frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledWithTitleWithFrame">
+            <Layer>
+                <Section section="withtitle_frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="ActiveWithTitleNoFrame">
+            <Layer>
+                <Section section="withtitle_noframe_client_area" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="InactiveWithTitleNoFrame">
+            <Layer>
+                <Section section="withtitle_noframe_client_area" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledWithTitleNoFrame">
+            <Layer>
+                <Section section="withtitle_noframe_client_area">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="ActiveNoTitleWithFrame">
+            <Layer>
+                <Section section="notitle_frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="InactiveNoTitleWithFrame">
+            <Layer>
+                <Section section="notitle_frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledNoTitleWithFrame">
+            <Layer>
+                <Section section="notitle_frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="ActiveNoTitleNoFrame">
+            <Layer>
+                <Section section="notitle_noframe_client_area" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="InactiveNoTitleNoFrame">
+            <Layer>
+                <Section section="notitle_noframe_client_area" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledNoTitleNoFrame">
+            <Layer>
+                <Section section="notitle_noframe_client_area">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/ProgressBar
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/ProgressBar">
+        <NamedArea name="ProgressArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ProgressBarLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ProgressBarRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+        </NamedArea>
+        <ImagerySection name="frame">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="ProgressBarLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="ProgressBarRight" />
+                <Image type="Background" imageset="TaharezLook" image="ProgressBarMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="progress_lights" >
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="ProgressBarLitSegment" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="EnabledProgress">
+            <Layer>
+                <Section section="progress_lights" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledProgress">
+            <Layer>
+                <Section section="progress_lights">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/AlternateProgressBar
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/AltProgressBar">
+        <NamedArea name="ProgressArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="AltProgressLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="2" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="AltProgressRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" offset="-4" type="Height" /></Dim>
+            </Area>
+        </NamedArea>
+        <ImagerySection name="frame">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="AltProgressLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="AltProgressRight" />
+                <Image type="Background" imageset="TaharezLook" image="AltProgressMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="progress_lights" >
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight1" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.1" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight2" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.2" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight3" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.3" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight4" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.4" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight5" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.5" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight6" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.6" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight7" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.7" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight8" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.8" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight9" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.9" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="AltProgressLight10" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Tiled" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="EnabledProgress">
+            <Layer>
+                <Section section="progress_lights" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledProgress">
+            <Layer>
+                <Section section="progress_lights">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/VUMeter (progress bar)
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/VUMeter">
+        <Property name="VerticalProgress" value="True" />
+        <NamedArea name="ProgressArea">
+            <Area>
+                <Dim type="LeftEdge" ><UnifiedDim scale="0" type="LeftEdge" /></Dim>
+                <Dim type="TopEdge" ><UnifiedDim scale="0" type="TopEdge" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+        </NamedArea>
+        <ImagerySection name="progress_lights" >
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><UnifiedDim scale="0.5" type="TopEdge" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="0.5" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="TextSelectionBrush" />
+                <Colours topLeft="FF00FF00" topRight="FF00FF00" bottomLeft="FF00FF00" bottomRight="FF00FF00" />
+                <VertFormat type="Tiled" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><UnifiedDim scale="0.2" type="TopEdge" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="0.3" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="TextSelectionBrush" />
+                <Colours topLeft="FFFFFF00" topRight="FFFFFF00" bottomLeft="FFFFFF00" bottomRight="FFFFFF00" />
+                <VertFormat type="Tiled" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" ><UnifiedDim scale="0" type="TopEdge" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="0.2" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="TextSelectionBrush" />
+                <Colours topLeft="FFFF0000" topRight="FFFF0000" bottomLeft="FFFF0000" bottomRight="FFFF0000" />
+                <VertFormat type="Tiled" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+        </StateImagery>
+        <StateImagery name="Disabled">
+        </StateImagery>
+        <StateImagery name="EnabledProgress">
+            <Layer>
+                <Section section="progress_lights" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledProgress">
+            <Layer>
+                <Section section="progress_lights">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/SliderThumb
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/SliderThumb">
+        <Property name="VertFree" value="True" />
+        <ImagerySection name="normal">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="VertSliderThumbNormal" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="hover">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="VertSliderThumbHover" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="hover" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Pushed">
+            <Layer>
+                <Section section="hover" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/Slider
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Slider">
+        <Property name="VerticalSlider" value="True" />
+        <Property name="MouseButtonDownAutoRepeat" value="True" />
+        <Property name="WantsMultiClickEvents" value="False" />
+        <NamedArea name="ThumbTrackArea">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/SliderThumb" nameSuffix="__auto_thumb__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                <Dim type="Height" ><ImageDim imageset="TaharezLook" image="VertSliderThumbNormal" dimension="Height" /></Dim>
+            </Area>
+        </Child>
+        <ImagerySection name="main">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="3" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" offset="-6" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="VertSliderBody" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/HorizontalScrollbarThumb
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/HorizontalScrollbarThumb">
+        <Property name="HorzFree" value="True" />
+        <ImagerySection name="normal">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="MiniHorzScrollThumbLeftNormal" />
+                <Image type="RightEdge" imageset="TaharezLook" image="MiniHorzScrollThumbRightNormal" />
+                <Image type="Background" imageset="TaharezLook" image="MiniHorzScrollThumbMiddleNormal" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="hover">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="MiniHorzScrollThumbLeftHover" />
+                <Image type="RightEdge" imageset="TaharezLook" image="MiniHorzScrollThumbRightHover" />
+                <Image type="Background" imageset="TaharezLook" image="MiniHorzScrollThumbMiddleHover" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="hover" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Pushed">
+            <Layer>
+                <Section section="normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/HorizontalScrollbar
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/HorizontalScrollbar">
+        <NamedArea name="ThumbTrackArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MiniHorzScrollLeftNormal" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1.0" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MiniHorzScrollRightNormal" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_incbtn__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><ImageDim imageset="TaharezLook" image="MiniHorzScrollRightNormal" dimension="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:MiniHorzScrollRightNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:MiniHorzScrollRightHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:MiniHorzScrollRightNormal" />
+        </Child>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_decbtn__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><ImageDim imageset="TaharezLook" image="MiniHorzScrollLeftNormal" dimension="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:MiniHorzScrollLeftNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:MiniHorzScrollLeftHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:MiniHorzScrollLeftNormal" />
+        </Child>
+        <Child  type="TaharezLook/HorizontalScrollbarThumb" nameSuffix="__auto_thumb__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="0.1" type="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+        </Child>
+        <ImagerySection name="main">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MiniHorzScrollLeftNormal" dimension="Width" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1.0" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="MiniHorzScrollRightNormal" dimension="Width" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="MiniHorzScrollBarSegment" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/VerticalScrollbarThumb
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/VerticalScrollbarThumb">
+        <Property name="VertFree" value="True" />
+        <ImagerySection name="normal">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image type="TopEdge" imageset="TaharezLook" image="MiniVertScrollThumbTopNormal" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="MiniVertScrollThumbBottomNormal" />
+                <Image type="Background" imageset="TaharezLook" image="MiniVertScrollThumbMiddleNormal" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="hover">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image type="TopEdge" imageset="TaharezLook" image="MiniVertScrollThumbTopHover" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="MiniVertScrollThumbBottomHover" />
+                <Image type="Background" imageset="TaharezLook" image="MiniVertScrollThumbMiddleHover" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="hover" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Pushed">
+            <Layer>
+                <Section section="normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/VerticalScrollbar
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/VerticalScrollbar">
+        <Property name="VerticalScrollbar" value="True" />
+        <NamedArea name="ThumbTrackArea">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="MiniVertScrollUpNormal" dimension="Height" /></Dim>
+                <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1.0" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MiniVertScrollDownNormal" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_incbtn__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><ImageDim imageset="TaharezLook" image="MiniVertScrollDownNormal" dimension="Height" /></Dim>
+            </Area>
+            <VertAlignment type="BottomAligned" />
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:MiniVertScrollDownNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:MiniVertScrollDownHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:MiniVertScrollDownNormal" />
+        </Child>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_decbtn__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><ImageDim imageset="TaharezLook" image="MiniVertScrollUpNormal" dimension="Height" /></Dim>
+            </Area>
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:MiniVertScrollUpNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:MiniVertScrollUpHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:MiniVertScrollUpNormal" />
+        </Child>
+        <Child  type="TaharezLook/VerticalScrollbarThumb" nameSuffix="__auto_thumb__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="0.1" type="Height" /></Dim>
+            </Area>
+        </Child>
+        <ImagerySection name="main">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="MiniVertScrollUpNormal" dimension="Height" /></Dim>
+                    <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                    <Dim type="BottomEdge" >
+                        <UnifiedDim scale="1.0" type="BottomEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="MiniVertScrollDownNormal" dimension="Height" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="MiniVertScrollBarSegment" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="CentreAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/Listbox
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Listbox">
+        <NamedArea name="ItemRenderingArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ListboxLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="ListboxTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ListboxRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ListboxBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaHScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ListboxLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="ListboxTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ListboxRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ListboxLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="ListboxTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ListboxBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaHVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ListboxLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="ListboxTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/HorizontalScrollbar" nameSuffix="__auto_hscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" offset="-12" type="Width" /></Dim>
+                <Dim type="Height" ><AbsoluteDim value="12" /></Dim>
+            </Area>
+            <VertAlignment type="BottomAligned" />
+        </Child>
+        <Child  type="TaharezLook/VerticalScrollbar" nameSuffix="__auto_vscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><AbsoluteDim value="12" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" offset="-12" type="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+        </Child>
+        <ImagerySection name="main">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="ListboxTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="ListboxTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="ListboxBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="ListboxBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="ListboxLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="ListboxRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="ListboxTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="ListboxBottom" />
+                <Image type="Background" imageset="TaharezLook" image="ListboxBackdrop" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/ComboDropList
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/ComboDropList">
+        <NamedArea name="ItemRenderingArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ComboboxListLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="ComboboxListTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ComboboxListRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ComboboxListBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaHScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ComboboxListLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="ComboboxListTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ComboboxListRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ComboboxListLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="ComboboxListTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="ComboboxListBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaHVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="ComboboxListLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="ComboboxListTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/HorizontalScrollbar" nameSuffix="__auto_hscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" offset="-12" type="Width" /></Dim>
+                <Dim type="Height" ><AbsoluteDim value="12" /></Dim>
+            </Area>
+            <VertAlignment type="BottomAligned" />
+        </Child>
+        <Child  type="TaharezLook/VerticalScrollbar" nameSuffix="__auto_vscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><AbsoluteDim value="12" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" offset="-12" type="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+        </Child>
+        <ImagerySection name="main">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="ComboboxListTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="ComboboxListTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="ComboboxListBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="ComboboxListBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="ComboboxListLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="ComboboxListRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="ComboboxListTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="ComboboxListBottom" />
+                <Image type="Background" imageset="TaharezLook" image="ComboboxListBackdrop" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/ComboEditbox
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/ComboEditbox">
+        <Property name="MouseCursorImage" value="set:TaharezLook image:MouseTextBar" />
+        <NamedArea name="TextArea">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="5" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="5" /></Dim>
+                <Dim type="RightEdge" ><UnifiedDim scale="1.0" offset="-5" type="RightEdge" /></Dim>
+                <Dim type="BottomEdge" ><UnifiedDim scale="1.0" offset="-5" type="BottomEdge" /></Dim>
+            </Area>
+        </NamedArea>
+        <ImagerySection name="container_normal">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image type="LeftEdge" imageset="TaharezLook" image="ComboboxEditLeft" />
+                <Image type="Background" imageset="TaharezLook" image="ComboboxEditMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="selection">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                    <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="TextSelectionBrush" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="Carat">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><ImageDim imageset="TaharezLook" image="EditBoxCarat" dimension="Width" /></Dim>
+                    <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="EditBoxCarat" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="container_normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="ReadOnly">
+            <Layer>
+                <Section section="container_normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="container_normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="ActiveSelection">
+            <Layer>
+                <Section section="selection">
+                    <ColourProperty name="ActiveSelectionColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="InactiveSelection">
+            <Layer>
+                <Section section="selection">
+                    <ColourProperty name="InactiveSelectionColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/Combobox
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Combobox">
+        <Child  type="TaharezLook/ComboEditbox" nameSuffix="__auto_editbox__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <FontDim type="LineSpacing">
+                                <DimOperator op="Multiply">
+                                    <AbsoluteDim value="1.5" />
+                                </DimOperator>
+                            </FontDim>
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="Height" >
+                    <FontDim type="LineSpacing">
+                        <DimOperator op="Multiply">
+                            <AbsoluteDim value="1.5" />
+                        </DimOperator>
+                    </FontDim>
+                </Dim>
+            </Area>
+        </Child>
+        <Child  type="TaharezLook/ComboDropList" nameSuffix="__auto_droplist__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><WidgetDim widget="__auto_editbox__" dimension="BottomEdge" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="BottomEdge" ><UnifiedDim scale="1" type="BottomEdge" /></Dim>
+            </Area>
+        </Child>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_button__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><WidgetDim widget="__auto_editbox__" dimension="Height" /></Dim>
+                <Dim type="Height" ><WidgetDim widget="__auto_editbox__" dimension="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:ComboboxListButtonNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:ComboboxListButtonHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:ComboboxListButtonNormal" />
+        </Child>
+        <StateImagery name="Enabled" />
+        <StateImagery name="Disabled" />
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/Spinner
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Spinner">
+        <Child  type="TaharezLook/Editbox" nameSuffix="__auto_editbox__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="VertScrollUpNormal" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+        </Child>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_incbtn__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><ImageDim imageset="TaharezLook" image="VertScrollUpNormal" dimension="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="0.5" type="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:VertScrollUpNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:VertScrollUpHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:VertScrollUpNormal" />
+        </Child>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_decbtn__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><UnifiedDim scale="0.5" type="TopEdge" /></Dim>
+                <Dim type="Width" ><ImageDim imageset="TaharezLook" image="VertScrollUpNormal" dimension="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="0.5" type="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:VertScrollDownNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:VertScrollDownHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:VertScrollDownNormal" />
+        </Child>
+        <StateImagery name="Enabled" />
+        <StateImagery name="Disabled" />
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/StaticShared
+        (Shared imagery components for static widgets)
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/StaticShared">
+        <ImagerySection name="frame">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="StaticTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="StaticTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="StaticBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="StaticBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="StaticLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="StaticRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="StaticTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="StaticBottom" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="background">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="StaticLeft" dimension="Width" /></Dim>
+                    <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="StaticTop" dimension="Height" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="StaticRight" dimension="Width" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="BottomEdge" >
+                        <UnifiedDim scale="1" type="BottomEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="StaticBottom" dimension="Height" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="StaticBackdrop" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/StaticImage
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/StaticImage">
+        <Property name="FrameEnabled" value="True" />
+        <Property name="BackgroundEnabled" value="True" />
+        <NamedArea name="WithFrameImageRenderArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="StaticLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="StaticTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="StaticRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="StaticBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="NoFrameImageRenderArea">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+        </NamedArea>
+        <StateImagery name="Enabled" />
+        <StateImagery name="Disabled" />
+        <StateImagery name="EnabledFrame">
+            <Layer>
+                <Section look="TaharezLook/StaticShared" section="frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledFrame">
+            <Layer>
+                <Section look="TaharezLook/StaticShared" section="frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="EnabledBackground">
+            <Layer>
+                <Section look="TaharezLook/StaticShared" section="background" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledBackground">
+            <Layer>
+                <Section look="TaharezLook/StaticShared" section="background" />
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/StaticText
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/StaticText">
+        <Property name="FrameEnabled" value="True" />
+        <Property name="BackgroundEnabled" value="True" />
+        <NamedArea name="TextRenderArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="StaticLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="StaticTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="StaticRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="StaticBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="TextRenderAreaHScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="StaticLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="StaticTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="StaticRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="TextRenderAreaVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="StaticLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="StaticTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="StaticBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="TextRenderAreaHVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="StaticLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="StaticTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/HorizontalScrollbar" nameSuffix="__auto_hscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" offset="-12" type="Width" /></Dim>
+                <Dim type="Height" ><AbsoluteDim value="12" /></Dim>
+            </Area>
+            <VertAlignment type="BottomAligned" />
+        </Child>
+        <Child  type="TaharezLook/VerticalScrollbar" nameSuffix="__auto_vscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><AbsoluteDim value="12" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" offset="-12" type="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+        </Child>
+        <StateImagery name="Enabled" />
+        <StateImagery name="Disabled" />
+        <StateImagery name="EnabledFrame">
+            <Layer>
+                <Section look="TaharezLook/StaticShared" section="frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledFrame">
+            <Layer>
+                <Section look="TaharezLook/StaticShared" section="frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="EnabledBackground">
+            <Layer>
+                <Section look="TaharezLook/StaticShared" section="background" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledBackground">
+            <Layer>
+                <Section look="TaharezLook/StaticShared" section="background" />
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/ListHeaderSegment
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/ListHeaderSegment">
+        <Property name="SizingCursorImage" value="set:TaharezLook image:MouseEsWeCursor" />
+        <Property name="MovingCursorImage" value="set:TaharezLook image:MouseMoveCursor" />
+        <ImagerySection name="segment_normal">
+            <Colours topLeft="FFDDDDDD" topRight="FFDDDDDD" bottomLeft="FFDDDDDD" bottomRight="FFDDDDDD" />
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="HeaderBarSplitterNormal" dimension="Width" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="HeaderBarBackdropNormal" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="segment_hover">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="HeaderBarSplitterNormal" dimension="Width" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="HeaderBarBackdropHover" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="splitter_normal">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="HeaderBarSplitterNormal" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="RightAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="splitter_hover">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="HeaderBarSplitterHover" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="RightAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="ascend_icon">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="3" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="3" /></Dim>
+                    <Dim type="Width" ><ImageDim imageset="TaharezLook" image="HeaderBarSortUp" dimension="Width" /></Dim>
+                    <Dim type="Height" ><ImageDim imageset="TaharezLook" image="HeaderBarSortUp" dimension="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="HeaderBarSortUp" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="descend_icon">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="3" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="3" /></Dim>
+                    <Dim type="Width" ><ImageDim imageset="TaharezLook" image="HeaderBarSortDown" dimension="Width" /></Dim>
+                    <Dim type="Height" ><ImageDim imageset="TaharezLook" image="HeaderBarSortDown" dimension="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="HeaderBarSortDown" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="label">
+            <TextComponent>
+                <Area>
+                    <Dim type="LeftEdge" >
+                        <ImageDim imageset="TaharezLook" image="HeaderBarSortUp" dimension="Width">
+                            <DimOperator op="Add">
+                                <AbsoluteDim value="5" />
+                            </DimOperator>
+                        </ImageDim>
+                    </Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="RightEdge" ><UnifiedDim scale="1" type="RightEdge" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <VertFormat type="CentreAligned" />
+            </TextComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="segment_normal" />
+                <Section section="splitter_normal" />
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="segment_hover" />
+                <Section section="splitter_normal" />
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="SplitterHover">
+            <Layer>
+                <Section section="segment_normal" />
+                <Section section="splitter_hover" />
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DragGhost" clipped="false" >
+            <Layer priority="1" >
+                <Section section="segment_normal">
+                    <Colours topLeft="90FFFFFF" topRight="90FFFFFF" bottomLeft="90FFFFFF" bottomRight="90FFFFFF" />
+                </Section>
+                <Section section="splitter_normal">
+                    <Colours topLeft="90FFFFFF" topRight="90FFFFFF" bottomLeft="90FFFFFF" bottomRight="90FFFFFF" />
+                </Section>
+                <Section section="label">
+                    <Colours topLeft="90FFFFFF" topRight="90FFFFFF" bottomLeft="90FFFFFF" bottomRight="90FFFFFF" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="AscendingSortIcon">
+            <Layer>
+                <Section section="ascend_icon" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DescendingSortIcon">
+            <Layer>
+                <Section section="descend_icon" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="GhostAscendingSortIcon" clipped="false">
+            <Layer priority="1" >
+                <Section section="ascend_icon">
+                    <Colours topLeft="90FFFFFF" topRight="90FFFFFF" bottomLeft="90FFFFFF" bottomRight="90FFFFFF" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="GhostDescendingSortIcon" clipped="false">
+            <Layer priority="1" >
+                <Section section="descend_icon">
+                    <Colours topLeft="90FFFFFF" topRight="90FFFFFF" bottomLeft="90FFFFFF" bottomRight="90FFFFFF" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="segment_normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="splitter_normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/ListHeader
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/ListHeader">
+        <Property name="SegmentWidgetType" value="TaharezLook/ListHeaderSegment" />
+        <StateImagery name="Enabled" />
+        <StateImagery name="Disabled" />
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/MultiColumnList
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/MultiColumnList">
+        <NamedArea name="ItemRenderingArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MultiListLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><WidgetDim widget="__auto_listheader__" dimension="BottomEdge" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MultiListRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MultiListBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaHScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MultiListLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><WidgetDim widget="__auto_listheader__" dimension="BottomEdge" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MultiListRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MultiListLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><WidgetDim widget="__auto_listheader__" dimension="BottomEdge" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MultiListBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ItemRenderingAreaHVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MultiListLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><WidgetDim widget="__auto_listheader__" dimension="BottomEdge" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/ListHeader" nameSuffix="__auto_listheader__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="2" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="2" /></Dim>
+                <Dim type="RightEdge" ><UnifiedDim scale="1" offset="-2" type="RightEdge" /></Dim>
+                <Dim type="Height" >
+                    <FontDim type="LineSpacing">
+                        <DimOperator op="Multiply">
+                            <AbsoluteDim value="1.5" />
+                        </DimOperator>
+                    </FontDim>
+                </Dim>
+            </Area>
+        </Child>
+        <Child  type="TaharezLook/HorizontalScrollbar" nameSuffix="__auto_hscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" offset="-12" type="Width" /></Dim>
+                <Dim type="Height" ><AbsoluteDim value="12" /></Dim>
+            </Area>
+            <VertAlignment type="BottomAligned" />
+        </Child>
+        <Child  type="TaharezLook/VerticalScrollbar" nameSuffix="__auto_vscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><WidgetDim widget="__auto_listheader__" dimension="BottomEdge" /></Dim>
+                <Dim type="Width" ><AbsoluteDim value="12" /></Dim>
+                <Dim type="BottomEdge" ><UnifiedDim scale="1" offset="-12" type="BottomEdge" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+        </Child>
+        <ImagerySection name="main">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="MultiListTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="MultiListTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="MultiListBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="MultiListBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="MultiListLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="MultiListRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="MultiListTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="MultiListBottom" />
+                <Image type="Background" imageset="TaharezLook" image="MultiListBackdrop" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/MultiLineEditbox
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/MultiLineEditbox">
+        <Property name="MouseCursorImage" value="set:TaharezLook image:MouseTextBar" />
+        <Property name="SelectionBrushImage" value="set:TaharezLook image:MultiLineEditboxSelectionBrush" />
+        <NamedArea name="TextArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MultiLineEditboxLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="MultiLineEditboxTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MultiLineEditboxRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MultiLineEditboxBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="TextAreaHScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MultiLineEditboxLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="MultiLineEditboxTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MultiLineEditboxRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="TextAreaVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MultiLineEditboxLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="MultiLineEditboxTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="MultiLineEditboxBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="TextAreaHVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MultiLineEditboxLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="MultiLineEditboxTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/HorizontalScrollbar" nameSuffix="__auto_hscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" offset="-12" type="Width" /></Dim>
+                <Dim type="Height" ><AbsoluteDim value="12" /></Dim>
+            </Area>
+            <VertAlignment type="BottomAligned" />
+        </Child>
+        <Child  type="TaharezLook/VerticalScrollbar" nameSuffix="__auto_vscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><AbsoluteDim value="12" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" offset="-12" type="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+        </Child>
+        <ImagerySection name="main">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="MultiLineEditboxTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="MultiLineEditboxTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="MultiLineEditboxBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="MultiLineEditboxBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="MultiLineEditboxLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="MultiLineEditboxRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="MultiLineEditboxTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="MultiLineEditboxBottom" />
+                <Image type="Background" imageset="TaharezLook" image="MultiLineEditboxBackdrop" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="Carat">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><ImageDim imageset="TaharezLook" image="EditBoxCarat" dimension="Width" /></Dim>
+                    <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="EditBoxCarat" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="ReadOnly">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/Tooltip
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Tooltip">
+        <NamedArea name="TextArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="TooltipLeftEdge" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="TooltipTopEdge" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="TooltipRightEdge" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="TooltipBottomEdge" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <ImagerySection name="main">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="TooltipTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="TooltipTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="TooltipBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="TooltipBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="TooltipLeftEdge" />
+                <Image type="RightEdge" imageset="TaharezLook" image="TooltipRightEdge" />
+                <Image type="TopEdge" imageset="TaharezLook" image="TooltipTopEdge" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="TooltipBottomEdge" />
+                <Image type="Background" imageset="TaharezLook" image="TooltipMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="label">
+            <TextComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="TooltipLeftEdge" dimension="Width" /></Dim>
+                    <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="TooltipTopEdge" dimension="Height" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="TooltipRightEdge" dimension="Width" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="BottomEdge" >
+                        <UnifiedDim scale="1" type="BottomEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="TooltipBottomEdge" dimension="Height" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                </Area>
+                <Colours topLeft="FF000000" topRight="FF000000" bottomLeft="FF000000" bottomRight="FF000000" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="CentreAligned" />
+            </TextComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main" />
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/ScrollablePane
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/ScrollablePane">
+        <NamedArea name="ViewableArea">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ViewableAreaHScroll">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ViewableAreaVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" ><UnifiedDim scale="1.0" type="BottomEdge" /></Dim>
+            </Area>
+        </NamedArea>
+        <NamedArea name="ViewableAreaHVScroll">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_vscrollbar__" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_hscrollbar__" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/HorizontalScrollbar" nameSuffix="__auto_hscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" offset="-12" type="Width" /></Dim>
+                <Dim type="Height" ><AbsoluteDim value="12" /></Dim>
+            </Area>
+            <VertAlignment type="BottomAligned" />
+        </Child>
+        <Child  type="TaharezLook/VerticalScrollbar" nameSuffix="__auto_vscrollbar__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><AbsoluteDim value="12" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" offset="-12" type="Height" /></Dim>
+            </Area>
+            <HorzAlignment type="RightAligned" />
+        </Child>
+        <StateImagery name="Enabled" />
+        <StateImagery name="Disabled" />
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/TabButton
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/TabButton">
+        <ImagerySection name="label">
+            <TextComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="CentreAligned" />
+            </TextComponent>
+        </ImagerySection>
+        <ImagerySection name="normal">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="TabButtonUpperLeftNormal" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="TabButtonUpperRightNormal" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="TabButtonLowerLeftNormal" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="TabButtonLowerRightNormal" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="TabButtonLeftNormal" />
+                <Image type="RightEdge" imageset="TaharezLook" image="TabButtonRightNormal" />
+                <Image type="TopEdge" imageset="TaharezLook" image="TabButtonUpperNormal" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="TabButtonLowerNormal" />
+                <Image type="Background" imageset="TaharezLook" image="TabButtonMiddleNormal" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="selected">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="TabButtonUpperLeftSelected" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="TabButtonUpperRightSelected" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="TabButtonLowerLeftSelected" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="TabButtonLowerRightSelected" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="TabButtonLeftSelected" />
+                <Image type="RightEdge" imageset="TaharezLook" image="TabButtonRightSelected" />
+                <Image type="TopEdge" imageset="TaharezLook" image="TabButtonUpperSelected" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="TabButtonLowerSelected" />
+                <Image type="Background" imageset="TaharezLook" image="TabButtonMiddleSelected" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="normal" />
+                <Section section="label">
+                    <ColourProperty name="NormalTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="selected" />
+                <Section section="label">
+                    <ColourProperty name="HoverTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Selected">
+            <Layer>
+                <Section section="selected" />
+                <Section section="label">
+                    <ColourProperty name="PushedTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <ColourProperty name="DisabledTextColour" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/TabPane
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/TabPane">
+        <ImagerySection name="normal">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="TabPaneLowerLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="TabPaneLowerRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="TabPaneLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="TabPaneRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="TabControlButtonPaneFiller" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="TabPaneLower" />
+                <Image type="Background" imageset="TaharezLook" image="TabPaneMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/TabControl
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/TabControl">
+        <Property name="TabButtonType" value="TaharezLook/TabButton" />
+        <Child  type="TaharezLook/TabPane" nameSuffix="__auto_TabPane__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+        </Child>
+        <Child  type="DefaultWindow" nameSuffix="__auto_TabPane__Buttons">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+            </Area>
+        </Child>
+        <StateImagery name="Enabled" />
+        <StateImagery name="Disabled" />
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/MenuItem
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/MenuItem">
+        <ImagerySection name="label">
+            <TextComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="MenuLeft" dimension="Width" /></Dim>
+                    <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="MenuTop" dimension="Height" /></Dim>
+                    <Dim type="RightEdge" >
+                        <UnifiedDim scale="1" type="RightEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="MenuRight" dimension="Width" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                    <Dim type="BottomEdge" >
+                        <UnifiedDim scale="1" type="BottomEdge">
+                            <DimOperator op="Subtract">
+                                <ImageDim imageset="TaharezLook" image="MenuBottom" dimension="Height" />
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                </Area>
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="LeftAligned" />
+            </TextComponent>
+        </ImagerySection>
+        <ImagerySection name="frame">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="MenuTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="MenuTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="MenuBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="MenuBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="MenuLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="MenuRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="MenuTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="MenuBottom" />
+                <Image type="Background" imageset="TaharezLook" image="MenuMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <ImagerySection name="popup_arrow_right">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="PopupMenuArrowRight" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="RightAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="popup_arrow_left">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="PopupMenuArrowLeft" />
+                <VertFormat type="CentreAligned" />
+                <HorzFormat type="RightAligned" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="EnabledNormal">
+            <Layer>
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="EnabledHover">
+            <Layer>
+                <Section section="frame" />
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="EnabledPushed">
+            <Layer>
+                <Section section="frame" />
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="EnabledPopupOpen">
+            <Layer>
+                <Section section="frame" />
+                <Section section="label" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledNormal">
+            <Layer>
+                <Section section="label">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledHover">
+            <Layer>
+                <Section section="frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledPushed">
+            <Layer>
+                <Section section="frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="DisabledPopupOpen">
+            <Layer>
+                <Section section="frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+                <Section section="label">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+        <StateImagery name="PopupClosedIcon">
+            <Layer>
+                <Section section="popup_arrow_right" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="PopupOpenIcon">
+            <Layer>
+                <Section section="popup_arrow_left" />
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/PopupMenu
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/PopupMenu">
+        <NamedArea name="ItemRenderArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="PopupMenuFrameLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="PopupMenuFrameTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="PopupMenuFrameRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="PopupMenuFrameBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <ImagerySection name="frame">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="PopupMenuFrameTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="PopupMenuFrameTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="PopupMenuFrameBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="PopupMenuFrameBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="PopupMenuFrameLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="PopupMenuFrameRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="PopupMenuFrameTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="PopupMenuFrameBottom" />
+                <Image type="Background" imageset="TaharezLook" image="PopupMenuMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    
+    <!--
+    ***************************************************
+        TaharezLook/Menubar
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/Menubar">
+        <NamedArea name="ItemRenderArea">
+            <Area>
+                <Dim type="LeftEdge" ><ImageDim imageset="TaharezLook" image="PopupMenuFrameLeft" dimension="Width" /></Dim>
+                <Dim type="TopEdge" ><ImageDim imageset="TaharezLook" image="PopupMenuFrameTop" dimension="Height" /></Dim>
+                <Dim type="RightEdge" >
+                    <UnifiedDim scale="1" type="RightEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="PopupMenuFrameRight" dimension="Width" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <ImageDim imageset="TaharezLook" image="PopupMenuFrameBottom" dimension="Height" />
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <ImagerySection name="frame">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopLeftCorner" imageset="TaharezLook" image="PopupMenuFrameTopLeft" />
+                <Image type="TopRightCorner" imageset="TaharezLook" image="PopupMenuFrameTopRight" />
+                <Image type="BottomLeftCorner" imageset="TaharezLook" image="PopupMenuFrameBottomLeft" />
+                <Image type="BottomRightCorner" imageset="TaharezLook" image="PopupMenuFrameBottomRight" />
+                <Image type="LeftEdge" imageset="TaharezLook" image="PopupMenuFrameLeft" />
+                <Image type="RightEdge" imageset="TaharezLook" image="PopupMenuFrameRight" />
+                <Image type="TopEdge" imageset="TaharezLook" image="PopupMenuFrameTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="PopupMenuFrameBottom" />
+                <Image type="Background" imageset="TaharezLook" image="PopupMenuMiddle" />
+            </FrameComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="frame" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="frame">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/LargeVerticalScrollbarThumb
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/LargeVerticalScrollbarThumb">
+        <Property name="VertFree" value="True" />
+        <ImagerySection name="normal">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="VertScrollThumbNormal" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <ImagerySection name="hover">
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1.0" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1.0" type="Height" /></Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="VertScrollThumbHover" />
+                <VertFormat type="Stretched" />
+                <HorzFormat type="Stretched" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Normal">
+            <Layer>
+                <Section section="normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Hover">
+            <Layer>
+                <Section section="hover" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Pushed">
+            <Layer>
+                <Section section="normal" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="normal">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+    
+    <!--
+    ***************************************************
+        TaharezLook/LargeVerticalScrollbar
+    ***************************************************
+    -->
+    <WidgetLook name="TaharezLook/LargeVerticalScrollbar">
+        <Property name="VerticalScrollbar" value="True" />
+        <NamedArea name="ThumbTrackArea">
+            <Area>
+                <Dim type="LeftEdge" ><UnifiedDim scale="0.325" type="LeftEdge" /></Dim>
+                <Dim type="TopEdge" >
+                    <WidgetDim widget="__auto_decbtn__" dimension="Height">
+                        <DimOperator op="Add">
+                            <ImageDim imageset="TaharezLook" image="VertScrollTop" dimension="Height">
+                                <DimOperator op="Multiply">
+                                    <AbsoluteDim value="0.5" />
+                                </DimOperator>
+                            </ImageDim>
+                        </DimOperator>
+                    </WidgetDim>
+                </Dim>
+                <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                <Dim type="BottomEdge" >
+                    <UnifiedDim scale="1.0" type="BottomEdge">
+                        <DimOperator op="Subtract">
+                            <WidgetDim widget="__auto_decbtn__" dimension="Height">
+                                <DimOperator op="Add">
+                                    <ImageDim imageset="TaharezLook" image="VertScrollTop" dimension="Height">
+                                        <DimOperator op="Multiply">
+                                            <AbsoluteDim value="0.5" />
+                                        </DimOperator>
+                                    </ImageDim>
+                                </DimOperator>
+                            </WidgetDim>
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </NamedArea>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_incbtn__">
+            <Area>
+                <Dim type="LeftEdge" ><UnifiedDim scale="0.25" type="LeftEdge" /></Dim>
+                <Dim type="TopEdge" >
+                    <AbsoluteDim value="-1">
+                        <DimOperator op="Multiply">
+                            <ImageDim imageset="TaharezLook" image="VertScrollTop" dimension="Height">
+                                <DimOperator op="Multiply">
+                                    <AbsoluteDim value="0.5" />
+                                </DimOperator>
+                            </ImageDim>
+                        </DimOperator>
+                    </AbsoluteDim>
+                </Dim>
+                <Dim type="Width" ><UnifiedDim scale="0.6" type="Width" /></Dim>
+                <Dim type="Height" >
+                    <UnifiedDim scale="0.6" type="Width">
+                        <DimOperator op="Multiply">
+                            <ImageDim imageset="TaharezLook" image="VertScrollUpNormal" dimension="Width">
+                                <DimOperator op="Divide">
+                                    <ImageDim imageset="TaharezLook" image="VertScrollUpNormal" dimension="Height"/>
+                                </DimOperator>
+                            </ImageDim>
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+            <VertAlignment type="BottomAligned" />
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:VertScrollDownNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:VertScrollDownHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:VertScrollDownNormal" />
+        </Child>
+        <Child  type="TaharezLook/Button" nameSuffix="__auto_decbtn__">
+            <Area>
+                <Dim type="LeftEdge" ><UnifiedDim scale="0.25" type="LeftEdge" /></Dim>
+                <Dim type="TopEdge">
+                    <ImageDim imageset="TaharezLook" image="VertScrollTop" dimension="Height">
+                        <DimOperator op="Multiply">
+                            <AbsoluteDim value="0.5" />
+                        </DimOperator>
+                    </ImageDim>
+                </Dim>
+                <Dim type="Width" ><UnifiedDim scale="0.6" type="Width" /></Dim>
+                <Dim type="Height" >
+                    <UnifiedDim scale="0.6" type="Width">
+                        <DimOperator op="Multiply">
+                            <ImageDim imageset="TaharezLook" image="VertScrollUpNormal" dimension="Width">
+                                <DimOperator op="Divide">
+                                    <ImageDim imageset="TaharezLook" image="VertScrollUpNormal" dimension="Height"/>
+                                </DimOperator>
+                            </ImageDim>
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+            <Property name="UseStandardImagery" value="False" />
+            <Property name="NormalImage" value="set:TaharezLook image:VertScrollUpNormal" />
+            <Property name="HoverImage" value="set:TaharezLook image:VertScrollUpHover" />
+            <Property name="PushedImage" value="set:TaharezLook image:VertScrollUpNormal" />
+        </Child>
+        <Child  type="TaharezLook/LargeVerticalScrollbarThumb" nameSuffix="__auto_thumb__">
+            <Area>
+                <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                <Dim type="Width" ><UnifiedDim scale="0.4" type="Width" /></Dim>
+                <Dim type="Height" >
+                    <UnifiedDim scale="0.4" type="Width">
+                        <DimOperator op="Multiply">
+                            <ImageDim imageset="TaharezLook" image="VertScrollThumbNormal" dimension="Height">
+                                <DimOperator op="Divide">
+                                    <ImageDim imageset="TaharezLook" image="VertScrollThumbNormal" dimension="Width"/>
+                                </DimOperator>
+                            </ImageDim>
+                        </DimOperator>
+                    </UnifiedDim>
+                </Dim>
+            </Area>
+        </Child>
+        <ImagerySection name="main">
+            <FrameComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="TopEdge" ><AbsoluteDim value="0" /></Dim>
+                    <Dim type="Width" ><UnifiedDim scale="1" type="Width" /></Dim>
+                    <Dim type="Height" ><UnifiedDim scale="1" type="Height" /></Dim>
+                </Area>
+                <Image type="TopEdge" imageset="TaharezLook" image="VertScrollTop" />
+                <Image type="BottomEdge" imageset="TaharezLook" image="VertScrollBottom" />
+                <Image type="Background" imageset="TaharezLook" image="VertScrollMiddle" />
+            </FrameComponent>
+            <ImageryComponent>
+                <Area>
+                    <Dim type="LeftEdge" ><UnifiedDim scale="0.45" type="LeftEdge" /></Dim>
+                    <Dim type="TopEdge" >
+                        <WidgetDim widget="__auto_decbtn__" dimension="Height">
+                            <DimOperator op="Add">
+                                <ImageDim imageset="TaharezLook" image="VertScrollTop" dimension="Height">
+                                    <DimOperator op="Multiply">
+                                        <AbsoluteDim value="0.5" />
+                                    </DimOperator>
+                                </ImageDim>
+                            </DimOperator>
+                        </WidgetDim>
+                    </Dim>
+                    <Dim type="RightEdge" ><UnifiedDim scale="1.0" type="RightEdge" /></Dim>
+                    <Dim type="BottomEdge" >
+                        <UnifiedDim scale="1.0" type="BottomEdge">
+                            <DimOperator op="Subtract">
+                                <WidgetDim widget="__auto_decbtn__" dimension="Height">
+                                    <DimOperator op="Add">
+                                        <ImageDim imageset="TaharezLook" image="VertScrollTop" dimension="Height">
+                                            <DimOperator op="Multiply">
+                                                <AbsoluteDim value="0.5" />
+                                            </DimOperator>
+                                        </ImageDim>
+                                    </DimOperator>
+                                </WidgetDim>
+                            </DimOperator>
+                        </UnifiedDim>
+                    </Dim>
+                </Area>
+                <Image imageset="TaharezLook" image="VertScrollBarSegment" />
+                <VertFormat type="Tiled" />
+            </ImageryComponent>
+        </ImagerySection>
+        <StateImagery name="Enabled">
+            <Layer>
+                <Section section="main" />
+            </Layer>
+        </StateImagery>
+        <StateImagery name="Disabled">
+            <Layer>
+                <Section section="main">
+                    <Colours topLeft="FF7F7F7F" topRight="FF7F7F7F" bottomLeft="FF7F7F7F" bottomRight="FF7F7F7F" />
+                </Section>
+            </Layer>
+        </StateImagery>
+    </WidgetLook>
+</Falagard>
Index: /ColladaPlugin/demo/media/gui/TaharezLookSkin.scheme
===================================================================
--- /ColladaPlugin/demo/media/gui/TaharezLookSkin.scheme	(revision 21)
+++ /ColladaPlugin/demo/media/gui/TaharezLookSkin.scheme	(revision 21)
@@ -0,0 +1,46 @@
+<?xml version="1.0" ?>
+<GUIScheme Name="TaharezLookSkin">
+	<Imageset Name="TaharezLook" Filename="TaharezLook.imageset" />
+	<Font Name="BlueHighway-12" Filename="bluehighway-12.font" />
+	<Font Name="BlueHighway-10" Filename="bluehighway-10.font" />
+	<Font Name="BlueHighway-8" Filename="bluehighway-8.font" />
+	<LookNFeel Filename="TaharezLook.looknfeel" />
+	<WindowSet Filename="CEGUIFalagardBase" />
+	<FalagardMapping WindowType="TaharezLook/AlternateProgressBar" TargetType="Falagard/ProgressBar" LookNFeel="TaharezLook/AltProgressBar" />
+	<FalagardMapping WindowType="TaharezLook/Button" TargetType="Falagard/Button" LookNFeel="TaharezLook/Button" />
+	<FalagardMapping WindowType="TaharezLook/Checkbox" TargetType="Falagard/Checkbox" LookNFeel="TaharezLook/Checkbox" />
+	<FalagardMapping WindowType="TaharezLook/ComboDropList" TargetType="Falagard/ComboDropList" LookNFeel="TaharezLook/ComboDropList" />
+	<FalagardMapping WindowType="TaharezLook/ComboEditbox" TargetType="Falagard/Editbox" LookNFeel="TaharezLook/ComboEditbox" />
+	<FalagardMapping WindowType="TaharezLook/Combobox" TargetType="Falagard/Combobox" LookNFeel="TaharezLook/Combobox" />
+	<FalagardMapping WindowType="TaharezLook/Editbox" TargetType="Falagard/Editbox" LookNFeel="TaharezLook/Editbox" />
+	<FalagardMapping WindowType="TaharezLook/FrameWindow" TargetType="Falagard/FrameWindow" LookNFeel="TaharezLook/FrameWindow" />
+	<FalagardMapping WindowType="TaharezLook/HorizontalScrollbar" TargetType="Falagard/Scrollbar" LookNFeel="TaharezLook/HorizontalScrollbar" />
+	<FalagardMapping WindowType="TaharezLook/HorizontalScrollbarThumb" TargetType="Falagard/Thumb" LookNFeel="TaharezLook/HorizontalScrollbarThumb" />
+	<FalagardMapping WindowType="TaharezLook/LargeVerticalScrollbar" TargetType="Falagard/Scrollbar" LookNFeel="TaharezLook/LargeVerticalScrollbar" />
+	<FalagardMapping WindowType="TaharezLook/LargeVerticalScrollbarThumb" TargetType="Falagard/Thumb" LookNFeel="TaharezLook/LargeVerticalScrollbarThumb" />
+	<FalagardMapping WindowType="TaharezLook/ListHeader" TargetType="Falagard/ListHeader" LookNFeel="TaharezLook/ListHeader" />
+	<FalagardMapping WindowType="TaharezLook/ListHeaderSegment" TargetType="Falagard/ListHeaderSegment" LookNFeel="TaharezLook/ListHeaderSegment" />
+	<FalagardMapping WindowType="TaharezLook/Listbox" TargetType="Falagard/Listbox" LookNFeel="TaharezLook/Listbox" />
+	<FalagardMapping WindowType="TaharezLook/Menubar" TargetType="Falagard/Menubar" LookNFeel="TaharezLook/Menubar" />
+	<FalagardMapping WindowType="TaharezLook/MenuItem" TargetType="Falagard/MenuItem" LookNFeel="TaharezLook/MenuItem" />
+	<FalagardMapping WindowType="TaharezLook/MultiColumnList" TargetType="Falagard/MultiColumnList" LookNFeel="TaharezLook/MultiColumnList" />
+	<FalagardMapping WindowType="TaharezLook/MultiLineEditbox" TargetType="Falagard/MultiLineEditbox" LookNFeel="TaharezLook/MultiLineEditbox" />
+	<FalagardMapping WindowType="TaharezLook/PopupMenu" TargetType="Falagard/PopupMenu" LookNFeel="TaharezLook/PopupMenu" />
+	<FalagardMapping WindowType="TaharezLook/ProgressBar" TargetType="Falagard/ProgressBar" LookNFeel="TaharezLook/ProgressBar" />
+	<FalagardMapping WindowType="TaharezLook/RadioButton" TargetType="Falagard/RadioButton" LookNFeel="TaharezLook/RadioButton" />
+	<FalagardMapping WindowType="TaharezLook/ScrollablePane" TargetType="Falagard/ScrollablePane" LookNFeel="TaharezLook/ScrollablePane" />
+	<FalagardMapping WindowType="TaharezLook/Slider" TargetType="Falagard/Slider" LookNFeel="TaharezLook/Slider" />
+	<FalagardMapping WindowType="TaharezLook/SliderThumb" TargetType="Falagard/Thumb" LookNFeel="TaharezLook/SliderThumb" />
+	<FalagardMapping WindowType="TaharezLook/Spinner" TargetType="Falagard/Spinner" LookNFeel="TaharezLook/Spinner" />
+	<FalagardMapping WindowType="TaharezLook/StaticImage" TargetType="Falagard/StaticImage" LookNFeel="TaharezLook/StaticImage" />
+	<FalagardMapping WindowType="TaharezLook/StaticText" TargetType="Falagard/StaticText" LookNFeel="TaharezLook/StaticText" />
+	<FalagardMapping WindowType="TaharezLook/SystemButton" TargetType="Falagard/SystemButton" LookNFeel="TaharezLook/Button" />
+	<FalagardMapping WindowType="TaharezLook/TabButton" TargetType="Falagard/TabButton" LookNFeel="TaharezLook/TabButton" />
+	<FalagardMapping WindowType="TaharezLook/TabControl" TargetType="Falagard/TabControl" LookNFeel="TaharezLook/TabControl" />
+	<FalagardMapping WindowType="TaharezLook/TabPane" TargetType="Falagard/TabPane" LookNFeel="TaharezLook/TabPane" />
+	<FalagardMapping WindowType="TaharezLook/Titlebar" TargetType="Falagard/Titlebar" LookNFeel="TaharezLook/Titlebar" />
+	<FalagardMapping WindowType="TaharezLook/Tooltip" TargetType="Falagard/Tooltip" LookNFeel="TaharezLook/Tooltip" />
+	<FalagardMapping WindowType="TaharezLook/VerticalScrollbar" TargetType="Falagard/Scrollbar" LookNFeel="TaharezLook/VerticalScrollbar" />
+	<FalagardMapping WindowType="TaharezLook/VerticalScrollbarThumb" TargetType="Falagard/Thumb" LookNFeel="TaharezLook/VerticalScrollbarThumb" />
+	<FalagardMapping WindowType="TaharezLook/VUMeter" TargetType="Falagard/ProgressBar" LookNFeel="TaharezLook/VUMeter" />
+</GUIScheme>
Index: /ColladaPlugin/demo/media/gui/bluehighway-10.font
===================================================================
--- /ColladaPlugin/demo/media/gui/bluehighway-10.font	(revision 21)
+++ /ColladaPlugin/demo/media/gui/bluehighway-10.font	(revision 21)
@@ -0,0 +1,2 @@
+<?xml version="1.0" ?>
+<Font Name="BlueHighway-10" Filename="bluehigh.ttf" Type="Dynamic" Size="10" NativeHorzRes="1024" NativeVertRes="768" AutoScaled="false" AntiAlias="true" />
Index: /ColladaPlugin/demo/media/gui/bluehighway-12.font
===================================================================
--- /ColladaPlugin/demo/media/gui/bluehighway-12.font	(revision 21)
+++ /ColladaPlugin/demo/media/gui/bluehighway-12.font	(revision 21)
@@ -0,0 +1,2 @@
+<?xml version="1.0" ?>
+<Font Name="BlueHighway-12" Filename="bluehigh.ttf" Type="Dynamic" Size="12" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true"/>
Index: /ColladaPlugin/demo/media/gui/bluehighway-8.font
===================================================================
--- /ColladaPlugin/demo/media/gui/bluehighway-8.font	(revision 21)
+++ /ColladaPlugin/demo/media/gui/bluehighway-8.font	(revision 21)
@@ -0,0 +1,2 @@
+<?xml version="1.0" ?>
+<Font Name="BlueHighway-8" Filename="bluehigh.ttf" Type="Dynamic" Size="8" NativeHorzRes="1024" NativeVertRes="768" AutoScaled="true" AntiAlias="true" />
Index: /ColladaPlugin/demo/scripts/Demo_Collada_vc8.vcproj
===================================================================
--- /ColladaPlugin/demo/scripts/Demo_Collada_vc8.vcproj	(revision 21)
+++ /ColladaPlugin/demo/scripts/Demo_Collada_vc8.vcproj	(revision 21)
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="Demo_OgreColladaViewer"
+	ProjectGUID="{15613409-8F0E-4AC6-91EB-0792419A543D}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)\VCProjectDefaults\UpgradeFromVC70.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;;..\..\include;&quot;$(LIBXML_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\Common\CEGUIRenderer\include&quot;;&quot;$(OGRE_HOME)\OgreMain\Include&quot;;&quot;$(OGRE_HOME)\Dependencies\Include&quot;;&quot;$(ICONV_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib Plugin_Collada.lib CEGUIBase_d.lib OgreGUIRenderer_d.lib OIS.lib"
+				OutputFile="$(OutDir)/Demo_Collada.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\$(ConfigurationName)&quot;;..\..\bin\debug;&quot;$(OGRE_HOME)\Dependencies\lib\$(ConfigurationName)&quot;;&quot;$(OGRE_HOME)\Samples\Common\CEGUIRenderer\lib&quot;;&quot;$(ICONV_HOME)\lib&quot;;&quot;$(OGRE_HOME)\lib&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/Demo_Collada.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="&#x0D;&#x0A;&#x0D;&#x0A;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)\VCProjectDefaults\UpgradeFromVC70.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				EnableIntrinsicFunctions="true"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="true"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_HOME)\include&quot;;..\..\include;&quot;$(LIBXML_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\Common\CEGUIRenderer\include&quot;;&quot;$(OGRE_HOME)\OgreMain\Include&quot;;&quot;$(OGRE_HOME)\Dependencies\Include&quot;;&quot;$(ICONV_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="true"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib Plugin_Collada.lib CEGUIBase.lib OgreGUIRenderer.lib OIS.lib"
+				OutputFile="$(OutDir)/Demo_Collada.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\$(ConfigurationName)&quot;;..\..\bin\debug;&quot;$(OGRE_HOME)\Dependencies\lib\$(ConfigurationName)&quot;;&quot;$(OGRE_HOME)\Samples\Common\CEGUIRenderer\lib&quot;;&quot;$(ICONV_HOME)\lib&quot;;&quot;$(OGRE_HOME)\lib&quot;"
+				GenerateDebugInformation="false"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			>
+			<File
+				RelativePath="..\src\ColladaDemo.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\src\UIHandler.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc"
+			>
+			<File
+				RelativePath="..\include\ColladaDemo.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\UIHandler.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ColladaPlugin/demo/src/ColladaDemo.cpp
===================================================================
--- /ColladaPlugin/demo/src/ColladaDemo.cpp	(revision 21)
+++ /ColladaPlugin/demo/src/ColladaDemo.cpp	(revision 21)
@@ -0,0 +1,613 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2005 The OGRE Team
+Also see acknowledgements in Readme.html
+
+You may use this sample code for anything you like, it is not covered by the
+LGPL like the rest of the engine.
+-----------------------------------------------------------------------------
+*/
+#include "OgreColladaManager.h"
+#include "OgreColladaScene.h"
+#include "ColladaDemo.h"
+#include "UIHandler.h"
+
+#include "OgreConfigFile.h"
+#include "OgreException.h"
+#include "OgreRoot.h"
+#include "OgreTextureManager.h"
+#include "OgreCamera.h"
+#include "OgreRenderWindow.h"
+#include "OgreMeshManager.h"
+#include "OgreSkeletonManager.h"
+#include "OgreMaterialManager.h"
+
+#include "OgreCEGUIRenderer.h"
+#include "OgreCEGUIResourceProvider.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include "windows.h"
+#endif
+
+
+#define DEFAULT_CAMERA_NAME "DefaultCamera"
+//-----------------------------------------------------------------------------
+//	sub-class for ListboxTextItem that auto-sets the selection brush
+//	image.
+//-----------------------------------------------------------------------------
+class MyListItem : public CEGUI::ListboxTextItem
+{
+public:
+    MyListItem(const CEGUI::String& text, CEGUI::uint id) : CEGUI::ListboxTextItem(text, id)
+	{
+		setSelectionBrushImage("TaharezLook", "MultiListSelectionBrush");
+	}
+};
+
+//-----------------------------------------------------------------------------
+//      ColladaDemo Methods
+//-----------------------------------------------------------------------------
+ColladaDemo::~ColladaDemo()
+{
+	delete mGUISystem;
+	delete mGUIRenderer;
+    delete mFrameListener;
+
+    // get rid of the shared pointers before shutting down ogre or exceptions occure
+
+    delete mRoot;
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::go()
+{
+    if (!setup())
+        return;
+
+    mRoot->startRendering();
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::setup()
+{
+    bool setupCompleted = false;
+
+    mRoot = new Ogre::Root();
+
+    setupResources();
+    if (configure())
+    {
+
+        mSceneMgr = mRoot->createSceneManager(Ogre::ST_GENERIC, "ExampleSMInstance");
+        createDefaultCamera();
+        createViewports();
+
+        // Set default mipmap level (NB some APIs ignore this)
+        Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);
+
+        Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
+        if (setupGUI())
+        {
+            // Set default ambient light level
+            mSceneMgr->setAmbientLight(Ogre::ColourValue(0.3, 0.3, 0.3));
+            createFrameListener();
+	        // load some GUI stuff for demo.
+	        initDemoEventWiring();
+	        updateAvailableCameras();
+            setupCompleted = true;
+        }
+    }
+
+	return setupCompleted;
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::configure()
+{
+    // Show the configuration dialog and initialise the system
+    if(mRoot->showConfigDialog())
+    {
+        // If returned true, user clicked OK so initialise
+        // Here we choose to let the system create a default rendering window by passing 'true'
+        mWindow = mRoot->initialise(true);
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::createDefaultCamera()
+{
+    // Create the default camera to be used if the dae document does not provide one
+    mActiveCamera = mSceneMgr->createCamera(DEFAULT_CAMERA_NAME);
+
+    // Default Position it at 500 in Z direction
+    mActiveCamera->setPosition(Ogre::Vector3(0,100,500));
+    // Look back along -Z
+    mActiveCamera->lookAt(Ogre::Vector3(0,0,-100));
+    mActiveCamera->setNearClipDistance(1);
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::createViewports()
+{
+    // Create one viewport, entire window
+    Ogre::Viewport* vp = mWindow->addViewport(mActiveCamera);
+    vp->setBackgroundColour(Ogre::ColourValue(0,0,0));
+
+    // Alter the camera aspect ratio to match the viewport
+    mActiveCamera->setAspectRatio(
+        Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::setupResources()
+{
+    // Load resource paths from config file
+    Ogre::ConfigFile cf;
+
+    #if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
+        Ogre::String mResourcePath;
+        mResourcePath = bundlePath() + "/Contents/Resources/";
+        cf.load(mResourcePath + "resources.cfg");
+    #else
+        cf.load("resources.cfg");
+    #endif
+
+    // Go through all sections & settings in the file
+    Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator();
+
+    Ogre::String secName, typeName, archName;
+    while (seci.hasMoreElements())
+    {
+        secName = seci.peekNextKey();
+        Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
+        Ogre::ConfigFile::SettingsMultiMap::iterator i;
+        for (i = settings->begin(); i != settings->end(); ++i)
+        {
+            typeName = i->first;
+            archName = i->second;
+            Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
+                archName, typeName, secName);
+        }
+    }
+
+	Ogre::LogManager::getSingleton().logMessage( "Resource directories setup" );
+
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::setupGUI()
+{
+    bool setupGUICompleted = false;
+	// setup GUI system
+	try
+	{
+        mGUIRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, mSceneMgr);
+        // load scheme and set up defaults
+
+        mGUISystem = new CEGUI::System(mGUIRenderer,(CEGUI::OgreCEGUIResourceProvider *)0,
+			(CEGUI::XMLParser *)0,
+			(CEGUI::ScriptModule *)0,
+			(CEGUI::utf8*)"ColladaDemoCegui.config");
+        CEGUI::System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow");
+        setupGUICompleted = true;
+	}
+	catch(...)
+	{
+        Ogre::LogManager::getSingleton().logMessage("failed to setup the GUI so shutting down...");
+	}
+	
+	return setupGUICompleted;
+
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::updateDaeFileList()
+{
+	using namespace CEGUI;
+
+	Combobox* cbobox = (Combobox*)WindowManager::getSingleton().getWindow("DaeCombos");
+    cbobox->resetList();
+
+    Ogre::StringVectorPtr daeStringVector = Ogre::ResourceGroupManager::getSingleton().findResourceNames( Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, "*.dae" );
+    std::vector<Ogre::String>::iterator daeFileNameIterator = daeStringVector->begin();
+
+    while ( daeFileNameIterator != daeStringVector->end() )
+	{
+        cbobox->addItem(new MyListItem( (*daeFileNameIterator).c_str(), 0 ));
+        ++daeFileNameIterator;
+	}
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::initDemoEventWiring()
+{
+	using namespace CEGUI;
+
+	WindowManager::getSingleton().getWindow("ExitDemoBtn")->
+		subscribeEvent(PushButton::EventClicked, CEGUI::Event::Subscriber(&ColladaDemo::handleQuit, this));
+
+	WindowManager::getSingleton().getWindow("DaeCombos")->
+        subscribeEvent(Combobox::EventListSelectionAccepted, CEGUI::Event::Subscriber(&ColladaDemo::handleDaeComboChanged, this));
+	WindowManager::getSingleton().getWindow("DaeCombos")->
+        subscribeEvent(Combobox::EventDropListDisplayed, CEGUI::Event::Subscriber(&ColladaDemo::handleUpdateList, this));
+	WindowManager::getSingleton().getWindow("CameraCombos")->
+        subscribeEvent(Combobox::EventListSelectionAccepted, CEGUI::Event::Subscriber(&ColladaDemo::handleCameraComboChanged, this));
+	WindowManager::getSingleton().getWindow("AutoReloadCB")->
+        subscribeEvent(Checkbox::EventCheckStateChanged, CEGUI::Event::Subscriber(&ColladaDemo::handleAutoReloadChanged, this));
+
+    Window* wndw = WindowManager::getSingleton().getWindow("root");
+
+	wndw->subscribeEvent(Window::EventMouseMove, CEGUI::Event::Subscriber(&UIHandler::handleMouseMove, mFrameListener));
+
+	wndw->subscribeEvent(Window::EventMouseButtonUp, CEGUI::Event::Subscriber(&UIHandler::handleMouseButtonUp, mFrameListener));
+
+	wndw->subscribeEvent(Window::EventMouseButtonDown, CEGUI::Event::Subscriber(&UIHandler::handleMouseButtonDown, mFrameListener));
+
+	wndw->subscribeEvent(Window::EventMouseWheel, CEGUI::Event::Subscriber(&UIHandler::handleMouseWheelEvent, mFrameListener));
+	wndw->subscribeEvent(Window::EventKeyDown, CEGUI::Event::Subscriber(&UIHandler::handleKeyDownEvent, mFrameListener ));
+	wndw->subscribeEvent(Window::EventKeyUp, CEGUI::Event::Subscriber(&UIHandler::handleKeyUpEvent, mFrameListener ));
+
+    showLoadingWindow(false);
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::doErrorBox(const char* text)
+{
+	using namespace CEGUI;
+
+	WindowManager& winMgr = WindowManager::getSingleton();
+	Window* root = winMgr.getWindow("root_wnd");
+
+	FrameWindow* errbox;
+
+	try
+	{
+		errbox = (FrameWindow*)winMgr.getWindow("ErrorBox");
+	}
+	catch(UnknownObjectException x)
+	{
+#if 0
+		// create frame window for box
+		FrameWindow* fwnd = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "ErrorBox");
+		root->addChildWindow(fwnd);
+	//	fwnd->setPosition(Point(0.25, 0.25f));
+//		fwnd->setMaximumSize(Size(1.0f, 1.0f));
+		fwnd->setSize(Size(0.5f, 0.5f));
+		fwnd->setText("CEGUI Demo - Error!");
+		fwnd->setDragMovingEnabled(false);
+		fwnd->setSizingEnabled(false);
+		fwnd->setAlwaysOnTop(true);
+		fwnd->setCloseButtonEnabled(false);
+
+		// create error text message
+		StaticText* msg = (StaticText*)winMgr.createWindow("TaharezLook/StaticText", "ErrorBox/Message");
+		fwnd->addChildWindow(msg);
+		msg->setPosition(Point(0.1f, 0.1f));
+		msg->setSize(Size(0.8f, 0.5f));
+		msg->setVerticalFormatting(StaticText::VertCentred);
+		msg->setHorizontalFormatting(StaticText::HorzCentred);
+		msg->setBackgroundEnabled(false);
+		msg->setFrameEnabled(false);
+
+		// create ok button
+		PushButton* btn = (PushButton*)winMgr.createWindow("TaharezLook/Button", "ErrorBox/OkButton");
+		fwnd->addChildWindow(btn);
+		btn->setPosition(Point(0.3f, 0.80f));
+		btn->setSize(Size(0.4f, 0.1f));
+		btn->setText("Okay!");
+
+		// subscribe event
+		btn->subscribeEvent(PushButton::EventClicked, CEGUI::Event::Subscriber(&ColladaDemo::handleErrorBox, this ));
+
+		errbox = fwnd;
+#endif
+	}
+
+	errbox->getChild("ErrorBox/Message")->setText(text);
+	errbox->show();
+	errbox->activate();
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::viewColladaDocument(const Ogre::String& daeFileName)
+{
+
+    Ogre::LogManager::getSingleton().logMessage("ColladaDocument - import started");
+    try
+    {
+        Ogre::ColladaDocumentPtr daeDoc = Ogre::ColladaManager::getSingleton().load(daeFileName,
+            mSceneMgr);
+        // build up scene fully if document was loaded
+        if (!daeDoc.isNull())
+        {
+            Ogre::ColladaSceneNode* node = daeDoc->getScene();
+            if (node)
+            {
+                daeDoc->getScene()->createOgreInstance(NULL);
+                Ogre::LogManager::getSingleton().logMessage("ColladaDocument - import finished");
+            }
+            else
+            {
+                Ogre::LogManager::getSingleton().logMessage("ColladaDocument - import failed");
+            }
+        }
+    }
+    catch(...)
+    {
+        Ogre::LogManager::getSingleton().logMessage("ColladaDocument - failed to load");
+    }
+    // reset last update time so file update checking starts all over again if enabled
+    mLastUpdateTime = 0;
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::checkActiveFileUpdated()
+{
+    // get time stamp of file which will be used for auto reload feature
+    // Note: this will fail if the file was obtained from a zip archive
+    // Note2: we cheat here and only allow files loaded from ..\..\media\dae path to auto reload
+    Ogre::String filename = "..\\..\\media\\dae\\" + mActiveDaeFileName;
+    bool fileUpdated = false;
+    struct stat tagStat;
+    int ret = stat(filename.c_str(), &tagStat);
+    // only check update if file was accessible
+    if (ret == 0)
+    {
+        if (tagStat.st_mtime != mLastUpdateTime)
+        {
+            // file is updated only if this not the first time checking
+            fileUpdated = mLastUpdateTime != 0;
+            mLastUpdateTime = tagStat.st_mtime;
+        }
+    }
+    return fileUpdated;
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::handleQuit(const CEGUI::EventArgs& e)
+{
+	mRoot->queueEndRendering();
+    return true;
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::handleDaeComboChanged(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+
+    // get the selected mesh filename from the combo box
+	CEGUI::ListboxItem* item = ((Combobox*)((const WindowEventArgs&)e).window)->getSelectedItem();
+    mActiveDaeFileName = item->getText().c_str();
+    loadActiveDae();
+    return true;
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::handleCameraComboChanged(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+
+    // get the selected mesh filename from the combo box
+	CEGUI::ListboxItem* item = ((Combobox*)((const WindowEventArgs&)e).window)->getSelectedItem();
+
+    // view the selected document
+    setActiveCamera(item->getText().c_str());
+    return true;
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::handleAutoReloadChanged(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+
+    mAutoReload = ((Checkbox*)((const WindowEventArgs&)e).window)->isSelected();
+    return true;
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::updateAvailableCameras()
+{
+	using namespace CEGUI;
+
+    Combobox* cbobox = (Combobox*)WindowManager::getSingleton().getWindow("CameraCombos");
+    cbobox->resetList();
+
+    // find first non default camera and make it active
+    Ogre::String activeCameraName;
+    Ogre::SceneManager::CameraIterator cameras = mSceneMgr->getCameraIterator();
+
+    while (cameras.hasMoreElements())
+    {
+        Ogre::Camera* camera = cameras.getNext();
+        cbobox->addItem(new MyListItem( camera->getName().c_str(), 0 ));
+        // make the first non default camera the active camera
+        if (activeCameraName.empty() && (camera->getName() != DEFAULT_CAMERA_NAME))
+        {
+            activeCameraName = camera->getName();
+        }
+    }
+
+    // if no dae camera was found then use the default camera
+    if (activeCameraName.empty()) activeCameraName = DEFAULT_CAMERA_NAME;
+
+	// make camera item visible
+    Editbox* eb = static_cast<Editbox*>(WindowManager::getSingleton().getWindow(cbobox->getName()
+        + "__auto_editbox__"));
+    eb->setText(activeCameraName.c_str());
+
+    setActiveCamera(activeCameraName);
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::setActiveCamera(const Ogre::String& cameraName)
+{
+    assert(mSceneMgr);
+    assert(mWindow);
+    // get the camera by name from the scenemanager and tell the first viewport of the 
+    // current render window to use it.
+    try
+    {
+        mActiveCamera = mSceneMgr->getCamera(cameraName);
+        mWindow->getViewport(0)->setCamera(mActiveCamera);
+    }
+	catch (Ogre::Exception& e)
+	{
+        Ogre::LogManager::getSingleton().logMessage("ColladaDemo::setActiveCamera(\"" +
+            cameraName + ") failed: " + e.getFullDescription());
+	}
+}
+
+//--------------------------------------------------------------------------
+bool ColladaDemo::handleErrorBox(const CEGUI::EventArgs& e)
+{
+	CEGUI::WindowManager::getSingleton().getWindow((CEGUI::utf8*)"ErrorBox")->hide();
+    return true;
+}
+
+bool ColladaDemo::handleUpdateList(const CEGUI::EventArgs& e)
+{
+    updateDaeFileList();
+    return true;
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::createFrameListener()
+{
+	mFrameListener= new UIHandler(this);
+	mRoot->addFrameListener(mFrameListener);
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::clearScene()
+{
+	using namespace Ogre;
+
+	try
+    {
+		mWindow->removeAllViewports();
+		mSceneMgr->destroyAllCameras();
+
+        if( mSceneMgr )
+		{
+			mSceneMgr->clearScene();
+		}
+
+		MeshManager::getSingleton().removeAll();
+		SkeletonManager::getSingleton().removeAll();
+        ColladaManager::getSingleton().removeAll();
+        MaterialManager::getSingleton().removeAll();
+
+		createDefaultCamera();
+        createViewports();
+	}
+	catch (Ogre::Exception& e)
+	{
+        Ogre::LogManager::getSingleton().logMessage("Clear Scene failed: " + e.getFullDescription());
+	}
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::loadActiveDae()
+{
+    // que the loading so that Loading window can get a chance to be rendered
+    if (!mLoadQued)
+    {
+        showLoadingWindow(true);
+        mLoadQued = true;
+        mLastFrameNumber = mRoot->getCurrentFrameNumber();
+    }
+    // perform loading and view if load was qued and rendering has advanced to the next frame
+    else if (mRoot->getCurrentFrameNumber() > mLastFrameNumber)
+    {
+        // erase current scene
+        clearScene();
+        // view the selected document
+        viewColladaDocument(mActiveDaeFileName);
+        updateAvailableCameras();
+        showLoadingWindow(false);
+        mLoadQued = false;
+    }
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::updateAutoReload(float time)
+{
+    if (mLoadQued)
+    {
+        loadActiveDae();
+    }
+
+    if (mAutoReload)
+    {
+        mElapsedTime += time;
+        if (mElapsedTime > 1.0)
+        {
+            mElapsedTime = 0.0;
+            if (!mActiveDaeFileName.empty())
+            {
+                if (checkActiveFileUpdated())
+                {
+                    loadActiveDae();
+                }
+            }
+        }
+    }
+}
+
+//--------------------------------------------------------------------------
+void ColladaDemo::showLoadingWindow(const bool show)
+{
+    if (!mLoadingWindow)
+    {
+        mLoadingWindow = CEGUI::WindowManager::getSingleton().getWindow("ColladaDemo/LoadWin");
+    }
+    
+    mLoadingWindow->setVisible(show);
+}
+
+//--------------------------------------------------------------------------
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
+#else
+int main(int argc, char *argv[])
+#endif
+{
+    // Create application object
+    ColladaDemo app;
+
+//    SET_TERM_HANDLER;
+    
+    try {
+        app.go();
+    } catch( Ogre::Exception& e ) {
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+        MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
+#else
+        std::cerr << "An exception has occured: " <<
+            e.getFullDescription().c_str() << std::endl;
+#endif
+    }
+
+    return 0;
+}
+
+#ifdef __cplusplus
+}
+#endif
Index: /ColladaPlugin/demo/src/Makefile.am
===================================================================
--- /ColladaPlugin/demo/src/Makefile.am	(revision 21)
+++ /ColladaPlugin/demo/src/Makefile.am	(revision 21)
@@ -0,0 +1,14 @@
+
+noinst_PROGRAMS = ColladaDemo
+
+ColladaDemo_CXXFLAGS = -I$(top_srcdir)/demo/include $(OGRE_CFLAGS) $(XML2_CFLAGS) $(CEGUI_CFLAGS) $(CEGUI_OGRE_CFLAGS) -I$(top_srcdir)/include
+ColladaDemo_LDFLAGS = $(XML2_LIBS) $(OGRE_LIBS) $(CEGUI_LIBS) $(CEGUI_OGRE_LIBS) --no-install
+ColladaDemo_LDADD = $(top_srcdir)/src/Plugin_Collada.la 
+
+ColladaDemo_SOURCES = ColladaDemo.cpp UIHandler.cpp
+
+
+install-exec-local:
+	$(INSTALL_PROGRAM) .libs/ColladaDemo $(top_builddir)/demo/bin/Debug
+
+MAINTAINERCLEANFILES = Makefile.in
Index: /ColladaPlugin/demo/src/UIHandler.cpp
===================================================================
--- /ColladaPlugin/demo/src/UIHandler.cpp	(revision 21)
+++ /ColladaPlugin/demo/src/UIHandler.cpp	(revision 21)
@@ -0,0 +1,429 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2006 The OGRE Team
+Also see acknowledgements in Readme.html
+
+You may use this sample code for anything you like, it is not covered by the
+LGPL like the rest of the engine.
+-----------------------------------------------------------------------------
+*/
+
+#include "ColladaDemo.h"
+#include "UIHandler.h"
+
+#include "OgreRenderWindow.h"
+#include "OgreException.h"
+#include "OgreCamera.h"
+#include "OgreStringConverter.h"
+
+//--------------------------------------------------------------------------
+//	UIHandler methods that handle all input for this demo.
+//--------------------------------------------------------------------------
+
+UIHandler::UIHandler(ColladaDemo* main)
+    : mMain(main)
+	, mTranslateVector(Ogre::Vector3::ZERO)
+    , mStatsOn(true)
+	, mNumScreenShots(0)
+    , mMoveScale(0.0f)
+    , mRotScale(0.0f)
+	, mSpeed(MINSPEED)
+	, mAvgFrameTime(0.1)
+    , mSceneDetailIndex(0)
+    , mMoveSpeed(100)
+    , mRotateSpeed(0)
+	, mSkipCount(0)
+	, mUpdateFreq(50)
+    , mLastMousePositionSet(false)
+	, mRotX(0)
+	, mRotY(0)
+    , mFiltering(Ogre::TFO_BILINEAR)
+    , mAniso(1)
+	, mQuit(false)
+    , mLMBDown(false)
+    , mRMBDown(false)
+    , mProcessMovement(false)
+    , mUpdateMovement(false)
+    , mMoveFwd(false)
+    , mMoveBck(false)
+    , mMoveLeft(false)
+    , mMoveRight(false)
+
+{
+	// using buffered input
+	OIS::ParamList pl;
+	size_t windowHnd = 0;
+	std::ostringstream windowHndStr;
+	main->getRenderWindow()->getCustomAttribute("WINDOW", &windowHnd);
+	windowHndStr << windowHnd;
+	pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
+
+	mInputManager = OIS::InputManager::createInputSystem(windowHnd);
+
+	mGuiRenderer = CEGUI::System::getSingleton().getRenderer();
+
+	mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject( OIS::OISKeyboard, true ));
+	mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject( OIS::OISMouse, true ));
+	CEGUI::Rect R=mGuiRenderer->getRect();
+	//Set Mouse Region.. if window resizes, we should alter this to reflect as well
+	const OIS::MouseState &ms = mMouse->getMouseState();
+	ms.width = R.getWidth();
+	ms.height =  R.getHeight();
+
+	mMouse->setEventCallback(this);
+	mKeyboard->setEventCallback(this);
+	// using buffered input
+	/*mEventProcessor = new Ogre::EventProcessor();
+	mEventProcessor->initialise(mMain->getRenderWindow());
+	mEventProcessor->startProcessingEvents();
+	mEventProcessor->addKeyListener(this);
+	mEventProcessor->addMouseMotionListener(this);
+	mEventProcessor->addMouseListener(this);
+	mInputDevice = mEventProcessor->getInputReader();*/
+
+
+	mGuiAvg   = CEGUI::WindowManager::getSingleton().getWindow("OPAverageFPS");
+	mGuiCurr  = CEGUI::WindowManager::getSingleton().getWindow("OPCurrentFPS");
+	mGuiBest  = CEGUI::WindowManager::getSingleton().getWindow("OPBestFPS");
+	mGuiWorst = CEGUI::WindowManager::getSingleton().getWindow("OPWorstFPS");
+	mGuiTris  = CEGUI::WindowManager::getSingleton().getWindow("OPTriCount");
+	mGuiDbg   = CEGUI::WindowManager::getSingleton().getWindow("OPDebugMsg");
+	mRoot	  = CEGUI::WindowManager::getSingleton().getWindow("root");
+}
+
+//--------------------------------------------------------------------------
+UIHandler::~UIHandler()
+{
+	if(mInputManager)
+	{
+		mInputManager->destroyInputObject(mMouse);
+		mInputManager->destroyInputObject(mKeyboard);
+		OIS::InputManager::destroyInputSystem(mInputManager);
+		mInputManager = 0;
+	}
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::frameStarted(const Ogre::FrameEvent& evt)
+{
+	mMouse->capture();
+	mKeyboard->capture();
+	if (mQuit)
+		return false;
+	else
+	{
+		mSkipCount++;
+		if (mSkipCount >= mUpdateFreq)
+		{
+			mSkipCount = 0;
+			updateStats();
+            // check to see if window got deactivated because user alt-tabbed out, set it back to active so that render updates 
+            // updates are visible even though the window does not have focus
+            if (!mMain->getRenderWindow()->isClosed() && !mMain->getRenderWindow()->isActive())
+                mMain->getRenderWindow()->setActive(true);
+
+		}
+		// update movement process
+		if(mProcessMovement || mUpdateMovement)
+		{
+			mTranslateVector.x += mMoveLeft ? mAvgFrameTime * -MOVESPEED : 0;
+			mTranslateVector.x += mMoveRight ? mAvgFrameTime * MOVESPEED : 0;
+			mTranslateVector.z += mMoveFwd ? mAvgFrameTime * -MOVESPEED : 0;
+			mTranslateVector.z += mMoveBck ? mAvgFrameTime * MOVESPEED : 0;
+            
+            Ogre::SceneNode* parentSceneNode = mMain->getActiveCamera()->getParentSceneNode();
+            if (parentSceneNode)
+            {
+                parentSceneNode->yaw(Ogre::Angle(mRotX));
+			    parentSceneNode->pitch(Ogre::Angle(mRotY));
+                parentSceneNode->translate(mTranslateVector, Ogre::Node::TS_LOCAL);
+            }
+            else
+            {
+                mMain->getActiveCamera()->yaw(Ogre::Angle(mRotX));
+			    mMain->getActiveCamera()->pitch(Ogre::Angle(mRotY));
+			    mMain->getActiveCamera()->moveRelative(mTranslateVector);
+            }
+
+			mUpdateMovement = false;
+			mRotX = 0;
+			mRotY = 0;
+			mTranslateVector = Ogre::Vector3::ZERO;
+		}
+
+        mMain->updateAutoReload(mAvgFrameTime);
+
+		return true;
+	}
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::mouseMoved (const OIS::MouseEvent &e)
+{
+	CEGUI::System::getSingleton().injectMouseMove(
+		e.state.X.rel,
+		e.state.Y.rel);
+	CEGUI::System::getSingleton().injectMouseWheelChange(e.state.Z.rel);
+	return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::mouseDragged (const OIS::MouseEvent &e)
+{
+	return mouseMoved(e);
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::keyPressed (const OIS::KeyEvent &e)
+{
+	// give 'quitting' priority
+	if (e.key == OIS::KC_ESCAPE)
+	{
+		mQuit = true;
+		return true;
+	}
+
+	if (e.key== OIS::KC_SYSRQ )
+    {
+		char tmp[20];
+		sprintf(tmp, "screenshot_%d.png", ++mNumScreenShots);
+		mMain->getRenderWindow()->writeContentsToFile(tmp);
+//		mMain->getRenderWindow()->setDebugText(Ogre::String("Wrote ") + tmp);
+    }
+
+	// do event injection
+	CEGUI::System& cegui = CEGUI::System::getSingleton();
+
+	// key down
+	cegui.injectKeyDown(e.key);
+
+	// now character
+	cegui.injectChar(e.text);
+
+		return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::keyReleased (const OIS::KeyEvent &e)
+{
+	CEGUI::System::getSingleton().injectKeyUp(e.key);
+	return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::mousePressed (const OIS::MouseEvent &e,OIS::MouseButtonID b)
+{
+	CEGUI::System::getSingleton().injectMouseButtonDown(convertOgreButtonToCegui(b));
+	return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::mouseReleased (const OIS::MouseEvent &e,OIS::MouseButtonID b)
+{
+	CEGUI::System::getSingleton().injectMouseButtonUp(convertOgreButtonToCegui(b));
+	return true;
+}
+
+//--------------------------------------------------------------------------
+CEGUI::MouseButton UIHandler::convertOgreButtonToCegui(OIS::MouseButtonID b)
+{
+	if(b==(OIS::MB_Left))
+		return CEGUI::LeftButton;
+	if(b==(OIS::MB_Right))
+		return CEGUI::RightButton;
+	if(b==(OIS::MB_Middle))
+		return CEGUI::MiddleButton;
+	if(b==(OIS::MB_Button3))
+		return CEGUI::X1Button;
+	return CEGUI::LeftButton;
+
+}
+
+//--------------------------------------------------------------------------
+void UIHandler::updateStats()
+{
+	static CEGUI::String currFps = "Current FPS: ";
+	static CEGUI::String avgFps = "Average FPS: ";
+	static CEGUI::String bestFps = "Best FPS: ";
+	static CEGUI::String worstFps = "Worst FPS: ";
+	static CEGUI::String tris = "Triangle Count: ";
+
+
+	const Ogre::RenderTarget::FrameStats& stats = mMain->getRenderWindow()->getStatistics();
+
+	mGuiAvg->setText(avgFps + Ogre::StringConverter::toString(stats.avgFPS));
+	mGuiCurr->setText(currFps + Ogre::StringConverter::toString(stats.lastFPS));
+	mGuiBest->setText(bestFps + Ogre::StringConverter::toString(stats.bestFPS)
+		+ " " + Ogre::StringConverter::toString(stats.bestFrameTime)+" ms");
+	mGuiWorst->setText(worstFps + Ogre::StringConverter::toString(stats.worstFPS)
+		+ " " + Ogre::StringConverter::toString(stats.worstFrameTime)+" ms");
+
+	mGuiTris->setText(tris + Ogre::StringConverter::toString(stats.triangleCount));
+//	mGuiDbg->setText(mMain->getRenderWindow()->getDebugText());
+	mAvgFrameTime = 1.0f/(stats.avgFPS + 1.0f);
+	if (mAvgFrameTime > 0.1f) mAvgFrameTime = 0.1f;
+
+}
+
+
+//--------------------------------------------------------------------------
+bool UIHandler::handleMouseMove(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+
+	if( mLMBDown && !mRMBDown)
+	{
+		// rotate camera
+		mRotX += -((const MouseEventArgs&)e).moveDelta.d_x * mAvgFrameTime * 10.0;
+		mRotY += -((const MouseEventArgs&)e).moveDelta.d_y * mAvgFrameTime * 10.0;
+		MouseCursor::getSingleton().setPosition( mLastMousePosition );
+		mUpdateMovement = true;
+	}
+	else
+	{
+		if( mRMBDown && !mLMBDown)
+		{
+			// translate camera
+			mTranslateVector.x += ((const MouseEventArgs&)e).moveDelta.d_x * mAvgFrameTime * MOVESPEED;
+			mTranslateVector.y += -((const MouseEventArgs&)e).moveDelta.d_y * mAvgFrameTime * MOVESPEED;
+			//mTranslateVector.z = 0;
+			MouseCursor::getSingleton().setPosition( mLastMousePosition );
+			mUpdateMovement = true;
+		}
+		else
+		{
+			if( mRMBDown && mLMBDown)
+			{
+				mTranslateVector.z += (((const MouseEventArgs&)e).moveDelta.d_x + ((const MouseEventArgs&)e).moveDelta.d_y) * mAvgFrameTime * MOVESPEED;
+				MouseCursor::getSingleton().setPosition( mLastMousePosition );
+				mUpdateMovement = true;
+			}
+
+		}
+	}
+
+    return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::handleMouseButtonUp(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+
+	//Window* wndw = ((const WindowEventArgs&)e).window;
+	if( ((const MouseEventArgs&)e).button == LeftButton )
+	{
+		mLMBDown = false;
+	}
+
+	if( ((const MouseEventArgs&)e).button == RightButton )
+	{
+		mRMBDown = false;
+	}
+	if( !mLMBDown && !mRMBDown )
+	{
+		MouseCursor::getSingleton().show();
+		if(mLastMousePositionSet)
+		{
+			MouseCursor::getSingleton().setPosition( mLastMousePosition );
+			mLastMousePositionSet = false;
+		}
+		mRoot->releaseInput();
+	}
+
+    return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::handleMouseButtonDown(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+
+	//Window* wndw = ((const WindowEventArgs&)e).window;
+	if( ((const MouseEventArgs&)e).button == LeftButton )
+	{
+		mLMBDown = true;
+	}
+
+	if( ((const MouseEventArgs&)e).button == RightButton )
+	{
+		mRMBDown = true;
+	}
+
+	if( mLMBDown || mRMBDown )
+	{
+		MouseCursor::getSingleton().hide();
+		if (!mLastMousePositionSet)
+		{
+			mLastMousePosition = MouseCursor::getSingleton().getPosition();
+			mLastMousePositionSet = true;
+		}
+		mRoot->captureInput();
+	}
+
+    return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::handleMouseWheelEvent(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+	mTranslateVector.z += ((const MouseEventArgs&)e).wheelChange * -5.0;
+	mUpdateMovement = true;
+
+    return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::handleKeyDownEvent(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+
+	CheckMovementKeys( ((const KeyEventArgs&)e).scancode , true);
+
+    return true;
+}
+
+//--------------------------------------------------------------------------
+bool UIHandler::handleKeyUpEvent(const CEGUI::EventArgs& e)
+{
+	using namespace CEGUI;
+	CheckMovementKeys( ((const KeyEventArgs&)e).scancode, false );
+
+    return true;
+}
+
+//--------------------------------------------------------------------------
+void UIHandler::CheckMovementKeys( CEGUI::Key::Scan scancode, bool state )
+{
+	using namespace CEGUI;
+
+	switch ( scancode )
+	{
+		case Key::A:
+			mMoveLeft = state;
+			break;
+
+		case Key::D:
+			mMoveRight = state;
+			break;
+
+		case Key::S:
+			mMoveBck = state;
+			break;
+
+		case Key::W:
+			mMoveFwd = state;
+			break;
+
+        default:
+            break;
+
+	}
+
+	mProcessMovement = mMoveLeft || mMoveRight || mMoveFwd || mMoveBck;
+}
Index: /ColladaPlugin/docs/Doxyfile
===================================================================
--- /ColladaPlugin/docs/Doxyfile	(revision 21)
+++ /ColladaPlugin/docs/Doxyfile	(revision 21)
@@ -0,0 +1,259 @@
+# Doxyfile 1.4.5
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "Ogre Collada Plugin"
+PROJECT_NUMBER         = 0.4
+OUTPUT_DIRECTORY       = D:/Uni/Collada/PlugIns/Ogre/OgreColladaPlugin/docs
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = "C:/Dokumente und Einstellungen/All Users/Startmenü/Programme/doxygen/"
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = NO
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = NO
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = D:/Uni/Collada/PlugIns/Ogre/OgreColladaPlugin
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.d \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.idl \
+                         *.odl \
+                         *.cs \
+                         *.php \
+                         *.php3 \
+                         *.inc \
+                         *.m \
+                         *.mm \
+                         *.dox \
+                         *.py
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = *
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = YES
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = NO
+USE_HTAGS              = NO
+VERBATIM_HEADERS       = NO
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = doxygen
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 1000
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
Index: /ColladaPlugin/docs/index.htm
===================================================================
--- /ColladaPlugin/docs/index.htm	(revision 21)
+++ /ColladaPlugin/docs/index.htm	(revision 21)
@@ -0,0 +1,154 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>Ogre3D Collada Plugin</title>
+<meta name="author" content="Philipp Hartl">
+<meta name="robots" content="index">
+<meta name="keywords" content="Ogre3D, Collada, Importer, Plugin, AddOn">
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<meta http-equiv="content-language" content="en">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body>
+
+ <div class="middle">
+  <div class="page">
+
+   <!-- header -->
+   <h2 id="top" style="margin-top: 0px;">Ogre3D Collada Plugin</h2>
+
+   <!-- menu -->
+   <table class="menu">
+    <tr>
+     <td class="menu"><a href="#intro" title="Introduction">Intro</a></td>
+     <td class="menu"><a href="#features" title="Features and more ...">Features</a></td>
+     <td class="menu"><a href="#documentation" title="Documentation">Documentation</a></td>
+     <td class="menu"><a href="#screenshots" title="Screenshots">Screenshots</a></td>
+     <td><a href="#downloads" title="Downloads">Downloads</a></td>
+    </tr>
+   </table>
+
+   <!-- intro -->
+   <div id="intro" style="padding-top: 10px;">
+    <h4>Introduction</h4>
+    <span><a href="http://www.ogre3d.org" title="OGRE 3D - Open source graphics engine">Ogre3D</a> (Object-Oriented Graphics Rendering Engine) is a leading open source 3D engine. <a href="http://www.khronos.org/collada" title="COLLADA - An open Digital Asset Exchange Schema for the interactive 3D industry">COLLADA (COLLAborative Design Activity)</a> is the XML based next generation open source 3D scene interchange format used by Sony for Playstation 3 development (and many more), which is supported by all major 3D vendors (Maya, 3DSMax, XSI, ...). With this plugin it should be possible to load collada xml files (*.dae) into your Ogre application.</span>
+   </div>
+
+   <!-- features -->
+   <div id="features">
+    <h4>Features</h4>
+    <ul>
+     <li>uses the <span class="code">Ogre::SceneManager</span> of your application for attaching entities</li>
+     <li>imports only a part of the DAG collada scene graph or the full scene</li>
+     <li>available geometry types: triangles and polygons (last one would be triangulated simply)</li>
+     <li>uses Ogre triangle list with vertex buffer objects</li>
+     <li>materials with multipass support and textures</li>
+     <li>lights (ambient, directional, point and spot)</li>
+     <li>camera support (orthographic and perspective)</li>
+   </ul>
+
+   <p><i>open (currently not implemented)</i></p>
+    <ul>
+     <li><span class="code">Ogre::ManualResourceLoader</span></li>
+     <li>update to Collada 1.4</li>
+     <li>animation</li>
+     <li>shader</li>
+     <li>skinning</li>
+     <li>and more ...</li>
+    </ul>
+   </div>
+
+   <!-- documentation -->
+   <div id="documentation">
+    <h4>Documentation</h4>
+    <span>Here a simple tutorial for using the plugin with your application.</span>
+    <ul>
+     <li>first of all setup an Ogre application (maybe found on the Ogre wiki help sites)</li>
+     <li>prepare for requirements of the plugin (see README)</li>
+     <li>paste following code</li>
+    </ul>
+    <div class="code"><pre class="code">#include "OgreColladaManager.h"
+#include "OgreColladaScene.h"
+...
+    ColladaDocumentPtr daeDoc = ColladaManager::getSingleton().load("colladafile.dae", mSceneMgr);
+    LogManager::getSingleton().logMessage("ColladaDocument - import started");
+    if (!daeDoc.isNull())
+    {
+        // build up scene fully
+        daeDoc->getScene()->createOgreInstance(NULL);
+
+        /**
+         * or
+         * to import only a specific part of the scene graph
+         * fetch the scene node by its unique node name
+         *
+         * ColladaSceneNode *box = mScene->getNode("Box2");
+         * if (box != NULL) box->createOgreInstance(NULL);
+         */
+    }
+
+    LogManager::getSingleton().logMessage("ColladaDocument - import finished");
+    // Note: ColladaDocumentPtr is a shared pointer and will release the resource when it goes out of scope
+...</pre>
+</div>
+
+    <p>First of all a new collada document has to be created, it takes an <span class="code">Ogre::SceneManager</span>. Everything of this document would be attached to the given scenemanager, which could not be changed for the current document.</p>
+    <p>Now an import with the filename as argument could be started. The plugin loads the full document and saves some xml nodes for fast importing. See the <span class="code">ColladaLibraryContainer</span> for further details. It holds all collada libraries, currently: CAMERA, GEOMETRY, IMAGE, LIGHT, MATERIAL and TEXTURE. Each library entity has a unique identifier.</p>
+    <p>Afterwards the SCENE would be parsed and a collada scenegraph is built up, by linking the nodes to their corresponding entities. The transformations and boundingboxes are imported too.</p>
+    <p>If import was successful, a <span class="code">ColladaSceneNode</span> can be traversed to an Ogre instance. In addition to import the complete scenegraph only a specific node can be instanced too (see example above). Now all collada specific items are attached to the <span class="code">Ogre::SceneNode</span> passed through <span class="code">createOgreInstance()</span>. Above the example takes <span class="code">NULL</span>, which means the root scenenode of the scenemanager. In fact an import of only one entity (CAMERA, GEOMETRY or LIGHT) is possible. By importing the whole scene the light(s) would be attached automatically to the scenemanager, the camera(s) too, but to activate a camera it has to be set manually.</p>
+
+    <p>For development and requirements please see the README file enclosed to the download packages. For source documentation with doxygen click <a title="OgreColladaPlugin Doxygen" href="doxygen/index.html">here</a></p>
+    <p>For feature requests, bugs and more please contact philipp.hartl[at]bkf.at or discuss at the Ogre platform. See thread <a href="http://www.ogre3d.org/phpBB2/viewtopic.php?t=13554" title="The Ogre COLLADA plugin">"The Ogre COLLADA plugin"</a>.</p>
+   </div>
+
+   <!-- screenshots -->
+   <div id="screenshots">
+    <h4>Screenshots</h4>
+    <table>
+     <tr>
+      <td><a href="screenshots/v0.4_cubes.png"><img alt="cubes" src="screenshots/v0.4_cubes.jpg" height="56px" width="75px"></a></td>
+      <td><a href="screenshots/v0.4_multimtl.png"><img alt="mutltimtl" src="screenshots/v0.4_multimtl.jpg" height="56px" width="75px"></a></td>
+      <td><a href="screenshots/v0.4_collada.png" title="collada.dae with material and light"><img alt="Collada dae" src="screenshots/v0.4_collada.jpg" height="56px" width="75px"></a></td>
+      <td><a href="screenshots/v0.3_nehe_cube.png" title="texturedcube.dae with nehe texture"><img alt="Nehe Cube" src="screenshots/v0.3_nehe_cube.jpg" height="56px" width="75px"></a></td>
+     </tr>
+     <tr>
+      <td>2 cubes</td>
+      <td>material</td>
+      <td>collada.dae</td>
+      <td>textured</td>
+     </tr>
+    </table>
+   </div>
+
+   <!-- downloads -->
+   <div id="downloads">
+    <h4>Downloads</h4>
+    <p>latest version is 0.4, beta status</p>
+    <ul>
+     <li>Source package: <a href="downloads/" title="">zip</a>&nbsp;<small>[Kb]</small></li>
+    </ul>
+   </div>
+
+   <div style="border-top: 1px solid #5D6D5D;">&nbsp;</div>
+
+   <!-- footer -->
+   <div style="float: left; font-size: 8pt;">
+    <div>maintained by Philipp Hartl</div>
+    <div>last update on 2006/06/19</div>
+    <div>comments to philipp.hartl[at]bkf.at</div>
+   </div>
+
+   <!-- validator -->
+   <div style="text-align: right;">
+     <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Strict" style="height:31px;width:88px;"></a>
+     <a href="http://jigsaw.w3.org/css-validator/"><img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" style="height:31px;width:88px;"></a>
+   </div>
+
+   <div style="clear: both;">&nbsp;</div>
+
+  </div>
+ </div>
+
+</body>
+</html>
Index: /ColladaPlugin/docs/style.css
===================================================================
--- /ColladaPlugin/docs/style.css	(revision 21)
+++ /ColladaPlugin/docs/style.css	(revision 21)
@@ -0,0 +1,81 @@
+a
+{
+ background-color: #FFFFFF;
+ color: #FF9933;
+}
+a:hover
+{
+ text-decoration: none;
+}
+div.middle
+{
+ position: absolute;
+ left: 50%;
+}
+div.page
+{
+ background-color: #FFFFFF;
+ border: 1px solid #FF9933;
+ color: #003300;
+ margin: 5px 0px 5px 0px;
+ padding: 5px;
+ position: absolute;
+ left: -300px;
+ width: 600px;
+}
+div.code, span.code
+{
+ font-family: 'Courier New', monospace;
+ font-size: 8pt;
+}
+pre.code
+{
+ background-color: #f5f5f5;
+ border: 1px solid #5D6D5D;
+ color: #5D6D5D;
+ padding: 5px;
+ margin: 0px 10px 0px 10px;
+}
+h4
+{
+ background-color: #5D6D5D;
+ color: #FFFFFF;
+ padding-left: 2px;
+}
+body
+{
+ background-color: #5D6D5D;
+ color: #000000;
+ font-family: 'Arial','Verdana','Courier New','Comic Sans MS','Times New Roman',serif;
+ font-size: 10pt;
+ padding: 0px;
+ margin: 0px;
+}
+img
+{
+ border: 0px none #000000;
+}
+table
+{
+ border: 0px none #000000;
+ border-collapse: collapse;
+}
+table.menu
+{
+ position: absolute;
+ right: 5px;
+ top: 50px;
+}
+td
+{
+ padding: 0px 5px 0px 5px;
+ text-align: center;
+}
+td.menu
+{
+ border-right: 1px solid #5D6D5D;
+}
+ul
+{
+ list-style-type: square;
+}
Index: /ColladaPlugin/include/Makefile.am
===================================================================
--- /ColladaPlugin/include/Makefile.am	(revision 21)
+++ /ColladaPlugin/include/Makefile.am	(revision 21)
@@ -0,0 +1,17 @@
+pkginclude_HEADERS = \
+	OgreColladaAsset.h \
+	OgreColladaCamera.h \
+	OgreColladaDocument.h \
+	OgreColladaEntity.h \
+	OgreColladaGeometry.h \
+	OgreColladaLibrary.h \
+	OgreColladaLight.h \
+	OgreColladaManager.h \
+	OgreColladaMaterial.h \
+	OgreColladaPrerequisites.h \
+	OgreColladaScene.h \
+	OgreColladaSyntax.h \
+	OgreColladaTexture.h \
+	OgreColladaUtils.h 
+
+MAINTAINERCLEANFILES = Makefile.in
Index: /ColladaPlugin/include/OgreColladaAsset.h
===================================================================
--- /ColladaPlugin/include/OgreColladaAsset.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaAsset.h	(revision 21)
@@ -0,0 +1,57 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl, Jeff Doyle (nfz)
+ * @see		README
+ */
+
+#ifndef __COLLADA_ASSET_H__
+#define __COLLADA_ASSET_H__
+
+#include "OgreColladaPrerequisites.h"
+
+namespace Ogre
+{
+    /**  Collada assets define asset management information regarding its parent element.
+    */
+    class ColladaAsset
+    {
+    public:
+        ColladaAsset(xmlNode *node) : mNode(node), mUpAxis(Y_UP) {}
+        ~ColladaAsset();
+
+		/**
+		 * import <asset> node
+		 *
+         */
+		bool doImport();
+        /** Get the up axis descriptive information for the coordinate system of the geometric data.
+         * @return the axis the points up: X_UP, Y_UP, Z_UP
+         */
+        UpAxis getUpAxis() const { return mUpAxis; }
+
+    protected:
+		xmlNode			*mNode;		// the node structure to import
+        UpAxis          mUpAxis;
+
+    };
+
+}
+
+#endif // __COLLADA_ASSET_H__
Index: /ColladaPlugin/include/OgreColladaCamera.h
===================================================================
--- /ColladaPlugin/include/OgreColladaCamera.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaCamera.h	(revision 21)
@@ -0,0 +1,82 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_CAMERA_H__
+#define __COLLADA_CAMERA_H__
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaEntity.h"
+
+namespace Ogre
+{
+	/**
+	 * camera class
+	 */
+	class ColladaCamera : public ColladaEntity
+	{
+	public:
+		ColladaCamera(ColladaDocument *d, xmlNode *n);
+		virtual ~ColladaCamera(void);
+
+		/**
+		 * create an ogre camera object
+		 *
+		 * @see	base class
+		 */
+		virtual MovableObject *getOgreInstance(void) const;
+
+		/**
+		 * import <camera> node
+		 *
+		 * @see	base class
+		 */
+		virtual bool doImport(void);
+
+		virtual EntityTypes getEntityType(void) const { return CAMERA; }
+
+	private:
+		enum CameraType { ORTHOGRAPHIC = 0, PERSPECTIVE, UNKNOWN = -1 };
+
+		CameraType mType;
+		float mXFov, mYFov, mZNear, mZFar;		// perspective
+		float mLeft, mRight, mTop, mBottom;		// orthographic
+
+		/**
+		 * import an orthographic or perspective camera
+		 *
+		 * @param	the <imager> node
+		 * @return	true if succeeds, false otherwise
+		 */
+		bool importOptics(xmlNode *node);
+
+		/**
+		 * import a specific image sensor of a camera (e.g. CCD)
+		 * 
+		 * @param	the <imager> node
+		 * @return	true if succeeds, false otherwise
+		 */
+		bool importImager(xmlNode *node);
+	};
+}
+
+#endif // __COLLADA_CAMERA_H__
Index: /ColladaPlugin/include/OgreColladaDocument.h
===================================================================
--- /ColladaPlugin/include/OgreColladaDocument.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaDocument.h	(revision 21)
@@ -0,0 +1,198 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_DOCUMENT_H__
+#define __COLLADA_DOCUMENT_H__
+
+#include "OgreColladaPrerequisites.h"
+
+#include "OgreResource.h"
+#include "OgreQuaternion.h"
+
+namespace Ogre
+{
+	// Forward declaration
+	class COLLADADocumentPtr;
+
+	/**
+	 * class ColladaDocument
+	 */
+	class _OgreColladaExport ColladaDocument : public Resource
+	{
+        friend class ColladaManager;
+
+	public:
+        /** Constructor - use resource manager's create method rather than this.
+        */
+		ColladaDocument(ResourceManager* creator, const String& name, ResourceHandle handle,
+			const String& group, bool isManual = false, ManualResourceLoader* loader = 0);
+
+		~ColladaDocument();
+
+        /**
+         * Set the active Ogre scene manager that will be used when converting Collada resources to Ogre resource.
+         * @param   scenemgr    the scene manager that will be used to display the Collada scene.
+        */
+    	void setSceneManager(SceneManager *scenemgr);
+
+		/** 
+		 * import a Collada XML Document (*.dae ascii file) in Ogre
+		 * parse the file and build up a scene with Ogre specific functions and elements
+		 *
+		 * @param	filename	the name of the file to import, it should ends with ".dae"
+		 * @param	options		an option string, each option is separated by ";" (not yet implemented)
+		 * @return				true if it succeeds, false otherwise
+		 */
+		bool doImport(const String &filename, const String &options = "");
+
+		/**
+		 * export mesh/scene to Collada XML File
+		 * not yet implemented! (maybe it could be combined or used with XMLConverter?)
+		 *
+		 * @param	none
+		 * @return	void
+		 */
+		void doExport(void);
+
+		ColladaSceneNode		*getScene(void) const { return mScene; }
+		ColladaLibraryContainer *getLibrary(void) const { return mLibrary; }
+        /** Get the Ogre scenemanager currently being used by the Collada document.
+        */
+		SceneManager			*getSceneManager(void) const { return mSceneMgr; }
+        /** Get the quaternion rotation that will convert the Collada up orientation to Ogre orientation.
+            Orge's up axis is equivalent to Collada Y_UP so the quaternion would be unity in this case. 
+        */
+        const Quaternion& getUpRotation() const { return mUpRotation; }
+        /** Get the up Axis indicator for all the Collada assets in the document.
+        */
+        UpAxis getUpAxis() const;
+        /** corrects the vector axis alignment based on the documents up axis so that the ogre display matches the same
+         *  orientation as the COLLADA document.
+         * @param vec is a reference to an Ogre::Vector3 that will get rotated to the corrected axis
+         */
+        void correctAxis(Vector3& vec) const;
+        /** corrects the vector axis alignment based on the documents up axis so that the ogre display matches the same
+         *  orientation as the COLLADA document.
+         * @param vec is a pointer to an array of 3 Ogre::Reals that will get rotated to the corrected axis
+         */
+        void correctAxis(Real* vec) const;
+        /** corrects the vector axis alignment based on the documents up axis so that the ogre display matches the same
+         *  orientation as the COLLADA document.
+         * @param quat is a reference to a Ogre::Quaternion that will be rotated to the corrected axis
+         */
+        void correctAxis(Quaternion& quat) const;
+
+
+    protected:
+        /** Overridden from Resource.
+		*/
+		void loadImpl(void);
+
+		/** Unloads the material, frees resources etc.
+		@see
+		Resource
+		*/
+		void unloadImpl(void);
+		/// @copydoc Resource::calculateSize
+		size_t calculateSize(void) const { return 0; } // Default to 0 for now
+
+
+	private:
+		xmlDocPtr				mXmlDoc;		// the parsed collada (xml) document tree
+		SceneManager			*mSceneMgr;		// the ogre scene manager
+
+		ColladaLibraryContainer	*mLibrary;		// a container with all libraries
+		ColladaSceneNode		*mScene;		// the scene root node (DAG graph)
+        ColladaAsset            *mAsset;        // the asset element node for the document
+        Quaternion               mUpRotation;   // rotation required to re-orientate collada axis to Ogre
+
+		/**
+		 * import asset information
+		 * common document information, like authors, coordinates direction
+		 * 
+		 * @param	node	<asset> node
+		 * @return	void
+		 */
+		void importAsset(xmlNode *node);
+
+		/** 
+		 * import <COLLADA> XML document
+		 * the <COLLADA> element is the document entity (root element) in a COLLADA instance document
+		 * child elements (in order and occurrence ([minOccur, maxOccur]))
+		 *	asset		[1,1]
+         *	library		[0,*]
+		 *	scene		[0,1]
+		 *
+		 * @param	element <COLLADA> root element
+		 * @return	true if succeeds, false otherwise
+		 */
+		bool importCollada(xmlNode *element);
+	};
+
+
+	/** Specialisation of SharedPtr to allow SharedPtr to be assigned to COLLADADocumentPtr 
+	@note Has to be a subclass since we need operator=.
+	We could templatise this instead of repeating per Resource subclass, 
+	except to do so requires a form VC6 does not support i.e.
+	ResourceSubclassPtr<T> : public SharedPtr<T>
+	*/
+	class _OgreColladaExport ColladaDocumentPtr : public SharedPtr<ColladaDocument> 
+	{
+	public:
+		ColladaDocumentPtr() : SharedPtr<ColladaDocument>() {}
+		explicit ColladaDocumentPtr(ColladaDocument* rep) : SharedPtr<ColladaDocument>(rep) {}
+		ColladaDocumentPtr(const ColladaDocumentPtr& r) : SharedPtr<ColladaDocument>(r) {} 
+		ColladaDocumentPtr(const ResourcePtr& r) : SharedPtr<ColladaDocument>()
+		{
+			// lock & copy other mutex pointer
+			OGRE_LOCK_MUTEX(*r.OGRE_AUTO_MUTEX_NAME)
+			OGRE_COPY_AUTO_SHARED_MUTEX(r.OGRE_AUTO_MUTEX_NAME)
+			pRep = static_cast<ColladaDocument*>(r.getPointer());
+			pUseCount = r.useCountPointer();
+			if (pUseCount)
+			{
+				++(*pUseCount);
+			}
+		}
+
+		/// Operator used to convert a ResourcePtr to a MaterialPtr
+		ColladaDocumentPtr& operator=(const ResourcePtr& r)
+		{
+			if (pRep == static_cast<ColladaDocument*>(r.getPointer()))
+				return *this;
+			release();
+			// lock & copy other mutex pointer
+			OGRE_LOCK_MUTEX(*r.OGRE_AUTO_MUTEX_NAME)
+			OGRE_COPY_AUTO_SHARED_MUTEX(r.OGRE_AUTO_MUTEX_NAME)
+			pRep = static_cast<ColladaDocument*>(r.getPointer());
+			pUseCount = r.useCountPointer();
+			if (pUseCount)
+			{
+				++(*pUseCount);
+			}
+			return *this;
+		}
+	};
+}
+
+#endif // __COLLADA_DOCUMENT_H__
Index: /ColladaPlugin/include/OgreColladaEntity.h
===================================================================
--- /ColladaPlugin/include/OgreColladaEntity.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaEntity.h	(revision 21)
@@ -0,0 +1,91 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_ENTITY_H__
+#define __COLLADA_ENTITY_H__
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreString.h"
+
+namespace Ogre
+{
+	/**
+	 * base class for collada entities
+	 *
+	 * @see	inheritance (sub-classes) for more details
+	 */
+	class ColladaEntity
+	{
+	public:
+		enum EntityTypes { CAMERA, GEOMETRY, IMAGE, LIGHT, MATERIAL, NODE, TEXTURE};
+
+		ColladaEntity(ColladaDocument *doc, xmlNode *node) : mDoc(doc), mNode(node), mLoaded(false), mStatus(false) { }
+		virtual ~ColladaEntity(void) { mNode = NULL; mDoc = NULL; }
+
+		/**
+		 * abstract method to import the xml element node (mNode, which was given by constructor)
+		 * and all child data of current node
+		 * must be implemented in derived structures
+		 *
+		 * @param	none
+		 * @return	true if import was successful, false otherwise
+		 */
+		virtual bool doImport(void) = 0;
+
+		const String &getId(void) const { return mId; }
+		const String &getName(void) const { return mName; }
+
+		virtual EntityTypes getEntityType(void) const = 0;
+
+		/** 
+		 * create an ogre specific instance of imported entity (data)
+		 * should be attached at a SceneNode
+		 *
+		 * @param	none
+		 * @return	the instance of the created object as MovableObject, NULL otherwise
+		 */
+		virtual MovableObject *getOgreInstance(void) const = 0;
+
+		/**
+		 * import the identification attributes id and name of mNode
+		 * 
+		 * @param	none
+		 * @return	void
+		 */
+		void initialise(void);
+
+		bool isImported(void) const { return mStatus; }
+		bool isLoaded(void) const { return mLoaded; }
+
+	protected:
+		ColladaDocument	*mDoc;		// pointer back to the document this element belongs to
+		xmlNode			*mNode;		// the node structure to import
+		String			mId;		// unique identifier
+		String			mName;
+
+		bool			mLoaded;	// a simple check, if doImport() has been already called
+		bool			mStatus;	// the return value of doImport(), if doImport was successful
+	};
+}
+
+#endif // __COLLADA_ENTITY_H__
Index: /ColladaPlugin/include/OgreColladaGeometry.h
===================================================================
--- /ColladaPlugin/include/OgreColladaGeometry.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaGeometry.h	(revision 21)
@@ -0,0 +1,266 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_GEOMETRY_H__
+#define __COLLADA_GEOMETRY_H__
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaEntity.h"
+
+namespace Ogre
+{
+	struct ColladaGeometryPolygon;
+	struct ColladaGeometryInputData;
+	struct ColladaGeometrySource;
+	struct ColladaGeometryOgreMesh;
+	struct ColladaGeometryIndexData;
+
+	typedef std::vector<ColladaGeometryPolygon *> ColladaGeometryPolygonPtrVector;
+	typedef std::vector<ColladaGeometryInputData *> ColladaGeometryInputDataPtrVector;
+	typedef std::vector<ColladaGeometrySource *> ColladaGeometrySourcePtrVector;
+	typedef std::vector<ColladaGeometryIndexData *> ColladaGeometryOgreMeshIndexData;
+
+	namespace ColladaGeometrySpecific
+	{
+		/**
+ 		 * <input semantic="...">
+		 */
+		enum Semantic
+		{
+			POSITION = 0,
+			VERTEX,
+			NORMAL,
+			TEXCOORD,
+			COLOR,
+			UV,
+
+			UNKNOWN = -1
+		};
+
+		/**
+		 * compare the string with collada syntax
+		 * 
+		 * @param	s	the semantic string we have
+		 * @return	the corresponding semantic type
+		 */
+		Semantic getSemantic(const String &s);
+	}
+
+	/**
+	 * a geometry object
+	 * holds information about: collada <geometry> node
+	 * id, name, vertices, polygons, ...
+	 */
+	class ColladaGeometry : public ColladaEntity
+	{
+	public:
+		ColladaGeometry(ColladaDocument *doc, xmlNode *n);
+		virtual ~ColladaGeometry(void);
+
+		// ogre instance
+		virtual MovableObject *getOgreInstance(void) const;
+
+		/**
+		 * import <geometry> node
+		 *
+		 * @see	base class
+		 */
+		virtual bool doImport(void);
+
+		virtual EntityTypes getEntityType(void) const { return GEOMETRY; }
+
+		/**
+		 * reset the bounding box for the manually created mesh
+		 * iff b != NULL
+		 * 
+		 * @param	b the boundingbox from the collada scene node, see ColladaScene
+		 * @return	void
+		 */
+		void setBoundingBox(ColladaBoundingBox *b);
+
+		/**
+		 * the name of an entity in a scene graph should be unique
+		 * (e.g. there could be more than one geometry instance with the same MeshPtr reference)
+		 * this function should be called before ogre instantiation
+		 *
+		 * @param	s the unique name of the entity
+		 * @return	void
+		 */
+		void setEntityName(const String &s) { mEntityName = s; }
+
+	private:
+ 		// the primitives render operation type
+		enum RenderType { POLYGONS, TRIANGLES };
+
+		ColladaGeometryPolygonPtrVector		mPolygons;
+		ColladaGeometrySourcePtrVector		mSources;
+		ColladaGeometryInputDataPtrVector	mVertexInputs;
+		RenderType							mType;
+		String								mEntityName;	// this name must be unique in the scene graph
+		ColladaBoundingBox					*mBB;
+		bool								mBBReset;		// if AABB was resetted by collada scene node
+
+		ColladaGeometryOgreMesh *mOgreMesh;
+
+		/**
+		 * calculate AABB from imported vertex data
+		 * the triangulated ogremesh could be greater than the vertices from collada
+		 *
+		 * @param	none
+		 * @return	none
+		 */
+		void calcBoundingBox(void);
+
+		/**
+		 * create and load an ogre mesh instance
+		 *
+		 * @param	none
+		 * @return	void
+		 */
+		void createOgreMesh(void) const;
+
+		/**
+		 * convert all vertex and index data from collada 
+		 * primitves into ogre triangle list
+		 * currently only <polygons> and <triangles> primitives are supported
+		 *
+		 * @param	void
+		 * @return	void
+		 */
+		void createTriangleList(void);
+
+		/**
+		 * import extra information of geometry
+		 *
+		 * @param	node	<extra> node
+		 * @return	void
+		 */
+		void importExtra(xmlNode *extraNode);
+
+		/**
+		 * import all geometry data
+		 * including vertices, normals, texcoords, indices, ...
+		 * currently only polygons are implemented
+		 *
+		 * @param	node	<mesh> node
+		 * @return	true if all sub-imports succeeds
+		 */
+		bool importMesh(xmlNode *meshNode);
+
+		/**
+		 * look for <polygons> or <triangles> nodes
+		 * dependent on param primitive
+		 * fill up the mInputPolygonsDataList
+		 *
+		 * @param	meshNode	<mesh> node
+		 * @param	primitive	polygons or triangles
+		 * @return	true if <polygons> imported
+		 */
+		bool importPolygonsNodes(xmlNode *meshNode, const String &primitive);
+
+		/**
+		 * import <source> nodes (vertices, normals, texcoords, ...)
+		 *
+		 * @param	sourceNode	<source> node to load
+		 * @return	a pointer at loaded source record, NULL otherwise
+		 */
+		ColladaGeometrySource *importSourceNode(xmlNode *sourceNode);
+
+		/**
+		 * look for <vertices> node
+		 * fill up mVertexInputs
+		 *
+		 * @param	meshNode	<mesh> node
+		 * @return	true if <vertices> imported
+		 */
+		bool importVerticesNode(xmlNode *meshNode);
+
+		/**
+		 * only for debugging purpose
+		 * to see the values
+		 */
+		void printIndices(void);
+		void printVertices(const unsigned short x);
+	};
+
+	/**
+	 * holds <input semantic="" source="" idx="" /> data 
+	 * if <input> child of <vertices> then idx and indices are not used
+	 */
+	struct ColladaGeometryInputData
+	{
+		uint		idx;							// unique index, used for indices offset
+        intVector	indices;						// indices (vertex, normal, texcoord, ...)
+		ColladaGeometrySource *source;				// pointer at source record, accessed by indices, for VERTEX it is NULL
+		ColladaGeometrySpecific::Semantic semantic;	// semantic type
+	};
+
+	/**
+	 * holds <polygons> data
+	 */
+	struct ColladaGeometryPolygon
+	{
+		bool			setMaterial;				// can material be attached?
+		ColladaMaterial	*material;					// a ColladaMaterial pointer, with assigned name
+		uint			primitiveCount;				// the total amount of polygon primitives
+		uint			vertexCount;				// the number of vertices used by a polygon primitive
+		uint			inputCount;					// the total amount of inputs
+		ColladaGeometryInputDataPtrVector inputs;	// a vector with polygon <input>
+	};
+
+	/**
+	 * holds <source> data
+	 */
+	struct ColladaGeometrySource
+	{
+		String		id;								// the source identifier
+		uint		count;							// the number of times the array is accessed
+		uint		stride;							// the number of values to access per count iteration
+		floatVector	data;							// the floating data vector	
+	};
+
+	/**
+	 * indices and material properties
+	 * needed by ColladaGeometryOgreMesh
+	 */
+	struct ColladaGeometryIndexData
+	{
+		String material;
+		uint count;
+		unsigned short *indices;
+	};
+
+	/**
+	 * optimized ogre mesh data for hardware buffers
+	 * there is only one meshdata, but there could be more index data, mutlimaterial e.g.
+	 */
+	struct ColladaGeometryOgreMesh
+	{
+		bool drawNormals, drawTexCoords;
+		uint vertexCount;							// the number of vertices
+		float *vertices;							// vertices, [normals], [texcoords]
+		ColladaGeometryOgreMeshIndexData indices;
+	};
+}
+
+#endif // __COLLADA_GEOMETRY_H__
Index: /ColladaPlugin/include/OgreColladaLibrary.h
===================================================================
--- /ColladaPlugin/include/OgreColladaLibrary.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaLibrary.h	(revision 21)
@@ -0,0 +1,151 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_LIBRARY_H__
+#define __COLLADA_LIBRARY_H__
+
+#include "OgreColladaPrerequisites.h"
+
+namespace Ogre
+{
+	namespace ColladaLibrarySpecific
+	{
+		/**
+		 * <library type="...">
+		*/
+		enum Type
+		{
+			ANIMATION = 0,
+			CAMERA,
+			CODE,
+			CONTROLLER,
+			GEOMETRY,
+			IMAGE,
+			LIGHT,
+			MATERIAL,
+			PROGRAM,
+			TEXTURE,
+
+			UNKNOWN = -1
+		};
+
+		/**
+		 * compare the string with collada syntax
+		 *
+		 * @param	s	the semantic string we have
+		 * @return	the corresponding library type
+		 */
+		Type getType(const String &s);
+	}
+
+	/**
+	 * a template libray class
+	 * used by all possible library types
+	 * holds all entities of the library type T
+	 */
+	template <class T> 
+	class ColladaLibrary
+	{
+	public:
+		ColladaLibrary();
+		~ColladaLibrary();
+
+		/**
+		 * create new instance of library type
+		 * for each instance importId() is called
+		 *
+		 * @param	doc		everything belongs to the document
+		 * @param	node	the library node we want to import
+		 * @return	void
+		 */
+		void initialise(ColladaDocument *doc, xmlNode *node);
+
+		/** 
+		 * find library entity by identifier and return a pointer on it
+		 * 
+		 * @param	id	the string identifier
+		 * @return	a pointer at existing instance or NULL
+		 */
+		T *getEntity(const String &id) const;
+
+	private:
+		typedef std::vector<T *> ColladaLibraryVector;
+
+		ColladaLibraryVector mEntities;		// a vector with all entities of <library>
+	};
+
+	/**
+	 * library container
+	 * holds all <library> nodes in collada document
+	 */
+	class ColladaLibraryContainer
+	{
+	public:
+		ColladaLibraryContainer(ColladaDocument *doc);
+		~ColladaLibraryContainer(void);
+
+		/**
+		 * import the <library> node, identified by its id
+		 * look in possible library entities, CAMERA, GEOMETRY, LIGHT, ...
+		 * 
+		 * @param	id	the string identifier
+		 * @return	a pointer on the successfully imported node, NULL otherwise
+		 */
+		ColladaEntity *importInstance(const String &id);
+
+		/**
+		 * import <library> node and fill up the specific library entity
+		 * by the type, which can be: CAMERA, GEOMETRY, LIGHT, MATERIAL, TEXTURE, ...
+		 * in first step we only want to know the id and name of the node
+		 *
+		 * @param	node	the library node we want to import
+		 * @return	void
+		 */
+		void doImport(xmlNode *node);
+
+		/**
+		 * find the entity by its identifier
+		 *
+		 * @param	id	the string identifier we are looking for
+		 * @return	a pointer on it, NULL otherwise
+		 */
+		ColladaCamera	*getCamera(const String &id) const;
+		ColladaImage	*getImage(const String &id) const;
+		ColladaLight	*getLight(const String &id) const;
+		ColladaMaterial	*getMaterial(const String &id) const;
+		ColladaTexture	*getTexture(const String &id) const;
+
+	private:
+		ColladaDocument	*mDoc;
+
+		// library entities
+		ColladaLibrary<ColladaCamera>	*mCameras;
+		ColladaLibrary<ColladaGeometry> *mGeometries;
+		ColladaLibrary<ColladaImage>	*mImages;
+		ColladaLibrary<ColladaLight>	*mLights;
+		ColladaLibrary<ColladaMaterial> *mMaterials;
+		ColladaLibrary<ColladaTexture>	*mTextures;
+	};
+}
+
+#endif // __COLLADA_LIBRARY_H__
Index: /ColladaPlugin/include/OgreColladaLight.h
===================================================================
--- /ColladaPlugin/include/OgreColladaLight.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaLight.h	(revision 21)
@@ -0,0 +1,112 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_LIGHT_H__
+#define __COLLADA_LIGHT_H__
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaEntity.h"
+
+#include "OgreColourValue.h"
+
+namespace Ogre
+{
+	/** 
+	 * light specific types
+	 */
+	namespace ColladaLightSpecific
+	{
+		enum Type
+		{
+			AMBIENT = 0,
+			DIRECTIONAL,
+			POINT,
+			SPOT,
+
+			UNKNOWN = -1
+		};
+
+		enum Function
+		{
+			CONSTANT = 0,
+			LINEAR,
+			QUADRATIC
+		};
+
+		/**
+		 * compare the string with collada syntax
+		 *
+		 * @param	s	the type string we've parsed
+		 * @return	the corresponding light type
+		 */
+		Type getType(const String &s);
+
+		/**
+		 * return the right function in case of given string
+		 * 
+		 * @param	s the function string
+		 * @return	the corresponding function type
+		 */
+		Function getFunction(const String &s);
+	}
+
+	class ColladaLight : public ColladaEntity
+	{
+	public:
+		ColladaLight(ColladaDocument *d, xmlNode *n);
+		virtual ~ColladaLight(void);
+
+		/**
+		 * create ogre light
+		 *
+		 * @see	base class
+		 */
+		virtual MovableObject *getOgreInstance(void) const;
+
+		/**
+		 * import <light>
+		 *
+		 * @param	none
+		 * @return	true if succeeds, false otherwise
+		 */
+		virtual bool doImport(void);
+
+		virtual EntityTypes getEntityType(void) const { return LIGHT; }
+
+	private:
+		// for all light types
+		ColladaLightSpecific::Type mType;
+		ColourValue mColour;
+
+		// point light specific
+		float mAttenuationScale;
+		ColladaLightSpecific::Function mAttenuation;
+
+		// spot light specific
+		float mAngle;
+		float mFalloffScale;
+		ColladaLightSpecific::Function mFalloff;
+	};
+}
+
+#endif // __COLLADA_LIGHT_H__
Index: /ColladaPlugin/include/OgreColladaManager.h
===================================================================
--- /ColladaPlugin/include/OgreColladaManager.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaManager.h	(revision 21)
@@ -0,0 +1,115 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @authors	Philipp Hartl, Jeff Doyle (nfz)
+ * @see		README
+ */
+
+#ifndef __ColladaManager_H__
+#define __ColladaManager_H__
+
+#include "OgreSingleton.h"
+#include "OgreResourceManager.h"
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaDocument.h"
+
+namespace Ogre {
+
+    /** Class for managing Collada Documents for Ogre.
+        @remarks
+        @par
+            When loaded from a XML Document, Collada objects are in an 'unloaded' state and only stores the settings
+            required. It does not at that stage load any Ogre resources. This is because the Collada Documents may be
+            loaded 'en masse', but only a subset will actually be required.
+        @par
+            Because this is a subclass of ResourceManager, any files loaded will be searched for in any path or
+            archive added to the resource paths/archives. See ResourceManager for details.
+        @par
+            For a definition of the Collada Document format, see .
+    */
+    class _OgreColladaExport ColladaManager : public ResourceManager, public Singleton<ColladaManager>
+    {
+    public:
+        ColladaManager(void);
+        virtual ~ColladaManager(void);
+
+        /** Override standard Singleton retrieval.
+        @remarks
+        Why do we do this? Well, it's because the Singleton
+        implementation is in a .h file, which means it gets compiled
+        into anybody who includes it. This is needed for the
+        Singleton template to work, but we actually only want it
+        compiled into the implementation of the class based on the
+        Singleton, not all of them. If we don't change this, we get
+        link errors when trying to use the Singleton-based class from
+        an outside dll.
+        @par
+        This method just delegates to the template version anyway,
+        but the implementation stays in this single compilation unit,
+        preventing link errors.
+        */
+        static ColladaManager& getSingleton(void);
+        /** Override standard Singleton retrieval.
+        @remarks
+        Why do we do this? Well, it's because the Singleton
+        implementation is in a .h file, which means it gets compiled
+        into anybody who includes it. This is needed for the
+        Singleton template to work, but we actually only want it
+        compiled into the implementation of the class based on the
+        Singleton, not all of them. If we don't change this, we get
+        link errors when trying to use the Singleton-based class from
+        an outside dll.
+        @par
+        This method just delegates to the template version anyway,
+        but the implementation stays in this single compilation unit,
+        preventing link errors.
+        */
+        static ColladaManager* getSingletonPtr(void);
+
+        /**  Load a Collada dae resource. This is a conveniance method that allows the caller to set
+         *  the scenemanager to be used by the document and pass settings to be used when loading.
+         * @param   daeFileName is the name of the dae file to be loaded.
+         * @param   sceneMgr    is the Ogre scenemanager that that will be used when converting
+         * Collada resources to Ogre resource.  Defaults to NULL.
+         *
+         * @param   loadParams is a list of parameters used to configure how the dae document is to be loaded.
+         *                     Currently not implemented. Defaults to no parameters being passed.
+         * @param   group   is the resource group to load the resource from. It defaults to DEFAULT_RESOURCE_GROUP_NAME.
+        */
+		ColladaDocumentPtr load(const String& daeFileName, SceneManager* sceneMgr = 0,
+            NameValuePairList* loadParams = 0,
+            const String& group = ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME
+            );
+
+
+    protected:
+        /// version number of the plugin
+        String mVersion;
+		/// Overridden from ResourceManager
+
+		Resource* createImpl(const String& name, ResourceHandle handle, 
+			const String& group, bool isManual, ManualResourceLoader* loader,
+            const NameValuePairList* params);
+    };
+}
+
+
+#endif
+
+
Index: /ColladaPlugin/include/OgreColladaMaterial.h
===================================================================
--- /ColladaPlugin/include/OgreColladaMaterial.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaMaterial.h	(revision 21)
@@ -0,0 +1,89 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_MATERIAL_H__
+#define __COLLADA_MATERIAL_H__
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaEntity.h"
+
+#include "OgreColourValue.h"
+#include "OgreCommon.h"
+
+namespace Ogre
+{
+	struct ColladaMaterialPass;
+
+	typedef std::vector<ColladaMaterialPass *> ColladaMaterialPassPtrVector;
+	typedef std::vector<ColladaTexture *> ColladaTexturePtrVector;
+
+	/**
+	 * a material object
+	 */
+	class ColladaMaterial : public ColladaEntity
+	{
+	public:
+		ColladaMaterial(ColladaDocument *doc, xmlNode *n);
+		virtual ~ColladaMaterial(void);
+
+		/**
+		 * create and load a ogre material
+		 * with multiple passes
+		 */
+		virtual MovableObject *getOgreInstance(void) const;
+
+		/**
+		 * import the <material> node
+		 *
+		 * @return	true if succeeds
+		 */
+		virtual bool doImport(void);
+
+		virtual EntityTypes getEntityType(void) const { return MATERIAL; }
+
+	private:
+		ColladaMaterialPassPtrVector mPasses;	// all material passes
+		
+		/**
+		 * import rendering pass properties from <pass> node
+		 * 
+		 * @param	node	the <pass> node
+		 * @return	a pointer on a material pass structure
+		 */
+		ColladaMaterialPass *importPass(xmlNode *pass);
+	};
+
+	/**
+	 * all material properties for one rendering pass
+	 * @see	collada 1.3.1 specification for details
+	 */
+	struct ColladaMaterialPass
+	{
+		ShadeOptions mMode;
+		ColourValue	mAmbient, mDiffuse, mSpecular, mEmission, mTransparent, mReflective;
+		float		mShininess, mTransparency, mReflectivity;		
+		ColladaTexturePtrVector	mTextures;		// a texture vector, for multitexturing purpose
+	};
+}
+
+#endif // __COLLADA_MATERIAL_H__
Index: /ColladaPlugin/include/OgreColladaPrerequisites.h
===================================================================
--- /ColladaPlugin/include/OgreColladaPrerequisites.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaPrerequisites.h	(revision 21)
@@ -0,0 +1,87 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_PREREQUISITES_H__
+#define __COLLADA_PREREQUISITES_H__
+
+// libxml stuff
+// #define LIBXML_STATIC
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+// Ogre stuff
+#include "OgreLogManager.h"
+// std includes
+//#include <vector>
+
+namespace Ogre
+{
+    #define COLLADA_VERSION_MAJOR 1
+    #define COLLADA_VERSION_MINOR 3
+    #define COLLADA_VERSION_PATCH 1
+
+	/**
+	 * typedefs
+	 */
+	typedef std::vector<xmlNode *> xmlNodePtrVector;
+	typedef std::vector<int> intVector;
+	typedef std::vector<float> floatVector;
+
+    enum UpAxis
+    {
+        X_UP = 0,
+        Y_UP,
+        Z_UP
+    };
+
+	/**
+	 * pre-declared structures
+	 */
+	
+	class ColladaEntity;
+	template <class T> class ColladaLibrary;
+
+	class ColladaBoundingBox;
+	class ColladaCamera;
+	class ColladaDocument;
+	class ColladaGeometry;
+	class ColladaImage;
+	class ColladaLibraryContainer;
+	class ColladaLight;
+	class ColladaMaterial;
+	class ColladaTexture;
+	class ColladaSceneNode;
+    class ColladaAsset;
+}
+
+#if (OGRE_PLATFORM == OGRE_PLATFORM_WIN32) && !defined(__MINGW32__)
+#   ifdef PLUGIN_COLLADA_EXPORT 
+#       define _OgreColladaExport __declspec(dllexport) 
+#   else 
+#       define _OgreColladaExport __declspec(dllimport) 
+#   endif 
+#else 
+#   define _OgreColladaExport 
+#endif 
+
+#endif // __COLLADA_PREREQUISITES_H__
Index: /ColladaPlugin/include/OgreColladaScene.h
===================================================================
--- /ColladaPlugin/include/OgreColladaScene.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaScene.h	(revision 21)
@@ -0,0 +1,358 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_SCENE_H__
+#define __COLLADA_SCENE_H__
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaEntity.h"
+#include "OgreMatrix4.h"
+
+namespace Ogre
+{
+	// specific child nodes of <scene> or <node>
+	class ColladaNodeElement;
+	class ColladaBoundingBox;
+	class ColladaTransform;
+	class ColladaTLookAt;
+	class ColladaTMatrix;
+	class ColladaTPerspective;
+	class ColladaTRotate;
+	class ColladaTScale;
+	class ColladaTSkew;
+	class ColladaTTranslate;
+
+	typedef std::vector<ColladaSceneNode *> ColladaSceneNodePtrVector;
+	typedef std::vector<ColladaTransform *> ColladaTransformPtrVector;
+		
+	/**
+	 * ColladaSceneNode
+	 * traversing the DAG collada scene graph
+	 * start with <scene> element node 
+	 * and build up corresponding OGRE scene graph
+	 */
+	class _OgreColladaExport ColladaSceneNode : public ColladaEntity
+	{
+	public:
+		ColladaSceneNode(ColladaDocument *doc, xmlNode *node);
+		virtual ~ColladaSceneNode(void);
+
+		/**
+		 * attach entities of current collada scene node
+		 * to Ogre scene graph by iterative traversing
+		 * if ogrenode is NULL, then we start with root scene node
+		 *
+		 * @param	ogrenode, where we start in Ogre scene graph
+		 * @return	void
+		 */ 
+		void createOgreInstance(SceneNode *ogrenode) const;
+
+		/**
+		 * import <scene> element
+		 *
+		 * @see	base class ColladaEntity
+		 */
+		virtual bool doImport(void);
+		
+		ColladaBoundingBox *getBoundingBox(void) const { return mBB; }
+		virtual EntityTypes getEntityType(void) const { return ColladaEntity::NODE; }	// the <scene> (root) node will be handled like a <node>
+
+		/**
+		 * find a scene node in the DAG graph by its unique id
+		 * start traversing always at first child
+		 *
+		 * @param	the unique id of the node we are looking for
+		 * @return	a pointer on the founded node, NULL otherwise
+		 */
+		ColladaSceneNode *getNode(const String &id);
+
+		// an ogre instance of an scene node does not make sense 
+		virtual MovableObject *getOgreInstance(void) const { return NULL; }
+
+	private:
+		enum NodeType { JOINT, NODE };		// by default the <node> type is NODE
+		NodeType mType;
+
+		ColladaSceneNode			*mParent;		// for root it's empty ;)
+		ColladaBoundingBox			*mBB;			// [0,1]
+		ColladaEntity				*mEntity;		// a pointer at loaded instance
+		ColladaTransformPtrVector	mTransforms;	// [*]
+		ColladaSceneNodePtrVector	mChilds;		// a vector of <node>s [*]
+
+		/**
+		 * create an ogre instance of mEntity and attach it
+		 * 
+		 * @param	ogrenode, where the instance will be attached to
+		 * @return	void
+		 */
+		void attachEntityToOgreSceneNode(SceneNode *ogrenode) const;
+
+		/** 
+		 * set all transformations of a collada node to ogre scene node
+		 * traversing iterative corresponds to appearance of collada
+		 *
+		 * @param	ogrenode, where the transforms should affect
+		 * @return	void
+		 */
+		void attachTransformsToOgreSceneNode(SceneNode *ogrenode) const;
+
+		/**
+		 * import <extra> information of current node
+		 * currently not implemented
+		 *
+		 * @param	the current node
+		 * @return	void
+		 */
+		void importExtra(xmlNode *node);
+
+		/**
+		 * try to find the instance (entity) of current node
+		 * import the instance and save the pointer of the entity
+		 *
+		 * @param	the current node
+		 * @return	void
+		 */
+		void importInstance(xmlNode *node);
+	};
+
+	/**
+	 * abstract class to import <scene> and <node> specific childs
+	 * @see	inheritence for more information
+	 */ 
+	class ColladaNodeElement
+	{
+	public:
+		ColladaNodeElement(ColladaSceneNode *parent) { mParent = parent; }
+		virtual ~ColladaNodeElement(void) { mParent = NULL; }
+
+		/**
+		 * abstract method to import node information
+		 * 
+		 * @param	node	the node to import
+		 * @return	void
+		 */
+		virtual void doImport(xmlNode *node) = 0;
+	protected:
+		ColladaSceneNode *mParent;	// pointer back to parent node (should be a <scene> or <node>)
+	};
+
+	/**
+	 * import a <boundingbox> node
+	 * fill up minimum and maximum vectors
+	 */
+	class ColladaBoundingBox : public ColladaNodeElement
+	{
+	public:
+		ColladaBoundingBox(ColladaSceneNode *p);
+
+		/**
+		 * special constructor
+		 * should only be used by ColladaGeometry
+		 * do not call doImport
+		 *
+		 * @param	min, max bounds
+		 */
+		ColladaBoundingBox(const Vector3 &min, const Vector3 &max);
+		virtual ~ColladaBoundingBox(void);
+
+		virtual void doImport(xmlNode *node);
+
+		AxisAlignedBox getAABB(void) const;
+
+		/** 
+		 * calculate the distance between center
+		 * of the box and a corner
+		 * in world units
+		 *
+		 * @param	none
+		 * @return	float, the outer radius of the AABB
+		 */
+		float getRadius(void) const;
+
+		/** 
+		 * return min,max vectors as string
+		 * 
+		 * @param	none
+		 * @return	string
+		 */
+		String toString(void) const;
+
+	private:
+		Vector3 mMin, mMax;
+	};
+
+	/**
+	 * abstract transform class
+	 * @see	enum Type (e.g. translate, rotate, scale, ...)
+	 */
+	class ColladaTransform : public ColladaNodeElement
+	{
+	public:
+		enum Type { LOOKAT, MATRIX, PERSPECTIVE, ROTATE, SCALE, SKEW, TRANSLATE };
+
+		ColladaTransform(ColladaSceneNode *p) : ColladaNodeElement(p) { }
+		virtual ~ColladaTransform(void) { }
+
+		// @see	ColladaNodeElement
+		virtual void doImport(xmlNode *node) = 0;
+		
+		/**
+		 * which type of transform is this element
+		 * 
+		 * @param	none
+		 * @return	enum type
+		 */
+		virtual Type getType(void) const = 0;
+
+		/** 
+		 * return a transformation matrix
+		 *
+		 * @param	none
+		 * @return	a new Ogre Matrix
+		 */
+		virtual Ogre::Matrix4 getMatrix4(void) const = 0;
+	};
+
+	// <lookat>
+	class ColladaTLookAt : public ColladaTransform
+	{
+	public:
+		ColladaTLookAt(ColladaSceneNode *p);
+		virtual ~ColladaTLookAt(void);
+
+		virtual void doImport(xmlNode *node);
+		virtual Type getType(void) const { return LOOKAT; }
+		virtual Matrix3 getMatrix3(void) const;
+		virtual Matrix4 getMatrix4(void) const;
+
+		Vector3 getEye(void) const;
+		Vector3 getTarget(void) const;
+		Vector3 getUp(void) const;
+	private:
+		Matrix3 mMatrix;
+	};
+
+	// <matrix>
+	class ColladaTMatrix : public ColladaTransform
+	{
+	public:
+		ColladaTMatrix(ColladaSceneNode *p);
+		virtual ~ColladaTMatrix(void);
+
+		virtual void doImport(xmlNode *node);
+		virtual Type getType(void) const { return MATRIX; }
+		virtual Matrix4 getMatrix4(void) const;
+	private:
+		Matrix4 mMatrix;
+	};
+
+	// <perspective>
+	class ColladaTPerspective : public ColladaTransform
+	{
+	public:
+		ColladaTPerspective(ColladaSceneNode *p);
+		virtual ~ColladaTPerspective(void);
+
+		virtual void doImport(xmlNode *node);
+		virtual Type getType(void) const { return PERSPECTIVE; }
+		virtual Matrix4 getMatrix4(void) const;		// the identity matrix
+
+		float getFieldOfView(void) const { return mFOV; }
+	private:
+		float mFOV;	// horizontal field of view [°]
+	};
+
+	// <rotate>
+	class ColladaTRotate : public ColladaTransform
+	{
+	public:
+		ColladaTRotate(ColladaSceneNode *p);
+		virtual ~ColladaTRotate(void);
+
+		virtual void doImport(xmlNode *node);
+		virtual Type getType(void) const { return ROTATE; }
+		virtual Matrix3 getMatrix3(void) const;
+		virtual Matrix4 getMatrix4(void) const;
+
+		Vector3 getAxis(void) const { return mAxis; }
+		float getAngle(void) const { return mAngle; }
+	private:
+		Vector3 mAxis;
+		float	mAngle;		// [°]
+	};
+
+	// <scale>
+	class ColladaTScale : public ColladaTransform
+	{
+	public:
+		ColladaTScale(ColladaSceneNode *p);
+		virtual ~ColladaTScale(void);
+
+		virtual void doImport(xmlNode *node);
+		virtual Type getType(void) const { return SCALE; }
+		virtual Matrix3 getMatrix3(void) const;
+		virtual Matrix4 getMatrix4(void) const;
+
+		Vector3 getScale(void) const { return mScale; }
+	private:
+		Vector3 mScale;
+	};
+
+	// <skew>
+	class ColladaTSkew : public ColladaTransform
+	{
+	public:
+		ColladaTSkew(ColladaSceneNode *p);
+		virtual ~ColladaTSkew(void);
+
+		virtual void doImport(xmlNode *node);
+		virtual Type getType(void) const { return SKEW; }
+		virtual Matrix3 getMatrix3(void) const;
+		virtual Matrix4 getMatrix4(void) const;
+
+		Vector3 getRotation(void) const { return mRotation; }
+		Vector3 getTranslation(void) const { return mTranslation; }
+		float getAngle(void) const { return mAngle; }
+	private:
+		Vector3 mRotation, mTranslation;
+		float mAngle;	// [°]
+	};
+
+	// <translate>
+	class ColladaTTranslate : public ColladaTransform
+	{
+	public:
+		ColladaTTranslate(ColladaSceneNode *p);
+		virtual ~ColladaTTranslate(void);
+
+		virtual void doImport(xmlNode *node);
+		virtual Type getType(void) const { return TRANSLATE; }
+		virtual Matrix4 getMatrix4(void) const;
+
+		Vector3 getTranslate(void) const { return mTranslate; }
+	private:
+		Vector3 mTranslate;
+	};
+}
+
+#endif // __COLLADA_SCENE_H__
Index: /ColladaPlugin/include/OgreColladaSyntax.h
===================================================================
--- /ColladaPlugin/include/OgreColladaSyntax.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaSyntax.h	(revision 21)
@@ -0,0 +1,179 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_SYNTAX_H__
+#define __COLLADA_SYNTAX_H__
+
+namespace Ogre
+{
+
+/**
+ * collada syntax "CS_"
+ * Element (tag) names start with "ELM_"
+ * attribute (property) names starts with "ATR_{ELement name}"
+ * possible attribute value names starts with "VAL_"
+ * 
+ * @see		collada specification
+ * @version	1.3.1
+ */
+
+// Elements
+#define CS_ELM_COLLADA		"COLLADA"
+#define CS_ELM_ACCESSOR		"accessor"
+#define CS_ELM_ASSET		"asset"
+#define CS_ELM_BOUNDINGBOX	"boundingbox"
+#define CS_ELM_EXTRA		"extra"
+#define CS_ELM_FLOAT_ARRAY	"float_array"
+#define CS_ELM_INPUT		"input"
+#define CS_ELM_INSTANCE		"instance"
+#define CS_ELM_LIBRARY		"library"
+#define CS_ELM_LOOKAT		"lookat"
+#define CS_ELM_MATRIX		"matrix"
+#define CS_ELM_MAX			"max"
+#define CS_ELM_MESH			"mesh"
+#define CS_ELM_MIN			"min"
+#define CS_ELM_NODE			"node"
+#define CS_ELM_OPTICS		"optics"
+#define CS_ELM_IMAGER		"imager"
+#define CS_ELM_P			"p"
+#define CS_ELM_PASS			"pass"
+#define CS_ELM_PARAM		"param"
+#define CS_ELM_PERSPECTIVE	"perspective"
+#define CS_ELM_POLYGONS		"polygons"
+#define CS_ELM_PROGRAM		"program"
+#define CS_ELM_ROTATE		"rotate"
+#define CS_ELM_SCALE		"scale"
+#define CS_ELM_SCENE		"scene"
+#define CS_ELM_SHADER		"shader"
+#define CS_ELM_SKEW			"skew"
+#define CS_ELM_SOURCE		"source"
+#define CS_ELM_TECHNIQUE	"technique"
+#define CS_ELM_TRIANGLES	"triangles"
+#define CS_ELM_TRANSLATE	"translate"
+#define CS_ELM_UPAXIS       "up_axis"
+#define CS_ELM_VERTICES		"vertices"
+
+// common attributes
+#define CS_ATR_COUNT		"count"
+#define CS_ATR_ID			"id"
+#define CS_ATR_IDX			"idx"
+#define CS_ATR_NAME			"name"
+#define CS_ATR_PROFILE		"profile"
+#define CS_ATR_TYPE			"type"
+#define CS_ATR_URL			"url"
+
+// specific Attributes
+#define CS_ATR_INPUT_SEMANTIC	"semantic"
+#define CS_ATR_INPUT_SOURCE		"source"
+#define CS_ATR_INPUT_MATERIAL	"material"
+
+#define CS_ATR_ACCESSOR_STRIDE	"stride"
+
+#define CS_ATR_IMAGE_DEPTH		"depth"
+#define CS_ATR_IMAGE_FORMAT		"format"
+#define CS_ATR_IMAGE_HEIGHT		"height"
+#define CS_ATR_IMAGE_SOURCE		"source"
+#define CS_ATR_IMAGE_WIDTH		"width"
+
+// possible values of attributes
+#define CS_VAL_CAMERA_TYPE_ORTHOGRAPHIC	"ORTHOGRAPHIC"
+#define CS_VAL_CAMERA_TYPE_PERSPECTIVE	"PERSPECTIVE"
+
+#define CS_VAL_CAMERA_PARAM_BOTTOM		"BOTTOM"
+#define CS_VAL_CAMERA_PARAM_LEFT		"LEFT"
+#define CS_VAL_CAMERA_PARAM_RIGHT		"RIGHT"
+#define CS_VAL_CAMERA_PARAM_TOP			"TOP"
+#define CS_VAL_CAMERA_PARAM_XFOV		"XFOV"
+#define CS_VAL_CAMERA_PARAM_YFOV		"YFOV"
+#define CS_VAL_CAMERA_PARAM_ZFAR		"ZFAR"
+#define CS_VAL_CAMERA_PARAM_ZNEAR		"ZNEAR"
+
+#define CS_VAL_INPUT_SEMANTIC_COLOR		"COLOR"
+#define CS_VAL_INPUT_SEMANTIC_IMAGE		"IMAGE"
+#define CS_VAL_INPUT_SEMANTIC_NORMAL	"NORMAL"
+#define CS_VAL_INPUT_SEMANTIC_POSITION	"POSITION"
+#define CS_VAL_INPUT_SEMANTIC_TEXCOORD	"TEXCOORD"
+#define CS_VAL_INPUT_SEMANTIC_TEXTURE	"TEXTURE"
+#define CS_VAL_INPUT_SEMANTIC_VERTEX	"VERTEX"
+
+#define CS_VAL_LIBRARY_TYPE_ANIMATION	"ANIMATION"
+#define CS_VAL_LIBRARY_TYPE_CAMERA		"CAMERA"
+#define CS_VAL_LIBRARY_TYPE_CODE		"CODE"
+#define CS_VAL_LIBRARY_TYPE_CONTROLLER	"CONTROLLER"
+#define CS_VAL_LIBRARY_TYPE_GEOMETRY	"GEOMETRY"
+#define CS_VAL_LIBRARY_TYPE_IMAGE		"IMAGE"
+#define CS_VAL_LIBRARY_TYPE_LIGHT		"LIGHT"
+#define CS_VAL_LIBRARY_TYPE_MATERIAL	"MATERIAL"
+#define CS_VAL_LIBRARY_TYPE_PROGRAM		"PROGRAM"
+#define CS_VAL_LIBRARY_TYPE_TEXTURE		"TEXTURE"
+
+#define CS_VAL_LIGHT_PARAM_ANGLE				"ANGLE"
+#define CS_VAL_LIGHT_PARAM_ATTENUATION			"ATTENUATION"
+#define CS_VAL_LIGHT_PARAM_ATTENUATION_SCALE	"ATTENUATION_SCALE"
+#define CS_VAL_LIGHT_PARAM_COLOR				"COLOR"
+#define CS_VAL_LIGHT_PARAM_FALLOFF				"FALLOFF"
+#define CS_VAL_LIGHT_PARAM_FALLOFF_SCALE		"FALLOFF_SCALE"
+
+#define CS_VAL_LIGHT_FUNCTION_CONSTANT		"CONSTANT"
+#define CS_VAL_LIGHT_FUNCTION_LINEAR		"LINEAR"
+#define CS_VAL_LIGHT_FUNCTION_QUADRATIC		"QUADRATIC"
+
+#define CS_VAL_LIGHT_TYPE_AMBIENT			"AMBIENT"
+#define CS_VAL_LIGHT_TYPE_DIRECTIONAL		"DIRECTIONAL"
+#define CS_VAL_LIGHT_TYPE_POINT				"POINT"
+#define CS_VAL_LIGHT_TYPE_SPOT				"SPOT"
+
+#define CS_VAL_MATERIAL_PARAM_AMBIENT		"AMBIENT"
+#define CS_VAL_MATERIAL_PARAM_DIFFUSE		"DIFFUSE"
+#define CS_VAL_MATERIAL_PARAM_EMISSION		"EMISSION"
+#define CS_VAL_MATERIAL_PARAM_REFLECTIVE	"REFLECTIVE"
+#define CS_VAL_MATERIAL_PARAM_REFLECTIVITY	"REFLECTIVITY"
+#define CS_VAL_MATERIAL_PARAM_SHININESS		"SHININESS"
+#define CS_VAL_MATERIAL_PARAM_SPECULAR		"SPECULAR"
+#define CS_VAL_MATERIAL_PARAM_TRANSPARENCY	"TRANSPARENCY"
+#define CS_VAL_MATERIAL_PARAM_TRANSPARENT	"TRANSPARENT"
+
+#define CS_VAL_NODE_TYPE_JOINT				"JOINT"
+#define CS_VAL_NODE_TYPE_NODE				"NODE"
+
+#define CS_VAL_PROGRAM_URL_CONSTANT			"CONSTANT"
+#define CS_VAL_PROGRAM_URL_LAMBERT			"LAMBERT"
+#define CS_VAL_PROGRAM_URL_PHONG			"PHONG"
+
+#define CS_VAL_TEXTURE_PARAM_AMBIENT		"AMBIENT"
+#define CS_VAL_TEXTURE_PARAM_DIFFUSE		"DIFFUSE"
+#define CS_VAL_TEXTURE_PARAM_EMISSION		"EMISSION"
+#define CS_VAL_TEXTURE_PARAM_SHININESS		"SHININESS"
+#define CS_VAL_TEXTURE_PARAM_SPECULAR		"SPECULAR"
+
+#define CS_VAL_TECHNIQUE_PROFILE_COMMON		"COMMON"
+
+// possible values of content
+#define CS_VAL_ASSET_UPAXIS_X "X_UP"
+#define CS_VAL_ASSET_UPAXIS_Y "Y_UP"
+#define CS_VAL_ASSET_UPAXIS_Z "Z_UP"
+
+
+}
+
+#endif // __COLLADA_SYNTAX_H__
Index: /ColladaPlugin/include/OgreColladaTexture.h
===================================================================
--- /ColladaPlugin/include/OgreColladaTexture.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaTexture.h	(revision 21)
@@ -0,0 +1,118 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_TEXTURE_H__
+#define __COLLADA_TEXTURE_H__
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaEntity.h"
+
+namespace Ogre
+{
+	/**
+	 * a <image> object
+	 * currently no raw data is supported
+	 */
+	class ColladaImage : public ColladaEntity
+	{
+	public:
+		ColladaImage(ColladaDocument *d, xmlNode *n);
+		virtual ~ColladaImage(void);
+
+		/**
+		 * import <image> node
+		 *
+		 * @see	base class
+		 */
+		virtual bool doImport(void);
+
+		virtual EntityTypes getEntityType(void) const { return IMAGE; }
+		virtual MovableObject *getOgreInstance(void) const { return NULL; }
+		const String &getSource(void) const { return mSource; }
+		const String &getFormat(void) const { return mFormat; }
+		const uint &getHeight(void) const { return mHeight; }
+		const uint &getWidth(void) const { return mWidth; }
+		const uint &getDepth(void) const { return mDepth; }
+
+	private:
+		String mSource;		// the filename (URL)
+		String mFormat;		// image format
+
+		uint mHeight;		// image height in pixel units
+		uint mWidth;		// image width in pixel units
+		uint mDepth;		// image depth in pixel units, default is 1 (2D)
+	};
+
+	/**
+ 	 * <param name="..."> texture types
+	 */
+	namespace ColladaTextureSpecific
+	{
+		enum Type
+		{
+			AMBIENT = 0,
+			DIFFUSE,
+			EMISSION,
+			SHININESS,
+			SPECULAR,
+
+			UNKNOWN = -1
+		};
+
+		/**
+		 * compare the string with collada syntax
+		 *
+		 * @param	s	the semantic string we have
+		 * @return	the corresponding texture type
+		 */
+		Type getType(const String &s);
+	}
+
+	/**
+	 * a <texture> object
+	 */
+	class ColladaTexture : public ColladaEntity
+	{
+	public:
+		ColladaTexture(ColladaDocument *d, xmlNode *n);
+		virtual ~ColladaTexture(void);
+
+		/**
+		 * import <texture> node
+		 * 
+		 * @see	base class
+		 */
+		virtual bool doImport(void);
+
+		virtual EntityTypes getEntityType(void) const { return TEXTURE; }
+		ColladaImage *getImage(void) const { return mImage; }
+		virtual MovableObject *getOgreInstance(void) const { return NULL; }
+		// ColladaTextureSpecific::Type getType(void) const { return mType; }
+
+	private:
+		ColladaImage *mImage;					// the image this texture holds
+		ColladaTextureSpecific::Type mType;		// the texture type
+	};
+}
+
+#endif // __COLLADA_TEXTURE_H__
Index: /ColladaPlugin/include/OgreColladaUtils.h
===================================================================
--- /ColladaPlugin/include/OgreColladaUtils.h	(revision 21)
+++ /ColladaPlugin/include/OgreColladaUtils.h	(revision 21)
@@ -0,0 +1,111 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#ifndef __COLLADA_UTILS_H__
+#define __COLLADA_UTILS_H__
+
+#include "OgreColladaPrerequisites.h"
+
+namespace Ogre
+{
+	/**
+	 * some functions to get information out of xml data nodes
+	 */
+	class ColladaUtils
+	{
+	public:
+
+		/**
+		 * search for the id in the childs of start node
+		 * and return the node corresponding to the id string
+		 * in first child line, no more!
+		 * <tagname id="id" ...>
+		 *
+		 * @param	start	the xml node where we start to search
+		 * @param	id		the string identifier we are looking for
+		 * @return	the xmlNode if found, else NULL
+		 */
+		static xmlNode *getChildById(xmlNode *start, const char *id);
+
+		/**
+		 * search for the tagname in the childs of start node
+		 * and return the node corresponding to the string
+		 * in first child line, no more!
+		 * <tagname ...>
+		 * 
+		 * @param	start	the xml node where to start
+		 * @param	tagname	the string element we are looking for
+		 * @return	the xmlNode if found, else NULL
+		 */
+		static xmlNode *getChildByTagName(xmlNode *start, const String &tagname);
+
+		/**
+		 * similar to getChildByTagName, but returns a node list
+		 *
+		 * @see		getChildByTagName
+		 * @return	a list with xmlNode *
+		 */
+		static xmlNodePtrVector getChildsByTagName(xmlNode *start, const String &tagname);
+
+		/**
+		 * get content of node, between <node>...</node>
+		 * interior entities will be substituted !!
+		 *
+		 * @param	node	the xml node that holds the content
+		 * @return	the string content which is hold by the xml node
+		 */
+		static String getContent(xmlNode *node);
+		static String getContentDirect(xmlNode *node);
+
+		/**
+		 * look for the attribute property name we want 
+		 * and return its value 
+		 * <tagname attribute="value" ...>
+		 *
+		 * @param	node		the actual xml node
+		 * @param	property	the property we want to get out
+		 * @return	the string value of the property
+		 */
+		static String getProperty(xmlNode *node, const char *property);
+		static String getProperty(xmlNode *node, const String &property);
+
+		/**
+		 * print all child elements of this node
+		 *
+		 * @param	node	a node in tree hierachy
+		 * @return	void
+		 */
+		static void printChildElements(xmlNode *node);
+
+		/**
+		 * print all elements of this node
+		 * children of their children and so on
+         * 
+		 * @param	node	a node in tree hierachy
+		 * @return	void
+		 */
+		static void printAllElements(xmlNode *node);
+	};
+}
+
+#endif // __COLLADA_UTILS_H__
Index: /ColladaPlugin/lgpl.txt
===================================================================
--- /ColladaPlugin/lgpl.txt	(revision 21)
+++ /ColladaPlugin/lgpl.txt	(revision 21)
@@ -0,0 +1,513 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
Index: /ColladaPlugin/misc/OgreColladaDll.def
===================================================================
--- /ColladaPlugin/misc/OgreColladaDll.def	(revision 21)
+++ /ColladaPlugin/misc/OgreColladaDll.def	(revision 21)
@@ -0,0 +1,4 @@
+LIBRARY Plugin_Collada
+EXPORTS	
+	dllStartPlugin	@1
+	dllStopPlugin	@2
Index: /ColladaPlugin/remove_demos.patch
===================================================================
--- /ColladaPlugin/remove_demos.patch	(revision 21)
+++ /ColladaPlugin/remove_demos.patch	(revision 21)
@@ -0,0 +1,8 @@
+--- ColladaPlugin/Makefile.am	2007-01-03 16:52:41.000000000 +0100
++++ ../ColladaPlugin/Makefile.am	2008-03-02 15:48:09.000000000 +0100
+@@ -1,4 +1,4 @@
+-SUBDIRS=src include demo
++SUBDIRS=src include
+ 
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = OGRE-Plugin_Collada.pc
Index: /ColladaPlugin/src/Makefile.am
===================================================================
--- /ColladaPlugin/src/Makefile.am	(revision 21)
+++ /ColladaPlugin/src/Makefile.am	(revision 21)
@@ -0,0 +1,24 @@
+
+plugindir = $(OGRE_PLUGINDIR)
+plugin_LTLIBRARIES = Plugin_Collada.la
+
+Plugin_Collada_la_CPPFLAGS = -I$(top_srcdir)/include $(OGRE_CFLAGS) $(XML2_CFLAGS)
+Plugin_Collada_la_SOURCES = \
+	OgreColladaAsset.cpp \
+	OgreColladaCamera.cpp \
+	OgreColladaDll.cpp \
+	OgreColladaDocument.cpp \
+	OgreColladaEntity.cpp \
+	OgreColladaGeometry.cpp \
+	OgreColladaLibrary.cpp \
+	OgreColladaLight.cpp \
+	OgreColladaManager.cpp \
+	OgreColladaMaterial.cpp \
+	OgreColladaScene.cpp \
+	OgreColladaTexture.cpp \
+	OgreColladaUtils.cpp
+
+Plugin_Collada_la_LIBADD = $(OGRE_LIBS)
+Plugin_Collada_la_LDFLAGS = -module
+
+MAINTAINERCLEANFILES = Makefile.in
Index: /ColladaPlugin/src/OgreColladaAsset.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaAsset.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaAsset.cpp	(revision 21)
@@ -0,0 +1,52 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @authors	Philipp Hartl, Jeff Doyle (nfz)
+ * @see		README
+ */
+
+#include "OgreColladaAsset.h"
+#include "OgreColladaUtils.h"
+#include "OgreColladaSyntax.h"
+
+namespace Ogre
+{
+    //-----------------------------------------------------------------------
+    ColladaAsset::~ColladaAsset()
+    {
+        
+    }
+
+    //-----------------------------------------------------------------------
+    bool ColladaAsset::doImport()
+    {
+        // iterate through child elements and extract data
+		// only care about getting <up_axis> for now
+		xmlNode *upaxis = ColladaUtils::getChildByTagName(mNode, CS_ELM_UPAXIS);
+        if (upaxis)
+        {
+		    String content = ColladaUtils::getContentDirect(upaxis);
+            if (content == CS_VAL_ASSET_UPAXIS_X) mUpAxis = X_UP;
+            else if (content == CS_VAL_ASSET_UPAXIS_Y) mUpAxis = Y_UP;
+            else if (content == CS_VAL_ASSET_UPAXIS_Z) mUpAxis = Z_UP;
+        }
+
+        return true;
+    }
+}
Index: /ColladaPlugin/src/OgreColladaCamera.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaCamera.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaCamera.cpp	(revision 21)
@@ -0,0 +1,175 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaCamera.h"
+#include "OgreColladaDocument.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+
+#include "OgreSceneManager.h"
+#include "OgreCamera.h"
+#include "OgreStringConverter.h"
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	ColladaCamera::ColladaCamera(ColladaDocument *d, xmlNode *n) : ColladaEntity(d, n) 
+	{ 
+		mType = UNKNOWN;
+
+		mXFov = 0;
+		mYFov = 0;
+		mZNear = 0;
+		mZFar = 0;
+
+		mBottom = 0;
+		mLeft = 0;
+		mRight = 0;
+		mTop = 0;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaCamera::~ColladaCamera(void) { }
+
+	//-------------------------------------------------------------------------
+	MovableObject *ColladaCamera::getOgreInstance(void) const
+	{
+		// Camera *camera = new Camera(mId, mDoc->getSceneManager());
+		Camera *camera = mDoc->getSceneManager()->createCamera(mId);
+		
+		// standard projection type should be perspective
+		
+		if (mType == ORTHOGRAPHIC)
+		{
+			camera->setProjectionType(PT_ORTHOGRAPHIC);
+			// map from Collada [-1,1] to Ogre [0,1]
+			// camera->setWindow(mLeft, mTop, mRight, mBottom);
+		}
+		else if (mType == PERSPECTIVE)
+		{
+			camera->setProjectionType(PT_PERSPECTIVE);
+
+			float fov = mYFov;
+			if (fov == 0 && mXFov > 0) fov = mXFov / camera->getAspectRatio();
+
+			camera->setFOVy(Radian(Math::DegreesToRadians(fov)));
+			camera->setNearClipDistance(mZNear);
+			camera->setFarClipDistance(mZFar);
+		}
+        Quaternion rot = mDoc->getUpRotation();
+        camera->rotate(rot);
+		return camera;
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaCamera::doImport(void)
+	{
+		if (mLoaded) return mStatus;
+		else mLoaded = true;
+
+		// <technique> nodes
+		xmlNodePtrVector techniques = ColladaUtils::getChildsByTagName(mNode, CS_ELM_TECHNIQUE);
+		// currently we are only interested in "COMMON" profile
+		xmlNode *technique = NULL;
+		xmlNodePtrVector::const_iterator it;
+		for (it = techniques.begin(); it != techniques.end(); ++it)
+		{
+			String profile = ColladaUtils::getProperty(*it, CS_ATR_PROFILE);
+			if (profile == CS_VAL_TECHNIQUE_PROFILE_COMMON)
+			{
+				technique = *it;
+				break;
+			}
+		}
+		if (technique == NULL) return false;
+
+		// one <optics> child
+		xmlNode *optics = ColladaUtils::getChildByTagName(technique, CS_ELM_OPTICS);
+		mStatus = importOptics(optics);
+		
+		// <imager> [0,*]
+		xmlNodePtrVector imagers = ColladaUtils::getChildsByTagName(technique, CS_ELM_IMAGER);
+		for (it = imagers.begin(); it != imagers.end() && mStatus; ++it) mStatus = importImager(*it);
+
+		return mStatus;
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaCamera::importImager(xmlNode *node)
+	{
+		if (node == NULL) return false;
+		// currently not implemented
+		return true;
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaCamera::importOptics(xmlNode *node)
+	{	
+		if (node == NULL) return false;
+
+		// <program>
+		xmlNode *program = ColladaUtils::getChildByTagName(node, CS_ELM_PROGRAM);
+		if (program == NULL) return false;
+		
+		// camera type
+		String url = ColladaUtils::getProperty(program, CS_ATR_URL);
+		mType = UNKNOWN;
+		if (url == CS_VAL_CAMERA_TYPE_ORTHOGRAPHIC) mType = ORTHOGRAPHIC;
+		else if (url == CS_VAL_CAMERA_TYPE_PERSPECTIVE) mType = PERSPECTIVE;
+		if (mType == UNKNOWN)
+		{
+			LogManager::getSingleton().logMessage("ColladaCamera::importOptics - <program name=" + url + "> unknown! " + mId);
+			return false;
+		}
+
+		// <param> childs
+		xmlNodePtrVector params = ColladaUtils::getChildsByTagName(program, CS_ELM_PARAM);
+		for (xmlNodePtrVector::const_iterator it = params.begin(); it != params.end(); ++it)
+		{
+			String name = ColladaUtils::getProperty(*it, CS_ATR_NAME);
+			String content = ColladaUtils::getContentDirect(*it);
+			float tmp = StringConverter::parseReal(content);
+
+			/**
+			 * The field of view may be specified separately for the X and Y directions. 
+			 * If only one is specified, the other should be derived using the aspect ratio 
+			 * of the rendering view-port (to avoid image distortion).
+			 */
+
+			if (name == CS_VAL_CAMERA_PARAM_BOTTOM) mBottom = tmp;
+			else if (name == CS_VAL_CAMERA_PARAM_LEFT) mLeft = tmp;
+			else if (name == CS_VAL_CAMERA_PARAM_RIGHT) mRight = tmp;
+			else if (name == CS_VAL_CAMERA_PARAM_TOP)	mTop = tmp;
+			else if (name == CS_VAL_CAMERA_PARAM_XFOV) mXFov = tmp;
+			else if (name == CS_VAL_CAMERA_PARAM_YFOV) mYFov = tmp;
+			else if (name == CS_VAL_CAMERA_PARAM_ZFAR) mZFar = tmp;
+			else if (name == CS_VAL_CAMERA_PARAM_ZNEAR) mZNear = tmp;
+			else
+			{
+				LogManager::getSingleton().logMessage("ColladaCamera::importOptics - <param name=" + name + " unknown! " + mId);
+			}
+		}
+
+		return true;
+	}
+}
Index: /ColladaPlugin/src/OgreColladaDll.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaDll.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaDll.cpp	(revision 21)
@@ -0,0 +1,40 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaManager.h"
+
+namespace Ogre
+{
+
+	extern "C" _OgreColladaExport void dllStartPlugin(void)
+	{
+        // create Collada Manager
+        new ColladaManager();
+	}
+
+	extern "C" _OgreColladaExport void dllStopPlugin(void)
+	{
+        delete ColladaManager::getSingletonPtr();
+	}
+}
Index: /ColladaPlugin/src/OgreColladaDocument.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaDocument.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaDocument.cpp	(revision 21)
@@ -0,0 +1,324 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @authors	Philipp Hartl, Jeff Doyle (nfz)
+ * @see		README
+ */
+
+#include "OgreResourceGroupManager.h"
+
+#include "OgreColladaDocument.h"
+#include "OgreColladaGeometry.h"
+#include "OgreColladaLibrary.h"
+#include "OgreColladaScene.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+#include "OgreColladaAsset.h"
+
+namespace Ogre
+{
+    //-----------------------------------------------------------------------
+	ColladaDocument::ColladaDocument(ResourceManager* creator, const String& name, ResourceHandle handle,
+		const String& group, bool isManual, ManualResourceLoader* loader)
+		:Resource(creator, name, handle, group, isManual, loader)
+        , mXmlDoc(0)
+        , mSceneMgr(0)
+        , mLibrary(0)
+        , mScene(0)
+        , mAsset(0)
+        , mUpRotation(Quaternion::IDENTITY)
+    {
+
+    }
+
+    //-------------------------------------------------------------------------
+	void ColladaDocument::setSceneManager(SceneManager *scenemgr)
+	{
+        mSceneMgr = scenemgr;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaDocument::~ColladaDocument()
+	{
+        // have to call this here rather than in Resource destructor
+        // since calling virtual methods in base destructors causes crash
+        LogManager::getSingleton().logMessage("COLLADA Document: " + getName() + " closing.");
+        unload();
+	}
+
+    //-----------------------------------------------------------------------
+    void ColladaDocument::loadImpl(void)
+    {
+        LogManager::getSingleton().logMessage("COLLADA Document: attempting to Load: " + mName + ".");
+        // get the data stream from Resource Group Manager
+        DataStreamPtr dataStream = 
+            ResourceGroupManager::getSingleton().openResource(mName, mGroup);
+
+		// make sure everything is still free
+		if (mXmlDoc) xmlFreeDoc(mXmlDoc);
+
+		// parse an XML file and build a tree
+		// returns the resulting document tree if the file was wellformed, NULL otherwise
+		if (!(mXmlDoc = xmlParseMemory(dataStream->getAsString().c_str(), static_cast<int>(dataStream->size()))))
+		{
+			LogManager::getSingleton().logMessage("ColladaDocument::loadImpl - could not parse file");
+
+			xmlCleanupParser();
+			return;
+		}
+
+		// start import with root element of document <COLLADA>
+		bool status = importCollada(xmlDocGetRootElement(mXmlDoc));
+
+		// free up all the structures used by a document, tree included
+		if (mXmlDoc)
+		{
+			xmlFreeDoc(mXmlDoc);
+			mXmlDoc = NULL;
+		}
+
+		xmlCleanupParser();
+    }
+
+    //-----------------------------------------------------------------------
+    void ColladaDocument::unloadImpl(void)
+    {
+		OGRE_DELETE(mLibrary);
+		OGRE_DELETE(mScene);
+        OGRE_DELETE(mAsset);
+		mSceneMgr = NULL;
+    }
+
+	//-------------------------------------------------------------------------
+	bool ColladaDocument::doImport(const String &filename, const String &options)
+	{
+		bool status = false;
+
+		// import options - not yet implemented
+
+		/* TEST
+		FileInfoListPtr pFileInfo = ResourceGroupManager::getSingleton().findResourceFileInfo(ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, filename);
+		if (!pFileInfo->empty())
+		{
+			LogManager::getSingleton().logMessage("test - " + pFileInfo->at(0).path);
+		}
+		*/
+
+		// Macro to check that the libxml version in use is compatible with the 
+		// version the software has been compiled against
+		LIBXML_TEST_VERSION
+
+		// test suffix against default collada extension ".dae"
+		String suffix = filename.substr(filename.length()-4,4);
+		if (suffix != ".dae")
+		{
+			LogManager::getSingleton().logMessage("ColladaDocument::doImport - not valid file suffix: " + suffix);
+			return false;
+		}
+
+		// make sure everything is still free
+		if (mXmlDoc) xmlFreeDoc(mXmlDoc);
+
+		// parse an XML file and build a tree
+		// returns the resulting document tree if the file was wellformed, NULL otherwise
+		if (!(mXmlDoc = xmlParseFile(filename.c_str())))
+		{
+			LogManager::getSingleton().logMessage("ColladaDocument::doImport - could not parse file");
+
+			xmlCleanupParser();
+			return false;
+		}
+
+		// start import with root element of document <COLLADA>
+		status = importCollada(xmlDocGetRootElement(mXmlDoc));
+
+		// free up all the structures used by a document, tree included
+		if (mXmlDoc)
+		{
+			xmlFreeDoc(mXmlDoc);
+			mXmlDoc = NULL;
+		}
+		xmlCleanupParser();
+
+		return status;
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaDocument::importAsset(xmlNode *node)
+	{
+		mAsset = new ColladaAsset(node);
+        mAsset->doImport();
+        // setup up matrix based on settings in asset
+        switch (mAsset->getUpAxis())
+        {
+        case X_UP:
+            mUpRotation = Quaternion(Degree(-90), Vector3::UNIT_Z);
+            break;
+        case Y_UP:
+            break;
+        case Z_UP:
+            mUpRotation = Quaternion(Degree(-90), Vector3::UNIT_X);
+            break;
+        }
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaDocument::importCollada(xmlNode *element)
+	{
+		// is document well-formed?
+		String tagname = (const char *)element->name;
+		if (tagname != CS_ELM_COLLADA)
+		{
+			LogManager::getSingleton().logMessage("ColladaDocument::importCollada - not well-formed Collada XML document: " + tagname);	
+			return false;
+		}
+
+		mLibrary = new ColladaLibraryContainer(this);
+
+		// get child elements of <COLLADA>
+		for (xmlNode *child = element->children; child != NULL; child = child->next)
+		{
+			// we are interested on element nodes only
+			if (child->type != XML_ELEMENT_NODE) continue;
+
+			tagname = (const char *)child->name;
+
+			// look for <asset> [0,1]
+			if (tagname == CS_ELM_ASSET) 
+			{
+				importAsset(child);
+			}
+			// look for <library> [+]
+			else if (tagname == CS_ELM_LIBRARY) 
+			{
+				mLibrary->doImport(child);
+			}
+			// look for <scene> [1,1]
+			else if (tagname == CS_ELM_SCENE) 
+			{
+				mScene = new ColladaSceneNode(this, child);
+			}
+			// unknwon or unsupported tag
+			else
+			{
+				LogManager::getSingleton().logMessage("ColladaDocument::importCollada - unknown child: " + tagname);
+			}
+		}
+
+		if (mScene != NULL) return mScene->doImport();
+
+		return false;
+	}
+
+	//-------------------------------------------------------------------------
+    UpAxis ColladaDocument::getUpAxis() const
+    {
+        UpAxis axis = Y_UP;
+        if (mAsset)
+        {
+            axis = mAsset->getUpAxis();
+        }
+
+        return axis;
+    }
+
+    //-------------------------------------------------------------------------
+    void ColladaDocument::correctAxis(Vector3& vec) const
+    {
+        if (mAsset)
+        {
+            switch (mAsset->getUpAxis())
+            {
+            case X_UP:
+                {
+                    Real tmp = vec.y;
+                    vec.y = vec.x;
+                    vec.x = -tmp;
+                }
+                break;
+            case Y_UP:
+                break;
+            case Z_UP:
+                {
+                    Real tmp = vec.y;
+                    vec.y = vec.z;
+                    vec.z = -tmp;
+                }
+                break;
+            }
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    void ColladaDocument::correctAxis(Real* vec) const
+    {
+        if (mAsset)
+        {
+            switch (mAsset->getUpAxis())
+            {
+            case X_UP:
+                {
+                    Real tmp = vec[1];
+                    vec[1] = vec[0];
+                    vec[0] = -tmp;
+                }
+                break;
+            case Y_UP:
+                break;
+            case Z_UP:
+                {
+                    Real tmp = vec[1];
+                    vec[1] = vec[2];
+                    vec[2] = -tmp;
+                }
+                break;
+            }
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    void ColladaDocument::correctAxis(Quaternion& quat) const
+    {
+        if (mAsset)
+        {
+            switch (mAsset->getUpAxis())
+            {
+            case X_UP:
+                {
+                    Real tmp = quat.y;
+                    quat.y = quat.x;
+                    quat.x = -tmp;
+                }
+                break;
+            case Y_UP:
+                break;
+            case Z_UP:
+                {
+                    Real tmp = quat.y;
+                    quat.y = quat.z;
+                    quat.z = -tmp;
+                    //quat.w = -quat.w;
+                }
+                break;
+            }
+        }
+    }
+
+
+}
Index: /ColladaPlugin/src/OgreColladaEntity.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaEntity.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaEntity.cpp	(revision 21)
@@ -0,0 +1,43 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaEntity.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	void ColladaEntity::initialise(void)
+	{
+		if (mNode != NULL)
+		{
+			mId   = ColladaUtils::getProperty(mNode, CS_ATR_ID);
+			mName = ColladaUtils::getProperty(mNode, CS_ATR_NAME);
+
+			if (!mId.length() && mName.length()) mId = mName;
+			else if (mId.length() && !mName.length()) mName = mId;
+		}
+	}
+
+}
Index: /ColladaPlugin/src/OgreColladaGeometry.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaGeometry.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaGeometry.cpp	(revision 21)
@@ -0,0 +1,883 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaGeometry.h"
+#include "OgreColladaDocument.h"
+#include "OgreColladaLibrary.h"
+#include "OgreColladaMaterial.h"
+#include "OgreColladaScene.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+
+#include "OgreSceneManager.h"
+#include "OgreMovableObject.h"
+#include "OgreMeshManager.h"
+#include "OgreSubMesh.h"
+#include "OgreEntity.h"
+#include "OgreStringConverter.h"
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	ColladaGeometry::ColladaGeometry(ColladaDocument *doc, xmlNode *n) : ColladaEntity(doc, n)
+	{ 
+		mOgreMesh = NULL;
+		mEntityName = "";
+		mBB = NULL;
+		mBBReset = false;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaGeometry::~ColladaGeometry(void) 
+	{
+		if (!mSources.empty())
+		{
+			for (ColladaGeometrySourcePtrVector::iterator i = mSources.begin(); i != mSources.end(); ++i)
+			{
+				(*i)->data.clear();
+				OGRE_DELETE(*i);
+			}
+			mSources.clear();
+		}
+		if (!mVertexInputs.empty())
+		{
+			for (ColladaGeometryInputDataPtrVector::iterator i = mVertexInputs.begin(); i != mVertexInputs.end(); ++i)
+			{
+				// source already freed
+				OGRE_DELETE(*i);
+			}
+			mVertexInputs.clear();
+		}
+		if (!mPolygons.empty())
+		{
+			for (ColladaGeometryPolygonPtrVector::iterator i = mPolygons.begin(); i != mPolygons.end(); ++i)
+			{
+				for (ColladaGeometryInputDataPtrVector::iterator j = (*i)->inputs.begin(); j != (*i)->inputs.end(); ++j)
+				{
+					// source already freed
+					OGRE_DELETE(*j);
+				}
+				(*i)->inputs.clear();
+				(*i)->material = NULL;
+				OGRE_DELETE(*i);	
+			}
+			mPolygons.clear();
+		}
+
+		if (mOgreMesh != NULL)
+		{
+			for (ColladaGeometryOgreMeshIndexData::iterator it = mOgreMesh->indices.begin(); it != mOgreMesh->indices.end(); ++it)
+			{
+				OGRE_DELETE_ARRAY((*it)->indices);
+				OGRE_DELETE(*it);
+			}
+			mOgreMesh->indices.clear();
+			OGRE_DELETE_ARRAY(mOgreMesh->vertices);
+			OGRE_DELETE(mOgreMesh);
+		}
+
+		if (mBBReset) mBB = NULL;
+		else OGRE_DELETE(mBB); 
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaGeometry::calcBoundingBox(void)
+	{
+		if (!mBB)
+		{
+			// calculate a bounding box
+			ColladaGeometrySource *src = mVertexInputs.at(0)->source;
+
+			float minX, minY, minZ, maxX, maxY, maxZ;
+			minX = maxX = src->data.at(0);
+			minY = maxY = src->data.at(1);
+			minZ = maxZ = src->data.at(2);
+
+			for (uint i = 0; i < src->count; i++)
+			{
+				uint index = i * 3;
+
+				if (minX > src->data.at(index)) minX = src->data.at(index);
+				if (minY > src->data.at(index + 1)) minY = src->data.at(index + 1);
+				if (minZ > src->data.at(index + 2)) minZ = src->data.at(index + 2);
+
+				if (maxX < src->data.at(index)) maxX = src->data.at(index);
+				if (maxY < src->data.at(index + 1)) maxY = src->data.at(index + 1);
+				if (maxZ < src->data.at(index + 2)) maxZ = src->data.at(index + 2);
+			}
+
+			mBB = new ColladaBoundingBox(Vector3(minX, minY, minZ), Vector3(maxX, maxY, maxZ));			
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaGeometry::createTriangleList(void)
+	{
+		// walk through all polygons, there must be at least one at index 0
+		uint polygonCount = static_cast<uint>(mPolygons.size());
+		ColladaGeometryPolygon *polygon	= mPolygons.at(0);
+		if (polygon == NULL) return;
+
+		// for simple life
+		ColladaGeometryInputData *vertexInput   = NULL;
+		ColladaGeometryInputData *normalInput   = NULL;
+		ColladaGeometryInputData *texcoordInput = NULL;
+
+		// get all trivial sources through vertex inputs, one index array for all
+		ColladaGeometryInputDataPtrVector::iterator it;
+		for (it = mVertexInputs.begin(); it != mVertexInputs.end(); ++it)
+		{
+			if ((*it)->semantic == ColladaGeometrySpecific::POSITION) vertexInput = *it;
+			if ((*it)->semantic == ColladaGeometrySpecific::NORMAL) normalInput = *it;
+			if ((*it)->semantic == ColladaGeometrySpecific::TEXCOORD) texcoordInput = *it;
+		}
+
+		// look for detailed normals and texcoords, each source with its own index data
+		for (it = polygon->inputs.begin(); it != polygon->inputs.end(); ++it)
+		{
+			if ((*it)->semantic == ColladaGeometrySpecific::NORMAL) normalInput = *it;
+			if ((*it)->semantic == ColladaGeometrySpecific::TEXCOORD) texcoordInput = *it;
+		}
+		
+		// vertex, normal, texcoord source counts
+		uint vertexcount = static_cast<uint>(vertexInput->source->data.size());
+		uint normalcount = 0;
+		uint texcoordcount = 0;
+		if (normalInput != NULL) normalcount = static_cast<uint>(normalInput->source->data.size());
+		if (texcoordInput != NULL) texcoordcount = static_cast<uint>(texcoordInput->source->data.size());
+
+		// create new ogre mesh structure
+		mOgreMesh = new ColladaGeometryOgreMesh();
+		mOgreMesh->drawNormals = ((normalInput != NULL) && (normalcount > 0));
+		// are there more normals per vertex?
+		bool normalsEx = (mOgreMesh->drawNormals && (normalcount != vertexcount));
+		mOgreMesh->drawTexCoords = ((texcoordInput != NULL) && (texcoordcount > 0));
+		// more texcoords per vertex
+		bool texcoordsEx = (mOgreMesh->drawTexCoords && (texcoordcount != vertexcount));
+
+		// calc stride size for vertex array
+		uint stridesize = vertexInput->source->stride;
+		if (mOgreMesh->drawNormals) stridesize += normalInput->source->stride;
+		if (mOgreMesh->drawTexCoords) stridesize += texcoordInput->source->stride;
+
+		// how many triangles are in one polygon?
+		// if there are more than one polygon per geometry, the amount should not change!
+		uint trianglesppolygon = 1;
+		uint i = 0;
+		for (i = polygon->vertexCount; i > 3; i--) trianglesppolygon++;
+		
+		/** simple case, each vertex has at maximum only one normal and/or one texture information
+		 * (vertexcount == normalcount == texcoordcount, all data have the same indices)
+		 * so we only have to triangulate the polygon primitive
+		 */
+		if (!normalsEx && !texcoordsEx)
+		{
+			// create space for the vertex array
+			mOgreMesh->vertexCount = vertexInput->source->count;
+			mOgreMesh->vertices = new float[mOgreMesh->vertexCount * stridesize];
+
+			// (1) fill up vertices with vertex (normal, texcoord) data
+			// the mesh could be created anyway if polygonCount > 0
+			uint offset = 0;
+			for (i = 0; i < mOgreMesh->vertexCount; i++)
+			{
+				mOgreMesh->vertices[i * stridesize]		= vertexInput->source->data[i * 3];
+				mOgreMesh->vertices[i * stridesize + 1]	= vertexInput->source->data[i * 3 + 1];
+				mOgreMesh->vertices[i * stridesize + 2]	= vertexInput->source->data[i * 3 + 2];
+                mDoc->correctAxis(&mOgreMesh->vertices[i * stridesize]);
+
+				offset = 3;
+				if (mOgreMesh->drawNormals)
+				{
+					mOgreMesh->vertices[i * stridesize + offset]		= normalInput->source->data[i * 3];
+					mOgreMesh->vertices[i * stridesize + offset + 1]	= normalInput->source->data[i * 3 + 1];
+					mOgreMesh->vertices[i * stridesize + offset + 2]	= normalInput->source->data[i * 3 + 2];
+                    mDoc->correctAxis(&mOgreMesh->vertices[i * stridesize + offset]);
+					offset += 3;
+				}
+
+				if (mOgreMesh->drawTexCoords)
+				{
+					mOgreMesh->vertices[i * stridesize + offset]		= texcoordInput->source->data[i * 2];
+					mOgreMesh->vertices[i * stridesize + offset + 1]	= texcoordInput->source->data[i * 2 + 1];
+				}
+			}
+
+			// (2) fill up indices array for each polygon primitive
+			for (ColladaGeometryPolygonPtrVector::iterator it = mPolygons.begin(); it != mPolygons.end(); ++it)
+			{
+				polygon = *it;
+
+				// create enough space for the index array
+				ColladaGeometryIndexData *tmpIndices = new ColladaGeometryIndexData();
+				tmpIndices->count = trianglesppolygon * polygon->primitiveCount * 3;
+				tmpIndices->indices = new unsigned short[tmpIndices->count];
+				tmpIndices->material = ((*it)->setMaterial) ? (*it)->material->getId() : "";
+
+				// set vertexInput pointer at indices
+				vertexInput = polygon->inputs.at(0);
+
+				offset = trianglesppolygon * 3;
+				uint index = 0;
+				for (i = 0; i < polygon->primitiveCount; i++)
+				{
+					index = offset * i;
+
+					// first triangle
+					tmpIndices->indices[index]		= vertexInput->indices[i * polygon->vertexCount];
+					tmpIndices->indices[index + 1]	= vertexInput->indices[i * polygon->vertexCount + 1];
+					tmpIndices->indices[index + 2]	= vertexInput->indices[i * polygon->vertexCount + 2];
+
+					// are there more than one triangle in one primitive? 
+					for (uint j = 1; j < trianglesppolygon; j++)
+					{
+						tmpIndices->indices[index + j * 3]	   = vertexInput->indices[i * polygon->vertexCount];
+						tmpIndices->indices[index + j * 3 + 1] = vertexInput->indices[i * polygon->vertexCount + j + 1];
+						tmpIndices->indices[index + j * 3 + 2] = vertexInput->indices[i * polygon->vertexCount + j + 2];
+					}
+				}
+
+				// save index array
+				mOgreMesh->indices.push_back(tmpIndices);
+			}
+		}
+		/** tricky case, each vertex can have more than one normal and/or texture
+		 * normals or texcoord arrays with different indices
+		 */
+		else
+		{
+			// space for vertex count
+			mOgreMesh->vertexCount = 0;
+			ColladaGeometryPolygonPtrVector::iterator it;
+			for (it = mPolygons.begin(); it != mPolygons.end(); ++it)
+			{
+				// the vertexCount should not change!
+				mOgreMesh->vertexCount += (*it)->primitiveCount * (*it)->vertexCount;
+			}
+			mOgreMesh->vertices = new float[mOgreMesh->vertexCount * stridesize];
+
+			for (it = mPolygons.begin(); it != mPolygons.end(); ++it)
+			{
+				polygon = (*it);
+				
+				// create enough space for the index array
+				ColladaGeometryIndexData *tmpIndices = new ColladaGeometryIndexData();
+				tmpIndices->count = trianglesppolygon * polygon->primitiveCount * 3;
+				tmpIndices->indices = new unsigned short[tmpIndices->count];
+				tmpIndices->material = ((*it)->setMaterial) ? (*it)->material->getId() : "";
+
+				// get vertex indices
+				intVector *vertexIndices = &polygon->inputs.at(0)->indices;
+
+				// get normal indices
+				intVector *normalIndices = &normalInput->indices;
+				if (!normalsEx) normalIndices = vertexIndices;
+
+				// get texture indices
+				intVector *textureIndices = &texcoordInput->indices;
+				if (!texcoordsEx) textureIndices = vertexIndices;
+
+				// fill up mVertices and mIndices array in one pass
+				for (i = 0; i < polygon->primitiveCount; i++)
+				{
+					// starting index for one primitive
+					uint pindex = i * polygon->vertexCount;
+
+					// (1) vertices
+					uint j;
+					for (j = 0; j < polygon->vertexCount; j++)
+					{
+						uint vindex = pindex + j;	// vertex index
+
+						// vertex data
+						mOgreMesh->vertices[vindex * stridesize]     = vertexInput->source->data[vertexIndices->at(vindex) * 3];
+						mOgreMesh->vertices[vindex * stridesize + 1] = vertexInput->source->data[vertexIndices->at(vindex) * 3 + 1];
+						mOgreMesh->vertices[vindex * stridesize + 2] = vertexInput->source->data[vertexIndices->at(vindex) * 3 + 2];
+                        mDoc->correctAxis(&mOgreMesh->vertices[vindex * stridesize]);
+
+						uint offset = 3;
+						if (mOgreMesh->drawNormals)
+						{
+							mOgreMesh->vertices[vindex * stridesize + offset]     = normalInput->source->data[normalIndices->at(vindex) * 3];
+							mOgreMesh->vertices[vindex * stridesize + offset + 1] = normalInput->source->data[normalIndices->at(vindex) * 3 + 1];
+							mOgreMesh->vertices[vindex * stridesize + offset + 2] = normalInput->source->data[normalIndices->at(vindex) * 3 + 2];
+                            mDoc->correctAxis(&mOgreMesh->vertices[vindex * stridesize + offset]);
+
+							offset += 3;
+						}
+
+						if (mOgreMesh->drawTexCoords)
+						{
+							mOgreMesh->vertices[vindex * stridesize + offset]     = texcoordInput->source->data[textureIndices->at(vindex) * 2];
+							mOgreMesh->vertices[vindex * stridesize + offset + 1] = texcoordInput->source->data[textureIndices->at(vindex) * 2 + 1];
+						}
+					}
+
+					// (2) indices
+					uint iindex = i * trianglesppolygon * 3;	// indices index
+
+					// first triangle
+					tmpIndices->indices[iindex]		= pindex;
+					tmpIndices->indices[iindex + 1]	= pindex + 1;
+					tmpIndices->indices[iindex + 2]	= pindex + 2;
+
+					// are there more than one triangle in one primitive? 
+					for (j = 1; j < trianglesppolygon; j++)
+					{
+						tmpIndices->indices[iindex + j * 3]     = pindex;
+						tmpIndices->indices[iindex + j * 3 + 1] = pindex + j + 1;
+						tmpIndices->indices[iindex + j * 3 + 2] = pindex + j + 2;
+					}
+				}
+
+				// save index array
+				mOgreMesh->indices.push_back(tmpIndices);
+			}
+		}
+
+		// TEST
+		// printVertices(stridesize);
+		// printIndices();
+	}
+
+	//-------------------------------------------------------------------------
+	MovableObject *ColladaGeometry::getOgreInstance(void) const
+	{
+		if (mOgreMesh != NULL && !mEntityName.empty())
+		{
+			// create hw-buffers and push the data there, material will be set too
+			createOgreMesh();
+
+			return mDoc->getSceneManager()->createEntity(mEntityName, mId);
+		}
+
+		return NULL;
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaGeometry::createOgreMesh(void) const
+	{
+		//if (MeshManager::getSingleton().getByName(mId) != static_cast<ResourcePtr>(NULL)) return;
+		ResourcePtr p;
+		if (MeshManager::getSingleton().getByName(mId) != p)
+			return;
+
+		MeshPtr pMesh = MeshManager::getSingleton().createManual(mId, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+		pMesh->sharedVertexData = new VertexData();
+		pMesh->sharedVertexData->vertexCount = mOgreMesh->vertexCount;
+		VertexDeclaration *pVertexDecl = pMesh->sharedVertexData->vertexDeclaration;
+
+		size_t offset = 0;
+
+		// position
+		pVertexDecl->addElement(0, offset, VET_FLOAT3, VES_POSITION);
+		offset += VertexElement::getTypeSize(VET_FLOAT3);
+
+		// normals
+		if (mOgreMesh->drawNormals)
+		{
+			pVertexDecl->addElement(0, offset, VET_FLOAT3, VES_NORMAL);
+			offset += VertexElement::getTypeSize(VET_FLOAT3);
+		}
+
+		// colour (diffuse, specular)
+
+		// texture coordinates
+		if (mOgreMesh->drawTexCoords)
+		{
+			pVertexDecl->addElement(0, offset, VET_FLOAT2, VES_TEXTURE_COORDINATES, 0);
+			offset += VertexElement::getTypeSize(VET_FLOAT2);
+		}
+
+		HardwareVertexBufferSharedPtr vbuf = HardwareBufferManager::getSingleton().createVertexBuffer(
+            offset, pMesh->sharedVertexData->vertexCount, HardwareBuffer::HBU_STATIC_WRITE_ONLY, false);
+
+		// set vertex buffer binding so buffer 0 is bound to our vertex buffer
+		VertexBufferBinding* bind = pMesh->sharedVertexData->vertexBufferBinding; 
+		bind->setBinding(0, vbuf);
+		// upload the vertex data to the card
+		vbuf->writeData(0, vbuf->getSizeInBytes(), mOgreMesh->vertices, true);
+
+		// for each polygon create a new submesh, for multimaterial e.g. 
+		// submesh with index buffer
+		for (ColladaGeometryOgreMeshIndexData::iterator it = mOgreMesh->indices.begin(); it != mOgreMesh->indices.end(); ++it)
+		{
+			SubMesh *pSubMesh = pMesh->createSubMesh();
+			pSubMesh->indexData->indexCount = (*it)->count;
+			pSubMesh->indexData->indexBuffer = HardwareBufferManager::getSingleton().createIndexBuffer(
+				HardwareIndexBuffer::IT_16BIT, pSubMesh->indexData->indexCount, HardwareBuffer::HBU_STATIC_WRITE_ONLY);
+			HardwareIndexBufferSharedPtr ibuf = pSubMesh->indexData->indexBuffer;
+			// upload the index data 
+			ibuf->writeData(0, ibuf->getSizeInBytes(), (*it)->indices, true);
+			
+			if (!(*it)->material.empty()) pSubMesh->setMaterialName((*it)->material);
+			pSubMesh->useSharedVertices = true;
+			pSubMesh->operationType = RenderOperation::OT_TRIANGLE_LIST;
+		}
+
+		// there should be an AABB in every case, maybe overwritten from the collada scene node import
+		// be careful by AABB if the object is duplicated and translated
+		pMesh->_setBounds(mBB->getAABB());
+		pMesh->_setBoundingSphereRadius(mBB->getRadius());
+
+		pMesh->load();
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaGeometry::doImport(void)
+	{
+		if (mLoaded) return mStatus;
+		else mLoaded = true;
+
+		// get <mesh> node, must occur exactly one time [1,1]
+		xmlNode *mesh = ColladaUtils::getChildByTagName(mNode, CS_ELM_MESH);
+		if (mesh != NULL) mStatus = importMesh(mesh);
+
+		// get <extra> nodes, can occur [0,*]
+		// xmlNodePtrVector extras = ColladaUtils::getChildsByTagName(mNode, CS_ELM_EXTRA);
+		// for (xmlNodePtrVector::iterator i = extras.begin(); i != extras.end(); ++i) importExtra((*i));
+
+		if (mStatus) 
+		{
+			calcBoundingBox();
+
+			// create the vertices and indices by simple triangulation
+			if (mType == POLYGONS || mType == TRIANGLES) createTriangleList();
+		}
+        
+		return mStatus;
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaGeometry::importExtra(xmlNode *extraNode)
+	{
+		// not yet implemented
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaGeometry::importMesh(xmlNode *meshNode)
+	{
+		bool bPrimitives = false;
+
+		// vertices must occur exactly one time
+		if (!importVerticesNode(meshNode)) return false;
+
+		// look for polygon primitives
+		bPrimitives = importPolygonsNodes(meshNode, CS_ELM_POLYGONS);
+		if (bPrimitives)
+		{
+			mType = POLYGONS;
+			return true;
+		}
+
+        // triangles
+		bPrimitives = importPolygonsNodes(meshNode, CS_ELM_TRIANGLES);
+		if (bPrimitives)
+		{
+			mType = TRIANGLES;
+			return true;
+		}
+
+		return false;
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaGeometry::importPolygonsNodes(xmlNode *meshNode, const String &primitive)
+	{
+		// there can be more than one <polygons> node, e.g. multi materials
+		xmlNodePtrVector polygonsNodes = ColladaUtils::getChildsByTagName(meshNode, primitive);
+		if (polygonsNodes.empty()) return false;
+
+		// walk through all <polygons>
+		for (xmlNodePtrVector::iterator it = polygonsNodes.begin(); it != polygonsNodes.end(); ++it)
+		{
+			xmlNode *polygonsNode = *it;
+
+			ColladaGeometryPolygon *polygon = new ColladaGeometryPolygon();
+
+			// attribute material refers to a <material> node
+			String material = ColladaUtils::getProperty(polygonsNode, CS_ATR_INPUT_MATERIAL);
+			polygon->setMaterial = false;
+			// search for material, get ptr
+			if (!material.empty())
+			{
+				material.erase(0,1);	// remove the # sign
+				polygon->material = mDoc->getLibrary()->getMaterial(material);
+				if (polygon->material != NULL)
+				{
+					// import material entity
+					if (!(polygon->setMaterial = polygon->material->doImport()))
+					{
+						LogManager::getSingleton().logMessage("ColladaGeometry::importPolygonsNodes - loading of assigned material " + material + " failed! " + mId);
+					}
+				}
+				else
+				{
+					LogManager::getSingleton().logMessage("ColladaGeometry::importPolygonsNodes - can't find assigned material with id " + material + "! " + mId);
+				}
+			}
+
+			// the number of polygon primitives
+			String count = ColladaUtils::getProperty(polygonsNode, CS_ATR_COUNT);
+			polygon->primitiveCount = (!count.empty()) ? static_cast<uint>(atoi(count.c_str())) : 0;
+
+			// walk through <param>, <input>, <p> childs
+			xmlNode *c = NULL;
+			for (c = polygonsNode->children; c != NULL; c = c->next)
+			{
+				if (c->type != XML_ELEMENT_NODE) continue;
+				String tagname = (const char *)c->name;
+
+				// <param>, ignore it
+				if (tagname == CS_ELM_PARAM) continue;
+				// <input>
+				else if (tagname == CS_ELM_INPUT)
+				{
+					// get semantic attribute
+					String semantic = ColladaUtils::getProperty(c, CS_ATR_INPUT_SEMANTIC);			
+					ColladaGeometrySpecific::Semantic tmpsemantic = ColladaGeometrySpecific::getSemantic(semantic);
+
+					if (tmpsemantic == ColladaGeometrySpecific::VERTEX ||
+						tmpsemantic == ColladaGeometrySpecific::NORMAL ||
+						tmpsemantic == ColladaGeometrySpecific::TEXCOORD)
+					{
+						// if (tmpsemantic == ColladaGeometryInput::NORMAL) mhasFaceNormals = true;
+						// if (tmpsemantic == ColladaGeometryInput::TEXCOORD) mhasFaceTexCoords = true;
+
+						String idx		= ColladaUtils::getProperty(c, CS_ATR_IDX);
+						String source   = ColladaUtils::getProperty(c, CS_ATR_INPUT_SOURCE);
+
+						ColladaGeometrySource *gsource = NULL;
+						// the source node points at <vertices>, already imported by importVerticesNode
+						if (tmpsemantic != ColladaGeometrySpecific::VERTEX)
+						{
+							gsource = importSourceNode(ColladaUtils::getChildById(meshNode, source.c_str()));
+							if (gsource == NULL)
+							{
+								LogManager::getSingleton().logMessage("ColladaGeometry::importVerticesNode - unable to find/import <source> with id " + source);
+								continue;
+							}
+						}
+
+						// make new inputdata and push it on the vector
+						ColladaGeometryInputData *input = new ColladaGeometryInputData();
+						input->idx = (!idx.empty()) ? static_cast<uint>(atoi(idx.c_str())) : polygon->inputs.size();
+						input->semantic = tmpsemantic;
+						input->source = gsource;
+
+						// check for duplicate <input>
+						bool idxrepeat = false;
+						for (ColladaGeometryInputDataPtrVector::iterator jt = polygon->inputs.begin(); jt != polygon->inputs.end() && !idxrepeat; ++jt)
+						{
+							if ((*jt)->idx == input->idx) idxrepeat = true;
+						}
+						if (!idxrepeat) polygon->inputs.push_back(input);
+						else OGRE_DELETE(input);	// free unneeded geometry input data
+					}
+					// unknwon or unsupported
+					else
+					{
+						LogManager::getSingleton().logMessage("ColladaGeometry::importPolygonsNode - unknown <semantic> " + semantic + " in <geometry> " + mId);
+						continue;					
+					}
+				}
+				// <p> first appearance, break, cause we will parse the primitves later
+				else if (tagname == CS_ELM_P) break;
+				// unknwon or unsupported
+				else
+				{
+					LogManager::getSingleton().logMessage("ColladaGeometry::importPolygonsNodes - unknown child: " + tagname);
+					continue;
+				}
+			}
+
+			// there should be at least one <input> with semantic="VERTEX"
+			if (polygon->inputs.at(0)->semantic != ColladaGeometrySpecific::VERTEX) continue;
+			polygon->inputCount = static_cast<uint>(polygon->inputs.size()); 
+			
+			uint indexCount = 0;
+			polygon->vertexCount = 0;
+			uint tmppCount = 0;
+
+			// parse primitives, <p> nodes, line by line
+			for (; c != NULL; c = c->next)
+			{
+				if (c->type != XML_ELEMENT_NODE) continue;
+
+				// get all indices (vertices, normals, texcoords)
+				// ATTENTION: holes <h/> are currently not supported !!
+				String primitive = ColladaUtils::getContentDirect(c);
+
+				// split the primitive string 
+				StringVector sallindices = StringUtil::split(primitive," ");
+				if (sallindices.empty()) continue;
+				
+				// get the amount of vertex indices of one polygon, quad patches are pleasant
+				indexCount = static_cast<uint>(sallindices.size()) / polygon->inputCount;
+				if (indexCount != polygon->vertexCount)
+				{
+					// skip the false primitive line, but be aware of false geometries (e.g. holes)!
+					// perhaps it is better to stop reading immediately?
+					if (polygon->vertexCount > 0)
+					{
+						LogManager::getSingleton().logMessage("ColladaGeometry::importPolygonsNodes - different index count? " + mId);
+						LogManager::getSingleton().logMessage("ColladaGeometry::importPolygonsNodes - primitive: " + primitive);
+						continue;
+					}
+					polygon->vertexCount = indexCount;
+				}
+
+				// we can parse more than quad patches
+				// but should we do this? currently there is only a simple algortihm which triangulate
+				if (polygon->vertexCount > 4)
+				{
+					LogManager::getSingleton().logMessage("ColladaGeometry::importPolygonsNodes - why are you not using quad patches?");					
+				}
+
+				intVector iallindices;
+				iallindices.reserve(sallindices.size());
+
+				// fill up a temp indices vector with conversions to int
+				for (StringVector::iterator st = sallindices.begin(); st != sallindices.end(); ++st)
+				{
+					iallindices.push_back(atoi((*st).c_str()));
+				}
+
+				// fill up the corresponding index vectors with indices
+				for (uint offset = 0; offset < static_cast<uint>(iallindices.size()); offset += polygon->inputCount)
+				{
+					// in order of inputs
+					for (ColladaGeometryInputDataPtrVector::iterator pt = polygon->inputs.begin(); pt != polygon->inputs.end(); ++pt)
+					{
+						(*pt)->indices.push_back(iallindices[offset + (*pt)->idx]);
+					}
+				}
+
+				tmppCount++;
+			}
+
+			// if there was a failure in parsing primitives, the amount is not still the same
+			if (tmppCount < polygon->primitiveCount) polygon->primitiveCount = tmppCount;
+
+			mPolygons.push_back(polygon);
+		}
+
+		return true;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaGeometrySource *ColladaGeometry::importSourceNode(xmlNode *sourceNode)
+	{
+		if (sourceNode == NULL) return NULL;
+
+		// get unique identifier
+		String id = ColladaUtils::getProperty(sourceNode, CS_ATR_ID);
+
+		// check if source is already loaded
+		for (ColladaGeometrySourcePtrVector::iterator itsource = mSources.begin(); itsource != mSources.end(); ++itsource)
+		{
+			if ((*itsource)->id == id) return *itsource;
+		}
+
+		// get all <technique> child nodes
+		xmlNodePtrVector techniques = ColladaUtils::getChildsByTagName(sourceNode, CS_ELM_TECHNIQUE);
+		
+		// currently we are only interested in "COMMON" profile
+		xmlNode *technique = NULL;
+		for (xmlNodePtrVector::iterator it = techniques.begin(); it != techniques.end(); ++it)
+		{
+			String profile = ColladaUtils::getProperty(*it, CS_ATR_PROFILE);
+			if (profile == CS_VAL_TECHNIQUE_PROFILE_COMMON) 
+			{
+				technique = *it;
+				break;
+			}
+		}
+		if (technique == NULL) return NULL;
+
+		// currently ignore <asset>, <param>
+		// get <accessor> information
+		xmlNode *accessor = ColladaUtils::getChildByTagName(technique, CS_ELM_ACCESSOR);
+		if (accessor == NULL) return NULL;
+		// currently ignore <combiner>, <joints>, <program> 
+
+		// get count and stride properties
+		String count = ColladaUtils::getProperty(accessor, CS_ATR_COUNT);
+		String stride = ColladaUtils::getProperty(accessor, CS_ATR_ACCESSOR_STRIDE);
+
+		// new source record
+		ColladaGeometrySource *source = new ColladaGeometrySource();
+		source->id = id;
+		source->count = (!count.empty()) ? static_cast<uint>(atoi(count.c_str())) : 0;
+		source->stride = (!stride.empty()) ? static_cast<uint>(atoi(stride.c_str())) : 0;
+
+		// get data from <float_array> 
+		xmlNode *data = ColladaUtils::getChildByTagName(sourceNode, CS_ELM_FLOAT_ARRAY);
+		if (data == NULL) return NULL;
+
+		String content = ColladaUtils::getContentDirect(data);
+		if (content.empty()) return NULL;
+
+		// split string data by carriage return and line feed
+		StringVector lines = StringUtil::split(content,"\r\n");
+		if (lines.size() != source->count) source->count = static_cast<uint>(lines.size());
+		// reserve enough space
+		source->data.reserve(source->count * source->stride);
+		// walk through each data per line 
+		for (StringVector::iterator jt = lines.begin(); jt != lines.end(); ++jt)
+		{	
+			// split each line by a blank
+			StringVector line = StringUtil::split(*jt," ");
+			// for vertices (x, y, z), normals (x, y, z), texcoord (s, t), ...
+			for (StringVector::iterator kt = line.begin(); kt != line.end(); ++kt)
+			{
+                source->data.push_back( StringConverter::parseReal(*kt) );
+			}
+		}
+
+		mSources.push_back(source);
+
+		return source;
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaGeometry::importVerticesNode(xmlNode *meshNode)
+	{ 		
+		// get <vertices ...> node of mesh
+		xmlNode *vertices = ColladaUtils::getChildByTagName(meshNode, CS_ELM_VERTICES);
+		if (vertices == NULL)
+		{
+			LogManager::getSingleton().logMessage("ColladaGeometry::importVerticesNode - no <vertices> node found in <geometry> " + mId);
+			return false;
+		}
+
+		// walk through <input> childs
+		for (xmlNode *c = vertices->children; c != NULL; c = c->next)
+		{
+			if (c->type != XML_ELEMENT_NODE) continue;
+
+			String tagname = (const char *)c->name;
+			// <input>
+			if (tagname == CS_ELM_INPUT)
+			{
+				// get semantic attribute type
+				String semantic = ColladaUtils::getProperty(c, CS_ATR_INPUT_SEMANTIC);
+				ColladaGeometrySpecific::Semantic tmpsemantic = ColladaGeometrySpecific::getSemantic(semantic);
+				
+				if (tmpsemantic == ColladaGeometrySpecific::POSITION ||
+                    tmpsemantic == ColladaGeometrySpecific::NORMAL || 
+					tmpsemantic == ColladaGeometrySpecific::COLOR ||
+					tmpsemantic == ColladaGeometrySpecific::TEXCOORD) 
+				{
+					// if (tmpsemantic == ColladaGeometryInput::NORMAL) mhasNormals = true;
+					// if (tmpsemantic == ColladaGeometryInput::TEXCOORD) mhasTexCoords = true;
+
+					// get source string
+					String source = ColladaUtils::getProperty(c, CS_ATR_INPUT_SOURCE);
+					if (source.empty()) continue;
+
+					// import source
+					ColladaGeometrySource *gsource = importSourceNode(ColladaUtils::getChildById(meshNode, source.c_str()));
+					if (gsource == NULL)
+					{
+						LogManager::getSingleton().logMessage("ColladaGeometry::importVerticesNode - unable to find/import <source> with id " + source);
+						continue;
+					}
+
+					// make new inputdata and push it on the vector
+					ColladaGeometryInputData *idata = new ColladaGeometryInputData();
+					idata->semantic = tmpsemantic;
+					idata->source = gsource;
+
+					mVertexInputs.push_back(idata);
+				}
+				// unknown or unsupported
+				else
+				{
+					LogManager::getSingleton().logMessage("ColladaGeometry::importVerticesNode - unknown <semantic> " + semantic + " in <geometry> " + mId);
+					continue;
+				}
+			}
+			// unknown or unsupported
+			else
+			{
+				LogManager::getSingleton().logMessage("ColladaGeometry::importVerticesNode - unknown child: " + tagname);
+			}
+		}
+
+		// there must be at least one <input semantic="POSITION" ...>
+		return (mVertexInputs.at(0)->semantic == ColladaGeometrySpecific::POSITION);
+	}
+
+	//----------------------------------------------------------------------------
+	void ColladaGeometry::printIndices(void)
+	{
+		LogManager::getSingleton().logMessage(StringConverter::toString(mOgreMesh->indices.size()));
+		for (ColladaGeometryOgreMeshIndexData::iterator it = mOgreMesh->indices.begin(); it != mOgreMesh->indices.end(); ++it)
+		{
+			String result = "";
+			for (uint i = 0; i < (*it)->count; i++)
+			{
+				if (i % 3 == 0) result += "\n";
+				result += " " + StringConverter::toString((*it)->indices[i]);
+			}
+			LogManager::getSingleton().logMessage(result + " " + StringConverter::toString((*it)->count) + " " + (*it)->material);
+		}
+	}
+
+	//----------------------------------------------------------------------------
+	void ColladaGeometry::printVertices(const unsigned short x)
+	{
+		String result = "";
+		LogManager::getSingleton().logMessage(StringConverter::toString(mOgreMesh->vertexCount));
+		for (uint i = 0; i < mOgreMesh->vertexCount * x; i++)
+		{
+			if (i % x == 0) result += "\n";
+			result += " " + StringConverter::toString(mOgreMesh->vertices[i]);
+		}
+		LogManager::getSingleton().logMessage(result);
+	}
+
+	//----------------------------------------------------------------------------
+	void ColladaGeometry::setBoundingBox(ColladaBoundingBox *b)
+	{ 
+		if (mBB == NULL) return;
+
+		mBB = b;
+		mBBReset = true;
+	}
+
+	//----------------------------------------------------------------------------
+	namespace ColladaGeometrySpecific
+	{
+		Semantic getSemantic(const String &s)
+		{
+			if (s == CS_VAL_INPUT_SEMANTIC_POSITION) return POSITION;
+			else if (s == CS_VAL_INPUT_SEMANTIC_VERTEX) return VERTEX;
+			else if (s == CS_VAL_INPUT_SEMANTIC_NORMAL) return NORMAL;
+			else if (s == CS_VAL_INPUT_SEMANTIC_TEXCOORD) return TEXCOORD;
+			else if (s == CS_VAL_INPUT_SEMANTIC_COLOR) return COLOR;
+			else return UNKNOWN;
+		}
+	}
+}
Index: /ColladaPlugin/src/OgreColladaLibrary.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaLibrary.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaLibrary.cpp	(revision 21)
@@ -0,0 +1,207 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaLibrary.h"
+#include "OgreColladaCamera.h"
+#include "OgreColladaGeometry.h"
+#include "OgreColladaLight.h"
+#include "OgreColladaMaterial.h"
+#include "OgreColladaTexture.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+
+#include "OgreStringConverter.h"
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	template <class T> 
+	ColladaLibrary<T>::ColladaLibrary() { }
+
+	//-------------------------------------------------------------------------
+	template <class T> 
+	ColladaLibrary<T>::~ColladaLibrary()
+	{
+		if (!mEntities.empty())
+		{
+			for (typename ColladaLibraryVector::iterator i = mEntities.begin(); 
+                                i != mEntities.end(); 
+                                ++i)
+			{
+				OGRE_DELETE(*i);
+			}
+			mEntities.clear();
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	template <class T>
+	void ColladaLibrary<T>::initialise(ColladaDocument *doc, xmlNode *node)
+	{
+		for (xmlNode *child = node->children; child != NULL; child = child->next)
+		{
+			if (child->type != XML_ELEMENT_NODE) continue;
+
+			// create new library instance
+			T *entity = new T(doc, child);
+			entity->initialise();
+
+			mEntities.push_back(entity);
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	template <class T>
+    T *ColladaLibrary<T>::getEntity(const String &id) const
+	{
+		for (typename ColladaLibraryVector::const_iterator i = mEntities.begin(); i != mEntities.end(); ++i)
+		{
+			if (id == (*i)->getId()) return (*i);
+		}
+		return NULL;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaLibraryContainer::ColladaLibraryContainer(ColladaDocument *doc) : mDoc(doc) 
+	{
+		mCameras	= new ColladaLibrary<ColladaCamera>();
+		mImages	    = new ColladaLibrary<ColladaImage>();
+		mLights		= new ColladaLibrary<ColladaLight>();
+		mTextures	= new ColladaLibrary<ColladaTexture>();
+		mMaterials  = new ColladaLibrary<ColladaMaterial>();
+		mGeometries = new ColladaLibrary<ColladaGeometry>();
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaLibraryContainer::~ColladaLibraryContainer(void) 
+	{
+		OGRE_DELETE(mGeometries);
+		OGRE_DELETE(mMaterials);
+		OGRE_DELETE(mTextures);
+		OGRE_DELETE(mLights);
+		OGRE_DELETE(mImages);
+		OGRE_DELETE(mCameras);
+		
+		mDoc  = NULL;
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaLibraryContainer::doImport(xmlNode *node)
+	{
+		// get the library type property
+		String type = ColladaUtils::getProperty(node, CS_ATR_TYPE);
+		// the corresponding enumeration type
+		ColladaLibrarySpecific::Type libtype = ColladaLibrarySpecific::getType(type);
+
+		if (libtype != ColladaLibrarySpecific::UNKNOWN)
+		{
+			if (libtype == ColladaLibrarySpecific::CAMERA) mCameras->initialise(mDoc, node);
+			else if (libtype == ColladaLibrarySpecific::GEOMETRY) mGeometries->initialise(mDoc, node);
+			else if (libtype == ColladaLibrarySpecific::IMAGE) mImages->initialise(mDoc, node);
+			else if (libtype == ColladaLibrarySpecific::LIGHT) mLights->initialise(mDoc, node);
+			else if (libtype == ColladaLibrarySpecific::MATERIAL) mMaterials->initialise(mDoc, node);
+			else if (libtype == ColladaLibrarySpecific::TEXTURE) mTextures->initialise(mDoc, node);
+			else LogManager::getSingleton().logMessage("ColladaLibraryContainer::doImport - <library type=" + type + "> unsupported");
+		}
+		// unknwon
+		else 
+		{
+			LogManager::getSingleton().logMessage("ColladaLibraryContainer::doImport - <library type=" + type + "> unknown");
+		}		
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaCamera *ColladaLibraryContainer::getCamera(const String &id) const
+	{
+		return mCameras->getEntity(id);
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaImage *ColladaLibraryContainer::getImage(const String &id) const
+	{
+		return	mImages->getEntity(id);
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaLight *ColladaLibraryContainer::getLight(const String &id) const
+	{
+		return mLights->getEntity(id);
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaMaterial *ColladaLibraryContainer::getMaterial(const String &id) const
+	{
+		return	mMaterials->getEntity(id);
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTexture *ColladaLibraryContainer::getTexture(const String &id) const
+	{
+		return mTextures->getEntity(id);
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaEntity *ColladaLibraryContainer::importInstance(const String &id)
+	{
+		// look in the library entities for the identifier	
+		ColladaEntity *entity = NULL;
+
+		// first start with geometries
+		entity = mGeometries->getEntity(id);
+
+		// camera
+		if (entity == NULL) entity = mCameras->getEntity(id);
+
+		// light
+		if (entity == NULL) entity = mLights->getEntity(id);
+
+		if (entity == NULL) return NULL;
+
+		// try to import the instance
+		if (!entity->doImport())
+		{
+			LogManager::getSingleton().logMessage("ColladaLibraryContainer::importInstance - doImport of instance " + id + " failed! Entity: " + StringConverter::toString(entity->getEntityType()));
+		}
+
+		return entity;
+	}
+
+	//-------------------------------------------------------------------------
+	namespace ColladaLibrarySpecific
+	{
+		Type getType(const String &s)
+		{
+			if (s == CS_VAL_LIBRARY_TYPE_ANIMATION) return ANIMATION;
+			else if (s == CS_VAL_LIBRARY_TYPE_CAMERA) return CAMERA;
+			else if (s == CS_VAL_LIBRARY_TYPE_CODE) return CODE;
+			else if (s == CS_VAL_LIBRARY_TYPE_CONTROLLER) return CONTROLLER;
+			else if (s == CS_VAL_LIBRARY_TYPE_GEOMETRY) return GEOMETRY;
+			else if (s == CS_VAL_LIBRARY_TYPE_IMAGE) return IMAGE;
+			else if (s == CS_VAL_LIBRARY_TYPE_LIGHT) return LIGHT;
+			else if (s == CS_VAL_LIBRARY_TYPE_MATERIAL) return MATERIAL;
+			else if (s == CS_VAL_LIBRARY_TYPE_PROGRAM) return PROGRAM;
+			else if (s == CS_VAL_LIBRARY_TYPE_TEXTURE) return TEXTURE;
+			else return UNKNOWN;
+		}
+	}
+}
Index: /ColladaPlugin/src/OgreColladaLight.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaLight.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaLight.cpp	(revision 21)
@@ -0,0 +1,170 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaLight.h"
+#include "OgreColladaDocument.h"
+#include "OgreColladaScene.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+
+#include "OgreSceneManager.h"
+#include "OgreStringConverter.h"
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	ColladaLight::ColladaLight(ColladaDocument *d, xmlNode *n) : ColladaEntity(d, n) { }
+
+	//-------------------------------------------------------------------------
+	ColladaLight::~ColladaLight(void) { }
+
+	//-------------------------------------------------------------------------
+	MovableObject *ColladaLight::getOgreInstance(void) const
+	{
+		if (mType == ColladaLightSpecific::AMBIENT)
+		{
+			mDoc->getSceneManager()->setAmbientLight(mColour);
+			return NULL;
+		}
+
+		// Light *light = new Light(mId);
+		Light *light = mDoc->getSceneManager()->createLight(mId);
+
+		light->setDiffuseColour(mColour);
+		light->setSpecularColour(mColour);
+		light->setDirection(Vector3(0, 0, -1));		// see collada spec
+
+		if (mType == ColladaLightSpecific::DIRECTIONAL) light->setType(Light::LT_DIRECTIONAL);
+		else if (mType == ColladaLightSpecific::POINT) light->setType(Light::LT_POINT);
+		else if (mType == ColladaLightSpecific::SPOT) light->setType(Light::LT_SPOTLIGHT);
+
+		if (mType == ColladaLightSpecific::POINT || mType == ColladaLightSpecific::SPOT)
+		{
+			float constant = (mAttenuation == ColladaLightSpecific::CONSTANT) ? mAttenuationScale : 0;
+			float linear = (mAttenuation == ColladaLightSpecific::LINEAR) ? mAttenuationScale : 0;
+			float quadratic = (mAttenuation == ColladaLightSpecific::QUADRATIC) ? mAttenuationScale : 0;
+		
+			float range = 100000;
+			ColladaBoundingBox *scenebox = mDoc->getScene()->getBoundingBox();
+			if (scenebox != NULL) range = scenebox->getRadius() * 2;
+
+			light->setAttenuation(range, constant, linear, quadratic);
+		}
+
+		if (mType == ColladaLightSpecific::SPOT)
+		{
+			light->setSpotlightRange(Radian(0), Radian(Math::DegreesToRadians(mAngle)), mFalloffScale);
+		}
+
+		return light;
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaLight::doImport(void)
+	{
+		if (mLoaded) return mStatus;
+		else mLoaded = true;
+
+		// get light type
+		String lighttype = ColladaUtils::getProperty(mNode, CS_ATR_TYPE);
+		mType = ColladaLightSpecific::getType(lighttype);
+		if (mType == ColladaLightSpecific::UNKNOWN)
+		{
+			LogManager::getSingleton().logMessage("ColladaLight::doImport - light type " + lighttype + " unknown! " + mId);
+			return false;
+		}
+
+		// <asset> child
+		// xmlNode *asset = ColladaUtils::getChildByTagName(mNode, CS_ELM_ASSET);
+
+		// <param> childs, describes the values that the light contributes
+		xmlNodePtrVector params = ColladaUtils::getChildsByTagName(mNode, CS_ELM_PARAM);
+		for (xmlNodePtrVector::iterator it = params.begin(); it != params.end(); ++it)
+		{
+			String name = ColladaUtils::getProperty(*it, CS_ATR_NAME);
+			String content = ColladaUtils::getContentDirect(*it);
+
+   			/**
+			 * if the type attribute value is DIRECTIONAL or SPOT 
+			 * then the light's default direction vector in local
+			 * coordinates is [0,0,-1], pointing down the -Z axis
+			 */
+
+			// should be in every case
+			if (name == CS_VAL_LIGHT_PARAM_COLOR)
+			{
+				mColour = StringConverter::parseColourValue(content);
+			}
+			// point or spot
+			else if (name == CS_VAL_LIGHT_PARAM_ATTENUATION)
+			{
+				mAttenuation = ColladaLightSpecific::getFunction(content);
+			}
+			else if (name == CS_VAL_LIGHT_PARAM_ATTENUATION_SCALE)
+			{
+				mAttenuationScale = StringConverter::parseReal(content);
+			}
+			// especially for spot light
+			else if (name == CS_VAL_LIGHT_PARAM_ANGLE)
+			{
+				mAngle = StringConverter::parseReal(content);
+			}
+			else if (name == CS_VAL_LIGHT_PARAM_FALLOFF)
+			{
+				mFalloff = ColladaLightSpecific::getFunction(content);
+			}
+			else if (name == CS_VAL_LIGHT_PARAM_FALLOFF_SCALE)
+			{
+				mFalloffScale = StringConverter::parseReal(content);
+			}
+			else
+			{
+				LogManager::getSingleton().logMessage("ColladaLight::doImport - unknown attribute of light param " + name + "! " + mId);
+			}
+		}
+
+		mStatus = true;
+		return mStatus;
+	}
+
+	//-------------------------------------------------------------------------
+	namespace ColladaLightSpecific
+	{
+		Type getType(const String &s)
+		{
+			if (s == CS_VAL_LIGHT_TYPE_AMBIENT) return AMBIENT;
+			else if (s == CS_VAL_LIGHT_TYPE_DIRECTIONAL) return DIRECTIONAL;
+			else if (s == CS_VAL_LIGHT_TYPE_POINT) return POINT;
+			else if (s == CS_VAL_LIGHT_TYPE_SPOT) return SPOT;
+			else return UNKNOWN;
+		}
+
+		Function getFunction(const String &s)
+		{
+			if (s == CS_VAL_LIGHT_FUNCTION_CONSTANT) return CONSTANT;
+			else if (s == CS_VAL_LIGHT_FUNCTION_LINEAR) return LINEAR;
+			else if (s == CS_VAL_LIGHT_FUNCTION_QUADRATIC) return QUADRATIC;
+			else return CONSTANT;
+		}
+	}
+}
Index: /ColladaPlugin/src/OgreColladaManager.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaManager.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaManager.cpp	(revision 21)
@@ -0,0 +1,93 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @authors	Philipp Hartl, Jeff Doyle (nfz)
+ * @see		README
+ */
+
+#include "OgreColladaPrerequisites.h"
+#include "OgreColladaManager.h"
+#include "OgreColladaDocument.h"
+
+#include "OgreStringConverter.h"
+
+namespace Ogre {
+
+    //-----------------------------------------------------------------------
+    template<> ColladaManager* Singleton<ColladaManager>::ms_Singleton = 0;
+
+    //-----------------------------------------------------------------------
+    ColladaManager::ColladaManager(void)
+        : mVersion(StringConverter::toString(COLLADA_VERSION_MAJOR) + "." + 
+            StringConverter::toString(COLLADA_VERSION_MINOR) + "." + 
+            StringConverter::toString(COLLADA_VERSION_PATCH))
+    {
+
+        LogManager::getSingleton().logMessage("Collada Plugin version: " + mVersion);
+		// Resource type
+		mResourceType = "Collada";
+
+		// Register with resource group manager
+		ResourceGroupManager::getSingleton()._registerResourceManager(mResourceType, this);
+
+    }
+
+    //-----------------------------------------------------------------------
+    ColladaManager::~ColladaManager(void)
+    {
+	    // Resources cleared by superclass
+		// Unregister with resource group manager
+		ResourceGroupManager::getSingleton()._unregisterResourceManager(mResourceType);
+		ResourceGroupManager::getSingleton()._unregisterScriptLoader(this);
+
+    }
+
+    //-----------------------------------------------------------------------
+    ColladaManager* ColladaManager::getSingletonPtr(void)
+    {
+        return ms_Singleton;
+    }
+
+    //-----------------------------------------------------------------------
+    ColladaManager& ColladaManager::getSingleton(void)
+    {  
+        assert( ms_Singleton );  return ( *ms_Singleton );  
+    }
+
+    //-----------------------------------------------------------------------
+    ColladaDocumentPtr ColladaManager::load(const String& daeFileName, SceneManager* sceneMgr,
+        NameValuePairList* loadParams,
+        const String& group
+        )
+    {
+        ColladaDocumentPtr daeDoc = ResourceManager::load(daeFileName, group, false, 0, loadParams);
+        if (!daeDoc.isNull()) daeDoc->setSceneManager(sceneMgr);
+
+        return daeDoc;
+    }
+
+	//-----------------------------------------------------------------------
+	Resource* ColladaManager::createImpl(const String& name, ResourceHandle handle, 
+		const String& group, bool isManual, ManualResourceLoader* loader,
+        const NameValuePairList* params)
+	{
+		return new ColladaDocument(this, name, handle, group, isManual, loader);
+	}
+
+}
Index: /ColladaPlugin/src/OgreColladaMaterial.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaMaterial.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaMaterial.cpp	(revision 21)
@@ -0,0 +1,285 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaMaterial.h"
+#include "OgreColladaDocument.h"
+#include "OgreColladaLibrary.h"
+#include "OgreColladaTexture.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+
+#include "OgreMaterialManager.h"
+#include "OgreTechnique.h"
+#include "OgreStringConverter.h"
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	ColladaMaterial::ColladaMaterial(ColladaDocument *doc, xmlNode *n) : ColladaEntity(doc, n) { }
+
+	//-------------------------------------------------------------------------
+	ColladaMaterial::~ColladaMaterial(void) 
+	{
+		if (!mPasses.empty())
+		{
+			for (ColladaMaterialPassPtrVector::iterator it = mPasses.begin(); it != mPasses.end(); ++it)
+			{
+				if (!(*it)->mTextures.empty()) (*it)->mTextures.clear();	// the instances will be deleted by the library container!
+				OGRE_DELETE(*it);
+			}
+			mPasses.clear();
+		}
+	}
+	
+	//-------------------------------------------------------------------------
+	MovableObject *ColladaMaterial::getOgreInstance(void) const
+	{
+		ushort ipass = 0;
+
+		// get new material pointer
+		MaterialPtr material = MaterialManager::getSingleton().create(mId, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+
+		// for all passes
+		for (ColladaMaterialPassPtrVector::const_iterator it = mPasses.begin(); it != mPasses.end(); ++it)
+		{
+			// set all parameters, ogre should take only those into account which are necessary for this shading mode
+			material->getTechnique(0)->getPass(ipass)->setShadingMode((*it)->mMode);
+			material->getTechnique(0)->getPass(ipass)->setAmbient((*it)->mAmbient);
+			material->getTechnique(0)->getPass(ipass)->setDiffuse((*it)->mDiffuse);
+			material->getTechnique(0)->getPass(ipass)->setSpecular((*it)->mSpecular);
+			material->getTechnique(0)->getPass(ipass)->setShininess((*it)->mShininess);
+			material->getTechnique(0)->getPass(ipass)->setSelfIllumination((*it)->mEmission);
+
+			// for multitexturing colouroperations(_ex) must be set! (alpha_blend, src, dest)
+			for (ColladaTexturePtrVector::iterator jt = (*it)->mTextures.begin(); jt != (*it)->mTextures.end(); ++jt)
+			{				
+				material->getTechnique(0)->getPass(ipass)->createTextureUnitState((*jt)->getImage()->getSource());
+			}
+			ipass++;
+		}
+
+		// load material, resource loader?
+		material->load();
+
+		// TEST
+		// LogManager::getSingleton().logMessage("ColladaMaterial::createOgreMaterial - finished!");
+
+		return NULL;
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaMaterial::doImport(void)
+	{
+		if (mLoaded) return mStatus;
+		else mLoaded = true;
+        
+		// do we need them?
+		// <asset> child
+		// xmlNode *asset = ColladaUtils::getChildByTagName(mNode, CS_ELM_ASSET);
+
+		// <param> childs
+		// xmlNodePtrVector params = ColladaUtils::getChildsByTagName(mNode, CS_ELM_PARAM);
+
+		// <shader> child
+		xmlNode *shader = ColladaUtils::getChildByTagName(mNode, CS_ELM_SHADER);
+
+		// get all <technique> childs of shader
+		xmlNodePtrVector techniques = ColladaUtils::getChildsByTagName(shader, CS_ELM_TECHNIQUE);		
+		// currently we are only interested in "COMMON" profile
+		xmlNode *technique = NULL;
+		xmlNodePtrVector::iterator it;
+		for (it = techniques.begin(); it != techniques.end(); ++it)
+		{
+			String profile = ColladaUtils::getProperty(*it, CS_ATR_PROFILE);
+			if (profile == CS_VAL_TECHNIQUE_PROFILE_COMMON)
+			{
+				technique = *it;
+				break;
+			}
+		}
+		if (technique == NULL) return false;
+
+		// the first <program> will be ignored
+		// get <pass> elements
+		xmlNodePtrVector passes = ColladaUtils::getChildsByTagName(technique, CS_ELM_PASS);
+		// each pass will be stored on the vector list
+		for (it = passes.begin(); it != passes.end(); ++it) mPasses.push_back(importPass(*it));
+		if (mPasses.empty()) return false;
+
+		// TEST
+		getOgreInstance();
+
+		mStatus = true;
+		return mStatus;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaMaterialPass *ColladaMaterial::importPass(xmlNode *pass)
+	{
+		ColladaMaterialPass *newpass = new ColladaMaterialPass;
+
+		// do we need the <param> node(s)?
+
+		/**
+		 * import <input> tags, maybe there are textures
+		 * get source out of input texture node and try to
+		 * load the texture entity, push it on the texture list for multitexture purpose
+		 */ 
+		xmlNodePtrVector inputs = ColladaUtils::getChildsByTagName(pass, CS_ELM_INPUT);
+		xmlNodePtrVector::iterator it;
+		for (it = inputs.begin(); it != inputs.end(); ++it)
+		{
+			// look for the input with semantic="TEXTURE"
+			String semantic = ColladaUtils::getProperty(*it, CS_ATR_INPUT_SEMANTIC);
+			if (semantic == CS_VAL_INPUT_SEMANTIC_TEXTURE) 
+			{
+				// get source attribute
+				String source = ColladaUtils::getProperty(*it, CS_ATR_INPUT_SOURCE);
+				if (source.empty())
+				{
+					LogManager::getSingleton().logMessage("ColladaMaterial::importPass - no source url for texture is given! " + mId);
+					continue;
+				}
+
+				// local reference of texture file
+				if (source.find("#") == 0)
+				{
+					source.erase(0,1);
+
+					// try to find the instance and load it, if it is not already loaded
+					ColladaTexture *texture = mDoc->getLibrary()->getTexture(source);
+					if (texture == NULL)
+					{
+						LogManager::getSingleton().logMessage("ColladaMaterial::importPass - can't find the texture reference " + source + "! " + mId);
+						continue;
+					}
+					// try to import the entity
+					if (!texture->doImport())
+					{
+						LogManager::getSingleton().logMessage("ColladaMaterial::importPass - loading of texture " + source + " failed! " + mId);
+						continue;
+					}
+
+					// save valid texture on the list
+					newpass->mTextures.push_back(texture);
+				}
+				// external
+				else
+				{
+					LogManager::getSingleton().logMessage("ColladaMaterial::importPass - external refernces are currently not implemented! " + mId);
+					continue;
+				}
+			}
+		}
+
+		// get <program>
+		xmlNode *program = ColladaUtils::getChildByTagName(pass, CS_ELM_PROGRAM);
+		
+		// possible material shader types: CONSTANT, LAMBERT, PHONG
+		String programUrl = ColladaUtils::getProperty(program, CS_ATR_URL);
+		newpass->mMode = SO_GOURAUD;	// lambert
+		if (programUrl == CS_VAL_PROGRAM_URL_PHONG) newpass->mMode = SO_PHONG;
+		else if (programUrl == CS_VAL_PROGRAM_URL_CONSTANT) newpass->mMode = SO_FLAT;
+        
+		// reset all colours
+		newpass->mAmbient = ColourValue(0,0,0,0);
+		newpass->mDiffuse = ColourValue(0,0,0,0);
+		newpass->mSpecular = ColourValue(0,0,0,0);
+		newpass->mShininess = 0.0;
+		newpass->mEmission = ColourValue(0,0,0,0);
+		newpass->mReflective = ColourValue(0,0,0,0);
+		newpass->mReflectivity = 0.0; // mattle
+		newpass->mTransparent = ColourValue(0,0,0,0);
+		newpass->mTransparency = 0.0; // opaque
+
+		// now get the <param> of the program
+		xmlNodePtrVector params = ColladaUtils::getChildsByTagName(program, CS_ELM_PARAM);
+		for (it = params.begin(); it != params.end(); ++it)
+		{
+			// property name
+			String name = ColladaUtils::getProperty(*it, CS_ATR_NAME);
+			// the value
+			String content = ColladaUtils::getContentDirect(*it);
+
+			// TEST
+			// LogManager::getSingleton().logMessage("ColladaMaterial::importPass - colour " + name + ": " + content);
+
+			// AMBIENT, float3
+			if (name == CS_VAL_MATERIAL_PARAM_AMBIENT)
+			{
+				newpass->mAmbient = StringConverter::parseColourValue(content);
+			}
+			// DIFFUSE
+			else if (name == CS_VAL_MATERIAL_PARAM_DIFFUSE)
+			{
+				newpass->mDiffuse = StringConverter::parseColourValue(content);
+			}
+			// SPECULAR
+			else if (name == CS_VAL_MATERIAL_PARAM_SPECULAR)
+			{
+				newpass->mSpecular = StringConverter::parseColourValue(content);
+			}
+			// SHININESS
+			else if (name == CS_VAL_MATERIAL_PARAM_SHININESS)
+			{
+				newpass->mShininess = StringConverter::parseReal(content);
+			}
+			// TRANSPARENT
+			else if (name == CS_VAL_MATERIAL_PARAM_TRANSPARENT)
+			{
+				newpass->mTransparent = StringConverter::parseColourValue(content);
+			}
+			// TRANSPARENCY
+			else if (name == CS_VAL_MATERIAL_PARAM_TRANSPARENCY)
+			{
+				newpass->mTransparency = StringConverter::parseReal(content);
+			}
+			// EMISSION
+			else if (name == CS_VAL_MATERIAL_PARAM_EMISSION)
+			{	
+				newpass->mEmission = StringConverter::parseColourValue(content);
+			}
+			// REFLECTIVE
+			else if (name == CS_VAL_MATERIAL_PARAM_REFLECTIVE)
+			{
+				newpass->mReflective = StringConverter::parseColourValue(content);
+			}
+			// REFLECTIVITY
+			else if (name == CS_VAL_MATERIAL_PARAM_REFLECTIVITY)
+			{
+				newpass->mReflectivity = StringConverter::parseReal(content);
+			}
+			else
+			{
+				LogManager::getSingleton().logMessage("ColladaMaterial::importPass - unknown attribute of material param " + name + "! " + mId);
+			}
+		}
+
+		// set alpha value for the colours
+		float alpha = 1.0 - newpass->mTransparency;
+		newpass->mDiffuse.a = alpha;
+		newpass->mSpecular.a = alpha;
+
+		return newpass;
+	}
+}
Index: /ColladaPlugin/src/OgreColladaScene.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaScene.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaScene.cpp	(revision 21)
@@ -0,0 +1,666 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaScene.h"
+#include "OgreColladaDocument.h"
+#include "OgreColladaGeometry.h"
+#include "OgreColladaLibrary.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+
+#include "OgreStringVector.h"
+#include "OgreAxisAlignedBox.h"
+#include "OgreStringConverter.h"
+#include "OgreSceneManager.h"
+
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	ColladaBoundingBox::ColladaBoundingBox(ColladaSceneNode *p) : ColladaNodeElement(p) 
+	{ 
+		mMin = Vector3::ZERO;
+		mMax = Vector3::ZERO;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaBoundingBox::ColladaBoundingBox(const Vector3 &min, const Vector3 &max)
+		: ColladaNodeElement(NULL), mMin(min), mMax(max) { }
+
+	//-------------------------------------------------------------------------
+	ColladaBoundingBox::~ColladaBoundingBox(void) { }
+
+	//-------------------------------------------------------------------------
+	void ColladaBoundingBox::doImport(xmlNode *node)
+	{ 
+		if (node == NULL) return;
+
+		for (xmlNode *c = node->children; c != NULL; c = c->next)
+		{
+			if (c->type != XML_ELEMENT_NODE) continue;
+			String tagname = (const char *)c->name;
+
+			// <min>
+			if (tagname == CS_ELM_MIN)
+			{
+				// fill up minimum vector
+				mMin = StringConverter::parseVector3(ColladaUtils::getContentDirect(c));
+			}
+			// <max>
+			else if (tagname == CS_ELM_MAX)
+			{
+				// fill up maximum vector
+				mMax = StringConverter::parseVector3(ColladaUtils::getContentDirect(c));
+			}
+			// unknown or unsupported
+			else
+			{
+				LogManager::getSingleton().logMessage("ColladaBoundingBox::doImport - unknown child: " + tagname);
+			}
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	AxisAlignedBox ColladaBoundingBox::getAABB(void) const
+	{
+		return AxisAlignedBox(mMin, mMax);
+	}
+
+	//-------------------------------------------------------------------------
+	float ColladaBoundingBox::getRadius(void) const
+	{
+		Vector3 dist = mMax - (mMax + mMin) * 0.5;
+		return dist.length();
+	}
+
+	//-------------------------------------------------------------------------
+	String ColladaBoundingBox::toString(void) const
+	{
+		return "min: " + StringConverter::toString(mMin) + " max: " + StringConverter::toString(mMax);
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaScene
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaSceneNode::ColladaSceneNode(ColladaDocument *doc, xmlNode *node) : ColladaEntity(doc, node)
+	{ 
+		mType = NODE;
+		mBB   = NULL;
+		mParent = NULL;
+		mEntity = NULL;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaSceneNode::~ColladaSceneNode(void) 
+	{
+		for (ColladaSceneNodePtrVector::iterator it = mChilds.begin(); it != mChilds.end(); ++it)
+		{
+			OGRE_DELETE(*it);
+		}
+		mChilds.clear();
+		mParent = NULL;
+		mEntity = NULL;		// the entities will be cleared by the library container
+
+		for (ColladaTransformPtrVector::iterator jt = mTransforms.begin(); jt != mTransforms.end(); ++jt)
+		{
+			OGRE_DELETE(*jt);
+		}
+		mTransforms.clear();
+
+		OGRE_DELETE(mBB);
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaSceneNode::attachEntityToOgreSceneNode(SceneNode *ogrenode) const
+	{
+		if (mEntity == NULL || ogrenode == NULL) return;
+
+		if (mEntity->getEntityType() == GEOMETRY ||
+			mEntity->getEntityType() == LIGHT ||
+			mEntity->getEntityType() == CAMERA)
+		{
+			// the geometry need some special data
+			if (mEntity->getEntityType() == GEOMETRY)
+			{
+				ColladaGeometry *geo = static_cast<ColladaGeometry *>(mEntity);
+				geo->setEntityName(mId);	// a unique name for the ogre entity, should not be NULL!
+				// geo->setBoundingBox(mBB);	// a bounding box, can be NULL
+			}
+
+			// create an ogre entity
+			MovableObject *mo = mEntity->getOgreInstance();
+			if (mo != NULL) ogrenode->attachObject(mo);
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaSceneNode::attachTransformsToOgreSceneNode(SceneNode *ogrenode) const
+	{
+		if (ogrenode == NULL || mTransforms.empty()) return;
+
+		for (ColladaTransformPtrVector::const_iterator it = mTransforms.begin(); it != mTransforms.end(); ++it)
+		{
+			if ((*it)->getType() == ColladaTransform::ROTATE)
+			{
+				// rotation has local affects
+				ColladaTRotate *r = static_cast<ColladaTRotate *>(*it);
+                Quaternion rot(Degree(r->getAngle()), r->getAxis());
+                mDoc->correctAxis(rot);
+				ogrenode->rotate(rot);
+			}
+			else if ((*it)->getType() == ColladaTransform::SCALE)
+			{
+				ogrenode->scale(static_cast<ColladaTScale *>(*it)->getScale());
+			}
+			else if ((*it)->getType() == ColladaTransform::TRANSLATE)
+			{
+				// translation is relative to parent
+                ogrenode->translate(static_cast<ColladaTTranslate *>(*it)->getTranslate());
+			}
+		}
+
+        // correct transforms for ogre axis
+        Vector3 pos = ogrenode->getPosition();
+        mDoc->correctAxis(pos);
+        ogrenode->setPosition(pos);
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaSceneNode::createOgreInstance(SceneNode *ogrenode) const
+	{
+		if (ogrenode == NULL) ogrenode = mDoc->getSceneManager()->getRootSceneNode();
+
+		if (mType == NODE)
+		{
+			// transforms
+			attachTransformsToOgreSceneNode(ogrenode);
+
+			// boundingbox
+
+			// entity
+			attachEntityToOgreSceneNode(ogrenode);
+		}
+
+		for (ColladaSceneNodePtrVector::const_iterator it = mChilds.begin(); it != mChilds.end(); ++it)
+		{
+			// the new child will be automatically attached to the scene graph
+			(*it)->createOgreInstance(ogrenode->createChildSceneNode((*it)->mId));
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaSceneNode::doImport(void)
+	{
+		if (mLoaded) return mStatus;
+		else mLoaded = true;
+
+		// get unique identifier of scene
+		initialise();
+
+		// if the xmlNode is a <node> there could be a type attribute [JOINT or NODE] (last is default)
+		String type = ColladaUtils::getProperty(mNode, CS_ATR_TYPE);
+		if (!type.empty())
+		{
+			if (type == CS_VAL_NODE_TYPE_JOINT) mType = JOINT;
+		}
+
+		// walk through child elements, the order is important
+        for (xmlNode *child = mNode->children; child != NULL; child = child->next)
+		{
+			// we are interested on element nodes only
+			if (child->type != XML_ELEMENT_NODE) continue;
+
+			String tagname = (const char *)child->name;
+
+			// look for <extra>
+			if (tagname == CS_ELM_EXTRA) 
+			{
+				importExtra(child);
+			}
+			// look for <boundingbox>
+			else if (tagname == CS_ELM_BOUNDINGBOX) 
+			{
+				mBB = new ColladaBoundingBox(this);
+				mBB->doImport(child);
+			}
+			// look for <node> (build up subtree)
+			else if (tagname == CS_ELM_NODE) 
+			{
+				ColladaSceneNode *snode = new ColladaSceneNode(mDoc, child);
+				if (!snode->doImport()) return false;
+				// each node should be unique
+				snode->mParent = this;
+				mChilds.push_back(snode);
+			}
+			// look for <instance> and link entity
+			else if (tagname == CS_ELM_INSTANCE) 
+			{
+				importInstance(child);
+			}
+			// look for transformations <lookat>, <matrix> ... <translate>
+			else if (tagname == CS_ELM_LOOKAT || 
+				tagname == CS_ELM_MATRIX ||
+				tagname == CS_ELM_PERSPECTIVE || 
+				tagname == CS_ELM_ROTATE ||
+				tagname == CS_ELM_SCALE || 
+				tagname == CS_ELM_SKEW ||
+				tagname == CS_ELM_TRANSLATE)
+			{
+				ColladaTransform *t;
+				if (tagname == CS_ELM_LOOKAT) t = new ColladaTLookAt(this);
+				else if (tagname == CS_ELM_MATRIX) t = new ColladaTMatrix(this);
+				else if (tagname == CS_ELM_PERSPECTIVE) t = new ColladaTPerspective(this);
+				else if (tagname == CS_ELM_ROTATE) t = new ColladaTRotate(this);
+				else if (tagname == CS_ELM_SCALE) t = new ColladaTScale(this);
+				else if (tagname == CS_ELM_SKEW) t = new ColladaTSkew(this);
+				else if (tagname == CS_ELM_TRANSLATE) t = new ColladaTTranslate(this);
+				else t = NULL;
+
+				if (t != NULL)
+				{
+					t->doImport(child);
+					mTransforms.push_back(t);
+				}
+			}
+			else
+			{
+				LogManager::getSingleton().logMessage("ColladaSceneNode::doImport - unknown child: " + tagname + " of " + mId);
+			}
+		}
+
+		mStatus = true;
+		return mStatus;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaSceneNode *ColladaSceneNode::getNode(const String &id)
+	{
+		if (this->mId == id) return this;
+
+		ColladaSceneNode *tmp = NULL;
+		for (ColladaSceneNodePtrVector::const_iterator it = mChilds.begin(); it != mChilds.end(); ++it)
+		{
+			tmp = (*it)->getNode(id);
+			if (tmp != NULL) break;
+		}
+		return tmp;
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaSceneNode::importExtra(xmlNode *node)
+	{
+		// not yet implemented
+		// scene extra information
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaSceneNode::importInstance(xmlNode *node)
+	{
+		String url = ColladaUtils::getProperty(node, CS_ATR_URL);
+		if (url.empty())
+		{
+			LogManager::getSingleton().logMessage("ColladaSceneNode::importInstance - no instance url is given!");
+			return;
+		}
+
+		// local reference
+		if (url.find("#") == 0)
+		{
+			// we do not need the # sign
+			url.erase(0,1);
+
+			// we do not know where the instance belongs to, so let library to find out
+			mEntity = mDoc->getLibrary()->importInstance(url);
+			if (mEntity == NULL)
+			{
+				LogManager::getSingleton().logMessage("ColladaSceneNode::importInstance - creating instance of " + url + " failed");
+			}
+		}
+		// external reference
+		else
+		{
+			// not yet implemented !!
+			LogManager::getSingleton().logMessage("ColladaSceneNode::importInstance - external references are currently not implemented!");
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaTransform(s)
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaTLookAt::ColladaTLookAt(ColladaSceneNode *p) : ColladaTransform(p)
+	{
+		mMatrix = Matrix3::IDENTITY;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTLookAt::~ColladaTLookAt(void) { }
+
+	//-------------------------------------------------------------------------
+	void ColladaTLookAt::doImport(xmlNode *node)
+	{
+		if (node == NULL) return;
+
+		String content = ColladaUtils::getContentDirect(node);
+		if (content.empty()) return;
+
+		StringVector lines = StringUtil::split(content,"\r\n");
+		if (lines.size() != 3) return;
+
+		uint i = 0;
+		for (StringVector::iterator it = lines.begin(); it != lines.end(); ++it)
+		{
+			uint j = 0;
+			StringUtil::trim(*it);
+			StringVector line = StringUtil::split(*it," ");
+			if (line.size() != 3) break;
+			
+			for (StringVector::iterator jt = line.begin(); jt != line.end(); ++jt)
+			{
+				mMatrix[i][j] = StringConverter::parseReal(*jt);
+				j++;
+			}
+			i++;
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix3 ColladaTLookAt::getMatrix3(void) const
+	{
+		return mMatrix;
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix4 ColladaTLookAt::getMatrix4(void) const
+	{
+		return Matrix4(getMatrix3());
+	}
+
+	//-------------------------------------------------------------------------
+	Vector3 ColladaTLookAt::getEye(void) const
+	{
+		return Vector3(mMatrix[0][0], mMatrix[0][1], mMatrix[0][2]);
+	}
+
+	//-------------------------------------------------------------------------
+	Vector3 ColladaTLookAt::getTarget(void) const
+	{
+		return Vector3(mMatrix[1][0], mMatrix[1][1], mMatrix[1][2]);
+	}
+
+	//-------------------------------------------------------------------------
+	Vector3 ColladaTLookAt::getUp(void) const
+	{
+		return Vector3(mMatrix[1][0], mMatrix[1][1], mMatrix[1][2]);
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaTMatrix
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaTMatrix::ColladaTMatrix(ColladaSceneNode *p) : ColladaTransform(p)
+	{
+		mMatrix = Matrix4::IDENTITY;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTMatrix::~ColladaTMatrix(void) { }
+
+	//-------------------------------------------------------------------------
+	void ColladaTMatrix::doImport(xmlNode *node)
+	{
+		if (node == NULL) return;
+
+		String content = ColladaUtils::getContentDirect(node);
+		if (content.empty()) return;
+
+		StringVector lines = StringUtil::split(content,"\r\n");
+		if (lines.size() != 4) return;
+
+		uint i = 0;
+		for (StringVector::iterator it = lines.begin(); it != lines.end(); ++it)
+		{
+			uint j = 0;
+			StringUtil::trim(*it);
+			StringVector line = StringUtil::split(*it," ");
+			if (line.size() != 4) break;
+			
+			for (StringVector::iterator jt = line.begin(); jt != line.end(); ++jt)
+			{
+				mMatrix[i][j] = StringConverter::parseReal(*jt);
+				j++;
+			}
+			i++;
+		}
+	}
+	
+	//-------------------------------------------------------------------------
+	Matrix4 ColladaTMatrix::getMatrix4(void) const
+	{
+		return mMatrix;
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaTPerspective
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaTPerspective::ColladaTPerspective(ColladaSceneNode *p) : ColladaTransform(p)
+	{
+		mFOV = 90;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTPerspective::~ColladaTPerspective(void) { }
+
+	//-------------------------------------------------------------------------
+	void ColladaTPerspective::doImport(xmlNode *node)
+	{
+		if (node == NULL) return;
+
+		String content = ColladaUtils::getContentDirect(node);
+		if (content.empty()) return;
+
+		mFOV = StringConverter::parseReal(content);
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix4 ColladaTPerspective::getMatrix4(void) const
+	{
+		return Matrix4::IDENTITY;
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaTRotate
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaTRotate::ColladaTRotate(ColladaSceneNode *p) : ColladaTransform(p)
+	{
+		mAxis = Vector3::ZERO;
+		mAngle = 0;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTRotate::~ColladaTRotate(void) { }
+
+	//-------------------------------------------------------------------------
+	void ColladaTRotate::doImport(xmlNode *node)
+	{
+		if (node == NULL) return;
+
+		String content = ColladaUtils::getContentDirect(node);
+		if (content.empty()) return;
+
+		StringVector line = StringUtil::split(content," ");
+		if (line.size() != 4) return;
+
+		mAxis.x = StringConverter::parseReal(line.at(0));
+		mAxis.y = StringConverter::parseReal(line.at(1));
+		mAxis.z = StringConverter::parseReal(line.at(2));
+		mAngle  = StringConverter::parseReal(line.at(3));
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix3 ColladaTRotate::getMatrix3(void) const
+	{
+		Matrix3 m = Matrix3::IDENTITY;
+		m.FromAxisAngle(mAxis, Radian(Math::DegreesToRadians(mAngle)));
+		return m;
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix4 ColladaTRotate::getMatrix4(void) const
+	{
+		return Matrix4(getMatrix3());
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaTScale
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaTScale::ColladaTScale(ColladaSceneNode *p) : ColladaTransform(p)
+	{
+		mScale = Vector3::ZERO;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTScale::~ColladaTScale(void) { }
+
+	//-------------------------------------------------------------------------
+	void ColladaTScale::doImport(xmlNode *node)
+	{
+		if (node == NULL) return;
+
+		String content = ColladaUtils::getContentDirect(node);
+		if (content.empty()) return;
+
+        mScale = StringConverter::parseVector3(content);
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix3 ColladaTScale::getMatrix3(void) const
+	{
+		Matrix3 m = Matrix3::IDENTITY;
+		
+		m[0][0] = mScale.x;
+		m[1][1] = mScale.y;
+		m[2][2] = mScale.z;
+
+		return m;		
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix4 ColladaTScale::getMatrix4(void) const
+	{
+		Matrix4 m = Matrix4::IDENTITY;
+		m.setScale(mScale);			
+		return m;
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaTSkew
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaTSkew::ColladaTSkew(ColladaSceneNode *p) : ColladaTransform(p)
+	{
+		mAngle = 0;
+		mRotation = Vector3::ZERO;
+		mTranslation = Vector3::ZERO;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTSkew::~ColladaTSkew(void) { }
+
+	//-------------------------------------------------------------------------
+	void ColladaTSkew::doImport(xmlNode *node)
+	{
+		if (node == NULL) return;
+
+		String content = ColladaUtils::getContentDirect(node);
+		if (content.empty()) return;
+
+		StringVector line = StringUtil::split(content," ");
+		if (line.size() != 7) return;
+
+		mAngle = StringConverter::parseReal(line.at(0));
+
+		mRotation.x = StringConverter::parseReal(line.at(1));
+		mRotation.y = StringConverter::parseReal(line.at(2));
+		mRotation.z = StringConverter::parseReal(line.at(3));
+
+		mTranslation.x = StringConverter::parseReal(line.at(4));
+		mTranslation.y = StringConverter::parseReal(line.at(5));
+		mTranslation.z = StringConverter::parseReal(line.at(6));
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix3 ColladaTSkew::getMatrix3(void) const
+	{
+		return Matrix3::IDENTITY;
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix4 ColladaTSkew::getMatrix4(void) const
+	{
+		return Matrix4(getMatrix3());
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaTTranslate
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaTTranslate::ColladaTTranslate(ColladaSceneNode *p) : ColladaTransform(p)
+	{
+		mTranslate = Vector3::ZERO;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTTranslate::~ColladaTTranslate(void) { }
+
+	//-------------------------------------------------------------------------
+	void ColladaTTranslate::doImport(xmlNode *node)
+	{
+		if (node == NULL) return;
+
+		String content = ColladaUtils::getContentDirect(node);
+		if (content.empty()) return;
+
+		mTranslate = StringConverter::parseVector3(content);
+	}
+
+	//-------------------------------------------------------------------------
+	Matrix4 ColladaTTranslate::getMatrix4(void) const
+	{
+		Matrix4 m = Matrix4::IDENTITY;
+		m.makeTrans(mTranslate);
+		return m;
+	}
+}
Index: /ColladaPlugin/src/OgreColladaTexture.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaTexture.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaTexture.cpp	(revision 21)
@@ -0,0 +1,180 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaTexture.h"
+#include "OgreColladaDocument.h"
+#include "OgreColladaLibrary.h"
+#include "OgreColladaSyntax.h"
+#include "OgreColladaUtils.h"
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	ColladaImage::ColladaImage(ColladaDocument *d, xmlNode *n) : ColladaEntity(d, n) { }
+
+	//-------------------------------------------------------------------------
+	ColladaImage::~ColladaImage(void) { }
+
+	//-------------------------------------------------------------------------
+	bool ColladaImage::doImport(void)
+	{
+		if (mLoaded) return mStatus;
+		else mLoaded = true;
+
+		// get attributes of <image> tag
+		// source is a must, watch out for reference url (local, extern)!
+		mSource = ColladaUtils::getProperty(mNode, CS_ATR_IMAGE_SOURCE);
+	
+		String tmp = ColladaUtils::getProperty(mNode, CS_ATR_IMAGE_FORMAT);
+		mFormat = (!tmp.empty()) ? tmp : "";
+		
+		tmp = ColladaUtils::getProperty(mNode, CS_ATR_IMAGE_HEIGHT);
+        mHeight = (!tmp.empty()) ? static_cast<uint>(atoi(tmp.c_str())) : 0;
+
+		tmp = ColladaUtils::getProperty(mNode, CS_ATR_IMAGE_WIDTH);
+		mWidth = (!tmp.empty()) ? static_cast<uint>(atoi(tmp.c_str())) : 0;
+
+		tmp = ColladaUtils::getProperty(mNode, CS_ATR_IMAGE_DEPTH);
+		mDepth = (!tmp.empty()) ? static_cast<uint>(atoi(tmp.c_str())) : 1;
+
+		mStatus = true;
+		return mStatus;
+	}
+
+	//-------------------------------------------------------------------------
+	// ColladaTexture
+	//-------------------------------------------------------------------------
+
+	//-------------------------------------------------------------------------
+	ColladaTexture::ColladaTexture(ColladaDocument *d, xmlNode *n) : ColladaEntity(d, n) 
+	{ 
+		mImage = NULL;
+		mType  = ColladaTextureSpecific::UNKNOWN;
+	}
+
+	//-------------------------------------------------------------------------
+	ColladaTexture::~ColladaTexture(void)
+	{
+		mImage = NULL;	// attention, the image instance will be deleted by the library container!
+		mType  = ColladaTextureSpecific::UNKNOWN;
+	}
+
+	//-------------------------------------------------------------------------
+	bool ColladaTexture::doImport(void)
+	{
+		if (mLoaded) return mStatus;
+		else mLoaded = true;
+
+		// <asset> child
+		// xmlNode *asset = ColladaUtils::getChildByTagName(mNode, CS_ELM_ASSET);
+
+		// <param> childs, describes the texture dataflow
+		xmlNodePtrVector params = ColladaUtils::getChildsByTagName(mNode, CS_ELM_PARAM);
+		xmlNode *param = NULL;
+		if (!params.empty()) param = params.at(0);
+		// get the texture type
+		String texturetype = ColladaUtils::getProperty(param, CS_ATR_NAME);
+		mType  = ColladaTextureSpecific::getType(texturetype);
+		if (mType == ColladaTextureSpecific::UNKNOWN)
+		{
+			LogManager::getSingleton().logMessage("ColladaTexture::doImport - <param name=" + texturetype + "> unknown! " + mId);
+			return false;
+		}
+
+		// <technique> nodes
+		xmlNodePtrVector techniques = ColladaUtils::getChildsByTagName(mNode, CS_ELM_TECHNIQUE);
+		// currently we are only interested in "COMMON" profile
+		xmlNode *technique = NULL;
+		for (xmlNodePtrVector::iterator it = techniques.begin(); it != techniques.end(); ++it)
+		{
+			String profile = ColladaUtils::getProperty(*it, CS_ATR_PROFILE);
+			if (profile == CS_VAL_TECHNIQUE_PROFILE_COMMON)
+			{
+				technique = *it;
+				break;
+			}
+		}
+		if (technique == NULL) return false;
+        
+		// the <input> child, there are more than one possible, but only one makes sense
+		xmlNode *input = ColladaUtils::getChildByTagName(technique, CS_ELM_INPUT);
+		// the semantic property should be "IMAGE"
+		String semantic = ColladaUtils::getProperty(input, CS_ATR_INPUT_SEMANTIC);
+		if (semantic != CS_VAL_INPUT_SEMANTIC_IMAGE)
+		{
+			LogManager::getSingleton().logMessage("ColladaTexture::doImport - <input semantic=" + semantic + "> unknown");
+			return false;
+		}
+
+		// the source url
+		String source = ColladaUtils::getProperty(input, CS_ATR_INPUT_SOURCE);
+		if (source.empty())
+		{
+			LogManager::getSingleton().logMessage("ColladaTexture::doImport - no source url for texture is given! " + mId);
+			return false;
+		}
+
+		// local reference of image file
+		if (source.find("#") == 0)
+		{
+			source.erase(0,1);
+
+			// try to find the instance and load it, if it is not already loaded
+			mImage = mDoc->getLibrary()->getImage(source);
+			if (mImage == NULL)
+			{
+				LogManager::getSingleton().logMessage("ColladaTexture::doImport - can't find the image reference " + source + "! " + mId);
+				return false;
+			}
+			// try to import the entity
+			if (!mImage->doImport())
+			{
+				LogManager::getSingleton().logMessage("ColladaTexture::doImport - loading of image " + source + " failed! " + mId);
+				return false;
+			}
+		}
+		// external
+		else
+		{
+			LogManager::getSingleton().logMessage("ColladaTexture::doImport - external refernces are currently not implemented! " + mId);	
+			return false;
+		}
+
+		mStatus = true;
+		return mStatus;
+	}
+
+	//-------------------------------------------------------------------------
+	namespace ColladaTextureSpecific
+	{
+		Type getType(const String &s)
+		{
+			if (s == CS_VAL_TEXTURE_PARAM_AMBIENT) return AMBIENT;
+			else if (s == CS_VAL_TEXTURE_PARAM_DIFFUSE) return DIFFUSE;
+			else if (s == CS_VAL_TEXTURE_PARAM_EMISSION) return EMISSION;
+			else if (s == CS_VAL_TEXTURE_PARAM_SHININESS) return SHININESS;
+			else if (s == CS_VAL_TEXTURE_PARAM_SPECULAR) return SPECULAR;
+			else return UNKNOWN;
+		};
+	}
+}
Index: /ColladaPlugin/src/OgreColladaUtils.cpp
===================================================================
--- /ColladaPlugin/src/OgreColladaUtils.cpp	(revision 21)
+++ /ColladaPlugin/src/OgreColladaUtils.cpp	(revision 21)
@@ -0,0 +1,181 @@
+/**
+ * This source file is part of OgreColladaPlugin
+ * an addon for OGRE (Object-oriented Graphics Rendering Engine)
+ * For the latest info, see http://www.ogre3d.org/
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+ * http://www.gnu.org/copyleft/lesser.txt.
+ *
+ * @author	Philipp Hartl
+ * @see		README
+ */
+
+#include "OgreColladaUtils.h"
+#include "OgreColladaSyntax.h"
+
+#include "OgreColourValue.h"
+#include "OgreStringVector.h"
+
+namespace Ogre
+{
+	//-------------------------------------------------------------------------
+	xmlNode *ColladaUtils::getChildById(xmlNode *start, const char *id)
+	{
+		if (start != NULL && id != NULL)
+		{
+			// we are looking for strings without '#'
+			if (*id == '#') ++id;
+
+			// walk through all children
+			for (xmlNode *c = start->children; c != NULL; c = c->next)
+			{
+				// we are interested on element nodes only
+				if (c->type != XML_ELEMENT_NODE) continue;
+
+				String cid = getProperty(c, CS_ATR_ID);
+				if (!cid.empty())
+				{
+					if (cid == id) return c;
+				}
+			}
+		}
+
+		return NULL;
+	}
+
+	//-------------------------------------------------------------------------
+	xmlNode *ColladaUtils::getChildByTagName(xmlNode *start, const String &tagname)
+	{
+		if (start != NULL && !tagname.empty())
+		{
+			for (xmlNode *c = start->children; c != NULL; c = c->next)
+			{	
+				if (c->type != XML_ELEMENT_NODE) continue;
+
+				if (tagname == (const char *)c->name) return c;
+			}
+		}
+
+		return NULL;
+	}
+
+	//-------------------------------------------------------------------------
+	xmlNodePtrVector ColladaUtils::getChildsByTagName(xmlNode *start, const String &tagname)
+	{
+		xmlNodePtrVector nodes;
+
+		if (start != NULL && !tagname.empty())
+		{
+			for (xmlNode *c = start->children; c != NULL; c = c->next)
+			{
+				if (c->type != XML_ELEMENT_NODE) continue;
+
+				if (tagname == (const char *)c->name) nodes.push_back(c);
+			}
+		}
+
+		return nodes;
+	}
+
+	//-------------------------------------------------------------------------
+	String ColladaUtils::getContent(xmlNode *node)
+	{
+		String result = "";
+		if (node != NULL)
+		{
+			xmlChar *data = xmlNodeGetContent(node);
+
+			if (data != NULL)
+			{
+				result = (const char *)data;
+				xmlFree(data);
+			}
+		}
+		return result;
+	}
+
+	//-------------------------------------------------------------------------
+	String ColladaUtils::getContentDirect(xmlNode *node)
+	{
+		String result = "";
+		if (node != NULL)
+		{
+			if (node->children != NULL &&
+				node->children->type == XML_TEXT_NODE &&
+				node->children->content != NULL)
+			{
+				result = (const char *)node->children->content;
+			}
+		}
+		return result;
+	}
+
+	//-------------------------------------------------------------------------
+	String ColladaUtils::getProperty(xmlNode *node, const char *property)
+	{
+		String result = "";
+		if (node != NULL && property != NULL)
+		{
+			xmlChar *data = xmlGetProp(node, (const xmlChar *)property);
+		
+			if (data != NULL)
+			{
+				result = (const char *)data;
+				xmlFree(data);
+			}
+		}
+
+		return result;
+	}
+
+	//-------------------------------------------------------------------------
+	String ColladaUtils::getProperty(xmlNode *node, const String &property)
+	{
+		String result = "";
+		if (node != NULL && !property.empty())
+		{
+			xmlChar *data = xmlGetProp(node, (const xmlChar *)property.c_str());
+		
+			if (data != NULL)
+			{
+				result = (const char *)data;
+				xmlFree(data);
+			}
+		}
+
+		return result;
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaUtils::printChildElements(xmlNode *node)
+	{
+		for (xmlNode *child = node->children; child != NULL; child = child->next)
+		{
+			if (child->type != XML_ELEMENT_NODE) continue;
+			LogManager::getSingleton().logMessage("ColladaUtils::printElementNames - xml element: " + String((const char *)child->name));
+		}
+	}
+
+	//-------------------------------------------------------------------------
+	void ColladaUtils::printAllElements(xmlNode *node)
+	{
+		for (xmlNode *cur_node = node; cur_node != NULL; cur_node = cur_node->next)
+		{
+			if (cur_node->type != XML_ELEMENT_NODE) continue;
+			LogManager::getSingleton().logMessage("ColladaUtils::printElementNames - xml element: " + String((const char *)cur_node->name));
+
+			printAllElements(cur_node->children);
+		}
+	}
+}
Index: /ogreode/Makefile.am
===================================================================
--- /ogreode/Makefile.am	(revision 21)
+++ /ogreode/Makefile.am	(revision 21)
@@ -0,0 +1,5 @@
+SUBDIRS = include src prefab loader
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = OgreOde_Core.pc OgreOde_Prefab.pc OgreOde_Loader.pc
+
Index: /ogreode/OgreOde_Core.pc.in
===================================================================
--- /ogreode/OgreOde_Core.pc.in	(revision 21)
+++ /ogreode/OgreOde_Core.pc.in	(revision 21)
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: OgreOde_Core
+Description: ODE wrapper for OGRE
+Version: @VERSION@
+Libs: -L${libdir} -lOgreOde_Core
+Cflags: -I${includedir}/OgreOde_Core
Index: /ogreode/OgreOde_LGPL.txt
===================================================================
--- /ogreode/OgreOde_LGPL.txt	(revision 21)
+++ /ogreode/OgreOde_LGPL.txt	(revision 21)
@@ -0,0 +1,514 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
Index: /ogreode/OgreOde_Loader.pc.in
===================================================================
--- /ogreode/OgreOde_Loader.pc.in	(revision 21)
+++ /ogreode/OgreOde_Loader.pc.in	(revision 21)
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: OgreOde_Loader
+Description: Loader for OgreOde_Core
+Version: @VERSION@
+Libs: -L${libdir} -lOgreOde_Loader
+Cflags: -I${includedir}/OgreOde_Loader
Index: /ogreode/OgreOde_Prefab.pc.in
===================================================================
--- /ogreode/OgreOde_Prefab.pc.in	(revision 21)
+++ /ogreode/OgreOde_Prefab.pc.in	(revision 21)
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: OgreOde_Prefab
+Description: Prefab for OgreOde_Core
+Version: @VERSION@
+Libs: -L${libdir} -lOgreOde_Prefab
+Cflags: -I${includedir}/OgreOde_Prefab
Index: /ogreode/OgreOde_licence.txt
===================================================================
--- /ogreode/OgreOde_licence.txt	(revision 21)
+++ /ogreode/OgreOde_licence.txt	(revision 21)
@@ -0,0 +1,25 @@
+Licence for OgreOde
+===================
+
+Copyright 2004-2005 Ed "Green Eyed Monster" Jones.
+Copyright 2006 Paul "Tuan Kuranes" Cheyrou-Lagrèze.
+
+This file is part of OgreOde an integration layer between the OGRE 3D 
+graphics engine and the ODE rigid body dynamics library.
+
+OgreOde is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+OgreOde is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with OgreOde; see the file OgreOde_LGPL.txt If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+
Index: /ogreode/OgreOde_readme.txt
===================================================================
--- /ogreode/OgreOde_readme.txt	(revision 21)
+++ /ogreode/OgreOde_readme.txt	(revision 21)
@@ -0,0 +1,75 @@
+Readme for OgreOde
+==================
+
+DOWNLOADED ZIP VERSION
+======================
+Brief build instructions follow for OgreOde 1.2.0 Final Edition. 
+Consider this version of OgreOde deprecated. A new and exciting development
+is on the horizon. Watch this space.
+
+1) You should have extracted this archive next to $OGRE_TOP, where $OGRE_TOP
+   is the root directory of your Ogre installation, usually named 'ogresdk'.
+   All file paths in this build environment should be relative and all the DLLs
+   and executables should get sent to the correct place upon building.
+
+   This version of OgreOde is only supported when compiled against version 
+   1.2.x final of the Ogre library aka Dagon,.
+
+2) ODE is available from http://www.ode.org/ It requires that you get Latest ODE version
+ which is actually available only in ode subversion repository.
+
+3) Version 2.3.3 of TinyXml is included in the tinyxml directory. See
+   the OgreOde_readme.txt file in that directory for further details, especially 
+   regarding the changes to the MSVC projects which are required for the library 
+   to be compatible with OgreOde. 
+
+   TinyXml is only required by the OgreOde_Prefabs library, if you are not using 
+   this (i.e. you don't need the supplied Vehicle and Ragdoll functionality) then 
+   you do not need to build TinyXml.
+
+   TinyXml is available from http://www.grinninglizard.com/tinyxml/
+
+4) A crash when exiting the Landscape demo is known and will be fixed in Ogre soon.
+It's related to CustomMaterial use and has no link with OgreOde
+
+
+5) Use the solution OgreOde/scripts/VC8 and OgreOde/scripts/VC7.1 (thanks to PxL)
+   to build the core OgreOde library, the OgreOde prefabricated objects library 
+   and the suite of demo programs with Microsoft Visual C++ 2005 or Microsoft 
+   Visual C++ 2003. The DLLs and executables will be built to the $OGRE_TOP/bin/Debug
+   and Release directories.
+
+   Simply open up that solution and perform a batch build.
+
+6) There are some scripts which should build OgreOde under Linux in the scripts/Linux
+   directory. They are provided courtesy of Pablo, please see the Readme in that directory
+   for further details.
+
+Post On Ogre Forums for details.
+
+CVS VERSION
+======================
+Brief build instructions follow for OgreOde 1.2.0 Final Edition. 
+Consider this version of OgreOde deprecated. A new and exciting development
+is on the horizon. Watch this space.
+
+1) This version of OgreOde is only supported when compiled against version 
+   1.2.X branch of the Ogre library aka Dagon,.
+
+2) you need to get ODE library 
+   ODE download instruction and communauty is available from http://www.ode.org/
+
+
+5) Use the _CVS.sln solution OgreOde/scripts/VC8 
+   to build the core OgreOde library, the OgreOde prefabricated objects library 
+   and the suite of demo programs with Microsoft Visual C++ 2005 or Microsoft 
+   Visual C++ 2003. The DLLs and executables will be built to the ..\..\ogrenew\Samples\common/bin/Debug
+   and Release directories.
+
+   Simply open up that solution and perform a batch build.
+
+6) There are some scripts which should build OgreOde under Linux in the scripts/Linux
+   directory. They are provided courtesy of Pablo, please see the Readme in that directory
+   for further details.
+
+Post On Ogre Forums for details.
Index: /ogreode/autogen.sh
===================================================================
--- /ogreode/autogen.sh	(revision 21)
+++ /ogreode/autogen.sh	(revision 21)
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+rm -f config.cache 
+rm -drf autom4te.cache 
+libtoolize --force 
+echo "Running aclocal"
+aclocal -I . 
+echo "Running autoheader"
+autoheader 
+echo "Running automake"
+automake --foreign --add-missing --include-deps &&
+echo "Running autoconf"
+autoconf                                                                                
+echo "Now you are ready to run ./configure"
+
+exit 0
Index: /ogreode/configure.ac
===================================================================
--- /ogreode/configure.ac	(revision 21)
+++ /ogreode/configure.ac	(revision 21)
@@ -0,0 +1,63 @@
+# Modified the 06/23/2006 by
+# Martin Pieuchot (Aer) <t1tamar (at) gmail.com>
+
+AC_PREREQ(2.59)
+AC_INIT([OgreOde_Core], [0.7.10])
+AM_INIT_AUTOMAKE([OgreOde_Core], [0.7.10])
+AM_CONFIG_HEADER([config.h])
+
+AM_INIT_AUTOMAKE([foreign dist-bzip2])
+
+dnl Checks for programs
+AC_PROG_CXX
+AC_PROG_LIBTOOL
+
+PKG_CHECK_MODULES(OGRE, [OGRE >= 1.2.0],,
+			  AC_MSG_ERROR([OGRE is required to compile Ogre-Ode]))
+AC_SUBST(OGRE_CFLAGS)
+AC_SUBST(OGRE_LIBS)
+
+PKG_CHECK_MODULES(ois, [OIS >= 0.5.0],,
+			  AC_MSG_ERROR([OIS is required to compile Ogre-Ode samples]))
+AC_SUBST(ois_CFLAGS)
+AC_SUBST(ois_LIBS)
+
+AC_CHECK_HEADERS([ode/ode.h],,
+			  AC_MSG_ERROR([ODE is required to compile Ogre-Ode]))
+
+
+AC_ARG_WITH([samples],AC_HELP_STRING([--with-samples=[PATH]],
+	    [look for the ogre samples in PATH, default is
+	     ../../../../../ogrenew/Samples/]),
+	     [samples=$withval],[samples=no])
+
+SAMPLES="../../../../../ogrenew/Samples"
+if test "x$samples" != "xno"
+then
+	SAMPLES="${samples}"
+fi
+SAMPLES_CFLAGS="${SAMPLES}/Common/include"
+AC_SUBST(SAMPLES)
+AC_SUBST(SAMPLES_CFLAGS)
+AC_CONFIG_FILES([Makefile 
+	src/Makefile 
+	include/Makefile 
+	OgreOde_Core.pc 
+	prefab/Makefile
+	prefab/include/Makefile 
+	prefab/src/Makefile 
+	OgreOde_Prefab.pc
+	OgreOde_Loader.pc
+	loader/Makefile
+	loader/src/Makefile
+	loader/include/Makefile
+	demos/Makefile 
+	demos/SimpleScenes/Makefile 
+	demos/SimpleScenes/src/Makefile
+	demos/GranTurismOgre/Makefile
+	demos/GranTurismOgre/src/Makefile
+	demos/Landscape/Makefile
+	demos/Landscape/src/Makefile
+	])
+
+AC_OUTPUT
Index: /ogreode/demos/GranTurismOgre/Makefile.am
===================================================================
--- /ogreode/demos/GranTurismOgre/Makefile.am	(revision 21)
+++ /ogreode/demos/GranTurismOgre/Makefile.am	(revision 21)
@@ -0,0 +1,1 @@
+SUBDIRS = src
Index: /ogreode/demos/GranTurismOgre/include/GranTurismOgre.h
===================================================================
--- /ogreode/demos/GranTurismOgre/include/GranTurismOgre.h	(revision 21)
+++ /ogreode/demos/GranTurismOgre/include/GranTurismOgre.h	(revision 21)
@@ -0,0 +1,48 @@
+#include "ExampleApplication.h"
+#include "OgreOde_Core.h"
+#include "OgreOde_Prefab.h"
+#include "OgreOde_Loader.h"
+
+class GranTurismOgreFrameListener : public ExampleFrameListener
+{
+public:
+    GranTurismOgreFrameListener(RenderWindow* win, Camera* cam,Real time_step,Root* root,OgreOde::World *world);
+	~GranTurismOgreFrameListener();
+	bool frameStarted(const FrameEvent& evt);
+	void changeCar();
+
+private:
+	void updateInfo();
+    OgreOde::StepHandler *_stepper;
+    OgreOde::World *_world;
+	OgreOde_Prefab::Vehicle *_vehicle;
+	char _drive;
+	OgreOde_Loader::DotLoader *dotOgreOdeLoader;
+};
+
+
+
+class GranTurismOgreApplication : public ExampleApplication,public OgreOde::CollisionListener
+{
+public:
+    GranTurismOgreApplication();
+    ~GranTurismOgreApplication();
+
+protected:
+
+    virtual void chooseSceneManager(void);
+	virtual void setupResources(void);
+    virtual void createCamera(void);
+    void createScene(void);
+	void createFrameListener(void);
+
+	virtual bool collision(OgreOde::Contact* contact);
+
+	protected:
+		OgreOde::World *_world;
+		OgreOde_Prefab::Vehicle *_vehicle;
+		OgreOde::TriangleMeshGeometry *_track;
+
+		Real _time_step;
+};
+
Index: /ogreode/demos/GranTurismOgre/obj/Debug/keep.me
===================================================================
--- /ogreode/demos/GranTurismOgre/obj/Debug/keep.me	(revision 21)
+++ /ogreode/demos/GranTurismOgre/obj/Debug/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/GranTurismOgre/obj/Release/keep.me
===================================================================
--- /ogreode/demos/GranTurismOgre/obj/Release/keep.me	(revision 21)
+++ /ogreode/demos/GranTurismOgre/obj/Release/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/GranTurismOgre/scripts/CodeBlocks/Demo_GranTurismOgre_SDK.cbp
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/CodeBlocks/Demo_GranTurismOgre_SDK.cbp	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/CodeBlocks/Demo_GranTurismOgre_SDK.cbp	(revision 21)
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="5" />
+	<Project>
+		<Option title="Demo_GranTurismOgre" />
+		<Option pch_mode="2" />
+		<Option default_target="" />
+		<Option compiler="gcc" />
+		<Option virtualFolders="" />
+		<Build>
+			<Target title="Debug">
+				<Option output="..\..\bin\Debug\OgreOdeDemo_GranTurismOgre.exe" />
+				<Option object_output="..\..\obj\Debug" />
+				<Option external_deps="..\..\lib\Debug|Win32\libOgreOde_Prefab_d.a;..\..\lib\Debug|Win32\libOgreOde_Core_d.a;" />
+				<Option type="0" />
+				<Option compiler="gcc" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-g" />
+					<Add option="-O0" />
+					<Add option="-DWIN32" />
+					<Add option="-D_DEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add directory="..\..\..\..\ode\include" />
+					<Add directory="..\..\..\..\include" />
+					<Add directory="..\..\include" />
+					<Add directory="..\..\..\..\prefab\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="$(OGRE_HOME)\Samples\include" />
+					<Add directory="$(OGRE_HOME)\stlport\stlport" />
+				</Compiler>
+				<Linker>
+					<Add library="OgreMain_d" />
+					<Add library="OgreOde_Core_d" />
+					<Add library="OgreOde_Prefab_d" />
+					<Add library="libOgreOde_Prefab_d.a" />
+					<Add library="libOgreOde_Core_d.a" />
+					<Add library="stlportstlg.5.0" />
+					<Add directory="$(OGRE_HOME)\lib\Debug" />
+					<Add directory="..\..\..\..\prefab\lib\Debug" />
+					<Add directory="$(OGRE_HOME)\bin\debug" />
+					<Add directory="..\..\..\..\lib\Debug" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="$(OGREODE_HOME)\scripts\codeblocks\copy.bat $(OGREODE_HOME)\demos\GranTurismOgre\bin\Debug\$(APPNAME) $(OGRE_HOME)\bin\debug\$(APPNAME)" />
+				</ExtraCommands>
+			</Target>
+			<Target title="Release">
+				<Option output="..\..\bin\Release\OgreOdeDemo_GranTurismOgre.exe" />
+				<Option object_output="..\..\obj\Release" />
+				<Option external_deps="..\..\lib\Release|Win32\libOgreOde_Prefab.a;..\..\lib\Release|Win32\libOgreOde_Core.a;" />
+				<Option type="0" />
+				<Option compiler="gcc" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-DWIN32" />
+					<Add option="-DNDEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add directory="..\..\..\..\ode\include" />
+					<Add directory="..\..\..\..\include" />
+					<Add directory="..\..\include" />
+					<Add directory="..\..\..\..\prefab\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="$(OGRE_HOME)\Samples\include" />
+					<Add directory="$(OGRE_HOME)\stlport\stlport" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+					<Add library="OgreMain" />
+					<Add library="OgreOde_Core" />
+					<Add library="OgreOde_Prefab" />
+					<Add library="libOgreOde_Prefab.a" />
+					<Add library="libOgreOde_Core.a" />
+					<Add library="stlport.5.0" />
+					<Add directory="$(OGRE_HOME)\lib\Release" />
+					<Add directory="..\..\..\..\prefab\lib\Release" />
+					<Add directory="$(OGRE_HOME)\bin\release" />
+					<Add directory="..\..\..\..\lib\Release" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="$(OGREODE_HOME)\scripts\codeblocks\copy.bat $(OGREODE_HOME)\demos\GranTurismOgre\bin\Release\$(APPNAME) $(OGRE_HOME)\bin\release\$(APPNAME)" />
+				</ExtraCommands>
+			</Target>
+			<Environment>
+				<Variable name="OGREODE_HOME" value="$(OGRE_HOME)" />
+				<Variable name="APPNAME" value="OgreOdeDemo_GranTurismOgre.exe" />
+			</Environment>
+		</Build>
+		<Compiler>
+			<Add option="-mthreads" />
+			<Add option="-fmessage-length=0" />
+			<Add option="-fexceptions" />
+			<Add option="-fident" />
+		</Compiler>
+		<Unit filename="..\..\include\GranTurismOgre.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\GranTurismOgre.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Extensions />
+	</Project>
+</CodeBlocks_project_file>
Index: /ogreode/demos/GranTurismOgre/scripts/Linux/keep.me
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/Linux/keep.me	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/Linux/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/GranTurismOgre/scripts/Mac/keep.me
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/Mac/keep.me	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/Mac/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/GranTurismOgre/scripts/VC6/keep.me
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/VC6/keep.me	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/VC6/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/GranTurismOgre/scripts/VC7.1/Demo_GranTurismOgre.vcproj
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/VC7.1/Demo_GranTurismOgre.vcproj	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/VC7.1/Demo_GranTurismOgre.vcproj	(revision 21)
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Demo_GranTurismOgre"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\prefab\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include;..\..\..\..\prefab\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\GranTurismOgre.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\GranTurismOgre.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/GranTurismOgre/scripts/VC7.1/Demo_GranTurismOgre_Source.vcproj
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/VC7.1/Demo_GranTurismOgre_Source.vcproj	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/VC7.1/Demo_GranTurismOgre_Source.vcproj	(revision 21)
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Demo_GranTurismOgre_Source"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\prefab\include;..\..\..\..\include;..\..\..\..\ode\include;..\..\..\..\..\ogrenew\OgreMain\include;..\..\..\..\..\ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\prefab\include;..\..\..\..\ode\include;..\..\..\..\..\ogrenew\OgreMain\include;..\..\..\..\..\ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\GranTurismOgre.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\GranTurismOgre.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/GranTurismOgre/scripts/VC7/keep.me
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/VC7/keep.me	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/VC7/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_CVS.vcproj
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_CVS.vcproj	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_CVS.vcproj	(revision 21)
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_GranTurismOgre"
+	ProjectGUID="{292C4A04-E960-44A3-A6EA-83881C176135}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\common\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;..\..\..\..\ode\include;..\..\..\..\..\..\Ogrenew\OgreMain\include;..\..\..\..\..\..\Ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib ois_d.lib  OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreOde_Loader_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\Ogrenew\lib;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\common\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;..\..\..\..\ode\include;..\..\..\..\..\..\Ogrenew\OgreMain\include;..\..\..\..\..\..\Ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib ois.lib OgreOde_Core.lib OgreOde_Prefab.lib OgreOde_Loader.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="0"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\Ogrenew\lib;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				LinkTimeCodeGeneration="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\GranTurismOgre.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\GranTurismOgre.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_SDK.vcproj
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_SDK.vcproj	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_SDK.vcproj	(revision 21)
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_GranTurismOgre"
+	ProjectGUID="{292C4A04-E960-44A3-A6EA-83881C176135}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib ois_d.lib OgreOde_Core_d.lib OgreOde_Loader_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib  ois.lib OgreOde_Core.lib OgreOde_Loader.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\GranTurismOgre.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\GranTurismOgre.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_Source.vcproj
===================================================================
--- /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_Source.vcproj	(revision 21)
+++ /ogreode/demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_Source.vcproj	(revision 21)
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_GranTurismOgre"
+	ProjectGUID="{292C4A04-E960-44A3-A6EA-83881C176135}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\ode\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;..\..\..\..\..\OgreMain\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreOde_Loader_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\ode\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;..\..\..\..\..\OgreMain\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="false"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="false"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib OgreOde_Loader.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_GranTurismOgre.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\GranTurismOgre.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\GranTurismOgre.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/GranTurismOgre/src/GranTurismOgre.cpp
===================================================================
--- /ogreode/demos/GranTurismOgre/src/GranTurismOgre.cpp	(revision 21)
+++ /ogreode/demos/GranTurismOgre/src/GranTurismOgre.cpp	(revision 21)
@@ -0,0 +1,409 @@
+#include "GranTurismOgre.h"
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include "windows.h"
+//------------------------------------------------------------------------------------------------
+INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
+#else
+int main(int argc, char *argv[])
+#endif
+{
+    GranTurismOgreApplication app;
+
+    
+    try 
+	{
+		app.go();
+    } 
+	catch( Ogre::Exception& e )
+	{
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+        MessageBox( 0, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
+#else
+        std::cerr << "An exception has occured: " << e.getFullDescription().c_str() << std::endl;
+#endif
+    }
+
+    return 0;
+}
+
+
+using namespace Ogre;
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+using namespace OgreOde_Loader;
+
+//------------------------------------------------------------------------------------------------
+static const String carNames[] = {
+	"Jeep",
+	"JeepSway",
+	"Subaru"
+};
+static const String carFileNames[] = {
+	"jeep.ogreode",
+	"jeep.ogreode",
+	"subaru.ogreode"
+};
+static int sSelectedCar = 1;
+static int maxNumCar = 3;
+
+//------------------------------------------------------------------------------------------------
+GranTurismOgreFrameListener::GranTurismOgreFrameListener(RenderWindow* win, Camera* cam, Real time_step, Root *root, OgreOde::World *world) : 
+	ExampleFrameListener(win, cam),
+	_vehicle(0),
+    _world(world)
+{
+	// Reduce move speed
+    mMoveSpeed = 25;
+
+
+    dotOgreOdeLoader = new OgreOde_Loader::DotLoader(world);
+
+    const int _stepper_mode_choice = 2;
+    const int _stepper_choice = 3;
+    const Ogre::Real time_scale = Ogre::Real(1.0);
+    const Ogre::Real max_frame_time = Ogre::Real(1.0 / 4);
+    const Ogre::Real frame_rate = Ogre::Real(1.0 / 60);
+
+
+    StepHandler::StepModeType stepModeType;
+
+    switch(_stepper_mode_choice)
+    {
+    case 0: stepModeType = StepHandler::BasicStep; break;
+    case 1: stepModeType = StepHandler::FastStep; break;
+    case 2: stepModeType = StepHandler::QuickStep; break;
+
+    default: stepModeType = StepHandler::QuickStep; break;
+    }
+
+    switch (_stepper_choice)
+    {
+    case 0:
+        _stepper = new OgreOde::StepHandler(_world,
+            StepHandler::QuickStep, 
+            time_step,
+            max_frame_time,
+            time_scale);
+
+        break;
+    case 1:
+        _stepper = new OgreOde::ExactVariableStepHandler(_world, 
+                                                            stepModeType, 
+                                                                time_step,
+                                                                max_frame_time,
+                                                                time_scale);
+
+        break;
+    case 2:
+        _stepper = new OgreOde::ForwardFixedStepHandler(_world, 
+                                                    stepModeType, 
+                                                    time_step,
+                                                    max_frame_time,
+                                                    time_scale);
+
+        break;
+    case 3:
+    default:
+        _stepper = new OgreOde::ForwardFixedInterpolatedStepHandler (_world, 
+                                                                    stepModeType, 
+                                                                    time_step,
+                                                                    frame_rate,
+                                                                    max_frame_time,
+                                                                    time_scale);
+        break;
+    }
+
+	_stepper->setAutomatic(OgreOde::StepHandler::AutoMode_PostFrame, root);
+	//_stepper->setAutomatic(OgreOde::Stepper::AutoMode_PreFrame, root);
+
+	Root::getSingleton().setFrameSmoothingPeriod(5.0f);
+	//Root::getSingleton().setFrameSmoothingPeriod(0.0f);
+	
+	changeCar();
+
+	// Load up our UI and display it
+	Overlay* pOver = (Overlay*)OverlayManager::getSingleton().getByName("OgreOdeDemos/Overlay");    
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Name")->setCaption(String("Name: ") + "GranTurismo (car + trimesh)");
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Keys")->setCaption(String("Keys: ") + "I/K - Accelerate/Brake, J/L - Turn, X - Change drive mode, N - Change Car");
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/OtherKeys")->setCaption(String("Extra: ") + "E - Debug Object");
+	pOver->show();
+
+}
+
+//------------------------------------------------------------------------------------------------
+GranTurismOgreFrameListener::~GranTurismOgreFrameListener()
+{
+	delete _stepper;
+}
+//------------------------------------------------------------------------------------------------
+void GranTurismOgreFrameListener::changeCar()
+{
+	sSelectedCar = (sSelectedCar + 1) % maxNumCar;
+
+	delete _vehicle;	
+    _vehicle = static_cast <OgreOde_Prefab::Vehicle *> (dotOgreOdeLoader->loadObject (carFileNames[sSelectedCar], carNames[sSelectedCar]));
+
+
+
+	// Initially (i.e. in the config file) it's rear wheel drive
+	_drive = 'R';
+
+	// Move the vehicle
+	Vector3 v_pos = mCamera->getPosition() + (mCamera->getDirection() * 15.0);
+	//v_pos.y += 10;
+	_vehicle->setPosition(v_pos);
+
+	updateInfo();  
+}
+//------------------------------------------------------------------------------------------------
+void GranTurismOgreFrameListener::updateInfo()
+{
+	Overlay* pOver = (Overlay*)OverlayManager::getSingleton().getByName("OgreOdeDemos/Overlay"); 
+	String newInfo (String("Info: ") + carNames[sSelectedCar]);
+	switch(_drive)
+	{
+		// Switch from rear to front
+	case 'R':
+		newInfo = newInfo + " & Front wheel drive";
+		break;
+
+		// Switch from front to all
+	case 'F':
+		newInfo = newInfo + " & All wheel drive";
+		break;
+
+		// Switch from all to rear
+	case '4':
+		newInfo = newInfo + " & Rear wheel drive";
+		break;
+	}
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Info")->setCaption(newInfo);   
+}
+//------------------------------------------------------------------------------------------------
+bool GranTurismOgreFrameListener::frameStarted(const FrameEvent& evt)
+{
+	Real time = evt.timeSinceLastFrame;
+
+    bool ret = ExampleFrameListener::frameStarted(evt);
+
+	if (mTimeUntilNextToggle <= 0) 
+	{
+		// Switch debugging objects on or off
+		if (mKeyboard->isKeyDown(OIS::KC_E))
+		{
+            _world->setShowDebugGeometries(!_world->getShowDebugGeometries());
+			mTimeUntilNextToggle = 0.5;
+        }
+        // Switch debugging Contacts on or off
+        if (mKeyboard->isKeyDown(OIS::KC_B))
+        {
+            _world->setShowDebugContact(!_world->getShowDebugContact());
+            mTimeUntilNextToggle = 0.5;
+        }
+
+		if(mKeyboard->isKeyDown(OIS::KC_N)) 
+		{
+			changeCar();
+			mTimeUntilNextToggle = 0.5;
+		}
+
+		if(mKeyboard->isKeyDown(OIS::KC_U)) 
+		{
+			_stepper->pause(false);
+			mTimeUntilNextToggle = 0.5;
+		}
+		if(mKeyboard->isKeyDown(OIS::KC_P)) 
+		{
+			_stepper->pause(true);
+			mTimeUntilNextToggle = 0.5;
+		}
+		// Change the drive mode between front, rear and 4wd
+        if ((mKeyboard->isKeyDown(OIS::KC_X)))
+		{
+			switch(_drive)
+			{
+				// Switch from rear to front
+			case 'R':
+				_drive = 'F';
+
+				_vehicle->getWheel(0)->setPowerFactor(1);
+				_vehicle->getWheel(1)->setPowerFactor(1);
+				_vehicle->getWheel(2)->setPowerFactor(0);
+				_vehicle->getWheel(3)->setPowerFactor(0);
+
+				updateInfo();
+				break;
+
+				// Switch from front to all
+			case 'F':
+				_drive = '4';
+
+				_vehicle->getWheel(0)->setPowerFactor(0.6);
+				_vehicle->getWheel(1)->setPowerFactor(0.6);
+				_vehicle->getWheel(2)->setPowerFactor(0.4);
+				_vehicle->getWheel(3)->setPowerFactor(0.4);
+
+				updateInfo();
+				break;
+
+				// Switch from all to rear
+			case '4':
+				_drive = 'R';
+
+				_vehicle->getWheel(0)->setPowerFactor(0);
+				_vehicle->getWheel(1)->setPowerFactor(0);
+				_vehicle->getWheel(2)->setPowerFactor(1);
+				_vehicle->getWheel(3)->setPowerFactor(1);
+
+				updateInfo();
+				break;
+			}
+			mTimeUntilNextToggle = 0.5;
+		}
+	}
+	if(!_stepper->isPaused())
+	{
+		_vehicle->setInputs(mKeyboard->isKeyDown(OIS::KC_J),
+                            mKeyboard->isKeyDown(OIS::KC_L),
+                            mKeyboard->isKeyDown(OIS::KC_I),
+                            mKeyboard->isKeyDown(OIS::KC_K));
+		_vehicle->update(time);
+
+		// Thanks to Ahmed!
+		const Ogre::Real followFactor = 0.2; 
+		const Ogre::Real camHeight = 2.0; 
+		const Ogre::Real camDistance = 7.0; 
+		const Ogre::Real camLookAhead = 8.0;
+
+		Quaternion q = _vehicle->getSceneNode()->getOrientation(); 
+		Vector3 toCam = _vehicle->getSceneNode()->getPosition(); 
+
+		toCam.y += camHeight; 
+		toCam.z -= camDistance * q.zAxis().z; 
+		toCam.x -= camDistance * q.zAxis().x; 
+	      
+		mCamera->move( (toCam - mCamera->getPosition()) * followFactor ); 
+		mCamera->lookAt(_vehicle->getSceneNode()->getPosition() + ((_vehicle->getSceneNode()->getOrientation() * Ogre::Vector3::UNIT_Z) * camLookAhead));
+	}
+	return ret;
+}
+//------------------------------------------------------------------------------------------------
+GranTurismOgreApplication::GranTurismOgreApplication()
+{
+	_world = 0;
+	_time_step = 0.01;
+	_track = 0;
+}
+//------------------------------------------------------------------------------------------------
+void GranTurismOgreApplication::chooseSceneManager(void)
+{
+    mSceneMgr = mRoot->createSceneManager( ST_GENERIC, "ExampleGrandTurismo" );
+}
+//------------------------------------------------------------------------------------------------
+void GranTurismOgreApplication::setupResources(void)
+{
+	ExampleApplication::setupResources();
+	ResourceGroupManager *rsm = ResourceGroupManager::getSingletonPtr();
+	StringVector groups = rsm->getResourceGroups();        
+	if (std::find(groups.begin(), groups.end(), String("OgreOde")) == groups.end())
+	{
+		FileInfoListPtr finfo =  ResourceGroupManager::getSingleton().findResourceFileInfo (
+			"Bootstrap", "axes.mesh");
+
+		const bool isSDK =  (!finfo->empty()) && 
+			StringUtil::startsWith (finfo->begin()->archive->getName(), "../../media/packs/ogrecore.zip", true);
+
+
+		rsm->createResourceGroup("OgreOde");
+		if (isSDK)
+		{
+			rsm->addResourceLocation("../../../ogreode/demos/Media","FileSystem", "OgreOde");
+		}
+		else
+		{
+			rsm->addResourceLocation("../../../../../ogreaddons/ogreode/demos/Media","FileSystem", "OgreOde");
+		}
+	}
+}
+//------------------------------------------------------------------------------------------------
+void GranTurismOgreApplication::createCamera(void)
+{
+    // Create the camera
+    mCamera = mSceneMgr->createCamera("PlayerCam");
+
+    mCamera->setPosition(Vector3(125,-14,8));
+    mCamera->lookAt(mCamera->getPosition() + Ogre::Vector3(0,0,1));
+    mCamera->setNearClipDistance( 1 );
+    mCamera->setFarClipDistance( 1000 );
+}
+//------------------------------------------------------------------------------------------------
+// Just override the mandatory create scene method
+void GranTurismOgreApplication::createScene(void)
+{
+    // Set ambient light
+    mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
+	mSceneMgr->setSkyBox(true,"GranTurismOgre/Skybox");
+
+    // Create a light
+    Light* l = mSceneMgr->createLight("MainLight");
+
+	// Accept default settings: point light, white diffuse, just set position
+    // NB I could attach the light to a SceneNode if I wanted it to move automatically with
+    //  other objects, but I don't
+    l->setPosition(20,800,50);
+	l->setSpecularColour(1,0.9,0);
+
+	l->setCastShadows(true);
+
+	mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_MODULATIVE);
+	mSceneMgr->setShadowColour(ColourValue(0.5,0.5,0.5));
+
+    _world = new OgreOde::World(mSceneMgr);
+
+    _world->setGravity(Vector3(0,-9.80665,0));
+    _world->setCFM(10e-5);
+    _world->setERP(0.8);
+    _world->setAutoSleep(true);
+    _world->setContactCorrectionVelocity(1.0);
+
+	// Create something that will step the world automatically
+
+
+
+	_world->setCollisionListener(this);
+
+	SceneNode *track_node = mSceneMgr->getRootSceneNode()->createChildSceneNode("track");
+	Entity *track_mesh = mSceneMgr->createEntity("track","racingcircuit.mesh");
+	track_node->attachObject(track_mesh);
+
+	OgreOde::EntityInformer ei(track_mesh);
+	_track = ei.createStaticTriangleMesh(_world, _world->getDefaultSpace());
+    track_mesh->setUserObject (_track);
+  
+}
+//------------------------------------------------------------------------------------------------
+// Create new frame listener
+void GranTurismOgreApplication::createFrameListener(void)
+{
+    mFrameListener= new GranTurismOgreFrameListener(mWindow, mCamera,_time_step,mRoot, _world);
+    mRoot->addFrameListener(mFrameListener);
+}
+//------------------------------------------------------------------------------------------------
+bool GranTurismOgreApplication::collision(OgreOde::Contact* contact)
+{
+	if(!OgreOde_Prefab::Vehicle::handleTyreCollision(contact))
+	{
+		contact->setBouncyness(0.0);
+		contact->setCoulombFriction(18.0);
+	}
+	return true;
+}
+//------------------------------------------------------------------------------------------------
+GranTurismOgreApplication::~GranTurismOgreApplication()
+{
+	delete _track;
+	delete _world;
+}
+
Index: /ogreode/demos/GranTurismOgre/src/Makefile.am
===================================================================
--- /ogreode/demos/GranTurismOgre/src/Makefile.am	(revision 21)
+++ /ogreode/demos/GranTurismOgre/src/Makefile.am	(revision 21)
@@ -0,0 +1,37 @@
+noinst_PROGRAMS = GranTurismOgre
+
+GranTurismOgre_CXXFLAGS = \
+   ${OGRE_CFLAGS} \
+   ${ois_CFLAGS} \
+   -I${SAMPLES_CFLAGS} \
+   -I../include \
+   -I$(top_srcdir)/include \
+   -I$(top_srcdir)/prefab/include \
+   -I$(top_srcdir)/loader/include \
+   -I$(top_srcdir)/tinyxml 
+#  -I$(top_srcdir)/$(top_srcdir)renew/Samples/Common/include
+
+GranTurismOgre_LDFLAGS = \
+   -L$(top_srcdir)/src \
+   -L$(top_srcdir)/prefab/src \
+   -L$(top_srcdir)/loader/src
+
+
+GranTurismOgre_LDADD = \
+   $(OGRE_LIBS) \
+   ${ois_LIBS} \
+   -lOgreOde_Core \
+   -lOgreOde_Prefab \
+   -lOgreOde_Loader
+
+
+GranTurismOgre_SOURCES = \
+   GranTurismOgre.cpp \
+   $(top_srcdir)/tinyxml/tinystr.cpp \
+   $(top_srcdir)/tinyxml/tinyxml.cpp \
+   $(top_srcdir)/tinyxml/tinyxmlerror.cpp \
+   $(top_srcdir)/tinyxml/tinyxmlparser.cpp
+
+
+install-exec-local:
+	   $(INSTALL_PROGRAM) .libs/GranTurismOgre $(SAMPLES)/Common/bin/GranTurismOgre
Index: /ogreode/demos/Landscape/Makefile.am
===================================================================
--- /ogreode/demos/Landscape/Makefile.am	(revision 21)
+++ /ogreode/demos/Landscape/Makefile.am	(revision 21)
@@ -0,0 +1,1 @@
+SUBDIRS = src
Index: /ogreode/demos/Landscape/include/Landscape.h
===================================================================
--- /ogreode/demos/Landscape/include/Landscape.h	(revision 21)
+++ /ogreode/demos/Landscape/include/Landscape.h	(revision 21)
@@ -0,0 +1,54 @@
+#include "ExampleApplication.h"
+#include "OgreOde_Core.h"
+#include "OgreOde_Prefab.h"
+#include "OgreOde_Loader.h"
+
+class LandscapeFrameListener : public ExampleFrameListener, 
+    public OgreOde::TerrainGeometryHeightListener, 
+    public OgreOde::CollisionListener
+{
+public:
+	LandscapeFrameListener(Ogre::RenderWindow* win, Ogre::Camera* cam, Ogre::Root* root);
+	~LandscapeFrameListener();
+    bool frameStarted(const Ogre::FrameEvent& evt);
+	void changeCar();
+
+private:
+	void updateInfo();
+	OgreOde::StepHandler *_stepper;
+	OgreOde_Prefab::Vehicle *_vehicle;
+	Ogre::RaySceneQuery *_ray_query;
+    Ogre::Ray ray;
+	char _drive;
+    OgreOde_Loader::DotLoader *dotOgreOdeLoader;
+
+    virtual Ogre::Real heightAt(const Ogre::Vector3& position);
+    virtual bool collision(OgreOde::Contact* contact);
+
+protected:
+    Ogre::SceneManager *mSceneMgr;
+    OgreOde::World *_world;
+    OgreOde::TerrainGeometry *_terrain;
+    Ogre::Real _time_step;
+    size_t _average_num_query;
+};
+
+
+
+class LandscapeApplication : public ExampleApplication
+{
+public:
+    LandscapeApplication();
+    ~LandscapeApplication();
+
+protected:
+	virtual bool setup(void);
+    virtual void chooseSceneManager(void);
+	virtual void setupResources(void);
+    virtual void createCamera(void);
+    void createScene(void);
+	void createFrameListener(void);
+
+
+};
+
Index: /ogreode/demos/Landscape/obj/Debug/keep.me
===================================================================
--- /ogreode/demos/Landscape/obj/Debug/keep.me	(revision 21)
+++ /ogreode/demos/Landscape/obj/Debug/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/Landscape/obj/Release/keep.me
===================================================================
--- /ogreode/demos/Landscape/obj/Release/keep.me	(revision 21)
+++ /ogreode/demos/Landscape/obj/Release/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/Landscape/scripts/CodeBlocks/Demo_Landscape_SDK.cbp
===================================================================
--- /ogreode/demos/Landscape/scripts/CodeBlocks/Demo_Landscape_SDK.cbp	(revision 21)
+++ /ogreode/demos/Landscape/scripts/CodeBlocks/Demo_Landscape_SDK.cbp	(revision 21)
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="5" />
+	<Project>
+		<Option title="Demo_Landscape" />
+		<Option pch_mode="2" />
+		<Option default_target="" />
+		<Option compiler="gcc" />
+		<Option virtualFolders="" />
+		<Build>
+			<Target title="Debug">
+				<Option output="..\..\bin\Debug\OgreOdeDemo_Landscape.exe" />
+				<Option object_output="..\..\obj\Debug" />
+				<Option external_deps="..\..\lib\Debug|Win32\libOgreOde_Prefab_d.a;..\..\lib\Debug|Win32\libOgreOde_Core_d.a;" />
+				<Option type="0" />
+				<Option compiler="gcc" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-g" />
+					<Add option="-O0" />
+					<Add option="-DWIN32" />
+					<Add option="-D_DEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add directory="..\..\..\..\ode\include" />
+					<Add directory="..\..\include" />
+					<Add directory="..\..\..\..\include" />
+					<Add directory="..\..\..\..\prefab\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="$(OGRE_HOME)\Samples\include" />
+					<Add directory="$(OGRE_HOME)\stlport\stlport" />
+				</Compiler>
+				<Linker>
+					<Add library="OgreMain_d" />
+					<Add library="OgreOde_Core_d" />
+					<Add library="OgreOde_Prefab_d" />
+					<Add library="libOgreOde_Prefab_d.a" />
+					<Add library="libOgreOde_Core_d.a" />
+					<Add library="stlportstlg.5.0" />
+					<Add directory="$(OGRE_HOME)\bin\debug" />
+					<Add directory="..\..\..\..\lib\Debug" />
+					<Add directory="..\..\..\..\prefab\lib\Debug" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="$(OGREODE_HOME)\scripts\codeblocks\copy.bat $(OGREODE_HOME)\demos\Landscape\bin\Debug\$(APPNAME) $(OGRE_HOME)\bin\debug\$(APPNAME)" />
+				</ExtraCommands>
+			</Target>
+			<Target title="Release">
+				<Option output="..\..\bin\Release\OgreOdeDemo_Landscape.exe" />
+				<Option object_output="..\..\obj\Release" />
+				<Option external_deps="..\..\lib\Release|Win32\libOgreOde_Prefab.a;..\..\lib\Release|Win32\libOgreOde_Core.a;" />
+				<Option type="0" />
+				<Option compiler="gcc" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-DWIN32" />
+					<Add option="-DNDEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add directory="..\..\..\..\ode\include" />
+					<Add directory="..\..\include" />
+					<Add directory="..\..\..\..\include" />
+					<Add directory="..\..\..\..\prefab\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="$(OGRE_HOME)\Samples\include" />
+					<Add directory="$(OGRE_HOME)\stlport\stlport" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+					<Add library="OgreMain" />
+					<Add library="OgreOde_Core" />
+					<Add library="OgreOde_Prefab" />
+					<Add library="libOgreOde_Prefab.a" />
+					<Add library="libOgreOde_Core.a" />
+					<Add library="stlport.5.0" />
+					<Add directory="$(OGRE_HOME)\bin\release" />
+					<Add directory="..\..\..\..\lib\Release" />
+					<Add directory="..\..\..\..\prefab\lib\Release" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="$(OGREODE_HOME)\scripts\codeblocks\copy.bat $(OGREODE_HOME)\demos\Landscape\bin\Release\$(APPNAME) $(OGRE_HOME)\bin\release\$(APPNAME)" />
+				</ExtraCommands>
+			</Target>
+			<Environment>
+				<Variable name="OGREODE_HOME" value="$(OGRE_HOME)" />
+				<Variable name="APPNAME" value="OgreOdeDemo_Landscape.exe" />
+			</Environment>
+		</Build>
+		<Compiler>
+			<Add option="-mthreads" />
+			<Add option="-fmessage-length=0" />
+			<Add option="-fexceptions" />
+			<Add option="-fident" />
+		</Compiler>
+		<Unit filename="..\..\include\Landscape.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\Landscape.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Extensions />
+	</Project>
+</CodeBlocks_project_file>
Index: /ogreode/demos/Landscape/scripts/Linux/keep.me
===================================================================
--- /ogreode/demos/Landscape/scripts/Linux/keep.me	(revision 21)
+++ /ogreode/demos/Landscape/scripts/Linux/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/Landscape/scripts/Mac/keep.me
===================================================================
--- /ogreode/demos/Landscape/scripts/Mac/keep.me	(revision 21)
+++ /ogreode/demos/Landscape/scripts/Mac/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/Landscape/scripts/VC6/keep.me
===================================================================
--- /ogreode/demos/Landscape/scripts/VC6/keep.me	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC6/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/Landscape/scripts/VC7.1/Demo_Landscape.vcproj
===================================================================
--- /ogreode/demos/Landscape/scripts/VC7.1/Demo_Landscape.vcproj	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC7.1/Demo_Landscape.vcproj	(revision 21)
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Demo_Landscape"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\prefab\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_Landscape.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include;..\..\..\..\prefab\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\Landscape.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\Landscape.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/Landscape/scripts/VC7.1/Demo_Landscape_Source.vcproj
===================================================================
--- /ogreode/demos/Landscape/scripts/VC7.1/Demo_Landscape_Source.vcproj	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC7.1/Demo_Landscape_Source.vcproj	(revision 21)
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Demo_Landscape_Source"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\prefab\include;..\..\..\..\include;..\..\..\..\ode\include;..\..\..\..\..\ogrenew\OgreMain\include;..\..\..\..\..\ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_Landscape.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\prefab\include;..\..\..\..\ode\include;..\..\..\..\..\ogrenew\OgreMain\include;..\..\..\..\..\ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\Landscape.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\Landscape.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/Landscape/scripts/VC7.1/keep.me
===================================================================
--- /ogreode/demos/Landscape/scripts/VC7.1/keep.me	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC7.1/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/Landscape/scripts/VC7/Demo_Landscape.vcproj
===================================================================
--- /ogreode/demos/Landscape/scripts/VC7/Demo_Landscape.vcproj	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC7/Demo_Landscape.vcproj	(revision 21)
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="Demo_Landscape"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_Landscape.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\Landscape.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\Landscape.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/Landscape/scripts/VC7/keep.me
===================================================================
--- /ogreode/demos/Landscape/scripts/VC7/keep.me	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC7/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_CVS.vcproj
===================================================================
--- /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_CVS.vcproj	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_CVS.vcproj	(revision 21)
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_Landscape"
+	ProjectGUID="{938CDDEB-72ED-4902-B936-003D4D9F3EB7}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\prefab\include;..\..\..\..\loader\include;..\..\..\..\ode\include;..\..\..\..\..\..\Ogrenew\OgreMain\include;..\..\..\..\..\..\Ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib ois_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreOde_Loader_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\Ogrenew\lib;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_Landscape.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				EnableIntrinsicFunctions="false"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\prefab\include;..\..\..\..\loader\include;..\..\..\..\ode\include;..\..\..\..\..\..\Ogrenew\OgreMain\include;..\..\..\..\..\..\Ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib  ois.lib OgreOde_Core.lib OgreOde_Prefab.lib OgreOde_Loader.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\Ogrenew\lib;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				LinkTimeCodeGeneration="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\Landscape.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\Landscape.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_SDK.vcproj
===================================================================
--- /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_SDK.vcproj	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_SDK.vcproj	(revision 21)
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_Landscape"
+	ProjectGUID="{938CDDEB-72ED-4902-B936-003D4D9F3EB7}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib  ois_d.lib OgreOde_Core_d.lib OgreOde_Loader_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_Landscape.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib  ois.lib OgreOde_Core.lib OgreOde_Loader.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\Landscape.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\Landscape.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_Source.vcproj
===================================================================
--- /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_Source.vcproj	(revision 21)
+++ /ogreode/demos/Landscape/scripts/VC8/Demo_Landscape_Source.vcproj	(revision 21)
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_Landscape"
+	ProjectGUID="{938CDDEB-72ED-4902-B936-003D4D9F3EB7}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\ode\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;..\..\..\..\..\OgreMain\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreOde_Loader_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_Landscape.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\ode\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;..\..\..\..\..\OgreMain\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="false"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="false"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkLibraryDependencies="false"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib OgreOde_Loader.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_Landscape.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\Landscape.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\Landscape.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/Landscape/src/Landscape.cpp
===================================================================
--- /ogreode/demos/Landscape/src/Landscape.cpp	(revision 21)
+++ /ogreode/demos/Landscape/src/Landscape.cpp	(revision 21)
@@ -0,0 +1,694 @@
+#include "Landscape.h"
+
+
+
+
+//enable this to test it against PLSM2 instead of TSM.
+//#define _PLSM2
+//
+#ifndef _PLSM2
+
+    static String config_file  ("terrainOgreOde.cfg");// OgreSDK terrain, very small tris
+    //static String config_file  ("landscape.cfg");landy average
+    //static String config_file("landscape1.cfg");// near flat 
+    //static String config_file("landscape2.cfg");// totally flat + cliffs + small tris
+    //static String config_file("landscape3.cfg");// same as landy average but huge
+    //static String config_file("landscape4.cfg");// same as landy average
+    //static String config_file("landscape5.cfg");// landy average, but very picky
+    //static String config_file("landscape6.cfg");// near flat
+#else  //_PLSM2
+    static String config_file ("paginglandscape2.cfg");
+#endif //_PLSM2
+
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include "windows.h"
+
+INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
+#else
+int main(int argc, char *argv[])
+#endif
+{
+    LandscapeApplication app;
+    
+    try 
+	{
+		app.go();
+    } 
+	catch( Ogre::Exception& e )
+	{
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+        MessageBox( 0, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
+#else
+        std::cerr << "An exception has occured: " << e.getFullDescription().c_str() << std::endl;
+#endif
+    }
+
+    return 0;
+}
+
+using namespace Ogre;
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+using namespace OgreOde_Loader;
+
+//------------------------------------------------------------------------------------------------
+static const String carNames[] = {
+	"Jeep",
+	"JeepSway",
+	"Subaru"
+};
+static const String carFileNames[] = {
+	"jeep.ogreode",
+	"jeep.ogreode",
+	"subaru.ogreode"
+};
+static int sSelectedCar = 0;
+static int maxNumCar = 3;
+
+
+//------------------------------------------------------------------------------------------------
+LandscapeFrameListener::LandscapeFrameListener(RenderWindow* win, Camera* cam,
+                                               Root *root) : 
+        ExampleFrameListener(win, cam),
+        mSceneMgr (mCamera->getSceneManager()),
+        _world (new OgreOde::World(mSceneMgr)),
+        _terrain(0),
+	    _vehicle(0),
+        _time_step (0.01)
+{
+
+    _world->setGravity(Vector3(0,-9.80665,0));
+    _world->setCFM(10e-5);
+    _world->setERP(0.8);
+    _world->setAutoSleep(true);
+    _world->setContactCorrectionVelocity(1.0);
+
+    dotOgreOdeLoader = new OgreOde_Loader::DotLoader (_world);
+
+
+
+    StepHandler::StepModeType stepModeType;
+
+	const int _stepper_mode_choice = 2;
+    switch(_stepper_mode_choice)
+    {
+    case 0: stepModeType = StepHandler::BasicStep; break;
+    case 1: stepModeType = StepHandler::FastStep; break;
+    case 2: stepModeType = StepHandler::QuickStep; break;
+
+    default: stepModeType = StepHandler::QuickStep; break;
+    }
+
+	const int _stepper_choice = 0;
+	const Ogre::Real time_scale = Ogre::Real(1.0);
+	const Ogre::Real max_frame_time = Ogre::Real(1.0 / 4);
+	const Ogre::Real frame_rate = Ogre::Real(1.0 / 60);
+    switch (_stepper_choice)
+    {
+    case 0:
+        _stepper = new OgreOde::StepHandler(_world,
+            StepHandler::QuickStep, 
+            _time_step,
+            max_frame_time,
+            time_scale);
+
+        break;
+    case 1:
+        _stepper = new OgreOde::ExactVariableStepHandler(_world, 
+            stepModeType, 
+            _time_step,
+            max_frame_time,
+            time_scale);
+
+        break;
+    case 2:
+        _stepper = new OgreOde::ForwardFixedStepHandler(_world, 
+            stepModeType, 
+            _time_step,
+            max_frame_time,
+            time_scale);
+
+        break;
+    case 3:
+    default:
+        _stepper = new OgreOde::ForwardFixedInterpolatedStepHandler (_world, 
+            stepModeType, 
+            _time_step,
+            frame_rate,
+            max_frame_time,
+            time_scale);
+        break;
+    }
+	
+	_stepper->setAutomatic(OgreOde::StepHandler::AutoMode_PostFrame,root);
+ 
+
+    bool does_center_is_corner = false;
+    Ogre::Vector3 scale = Ogre::Vector3::ZERO;
+    int nodes_per_side = 0;
+    int nodes_per_side_all_pagesW = 0; 
+    int nodes_per_side_all_pagesH = 0;
+    bool center;
+    // Terrain Scene Manager should support those... 
+    mSceneMgr->getOption("Scale", &scale);
+    mSceneMgr->getOption("PageSize", &nodes_per_side);
+
+   Ogre::Real worldWidth, worldHeight; 
+#ifndef _PLSM2
+    if (nodes_per_side == 0)
+    {
+        Ogre::ConfigFile config;
+        Ogre::String val;
+
+        config.load(config_file, "OgreOde", "=", true);
+
+        val = config.getSetting( "PageSize" );
+        assert( !val.empty() );
+        nodes_per_side = atoi( val.c_str() );
+
+        val = config.getSetting( "PageWorldX" );
+        assert( !val.empty() );
+        scale.x = atof( val.c_str() ) / nodes_per_side;
+
+        val = config.getSetting( "MaxHeight" );
+        assert( !val.empty() );
+        scale.y = atof( val.c_str() );
+
+        val = config.getSetting( "PageWorldZ" );
+        assert( !val.empty() );
+        scale.z = atof( val.c_str() ) / nodes_per_side;
+
+    }
+    center = false;
+    worldWidth  = scale.x * (nodes_per_side - 1);
+    worldHeight = scale.z * (nodes_per_side - 1); 
+    nodes_per_side_all_pagesW = nodes_per_side; 
+    nodes_per_side_all_pagesH = nodes_per_side;
+#else    
+    center = true;
+
+    int w=0;
+    int h=0;
+
+    mSceneMgr->getOption("Width", &w);
+    mSceneMgr->getOption("Height", &h);
+
+
+    worldWidth  = w * (nodes_per_side - 1) * scale.x;
+    worldHeight = h * (nodes_per_side - 1) * scale.z;
+
+    nodes_per_side_all_pagesW = w * (nodes_per_side);
+    nodes_per_side_all_pagesH = h * (nodes_per_side);
+
+    bool noInterpolation = true;
+    mSceneMgr->setOption("queryNoInterpolation", &noInterpolation);
+    mSceneMgr->setOption("LoadNow", 0);
+#endif 
+
+    _terrain = new OgreOde::TerrainGeometry(_world,
+        _world->getDefaultSpace(), 
+        scale,
+        nodes_per_side_all_pagesW,
+        nodes_per_side_all_pagesH,
+        worldWidth, 
+        worldHeight,
+        center);
+    //_terrain->setHeightListener(this);
+    _world->setCollisionListener(this);
+
+    // Create some boxes to play with
+#ifdef _DEBUG
+    const Ogre::Real boxspace = 24.0;
+#else
+    const Ogre::Real boxspace = 12.0;
+#endif
+    for(Real z = -12.0;z <= 12.0;z += boxspace)
+    {
+        for(Real x = -12.0;x <= 12.0;x += boxspace)
+        {   
+            // Create the Ogre box
+            String name = String("Box_") + StringConverter::toString(x) + "_" + StringConverter::toString(z);
+            Entity* box = mSceneMgr->createEntity(name,"crate.mesh");
+            box->setCastShadows(true);
+
+            SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode(name);
+            node->attachObject(box);
+            node->setScale(0.15,0.15,0.15);
+
+            // Set the position
+            Ogre::Vector3 pos(50 + x,130,50 + z);
+            node->setPosition(pos);
+
+            // Create a box for ODE and attach it to the Ogre version
+            OgreOde::Body* body = new OgreOde::Body(_world);
+            node->attachObject(body);
+            body->setMass(OgreOde::BoxMass(0.5,Vector3(1.5,1.5,1.5)));
+
+            OgreOde::BoxGeometry* geom = new OgreOde::BoxGeometry(Vector3(1.5,1.5,1.5), _world, _world->getDefaultSpace());
+            geom->setBody(body);
+
+        }
+    }
+
+
+	// Reduce move speed
+    mMoveSpeed = 25;
+
+
+    _ray_query = mCamera->getSceneManager()->createRayQuery(ray);
+    _ray_query->setQueryTypeMask(Ogre::SceneManager::WORLD_GEOMETRY_TYPE_MASK );
+    _ray_query->setWorldFragmentType(Ogre::SceneQuery::WFT_SINGLE_INTERSECTION); 
+    ray.setDirection(Vector3::NEGATIVE_UNIT_Y);
+
+
+	Root::getSingleton().setFrameSmoothingPeriod(5.0f);
+	
+    changeCar();
+
+	// Load up our UI and display it
+	Overlay* pOver = (Overlay*)OverlayManager::getSingleton().getByName("OgreOdeDemos/Overlay"); 
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Name")->setCaption(String("Name: ") + "Landscape (Terrain + vehicle + box)");
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Keys")->setCaption(String("Keys: ") + "I/K - Accelerate/Brake, J/L - Turn, X - Change drive mode, N - Change Car");
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/OtherKeys")->setCaption(String("Extra: ") + "E - Debug Object");
+	pOver->show();
+
+
+}
+
+LandscapeFrameListener::~LandscapeFrameListener()
+{
+	delete _stepper;
+	mCamera->getSceneManager()->destroyQuery(_ray_query);
+    delete _terrain;
+    delete _world;
+}
+
+//------------------------------------------------------------------------------------------------
+void LandscapeFrameListener::changeCar()
+{
+	sSelectedCar = (sSelectedCar + 1) % maxNumCar;
+
+	delete _vehicle;
+	//_vehicle = new OgreOde_Prefab::Vehicle(carNames[sSelectedCar]);
+	//_vehicle->load(carFileNames[sSelectedCar]);
+	_vehicle = static_cast <OgreOde_Prefab::Vehicle *> (dotOgreOdeLoader->loadObject (carFileNames[sSelectedCar], carNames[sSelectedCar]));
+	// Initially (i.e. in the config file) it's rear wheel drive
+	_drive = 'R';
+
+	// Move the vehicle
+	Vector3 v_pos = mCamera->getPosition() + (mCamera->getDirection() * 15.0);
+	
+    v_pos.y += 50.0;
+    {
+        ray.setOrigin(v_pos);
+        _ray_query->setRay(ray);
+        RaySceneQueryResult& result = _ray_query->execute();
+        RaySceneQueryResult::iterator i = result.begin();
+        if (i != result.end() && i->worldFragment)
+        {
+            const Ogre::Real height = i->worldFragment->singleIntersection.y;
+            if (v_pos.y < height)
+                v_pos.y = height + 7.0;
+               
+        }
+    }
+
+	_vehicle->setPosition(v_pos);
+
+	updateInfo();
+}
+//------------------------------------------------------------------------------------------------
+void LandscapeFrameListener::updateInfo()
+{
+	Overlay* pOver = (Overlay*)OverlayManager::getSingleton().getByName("OgreOdeDemos/Overlay"); 
+	String newInfo (String("Info: ") + carNames[sSelectedCar]);
+	switch(_drive)
+	{
+		// Switch from rear to front
+		case 'R':
+			newInfo = newInfo + " & Front wheel drive";
+			break;
+
+			// Switch from front to all
+		case 'F':
+			newInfo = newInfo + " & All wheel drive";
+			break;
+
+			// Switch from all to rear
+		case '4':
+			newInfo = newInfo + " & Rear wheel drive";
+			break;
+	}
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Info")->setCaption(newInfo);   
+}
+//------------------------------------------------------------------------------------------------
+bool LandscapeFrameListener::frameStarted(const FrameEvent& evt)
+{
+	Real time = evt.timeSinceLastFrame;
+
+    bool ret = ExampleFrameListener::frameStarted(evt);
+
+	if (mTimeUntilNextToggle <= 0) 
+	{
+		// Switch debugging objects on or off
+		if (mKeyboard->isKeyDown(OIS::KC_E))
+		{
+			_world->setShowDebugGeometries(!_world->getShowDebugGeometries());
+			mTimeUntilNextToggle = 0.5;
+        }
+        // Switch debugging Contacts on or off
+        if (mKeyboard->isKeyDown(OIS::KC_B))
+        {
+            _world->setShowDebugContact(!_world->getShowDebugContact());
+            mTimeUntilNextToggle = 0.5;
+        }
+
+
+		if(mKeyboard->isKeyDown(OIS::KC_N)) 
+		{
+			changeCar();
+			mTimeUntilNextToggle = 0.5;
+		}
+
+		if(mKeyboard->isKeyDown(OIS::KC_U)) 
+		{
+			_stepper->pause(false);
+			mTimeUntilNextToggle = 0.5;
+		}
+        if(mKeyboard->isKeyDown(OIS::KC_P)) 
+		{
+			_stepper->pause(true);
+			mTimeUntilNextToggle = 0.5;
+		}
+		// Change the drive mode between front, rear and 4wd
+		if ((mKeyboard->isKeyDown(OIS::KC_X)) && _vehicle)
+		{
+			switch(_drive)
+			{
+				// Switch from rear to front
+			case 'R':
+				_drive = 'F';
+
+				_vehicle->getWheel(0)->setPowerFactor(1);
+				_vehicle->getWheel(1)->setPowerFactor(1);
+				_vehicle->getWheel(2)->setPowerFactor(0);
+				_vehicle->getWheel(3)->setPowerFactor(0);
+
+				updateInfo();
+				break;
+
+				// Switch from front to all
+			case 'F':
+				_drive = '4';
+
+				_vehicle->getWheel(0)->setPowerFactor(0.6);
+				_vehicle->getWheel(1)->setPowerFactor(0.6);
+				_vehicle->getWheel(2)->setPowerFactor(0.4);
+				_vehicle->getWheel(3)->setPowerFactor(0.4);
+
+				updateInfo();
+				break;
+
+				// Switch from all to rear
+			case '4':
+				_drive = 'R';
+
+				_vehicle->getWheel(0)->setPowerFactor(0);
+				_vehicle->getWheel(1)->setPowerFactor(0);
+				_vehicle->getWheel(2)->setPowerFactor(1);
+				_vehicle->getWheel(3)->setPowerFactor(1);
+
+				updateInfo();
+				break;
+			}
+			mTimeUntilNextToggle = 0.5;
+		}
+	}
+
+	if(!_stepper->isPaused() && _vehicle)
+	{
+		_vehicle->setInputs(mKeyboard->isKeyDown(OIS::KC_J),
+                            mKeyboard->isKeyDown(OIS::KC_L),
+                            mKeyboard->isKeyDown(OIS::KC_I),
+                            mKeyboard->isKeyDown(OIS::KC_K));
+		_vehicle->update(time);
+	}
+
+
+	// Thanks to Ahmed!
+    if (_vehicle)
+    {
+	    const Ogre::Real followFactor = 0.05; 
+	    const Ogre::Real camHeight = 5.0; 
+	    const Ogre::Real camDistance = 10.0; 
+	    const Ogre::Real camLookAhead = 6.0;
+
+	    Quaternion q = _vehicle->getSceneNode()->getOrientation(); 
+	    Vector3 toCam = _vehicle->getSceneNode()->getPosition(); 
+
+	    toCam.y += camHeight; 
+	    toCam.z -= camDistance * q.zAxis().z; 
+	    toCam.x -= camDistance * q.zAxis().x; 
+          
+	    mCamera->move( (toCam - mCamera->getPosition()) * followFactor ); 
+	    mCamera->lookAt(_vehicle->getSceneNode()->getPosition() + ((_vehicle->getSceneNode()->getOrientation() * Ogre::Vector3::UNIT_Z) * camLookAhead));
+    }
+    if (_average_num_query == 0)
+        _average_num_query = _terrain->getNumQueries();
+    _average_num_query = (_average_num_query*99 + _terrain->getNumQueries()) / 100;
+   
+    mDebugText =(
+        (_vehicle?"Vehicle Pos: " + StringConverter::toString(_vehicle->getSceneNode()->getPosition()):String("")) +
+        " nQueries: " + StringConverter::toString(_average_num_query));
+
+    _terrain->resetNumQueries();
+
+	return ret;
+}
+
+//------------------------------------------------------------------------------------------------
+Real LandscapeFrameListener::heightAt(const Ogre::Vector3& position)
+{
+    return _terrain->getHeightAt(position); //this is the get height function 
+}
+
+
+//------------------------------------------------------------------------------------------------
+bool LandscapeFrameListener::collision(OgreOde::Contact* contact)
+{
+    Geometry * const g1 = contact->getFirstGeometry ();
+    Geometry * const g2 = contact->getSecondGeometry ();
+    const bool isg1Sphere = g1 && g1->getClass () != Geometry::Class_Sphere;
+    const bool isg2Sphere = g2 && g2->getClass () != Geometry::Class_Sphere;
+   
+    if((isg1Sphere || isg2Sphere) && 
+        OgreOde_Prefab::Vehicle::handleTyreCollision(contact))
+    {
+            //handled by Vehicle.
+    }
+    else
+    {
+        contact->setBouncyness(0.0);
+        contact->setCoulombFriction(18.0);
+    }
+
+    return true;
+}
+
+//------------------------------------------------------------------------------------------------
+LandscapeApplication::LandscapeApplication()
+{
+}
+
+//------------------------------------------------------------------------------------------------
+bool LandscapeApplication::setup(void)
+{
+#ifndef _PLSM2
+	mRoot = new Root("plugins.cfg", "ogre.cfg", "ogreode_landscape_tsm.log");
+#else //_PLSM2
+	mRoot = new Root("plugins_plsm2.cfg", "plsm2_display.cfg", "ogreode_landscape_plsm2.log");
+#endif //_PLSM2
+
+	setupResources();
+
+	bool carryOn = configure();
+	if (!carryOn) return false;
+
+	chooseSceneManager();
+	createCamera();
+	createViewports();
+
+	// Set default mipmap level (NB some APIs ignore this)
+	TextureManager::getSingleton().setDefaultNumMipmaps(20);
+
+	// Create any resource listeners (for loading screens)
+	createResourceListener();
+	// Load resources
+	loadResources();
+
+	// Create the scene
+	createScene();
+
+	createFrameListener();
+
+	return true;
+
+}
+
+//------------------------------------------------------------------------------------------------
+void LandscapeApplication::chooseSceneManager(void)
+{
+#ifndef _PLSM2
+    mSceneMgr = mRoot->createSceneManager( ST_EXTERIOR_CLOSE, "basicsm" );
+#else //_PLSM2
+	mSceneMgr = mRoot->createSceneManager( "PagingLandScapeSceneManager", "basicsm" );
+	assert(mSceneMgr);
+#endif //_PLSM2
+}
+
+//------------------------------------------------------------------------------------------------
+void LandscapeApplication::setupResources(void)
+{
+	ExampleApplication::setupResources();
+
+	ResourceGroupManager *rsm = ResourceGroupManager::getSingletonPtr();
+	StringVector groups = rsm->getResourceGroups();        
+	if (std::find(groups.begin(), groups.end(), String("OgreOde")) == groups.end())
+	{
+		FileInfoListPtr finfo =  ResourceGroupManager::getSingleton().findResourceFileInfo (
+		"Bootstrap", "axes.mesh");
+
+		const bool isSDK =  (!finfo->empty()) && 
+		StringUtil::startsWith (finfo->begin()->archive->getName(), "../../media/packs/ogrecore.zip", true);
+
+		rsm->createResourceGroup("OgreOde");
+		if (isSDK)
+		{
+			rsm->addResourceLocation("../../../ogreode/demos/Media","FileSystem", "OgreOde");
+		}
+		else
+		{
+			rsm->addResourceLocation("../../../../../ogreaddons/ogreode/demos/Media","FileSystem", "OgreOde");
+		}
+	}
+#ifdef _PLSM2
+	if (std::find(groups.begin(), groups.end(), String("PLSM2")) == groups.end())
+	{
+		rsm->createResourceGroup("PLSM2");
+		if (isSDK)
+		{
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2","FileSystem", "PLSM2");
+
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2/models","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2/overlays","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2/materials","FileSystem", "PLSM2");
+
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2/materials/scripts","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2/materials/textures","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2/materials/programs","FileSystem", "PLSM2");
+
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2/datasrcs","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../paginglandscape/Samples/Media/paginglandscape2/terrains","FileSystem", "PLSM2");
+		}
+		else
+		{
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2","FileSystem", "PLSM2");
+
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2/models","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2/overlays","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2/materials","FileSystem", "PLSM2");
+
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2/materials/scripts","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2/materials/textures","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2/materials/programs","FileSystem", "PLSM2");
+
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2/datasrcs","FileSystem", "PLSM2");
+			rsm->addResourceLocation("../../../../../ogreaddons/paginglandscape/Samples/Media/paginglandscape2/terrains","FileSystem", "PLSM2");
+		}
+	}
+#endif //_PLSM2
+}
+
+//------------------------------------------------------------------------------------------------
+void LandscapeApplication::createCamera(void)
+{
+    // Create the camera
+    mCamera = mSceneMgr->createCamera("PlayerCam");
+
+	// Set a nice viewpoint
+	mCamera->setPosition(25,15,25);
+	mCamera->setOrientation(Quaternion(-0.3486, 0.0122, 0.9365, 0.0329));
+
+    mCamera->setNearClipDistance( 1 );
+    mCamera->setFarClipDistance( 1000 );
+}
+
+//------------------------------------------------------------------------------------------------
+// Just override the mandatory create scene method
+void LandscapeApplication::createScene(void)
+{
+    // Set ambient light
+    mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
+
+    // Create a light
+    Light* l = mSceneMgr->createLight("MainLight");
+
+	// Accept default settings: point light, white diffuse, just set position
+    // NB I could attach the light to a SceneNode if I wanted it to move automatically with
+    //  other objects, but I don't
+    l->setPosition(20,800,50);
+	l->setSpecularColour(1,0.9,0);
+	l->setCastShadows(true);
+
+#ifndef _DEBUG
+	mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_MODULATIVE);
+	mSceneMgr->setShadowColour(ColourValue(0.5,0.5,0.5));
+#else
+	mSceneMgr->setShadowTechnique(SHADOWTYPE_NONE);
+#endif
+
+    // Fog
+    // NB it's VERY important to set this before calling setWorldGeometry 
+    // because the vertex program picked will be different
+    ColourValue fadeColour(0.93, 0.86, 0.76);
+    mSceneMgr->setFog( FOG_LINEAR, fadeColour, .001, 500, 1000);
+    mWindow->getViewport(0)->setBackgroundColour(fadeColour);
+
+	// Set up the terrain according to our own settings	
+
+	DataStreamPtr cfgFile = ResourceGroupManager::getSingleton().openResource (config_file, "OgreOde");
+    mSceneMgr -> setWorldGeometry( cfgFile );
+
+
+	//String blank("");
+	//mSceneMgr->setOption("CustomMaterialName",&blank);
+
+    // Infinite far plane?
+    if (mRoot->getRenderSystem()->getCapabilities()->hasCapability(RSC_INFINITE_FAR_PLANE))
+    {
+		mCamera->setFarClipDistance(0);
+    }
+
+    // Define the required skyplane
+    Plane plane;
+    
+	plane.d = 5000;
+    plane.normal = -Vector3::UNIT_Y;
+
+
+}
+
+//------------------------------------------------------------------------------------------------
+// Create new frame listener
+void LandscapeApplication::createFrameListener(void)
+{
+    mFrameListener= new LandscapeFrameListener(mWindow, mCamera,mRoot);
+    mRoot->addFrameListener(mFrameListener);
+}
+
+//------------------------------------------------------------------------------------------------
+LandscapeApplication::~LandscapeApplication()
+{
+}
Index: /ogreode/demos/Landscape/src/Makefile.am
===================================================================
--- /ogreode/demos/Landscape/src/Makefile.am	(revision 21)
+++ /ogreode/demos/Landscape/src/Makefile.am	(revision 21)
@@ -0,0 +1,40 @@
+noinst_PROGRAMS = Landscape
+
+Landscape_CXXFLAGS = \
+   ${OGRE_CFLAGS} \
+   ${ois_CFLAGS} \
+   -I${SAMPLES_CFLAGS} \
+   -I../include \
+   -I$(top_srcdir)/include \
+   -I$(top_srcdir)/prefab/include \
+   -I$(top_srcdir)/tinyxml \
+   -I$(top_srcdir)/loader/include
+#   -I$(top_srcdir)/$(top_srcdir)renew/Samples/Common/include
+
+Landscape_LDFLAGS = \
+   -L$(top_srcdir)/src \
+   -L$(top_srcdir)/prefab/src \
+   -L$(top_srcdir)/loader/src
+
+
+
+Landscape_LDADD = \
+   $(OGRE_LIBS) \
+   ${ois_LIBS} \
+   -lOgreOde_Core \
+   -lOgreOde_Prefab \
+   -lOgreOde_Loader
+
+
+Landscape_SOURCES = \
+   Landscape.cpp \
+   $(top_srcdir)/tinyxml/tinystr.cpp \
+   $(top_srcdir)/tinyxml/tinyxml.cpp \
+   $(top_srcdir)/tinyxml/tinyxmlerror.cpp \
+   $(top_srcdir)/tinyxml/tinyxmlparser.cpp
+
+
+install-exec-local:
+	   $(INSTALL_PROGRAM) .libs/Landscape $(SAMPLES)/Common/bin/Landscape
+	
+
Index: /ogreode/demos/Makefile.am
===================================================================
--- /ogreode/demos/Makefile.am	(revision 21)
+++ /ogreode/demos/Makefile.am	(revision 21)
@@ -0,0 +1,1 @@
+SUBDIRS = SimpleScenes GranTurismOgre Landscape
Index: /ogreode/demos/Media/Terrain02.raw
===================================================================
--- /ogreode/demos/Media/Terrain02.raw	(revision 21)
+++ /ogreode/demos/Media/Terrain02.raw	(revision 21)
@@ -0,0 +1,4 @@
+,},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}.}.}.}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}0}1}1}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}4}6}6}3}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}8}<}@}@}:}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}8}D}L}U}T}I}<}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}8}D}[}l}}}}}e}L}<}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}1}6}A}U}}}}}}`}F}9}2}/}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}8}D}]}}¥}«}¬}}o}M}=}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}2}9}E}_}}¨}¨}°}¢}}V}A}7}1}/}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}.}.}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}2}9}E}^}}ª}°}²}£}}W}B}7}1}/}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}1}1}1}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}1}7}B}X}}}¦}¥}}r}O}>}5}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}5}7}6}6}5}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}.}.}.}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}3};}I}f}}}}t}f}I}:}3}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}5}=}A}@}@}>}5}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}0}0}/}/}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}3};}I}W}[}Z}P}I}:}3}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}5}=}O}V}T}U}O}>}5}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}2}5}4}3}2}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}3};}B}D}C}>}:}3}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}5}=}O}r}}|}}}r}O}>}5}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}2}8}=};}:}8}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}3}7}8}7}5}3}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}.}1}6}@}S}z}}|}}{}T}@}6}1}.}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}2}8}E}O}J}H}D}=}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}0}1}2}2}0}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}.}0}5}>}P}u}}v}z}w}Q}?}5}1}.}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}2}8}E}^}q}i}d}\}N}=}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}/}/}.}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}.}/}3}:}G}b}}}u}}}r}O}=}5}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}1}6}A}V}}}}}}n}M}<}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}1}6}@}U}p}p}p}]}D}8}2}/}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}8}D}]}}¥}¥}¥}}q}N}=}5}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}1}6}@}N}N}N}D}8}2}/}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}8}E}^}}¤}¢}§}}w}R}?}5}1}.}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}1}6}=}=}=}8}2}/}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}8}D}\}}£}¦}¤}}i}K};}4}0}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}1}4}4}4}2}/}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}.}1}6}@}U}}}}}}}[}C}8}2}/}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}0}0}0}/}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}7}B}X}f}r}g}Z}E}9}2}/}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}.}.}.}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}7}B}I}O}I}C}9}2}/}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}7};}=};}7}2}/}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}2}3}5}3}2}/}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}/}0}0}0}/}.}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}.}.}.}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}.}.}.}.}.}.}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}-}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}/}/}/}/}/}0}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}0}0}0}0}0}/}.}.}-},},},},},},},},},},},},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}.}.}.}-}-}-},},},},},},},},},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}.}.}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}0}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}.}.}.}.}.}.},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}.}.}/}0}0}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}1}2}3}4}5}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}5}5}5}5}5}5}4}4}3}2}1}0}.}-}-},},},},},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}.}.}.}.}.}.}.}.}.}.}/}/}/}/}/}/}/}/}/}/}/}.}-}-},},},},}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-},},},},},},},},},},},},},},},}-}-}/}0}1}1}2}2}2}2}2}2}2}2}2}2}2}2}2}2}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}3}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}4}3}3}3}3}3}3}3}3}3}3}3}3}3}3}2}2}2}2}2}2}2}2}2}2}2}2}2}1}1}1}1}1}1}1}1}1}1}1}1}1}-}-}-},},},},},},},},},},},},},},},},},},},},},},},},},},}-}-}-}.}/}/}1}2}4}5}5}5}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}6}7}8}:}=}?}@}@}@}@}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}?}?}?}?}?}?}?}?}?}?}>}>}>}=}<};}9}6}3}0}.}-}-}-}-}-}-}-}-}-}-}-}-}-}.}.}.}.}.}.}.}/}/}/}/}/}/}0}0}0}0}0}1}1}1}1}1}2}2}2}2}2}2}2}2}1}0}.}-}-}-}-}-}-}-}-}-}.}.}.}.}.}.}.}.}.}.}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}/}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-},},},}-}-}-}/}1}4}5}6}7}8}8}8}8}8}8}8}9}9}9}9}9}9}9}9}9}9}9}:}:}:}:}:}:}:}:}:}:}:};};};};};};};};};};};};};};};};};}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<}<};};};};};};};};};};}:}:}:}:}:}:}:}9}9}9}9}9}9}8}8}8}8}8}8}7}7}7}7}7}7}7}6}6}6}6}6}6}6}6}6}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}.}/}0}1}3}5}8}<}=}>}?}?}?}?}?}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}A}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}@}A}A}B}D}G}N}R}S}T}U}U}U}U}U}U}U}V}V}V}V}V}V}V}V}V}V}V}V}V}V}V}V}V}V}V}V}U}U}U}U}U}U}U}U}T}T}T}T}T}T}T}T}T}T}T}T}T}T}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}R}R}R}Q}Q}P}O}N}L}J}F}@};}4}0}.}.}-}-}-}-}.}.}.}.}.}/}/}/}/}0}0}0}1}1}1}1}2}2}3}3}3}4}4}4}5}5}6}6}6}7}7}8}8}8}8}9}8}8}6}4}0}/}.}.}.}.}.}.}/}/}/}/}0}0}0}0}0}1}1}1}1}1}1}1}1}2}2}2}2}2}2}2}2}2}2}2}1}1}1}1}1}1}1}1}1}1}0}0}0}0}0}0}0}0}/}/}/}/}/}/}/}/}.}.}.}.}.}.}.}.}.}-}-}-}-}-}-}-}-}.}/}1}7};}?}A}B}C}D}D}D}E}E}E}E}E}E}F}F}F}F}F}G}G}G}G}G}H}H}H}H}H}H}I}I}I}I}I}I}J}J}J}J}J}J}J}J}K}K}K}K}K}K}K}K}K}K}K}K}K}K}L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}L}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}K}J}J}J}J}I}I}I}I}H}H}H}G}G}G}F}F}F}E}E}E}D}D}D}D}C}C}C}B}B}B}B}A}A}A}A}@}@}@}@}@}@}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}-}-}-}-}-}-}-}-}-}.}.}/}0}1}3}6}:}?}D}K}O}Q}R}R}S}S}S}S}S}S}S}T}T}T}T}T}T}T}T}T}T}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}U}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}T}U}U}U}V}X}[}b}p}w}{}|}}}~}~}}}}}}}}}}}}}}}}}}}}}}}}}}}}~}~}~}}}}}}}}}|}|}|}|}|}|}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}z}z}z}z}z}z}z}z}y}y}y}x}x}w}v}t}r}o}l}h}`}T}J};}4}1}/}/}/}/}/}/}0}0}1}1}1}2}2}3}3}4}5}5}6}6}7}8}8}9}:};};}<}=}>}?}?}@}A}B}B}C}D}E}E}E}E}D}A}<}5}1}0}0}0}0}1}1}2}2}3}3}3}4}4}5}5}5}6}6}6}6}7}7}7}7}7}7}7}7}7}7}7}7}7}7}7}7}7}7}6}6}6}6}5}5}5}5}4}4}4}4}3}3}3}3}3}2}2}2}2}1}1}1}1}0}0}0}0}/}/}/}/}/}.}.}.}.}/}0}2}7}A}J}Q}V}Y}[}\}\}]}]}^}^}^}_}_}_}`}`}`}a}a}b}b}b}c}c}d}d}d}e}e}e}f}f}f}g}g}g}h}h}h}h}i}i}i}i}i}j}j}j}j}j}j}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}k}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j}k}k}k}k}k}k}k}k}k}k}k}j}j}j}j}i}i}h}h}g}g}f}f}e}e}d}d}c}b}b}a}`}`}_}^}^}]}\}\}[}[}Z}Y}Y}X}X}W}W}V}V}U}U}T}T}T}S}S}1}1}0}0}0}0}0}0}0}0}0}0}0}/}/}/}/}/}/}/}/}/}.}.}.}.}/}/}0}1}4}7};}A}G}R}\}j}r}u}w}y}y}z}z}z}{}{}{}{}{}|}|}|}|}|}}}}}}}}}}}}}~}~}~}~}~}~}~}~}}}}}}}}}}}}}}}~}~}~}~}~}~}~}}}}}}}}}}}}}}}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}}}}}}}~}}}}}}´}Â}É}Í}Ï}Ð}Ñ}Ñ}Ñ}Ò}Ò}Ò}Ò}Ó}Ó}Ó}Ó}Ó}Ó}Ô}Ô}Ô}Ô}Ô}Ô}Ô}Ô}Ó}Ó}Ó}Ó}Ò}Ò}Ñ}Ñ}Ð}Ï}Ï}Î}Î}Í}Í}Ì}Ì}Ì}Ì}Ë}Ë}Ë}Ë}Ê}Ê}Ê}Ê}Ê}Ê}Ê}Ê}Ê}Ê}Ê}É}É}É}É}É}É}É}É}É}É}È}È}È}Ç}Ç}Æ}Æ}Å}Ä}Â}À}¼}¹}³}­}¤}}}}h}K}=}6}3}1}1}1}2}3}3}4}5}6}7}8}9}:};}<}=}>}@}A}B}D}E}F}H}I}K}L}N}O}Q}S}T}V}W}Y}Z}\}]}^}^}^}\}V}M}>}7}4}3}3}4}5}6}7}8}9}:};}<}=}=}>}?}?}@}A}A}A}B}B}B}C}C}C}C}C}C}C}C}C}B}B}B}B}A}A}@}@}?}?}>}>}=}=}<}<};};}:}:}:}9}9}8}8}7}7}6}6}5}5}4}4}3}3}2}2}2}1}1}0}0}0}1}3}8}B}W}i}w}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} }¡}¡}¢}£}£}¤}¤}¥}¥}¦}¦}§}§}§}¨}¨}¨}©}©}©}©}ª}ª}ª}ª}ª}ª}ª}«}«}«}«}«}«}«}«}«}«}«}«}«}«}ª}ª}ª}ª}ª}ª}ª}ª}ª}ª}ª}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}©}ª}ª}ª}ª}ª}ª}ª}ª}©}©}¨}¨}§}¦}¦}¥}¤}£}¢}¡} }}}}}}}}}}}}}}}}}}}}}}}}}}}}}~}}}|}{}{}z}5}5}5}5}5}4}4}4}4}4}4}3}3}3}3}3}2}2}2}2}1}1}1}1}1}1}1}2}4}7};}B}I}U}b}w}}¨}·}¿}Ã}Å}Ç}Ç}È}É}É}Ê}Ê}Ë}Ë}Ë}Ì}Ì}Í}Í}Í}Î}Î}Î}Ï}Ï}Ï}Ð}Ð}Ð}Ð}Ñ}Ñ}Ñ}Ñ}Ñ}Ñ}Ò}Ò}Ò}Ò}Ò}Ò}Ò}Ò}Ñ}Ñ}Ñ}Ñ}Ñ}Ð}Ð}Ð}Ï}Ï}Ï}Î}Î}Î}Î}Í}Í}Í}Í}Í}Í}Ì}Ì}Ì}Ì}Ì}Ì}Ì}Ì}Ì}Ì}Ì}Ì}Ì}Í}Í}Í}Í}Í}Î}Î}Ï}Ñ}Õ}Ü}ê}~=~Y~g~n~r~t~u~v~w~x~x~x~y~y~z~z~z~{~{~{~{~|~|~|~|~{~{~{~z~z~y~x~w~v~u~t~s~r~q~p~o~n~m~l~l~k~k~j~j~i~i~i~h~h~h~h~h~h~g~g~g~g~g~g~g~g~f~f~f~f~e~e~d~d~c~b~a~_~^~[~X~T~M~E~:~-~~ú}Í}¤}j}M}@}9}7}6}7}8}9};}<}>}@}B}D}F}H}J}L}N}Q}S}V}X}[}^}a}d}g}j}m}p}s}v}y}}}}}}}}}}}}}}m}O}B}<}:};}<}>}@}B}D}F}H}J}L}M}O}P}R}S}T}U}V}W}X}X}Y}Y}Z}Z}Z}Z}Z}Z}Y}Y}Y}X}X}W}V}V}U}T}S}R}Q}P}O}N}M}L}K}J}I}H}G}F}E}D}C}B}A}@}?}?}>}=}<};}:}9}8}7}6}5}5}4}5}6};}D}X}}¦}Á}Ô}à}ç}ê}í}ï}ñ}ò}ô}õ}÷}ø}ú}û}ý}þ}~~~~~~	~
+~
+~
+~~~~~~~~~~
Index: /ogreode/demos/Media/Terrain05.raw
===================================================================
--- /ogreode/demos/Media/Terrain05.raw	(revision 21)
+++ /ogreode/demos/Media/Terrain05.raw	(revision 21)
@@ -0,0 +1,38 @@
+ãnânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnânânãnânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânãnãnãnânânânânânânânânânânânânânânânãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnânãnãnãnãnãnãnânânânânânânánánánánánánánánánánánânânânânânânânânânânânânãnãnânânânânânânânânánánánánánánánánánánánánánánánânânânânânânânânânânânãnãnãnãnãnãnânânânânãnãnänänãnãnânânânânânânãnãnânânánánánánánánánánánánânânânânânânânânânânânánánánánánánánánánánánánánánánánánánánánánânânânânânânânânânânânânânânânânânãnãnãnânânânânãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânãnânânânânânânânânânãnãnãnânânânânânânânânânânânânânânânânânânânânânãnãnânânãnânânânânânánánánánànànànànànánánánânânánânânânânânânânânânãnãnânânânânânânânánánánánánánánànánánánànànánànánánânânânânânânânânânânãnãnãnãnãnãnânânânãnãnänänänãnãnânânânânânânãnãnânánánánànánánánánánánánánânânânânânânânânânánánánánánánánánánánánánànànànànànànànánánánánânânânânânânânânânânânânânânânânãnãnãnãnãnânânânãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânãnânânânânânânãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnânânãnãnânânânânãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânãnânânânânânánánánánànànànànànànánánánânánânânânânânânânãnãnãnãnânânânânânânânánánánánánánánánánánánánánánánánânânãnãnânânânânãnãnãnãnãnãnãnãnãnãnânânãnãnänänänãnãnãnânânânânânânânânánánànànànánánánánánánánânânânânânânânânânánànánánánánánánánánánánànànànànànànànánánánánánânânânânânânânânânânânânânânânãnãnãnãnãnãnânânãnãnãnãnãnânãnânânânânânânânânânânânânânânânânãnãnânânânânânãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânânãnânânânânânânánánánánánánánánánánánánánánânânânânânânãnãnãnãnãnãnãnânânânânânânánánánánánánánánánánánánánánânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnânânânânânânânánánànànànánánánánánánánánánânânânânânânânánánànànánánànànánánánánánánánánànànànànànánánánánânânânânânânânânânânânânânânãnãnãnãnânânãnânãnãnãnãnãnânânãnãnânânânânânânânânânânânânânânânânãnãnânânânânânãnãnânânânânânânânânânânânânânânânânânãnãnânânânânânânânãnãnänänãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânãnãnânânânânânânánánánánánánánánánánánánánánânânânânânãnãnãnãnãnãnãnãnãnãnânânânânánânânânánánánánánánánánánánânânãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnânânânânãnãnãnãnãnãnãnânânânânânânánánànànànánánánánánánánánánânânânânânânânânânánánánánánànànánánánánánánánánánànànànànánánánánânânânânânânânânânânânânânãnãnãnãnãnânânãnãnãnãnãnãnãnânãnãnãnãnãnânânânânânânânãnânânânânânânânânânânânânânânânânãnãnãnânânânânânânânânânãnãnãnãnãnãnânânânânânânânãnänånänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânãnânânânânânânânânânânânãnãnânânânânânânânánánânânánánánânânânânânánánánânãnãnãnãnãnãnãnãnãnãnãnânânânânânánânânânânânânánánânânânânânânãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânánànànànánánánánânânánánânânânânânânânânânânânánánânánánánánánânânânânânánánánánànànánánánánânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnânânânãnânânânânânânânânânânânânânânânânãnãnãnânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnânânânãnãnänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânãnãnânânânânânânânânânânânãnãnânânânânânânânânânânânânânânânânânânânánànànánânãnãnãnãnãnãnãnãnãnãnãnânânânânánánánânânânânánánânânânânânânãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânánánánánánánánânânânânânânânânânãnãnãnãnãnãnânânânânânânánánânânânânânânânânánánánánánánânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânãnãnãnânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnânânânânânânânânânânânãnânânânânânânânânânânânânânânânânânânânânánánànánãnãnãnänänänänänãnãnãnãnãnânânânânánânânânânânánánânânânânânânãnänänãnãnãnãnänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânánánánánânânânânânânânânânânânânãnãnãnänänãnãnânânânânânânânânânânânãnãnãnânânânánánánânânânânânânânânãnãnânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnânânãnãnãnânânânânânânânãnãnãnânânãnãnânânânânânânânãnãnânânánánánânânânânânânânânânãnänänånånånånänänãnãnänãnânânânânânânânánánánánánánânânânânânãnãnãnãnãnãnänänänänãnãnãnãnãnânânãnãnãnãnãnãnânânânânânânânânânânânânânânânãnânânânânânânânânânânânãnänänånånänãnãnânânânânânânânânãnãnãnänänänãnãnânânânânânânânânânânãnãnãnânânânânânânânânânânãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânánânânãnãnânânânânânânânânânânânânãnãnânânânãnãnãnãnãnânânânânânânânânânânânânãnãnãnãnânânãnãnãnânânânânãnãnãnãnãnânãnãnânânânânânânânânãnãnãnãnãnãnãnânânánânânânânãnãnânânánànánânânânânânânãnãnãnãnänånçnènènçnænånänänänãnânânânânânânánánánánánánánânânânânânãnãnãnãnänänänånånänänãnãnãnânânãnãnãnãnãnãnãnânânânânânânânânânãnãnãnãnãnãnänãnãnânânânânânãnãnãnãnänånånænænånänãnânânânãnãnãnãnãnãnänånænænænånãnãnânânãnânânânânânânânânânãnânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânánánânânãnãnânânânânânânânânânânânânânânânânânânãnãnãnânânânânânânânânânânânânânãnãnãnânânânãnãnãnãnânânânânãnãnãnãnãnãnânânânânânânânânânânãnãnãnãnãnãnânânânânânânânânânânánánànánânânânânânãnãnãnãnänånçnènênênénènænänänãnãnãnânânânânânánánánánánánânânânânânânãnãnãnãnänänånånænånänänãnãnãnãnãnãnãnãnãnãnânânânânânânânânânãnãnãnänänänånånänänãnãnãnãnãnãnãnãnãnänånænçnænænänãnãnãnãnãnãnãnãnãnãnänænçnènènænänãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnânãnãnãnãnânânânânânânânânânânânânânânânânânânânãnânânânânânânânânânânânânânânânãnãnãnânânãnânânânânânânânânânânãnãnãnânânânãnãnãnãnânânânânãnãnãnãnânânânânânânânânânânânânânânãnãnãnãnânânânânânânânânânânánànánânânânânânânãnãnãnänänånènênënìnënénçnånänänãnãnãnãnânânânánánánánânânânânânânãnãnãnãnãnãnänänånænænånånänãnãnãnãnãnãnãnãnãnânânânânânânânânânãnãnãnãnänänånånånånänãnãnãnãnãnãnãnãnãnänånænçnçnænänãnãnãnãnãnãnãnãnãnãnänænènénènçnånänãnãnãnânânânãnânânânânãnãnânânânânânânãnãnãnânânânânânãnãnãnãnãnãnãnãnãnânânânânãnãnãnãnãnãnânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânãnãnãnânânânânãnãnãnãnânânânãnãnãnânânânânânânânânânânânânânânânânãnãnãnânânânânânânânânânânânánánânânânânânânãnãnãnänänænènênìnìnënénçnånänänãnãnãnãnânânânánánánânânânânânânãnãnãnãnãnãnänänänånænænånänänãnãnãnãnãnãnãnãnãnânânânânânãnânânânânãnãnãnänänänånånånänänãnãnãnãnãnãnãnãnänånænænænånänãnãnãnãnãnãnãnãnãnãnänænçnènènænånänãnãnãnânânânânânãnãnãnãnãnânânânânânânãnãnãnânânânânãnãnãnãnãnãnãnãnânânânânãnânãnãnãnãnãnãnânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnânânânânânãnânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnânânânãnãnãnânânânânânânânânânânânânânânânânânãnãnânânânânânânânânânânânânânânânânânânânãnãnãnänänånçnénënënënénçnånänänänãnãnãnãnânânánánánânânânânânânãnãnãnãnãnãnänänänånånånänänãnãnãnänänänãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnänänänänänãnãnãnãnãnãnãnãnãnãnänånånånänãnãnãnãnãnânânãnãnãnãnänånænænænånänãnãnãnãnãnãnânânãnãnânãnãnãnãnãnânânânânânânânânânânânãnãnânânânãnãnãnânânânãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnânânânãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânãnânânânânânãnânânânânânânânânânânânânânânânânânânãnãnânânânânânânânânânânânânânânânânânânânânãnãnãnänånænènénênénènænånänänänãnãnãnãnãnânânánânânânânânânãnãnânânãnãnãnãnãnänänänänänãnãnãnãnänänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänänãnãnãnãnãnãnãnãnãnãnãnãnänänänänãnãnãnãnânânânânãnãnãnãnänänånänänãnãnãnãnãnânãnãnãnãnânânânãnãnãnãnãnânãnânânânânânânânânãnãnânânânãnãnãnãnãnãnãnãnânânãnãnânânânânânânânânânânânânânânânânânânânânânãnãnânânânânânânãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnânânânânânânânânânânânânânânânânânânânãnãnãnãnänänånænçnènçnænånånänänänänãnãnãnãnãnânânânânânânânânãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnänänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnânânânânãnãnãnãnãnãnänänãnãnãnãnãnânânânãnãnânânânânãnãnãnãnãnãnãnãnânânânânânânânãnãnânânânãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnânânânânânânânânânânânãnãnânânânânânânãnãnãnãnãnänänånænænænånånånånänänänänãnãnãnãnânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânãnãnãnãnânânãnânânânãnãnânânânânãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnânânânânânânânânânânânânânânânânânânânânãnãnânânãnãnãnânânânânânânânânânânãnãnânânânânânânânânânânânãnãnânânânânânãnãnãnânânãnãnãnãnânãnãnãnânânânânãnãnänänänånånånänänänånånånånänänãnãnânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânãnãnânânânânânânânânânânânânánânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnânânãnãnãnânânânânânânânânânânãnãnânânânânânânânânânânânânãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânãnãnänänänänänänänänänänånånånånänãnãnânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnänänãnãnãnãnãnãnãnãnänänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänänänãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânãnãnãnãnãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânãnãnânãnãnãnânânânânânânânânánânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnânânânânânânânânânânãnãnânânânânânânânânânânânânãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnânãnãnãnänänänänänänänänänänånånånånänãnãnânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnänãnãnãnãnãnânãnãnãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänänänãnãnãnãnãnãnãnânânânãnãnânânânânãnânânânânânânânânãnãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânánánánânânânãnãnânãnãnãnânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnânânânânânânânânãnãnânânânânânânânânânânânânãnânânânânãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnänänänänãnãnänänänänänånånänänãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänãnãnãnãnãnãnãnãnãnânânãnãnãnãnânãnãnãnãnãnânânânânânânãnãnãnãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânánánânânãnãnãnânãnãnãnânânânânânânânânânânânânânânânânânânânânânãnãnânânânânânânânânânânânânãnãnãnänänãnãnãnãnânânânãnãnânânãnãnãnânânânãnãnãnânânânânânânãnânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnänänänãnãnãnãnãnãnãnänänänänãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnânânânânãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnänãnãnãnãnãnãnãnânânánánânânânânánânânãnãnãnãnãnânânânânânânânânânânânânânânânânânânânânânânânãnãnãnânânânânânânânânânânánânânãnänänänãnãnãnãnãnânânãnãnãnãnãnãnãnânânânãnãnãnãnânânânânânãnânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnânânãnãnãnãnãnãnânânãnãnânânánánánânânânânânânãnänänänänãnãnânânânânânânânânânânânânânânânânânânânânânânãnãnãnânânânânânânânânânânánânânãnãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânãnãnãnänänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânánânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnânânânânânânánánánânânánánânânãnänånänänãnãnânânânânânánánánânânânânânânânânânânânânãnãnãnãnânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänãnãnânânánánânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânánánânânânânânãnãnänänänãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânãnãnãnânânânânânânânãnânânãnãnânânânânânãnãnãnãnãnãnânânânânânânánánánânânánánânânãnänänänãnãnânânânânânânánánánânânânânânânânânânânãnãnãnãnãnãnãnânânânânânânánánánánánânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnânânánánânânãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânãnãnãnânânãnãnãnãnãnãnãnãnãnãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnânânânânânánánánánánánánânânânãnãnãnãnãnânânânânânânânánánânânânânânânânânânânãnãnãnänänãnãnânânânânânánánánánánânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnänänänãnãnãnânânânânânânãnânânánánânânãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnänänänänãnãnãnãnãnãnãnãnãnãnãnãnânãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnânânânânánánánánánánánánânânânânãnânânânânânânânânânânânânânânânânânânânânânãnãnãnänänãnãnânânânânânánánánánánânánánánânânânânânãnãnãnãnãnãnãnãnãnãnãnänänänänãnãnânânânânânânânãnânânânânânãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânãnãnãnãnãnãnãnãnânânânãnãnânãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnânânânânânânânãnãnãnãnãnãnãnãnãnãnãnänänänänãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnânânânânánánánánánánánánánânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnânânânânânânánánánánânánánánánânânânânãnãnãnãnãnãnãnãnãnãnãnänänänänãnãnânânânânânânânãnânânânânânãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnânânãnãnânânânãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânãnãnãnãnãnãnãnãnãnãnãnänänänänänãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnânânãnãnânãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnânânânânânânânânânânânânânãnãnãnãnãnãnãnãnânânánánánánánánánânânánánânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnãnânânânânânânânânánánánánánánánánânânânânãnãnãnãnânânãnãnãnãnãnänänänãnãnânânânânânânânânãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnänänãnãnãnãnãnãnãnãnãnãnânânânãnãnãnânânânânânânânânânânânãnãnãnânânânãnãnãnãnânãnãnânânânãnânânânânânânânânânânãnãnãnãnãnãnãnânânánánánànànànánãnânánánânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnânânânânânânânânánânánánánánánánânânânânânãnãnãnãnânânânãnãnãnãnãnãnãnãnãnânânânânânânânânãnânânânânânãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnânânânânãnãnãnãnãnãnãnänänänãnãnãnãnãnãnãnânânânânânânânânânânãnãnânânânãnãnãnãnãnãnãnãnânânânânânânânãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnânânânânânânânânânânânãnãnãnãnânânânãnãnânânãnãnânânânânânânânânânânânânânânãnãnãnãnãnãnânânânánánánànànànánânânánânânânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnânânânânânânânánánánánánánánánánânânânânânãnãnãnãnânânânãnãnãnãnãnãnãnãnânânânânânânânânânãnânânânânânãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnânânânânânânãnãnãnãnãnänänänãnãnãnãnãnãnânânânânânânânânânânânânânânânânãnãnãnãnãnãnãnãnânânânânânânânânãnãnãnãnãnãnânânânãnãnânãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnânãnãnânânânânânânãnãnãnãnãnãnânânânânânânânânânânânánánánánânânânânânânânânãnãnãnãnãnânânânánánánànànànànànánánánânânânânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnânânânânânânânánánánánánánánánánânânânânânânânânânânânãnãnãnânânãnãnãnânânânânânânânânânânãnânânânânânânãnãnãnãnãnãnânânânãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânãnãnãnãnãnãnãnänänänãnãnãnãnãnãnãnânânânânânânânânânânânânânânânãnãnãnãnãnãnãnânânânânânânânânãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânãnãnãnãnãnãnânânânânânânânânânânânánánánánánánánánânânânânânãnãnãnânânânánánánánànànànànànànánánânânânânânânânânânânânânánánánánânânânânânânânãnãnãnãnãnãnãnânânânânânânánánánánánánánánánánánânânânânânânânânãnãnãnânânânânânãnânânânânânânânânânânãnânânânânânânãnãnãnânânânânânânãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânánânânânânânânânânânânânânãnãnãnãnânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânãnãnãnãnãnãnãnãnânânânânânânânânânánánànànànánánánánánânânânânânãnânânânánánánànànànànßnßnànànánánânânânânânânânânânânânânánánánânânânãnãnânãnãnãnãnãnãnãnãnãnânânânânânânánánánánánánánánánánánânânânânânânânãnãnãnãnânânánânânãnânânânânânânânânânânãnânânânânânânãnãnãnãnãnãnãnãnânãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânãnãnãnãnânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnânânânânânânânânânánánánànànànánánánânânânânânânânânânânânánánànànßnßnßnßnànànánánânânânânânânânânânânânânânánánánánânânânânãnãnãnãnãnãnãnãnãnânânânânânânánánánánánánánánánánánânânânânânãnãnãnãnãnãnânânánânânânânânânânânânânânânânãnânânânânânãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnânãnãnãnãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânãnãnãnânânânânânânânânânânânãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânánánánánánánánánànánánânãnãnânânânânânânânânânánánànßnßnßnßnànànànánánânânânânânânânânânânânânânânânánánánânânânãnãnãnãnãnãnãnãnãnânânânânânânánánánánánânânánánânânânânânânãnãnãnãnãnãnânânânânânânânânânânânânânânânânânãnânânânânânãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänänânânânânânãnãnãnânânânãnãnãnânânânânânânânânânânânãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnânânânânánánànánánánánánànánánânânânânânânãnânânânânânánánànßnßnßnßnßnànànànánânânãnãnânânânânânânânânânânânânánánânânânânãnãnãnãnãnãnãnãnânânânânânânánánànánánânánánânânânânãnânãnãnãnãnãnânânânânânânânânânânânânânânânánânânânãnânânânânânânânânãnãnãnãnãnãnãnãnânânânãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânãnãnãnãnânânânânânânânânânânânânânânânânânãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnânânânãnãnãnãnãnãnãnãnânânãnânânânânánánánánânánánànànánánânânânânânânãnãnânânânânânánànßnßnßnßnßnßnànànánânãnãnãnânânânânânânãnânânânânânânânânânânânânânãnãnãnãnãnãnânânânânânânánànànánánánánânânânânãnãnãnãnãnãnãnãnânânânânânânânânânânânânânánánánánânânãnânânânânânânânânãnãnãnãnãnãnãnânãnânânânânãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnânânânânânânânânãnãnãnãnânânânânânânánánânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnänãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnânânánânãnãnãnãnãnãnãnãnânânânânânânânánánánánânánànànànánánânânânânânânãnãnânânânânánánànßnÞnÞnÞnÞnßnßnànánânãnãnãnânânânânânânânânânânânânânânânânânânânânânãnãnãnãnãnânânânânânânánánánánánânânãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânánánánànánánânânãnânânânânânânânânãnãnãnãnãnânânânânânânânãnãnãnânânãnãnãnãnãnãnânânânânãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnânãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânãnãnãnânánánánánánánánânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânánânãnãnãnãnãnãnãnãnãnãnânânânânânánánánánánànànànànánánânânânânânânãnãnânânânânánánànßnÞnÞnÞnÞnÞnßnànánânãnãnãnânânânânânânânânânânánánânânânânânânânânânãnãnãnãnãnânânânânânânânánánânânânãnänänänãnãnãnãnãnãnãnãnânânânânânânânânánánánánánànànànànánánânãnânânãnânânânânânãnãnãnãnãnânânânânânânânânânânânânânãnãnãnãnãnânânânânãnãnânânânãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnânânãnânânânânânânânânânânânânânânânánánánánánánánânânânânânânânânãnãnânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnänãnãnãnânânânãnãnãnãnãnãnãnãnãnãnãnânânânânánánánánànànànánánánânânânãnânânãnãnãnãnânânânánánànßnÞnÝnÝnÞnÞnßnànánânânânânânânânânânânânânânánánánânânânânânânânânãnãnãnãnãnãnânânânânânânânânânânânãnänånånänãnãnãnãnãnãnãnânânánánánánánánánànànànànànßnßnßnànànánânãnãnãnãnânãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânãnãnânânânânânânânãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânánánânânânânânânânânánànànánánánánânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnãnãnãnãnãnãnãnãnãnänänänänänãnânânânãnãnãnãnãnãnãnãnãnãnãnãnânânânánánánànànànánánânânânânânânânânãnãnãnãnãnânânánánànßnÞnÝnÝnÞnÞnßnànànánânânânânânânânânânânânânánánánânânânânânânânânânãnãnãnãnânânânânânânânânânânânãnãnänånånänãnãnânãnãnãnânânánßnÞnÞnÞnßnßnÞnÝnÞnÞnÞnÞnÞnÞnßnßnànánânãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânãnãnãnânânânânânânânãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânãnãnãnânânânânânânânânânânânânânânánánánánánánánánánânânânânânânânânânânânãnãnãnânânânãnânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnänänånänänãnânânânânãnãnãnãnãnãnãnãnãnãnãnânânánánánánànßnànánânânãnãnânânânânânãnãnãnãnãnânânánánànßnÞnÞnÞnßnßnßnànánánánânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânânãnänänänänãnânânânânânánànÞnÜnÚnÚnÚnÚnÚnÙnÙnÚnÜnÜnÜnÜnÝnÞnßnßnánânãnânânãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânãnãnãnãnânânânânânãnãnânânânânânãnãnãnänänãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânánánánánánánánánânânânânânânânânânânãnãnãnãnânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnãnänänänãnânânânânânânãnãnãnãnãnãnãnãnãnãnãnânânânánánànànànánânãnãnãnãnânânânânãnãnãnãnãnânânânânànßnÞnÞnÞnßnßnßnánánànánánânânânãnãnãnânânânânânânânânânânânânánánânânânânánánánánânânânánánánânânânânãnãnãnãnãnânánànànànßnÞnÜnÙnÖnÔnÒnÒnÒnÒnÒnÓnÖnØnÙnÚnÚnÜnÞnßnßnànânãnânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânãnânânânânânãnãnãnânânânânãnãnãnãnänãnãnãnãnãnãnãnãnânãnãnãnãnãnãnânãnãnãnãnãnânânânânânânánânânânânânánánánánánánánánánânânânânânânânânãnãnãnãnânânânánánánánánánánânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânãnãnãnãnânânãnãnãnãnãnãnânânânánánànànánânânãnãnãnânânânânânãnãnãnãnânânânánànßnÞnÞnÞnßnßnßnánánánánánânânãnãnãnãnânânânânânânânânânânánánánánánánánànànànànànánánánànànànánânânânânânânânánànßnÝnÜnÛnÚnØnÔnÐnËnÇnÆnÆnÇnÆnÇnËnÐnÓnÕnÖnØnÛnÞnßnßnànânãnânânânânãnãnãnãnãnãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânãnãnãnânânânânânãnãnãnãnãnãnãnãnãnãnânânânânânãnãnãnãnânânânãnãnãnãnãnânânânânánánánânânânânánánánánánánánánánânânânânânânãnãnãnãnãnânânânánánànànánánànánánánânânânânânãnãnãnãnãnãnãnãnãnãnânânânânânânânânânãnãnânânânânânãnãnãnãnânânânánánánánánânânânânânânânânânânânânânânânânânánànßnßnßnßnßnßnßnànànánánánánânânãnãnãnânânânânânânânânânánánànànànßnßnßnßnßnÞnÞnßnßnßnßnßnÞnßnànánánânânánánànßnÝnÛnØnÕnÓnÐnÌnÆnÀn¹n´n³nµn·n·n»nÂnÈnÍnÐnÓn×nÛnÞnßnßnànânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnânânânânânânânânânânânânânânãnãnãnânânânânânânãnãnãnãnãnânânânânânânânânânânânãnânânânânãnãnãnãnãnãnãnânânánánánânânânânánánánánánánánánánânânânânânãnãnãnânânânânánánánànànßnànànànànánánânânânânânânânânânânãnãnãnãnãnânânânânânânânânânânânânânânânânânãnãnãnânânânânánánánánânânânânânânânânânânânânânânânânánánànànßnßnßnßnßnßnànànánánánánânânânânânânânânânânânânânánánànànßnÞnÞnÞnßnÞnÝnÝnÝnÝnÝnÞnÝnÝnÜnÝnÞnßnànánánànßnÝnÛnØnÔnÎnÉnÅn¿n¸n¯n§n nnn n¤n§n°n¹n¿nÅnÊnÐnÖnÚnÝnßnßnànânânânânânânânânânânânânânãnãnãnãnãnãnãnãnãnãnãnânânânânânânánânânânânânânânânânânánânânânânânânânânânânânânânânánânânânânânânânânãnãnãnãnãnãnãnãnânânânânânânãnânânânánánánànànánánánânânânânânânânânânánánànànànßnÞnÞnÞnÞnÞnßnànánánánánánánánánânânânânânãnãnânânânânânânânânânânânânânânânânánânânânânânânânânânânánânânânânânânânánánánánánánánánánánánánánánànànànànànànànànánánánánánánánánánánánánânánánánánánànànßnÞnÝnÝnÞnßnÞnÝnÜnÜnÜnÝnÝnÜnÜnÛnÛnÜnÝnÞnßnßnÞnÜnÚnÖnÑnÉnÀn¸n°n¨nnnnn~nnnnn¢n«n´n¼nÃnËnÒnØnÜnÞnßnànânânânânânânánánánánánânânânãnãnãnãnãnãnãnãnãnãnânânânânânánánânânânânânânânânánánánánánânânânânânânânánânânánánánânânânânânânânãnãnãnãnãnänänãnãnãnânânânãnãnänãnânânánánánánánánánânânânânânânânánánànßnßnÞnÞnÞnÝnÜnÛnÚnÚnÛnÝnÞnÞnßnßnßnßnßnànànánânânânânânânânânânânânãnânânânânânânânânânânánánânânânânânânânânânânânânânânánánánánánànànànánánánánánánánânânánànànànànànànànànànànànànànànànßnßnànánánánánánánánánànßnÞnÝnÜnÝnÞnÞnÝnÜnÜnÝnÞnÞnÝnÛnÛnÚnÚnÛnÜnÜnÛnÚnØnÕnÐnÈn¾n°n¡nnnntnnnjnenenmnynnnn¦n±n»nÃnËnÒnØnÜnÞnànânânânânánánánánánánánánánânânãnãnãnãnãnãnãnãnãnânânânânânánánánánánânânânánánánánánánánánánánánánánánánánánánànánânânãnãnânãnãnãnãnãnänänänänänänãnãnãnãnãnänånänãnânânánánánánánânânânánánánánánànßnÞnÝnÜnÛnÛnÚnÚnØnÖnÕnÕn×nÙnÙnÚnÛnÛnÛnÛnÜnÝnÞnànánánánánánánânânânânãnãnânânânânânânânânânânânánânânânânânânânânânânánánánánánánànànànànànànànánánánánánánânânánánánànànànànànànànßnßnßnßnÞnÞnÞnÞnànánánánánánânãnãnânánßnÝnÜnÝnÝnÞnÝnÜnÝnÞnßnßnÝnÜnÛnÚnÙnÚnÚnÚnØnÖnÓnÏnÉnÀn²nnnwnkncn_ncn_nUnRn\nlnynnnn£n®n¸nÂnËnÒnÙnÝnànânânânánánánánánánánánánánánânãnãnãnãnãnãnãnãnãnãnânânânânânánánánánánânânânânánánánánánánánánánànànànànànànànànánânãnãnânânãnãnãnãnänänänånånånånänänänänänånænånãnânânânânânânânânânânánánánànßnÞnÜnÚnÙn×nÖnÖnÕnÔnÓnÑnÏnÎnÑnÓnÔnÕnÕnÕnÕnÖn×nÙnÜnÞnßnànànànánánánánânânânânânânânânânânânânânânânânânânânânânânânânânânánánánánànànànßnßnànànànànánánânânânánánánánánánánánànànànànßnßnßnßnßnÞnßnßnànánánánánânânânänænånänánÝnÜnÝnÝnÝnÝnÝnÞnßnànànßnßnÝnÜnÚnÙnÙnÙn×nÓnÎnÊnÃn¹n¨nnxnanRnInKnRnPnJnKnUncnknpnunnnnªn¶nÂnÍnÖnÝnànânânânánánánánánànànànànànánánânãnãnãnãnãnãnãnãnãnãnânânânânánánánánánánánânânânánánánánánánànànànßnßnßnÞnÞnßnánânãnänãnânânãnãnänänänänånænænçnænænånånånänånånänãnãnânãnãnãnânânânânánánánànßnÝnÛnÙn×nÕnÓnÑnÐnÏnÎnÍnËnÉnÊnÌnÎnÏnÐnÑnÐnÏnÑnÔn×nÚnÜnÝnÞnßnànànánánánânânânânânânânânânânânânânânânânãnãnânánànánânânânánánánànànànànànànßnànànànànánánânânânânânânânânânânânánánánànànßnßnßnßnßnànânänånãnânânãnânânänènênènänßnÞnßnßnßnßnßnßnßnànánânánánànÜnÚnÚnÙnÖnÑnÌnÅn¼n¯nnntn^nGn7n6n9n8n<nDnMnVnZn]ndnpn|nnn®n½nÊnÕnÜnànânânánánànànànànànànànànànànánânãnänänãnänänänänänãnãnãnânânânânânânânânânãnãnánánánânânânánànànßnßnßnÞnÝnÝnÞnánänænçnånânânãnänänänänånænçnénénènçnænånånånänänänänänãnãnãnãnânânânânánánànßnÝnÛnÙnÖnÕnÒnÏnÍnÌnÊnÊnÈnÇnÆnÇnÊnËnÌnÎnÏnÎnÎnÐnÔn×nÙnÚnÛnÜnÝnßnànánánánánânânânánânãnãnãnãnânânánânânãnãnãnãnànÞnànânânânánánánànànànànànànànànànànànánánânãnänänänãnãnãnänänänãnãnãnãnânânánánánánânãnçnénçnånånånänânçnînònðnénãnânånånãnãnãnãnãnänånånänånånànÝnÜnÛn×nÑnËnÂn¶n¦nnnunanGn0n)n,n+n+n1n<nFnLnSn]nfnonnn°nÂnÍnÕnÜnànãnânánànànánánánànánánànànánânãnänånånänänänånånånänänänänãnãnãnänänånänänånänânánânãnänãnânánánànànßnÝnÜnÛnÞnânænênênçnänânãnänånænænænènénënìnênènçnænænænænænænænånänänänänânànánânánánànÞnÜnÙnÖnÔnÒnÏnËnÉnÈnÇnÆnÅnÅnÅnÇnÉnÊnËnÎnÏnÏnÐnÒnÔnÖnØnÙnÙnÚnÜnÝnßnànànánânânânánànânãnãnãnãnânânânânãnãnãnãnãnànÞnànânãnânânánánànànànànànànànánánánánânânãnånçnçnænånãnánãnænçnænænænçnçnænånãnânânãnånénìnênénênênçnånënönýnûnñnènénînìnènénënënënënënênênìnìnçnânánßnÛnÔnÍnÄn¹n§nnntn_nFn0n'n(n%nn!n.n=nKnZninun{nnn¹nÌnÖnÛnßnânãnânánànánânânânánânânànÞnànãnänånænænænænænçnçnçnænænænånånänänænçnçnçnènénénçnånånænænånånçnénænânànßnÜnÛnÝnánænënìnènånãnänånènênênênënìnìnínìnênénènénénènènènènçnånænænænânÞnànãnânánànÝnÚn×nÔnÒnÐnÎnÊnÇnÆnÅnÃnÁnÃnÅnÈnÊnÊnËnÎnÏnÏnÑnÒnÓnÕn×nØn×nØnÙnÜnÞnÞnßnánânânânánànânãnãnänänãnânânãnãnânânãnãnánànánânânánânânânánánánánànànánânânánânänänånænènénènçnänßnànænênënìnînðnînìnênçnänãnänçnënínìnínðnònînênðnünoo÷nñnönûnønònôn÷n÷nönônónónõnýnoønínênènånÞnÕnÍnÃn°nn~nlnSn?n2n+n)n%n
+n n-n<nOngn}nnnn©n¿nÔnßnãnänånånãnânânãnänänänãnãnânÝnÙnÝnânänænénënênénénënìnënénénénènènænænênìnìnênìnðnònðnìnénénénçnênðnònínænânánànánänånænênênènænånænènìnðnðnïnînínînïnïnïnînînînínínìnënênçnçnénénènãnànânänänânànÝnÚnÖnÔnÒnÐnÏnËnÇnÇnÇnÁn¼nÀnÆnËnÎnÍnÌnÎnÏnÐnÑnÒnÒnÓnÕnÖnÖn×nØnÛnÝnßnßnànânãnãnânánânánßnânånänânânãnånänänånænånänãnãnânánânãnãnânânãnãnânànánãnãnânänænçnçnènènênënënènãnánænìnðnñn÷nûnønõnônñnìnénènênïnónõnönønûnúnõnønoooûnýno
+o	ooooooÿnýnÿno
+oo
+oÿnúnönónînænÛnÎnºnn|ndnMn?n;n9n8n5n-n,n7nBnQnknnn¡n¨n¯nÃn×nånënìnénènãnãnãnånçnènçnænänãnÞnØnÚnànånénînñnînínínðnònñnïnínënënënênìnñnónónñnònúnoþnùnónñnðnínînónônïnènänänånênònïnénènénénènènênïnõnùnønönñnïnðnónônönönõnônónònðnînìnénénìnìnënçnænçnènçnänânßnÛnØnÕnÓnÒnÏnÊnÉnÌnÌnÃn¹n¾nÆnÍnÑnÐnÏnÑnÒnÓnÓnÔnÔnÓnÔnÕnÖnØnÛnÜnÞnànánânãnänånänãnãnÞnÚnànænænänãnånçnçnènénènénènænænänânãnånänãnänçnçnänánânånænänånçnênënënênìnînînînínênênðnõnønÿnooþnÿnýnùnõnñnñn÷nÿnoûnöno
+o	oo	oooo
+oooooooooooooooooo	ooooónânÍn®nnwndnVnQnRnVnUnLnInQnYncnwnnn¤n±n»nÎnãnñnøn÷nñnínãnãnånènênënënènænænãnÝnÜnßnänênðnònðnïnònönùnønönónðnðnñnðnòn÷nønøn÷nønooo
+ooÿnünõnðnònñnënænånçnènënónònínìnînïnïnñnônúnoooþnún÷nùnünoooýnúnúnúnønõnónïnînïnðnînìnënìnînìnènånànÝnÚnÙn×nÔnÐnÌnÏnÔnÓnÇn½nÁnËnÐnÔnÒnÒnÕn×nÙnÙnÛnÚn×nÖnÖn×nÛnßnßnßnànãnänånænænænçnænßnÜnãnénénènçnènènènênënênìnínënénènènénènænänænënênænänænênênçnænênðnñnðnïnðnònónônön÷nön÷nüno
+oo
+o	o
+o
+o
+o	ooûno
+ooýnëno$o%o!ooooo
+o
+o
+o!o"o!o%o&o#o&o*o)o"o
+oo#o)o)o
+oo
+o$o
+ooênÎn¸n­nnn
+nnn
+nznxn
+nnnnnn¢nÁnØnïnoo
+o	ooønänänènënínînínênénënênænänãnænìnðnònònònônünooýnúnùnünþnûnúnÿnünônõnýn
+o
+o%o"ooo
+oÿnônônïnänçnínñnònínênñnøno
+o
+oooo
+oooo
+oooo
+oooo
+ooooooýnùn÷n÷nönónïnínïnónònínænßnÝnÞnÞnÝnÚnÕnÓnØnÜnØnÏnÉnÎnÖnÚnÚnÖn×nÜnßnànánänânÞnÝnÜnÜnÞnânånänânånènênênénênënènãnänénënínînínënènénínïnînðnñnðnïnïnðnðnînënénënïnínènènënînînènånínønúnøn÷nønúnünþnoooooo
+oooo
+o
+oo
+ooooo)o	oìn
Index: /ogreode/demos/Media/apache_body.material
===================================================================
--- /ogreode/demos/Media/apache_body.material	(revision 21)
+++ /ogreode/demos/Media/apache_body.material	(revision 21)
@@ -0,0 +1,15 @@
+
+material Ac3d/apache_body/Mat001_Tex00
+{
+	technique
+	{
+		pass
+		{
+            specular 0.5 0.5 0.5 0.75 15
+			texture_unit
+			{
+				texture apache.png
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/autoterraintexture.cg
===================================================================
--- /ogreode/demos/Media/autoterraintexture.cg	(revision 21)
+++ /ogreode/demos/Media/autoterraintexture.cg	(revision 21)
@@ -0,0 +1,58 @@
+// Vertex program for automatic terrain texture generation
+void main_vp
+(
+    float4             iPosition           : POSITION,
+	float4             iNormal             : NORMAL,
+	float2             iTexcoord           : TEXCOORD0,
+
+	out float4         oPosition           : POSITION,
+	out float4         oTexcoord           : TEXCOORD0,
+	out float4         oColor0             : COLOR0,
+	out float4         oColor1             : COLOR1,
+	out float4         oFog                : TEXCOORD1,
+
+	uniform float4x4   worldViewProj,
+	uniform float4     lightDirection,
+	uniform float4     ambientLight,
+
+	uniform float4     configSettings,
+	uniform float4     fogSettings,
+	uniform float4     fogColour
+)
+{
+    // Calculate the output position and texture coordinates
+	oPosition  = mul(worldViewProj,iPosition);
+    oTexcoord = float4(iPosition.x,iPosition.z,0.0,0.0) * configSettings[0];
+
+    float fog = clamp(( oPosition.z - fogSettings[0] ) / (fogSettings[1] - fogSettings[0]),0.0,1.0) * fogSettings[2];
+
+    // Calculate the diffuse and the ambient lighting
+    float diffuse = dot(iNormal,lightDirection);
+
+    // Set the output color based on the lighting
+    float rock_factor = (iNormal.y > configSettings[1])?0.0:(clamp((configSettings[1] - iNormal.y) * configSettings[2],0.0,1.0));
+    float4 color = float4(diffuse,diffuse,diffuse,1.0) + (ambientLight * configSettings[3]);
+    oColor0 = (1.0 - fog) * (color * (1.0 - rock_factor));
+    oColor1 = (1.0 - fog) * (color * rock_factor);
+    oFog = fogColour * fog;
+}
+
+// Fragment program for automatic terrain texture generation
+void main_fp
+(
+    float4              iTexcoord	: TEXCOORD0,
+    float4              iColor0     : COLOR0,
+    float4              iColor1     : COLOR1,
+    float4              iFog        : TEXCOORD1,
+
+	out float4          oColor		: COLOR,
+
+    uniform sampler2D   textureUnit0,
+    uniform sampler2D   textureUnit1
+)
+{
+    // Sample the texture to get the output colour, times the lighting
+	oColor = iFog + (tex2D(textureUnit0,iTexcoord.xy) * iColor0) + (tex2D(textureUnit1,iTexcoord.xy) * iColor1);
+	oColor.a = 1.0;
+}
+
Index: /ogreode/demos/Media/autoterraintexture.material
===================================================================
--- /ogreode/demos/Media/autoterraintexture.material	(revision 21)
+++ /ogreode/demos/Media/autoterraintexture.material	(revision 21)
@@ -0,0 +1,81 @@
+vertex_program AutoTerrainTexture/VP cg
+{
+	source autoterraintexture.cg
+	entry_point main_vp
+	profiles vs_2_0 arbvp1
+}
+
+fragment_program AutoTerrainTexture/FP cg
+{
+	source autoterraintexture.cg
+	entry_point main_fp
+	profiles ps_2_0 arbfp1
+}
+
+
+material AutoTerrainTexture/GrassyKnoll
+{
+    receive_shadows on
+	technique
+	{
+		pass
+		{
+			vertex_program_ref AutoTerrainTexture/VP
+			{
+                param_named_auto worldViewProj      worldviewproj_matrix
+                param_named_auto lightDirection     light_direction_object_space 0
+               	param_named_auto ambientLight       ambient_light_colour
+
+               	// Config settings are;
+               	//     world to texture scale
+               	//     rock slope start
+               	//     rock slope scale
+               	//     ambient light scale factor
+               	param_named configSettings float4 0.02 0.95 6.0 0.25
+
+                // Fog settings are;
+                //     start
+                //     end
+                //     scale (e.g. 0.0 to switch off)
+               	param_named fogSettings float4 500.0 1000.0 1.0 0.0
+
+                // Fog colour
+               	param_named fogColour float4 0.93, 0.86, 0.76 1.0
+			}
+
+			fragment_program_ref AutoTerrainTexture/FP
+			{
+			}
+
+			texture_unit
+			{
+				texture grass.jpg
+				tex_address_mode wrap
+			}
+
+			texture_unit
+			{
+				texture rocks.jpg
+				tex_address_mode wrap
+			}
+		}
+	}
+	technique
+	{
+		pass
+		{
+			//texture_unit
+			//{
+			//	texture grass.jpg
+			//	tex_address_mode wrap
+			//}
+
+			texture_unit
+			{
+				texture rocks.jpg
+				tex_address_mode wrap
+			}
+		}
+	}
+}
+
Index: /ogreode/demos/Media/ball.material
===================================================================
--- /ogreode/demos/Media/ball.material	(revision 21)
+++ /ogreode/demos/Media/ball.material	(revision 21)
@@ -0,0 +1,19 @@
+
+material Ac3d/Ball/Mat001_Tex00
+{
+    receive_shadows off
+	technique
+	{
+		pass
+		{
+			ambient 1 1 1 1
+			diffuse 1 1 1 1
+			specular 1 1 1 1 10
+
+			texture_unit
+			{
+				texture ball.png
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/capsule.material
===================================================================
--- /ogreode/demos/Media/capsule.material	(revision 21)
+++ /ogreode/demos/Media/capsule.material	(revision 21)
@@ -0,0 +1,20 @@
+
+material Ac3d/Capsule/Mat001_Tex00
+{
+    receive_shadows off
+	technique
+	{
+		pass
+		{
+			ambient 1 1 1 1
+			diffuse 1 1 1 1
+			specular 1 1 1 1 10
+
+			texture_unit
+			{
+				texture capsule.png
+				tex_address_mode clamp
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/crate.material
===================================================================
--- /ogreode/demos/Media/crate.material	(revision 21)
+++ /ogreode/demos/Media/crate.material	(revision 21)
@@ -0,0 +1,18 @@
+
+material Ac3d/Crate/Mat001_Tex00
+{
+//    receive_shadows off
+	technique
+	{
+		pass
+		{
+			ambient 1 1 1 1
+			diffuse 1 1 1 1
+
+			texture_unit
+			{
+				texture crate.png
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/door.material
===================================================================
--- /ogreode/demos/Media/door.material	(revision 21)
+++ /ogreode/demos/Media/door.material	(revision 21)
@@ -0,0 +1,14 @@
+
+material Ac3d/Door/Mat001_Tex00
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture door.png
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/gun.material
===================================================================
--- /ogreode/demos/Media/gun.material	(revision 21)
+++ /ogreode/demos/Media/gun.material	(revision 21)
@@ -0,0 +1,14 @@
+
+material Ac3d/gun/Mat015_Tex00
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture gun.jpg
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/jeep.ogreode
===================================================================
--- /ogreode/demos/Media/jeep.ogreode	(revision 21)
+++ /ogreode/demos/Media/jeep.ogreode	(revision 21)
@@ -0,0 +1,86 @@
+<ogreode>
+    
+	
+	<!-- Create the vehicle using the supplied name and body mesh, make it 1.5 units heavy
+		 e.g. tonnes and offset the center of gravity by half (a metre) to make it more stable
+		 This puts the CoG somewhere around the wheel hubs, which is probably reasonably
+		 realistic for a sports-car -->
+    <vehicle name="Jeep">
+
+        <body mesh="jeep_body.mesh">
+		  <mass value="3" x="0" y="-1" z="0" />
+        </body>
+
+        <wheel mesh="jeep_wheell.mesh" x="1" y="-1.1" z="1.8" mass="0.06">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheelr.mesh" x="-1" y="-1.1" z="1.8" mass="0.06">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheell.mesh" x="1" y="-1.1" z="-1.6" mass="0.06">
+            <brake factor="0.25" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheelr.mesh" x="-1" y="-1.1" z="-1.6" mass="0.06">
+            <brake factor="0.25" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.004" />
+        </wheel>
+
+		<suspension spring="100" damping="3.6" step="0.01" />
+
+		<engine redline="30.0" brake="15.0">
+            <torque min="0.5" max="10.0" />
+        </engine>
+    </vehicle>
+    
+    <!-- Same but with antisway -->
+    <vehicle name="JeepSway">
+
+        <body mesh="jeep_body.mesh">
+		  <mass value="3" x="0" y="-1" z="0" />
+        </body>
+
+        <wheel mesh="jeep_wheell.mesh" x="1" y="-1.1" z="1.8" mass="0.06">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.25" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheelr.mesh" x="-1" y="-1.1" z="1.8" mass="0.06">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.25" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheell.mesh" x="1" y="-1.1" z="-1.6" mass="0.06">
+            <brake factor="0.25" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.25" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheelr.mesh" x="-1" y="-1.1" z="-1.6" mass="0.06">
+            <brake factor="0.25" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.25" fds="0.004" />
+        </wheel>
+
+		<suspension spring="70" damping="3.6" step="0.01" />
+
+	<engine redline="40.0" brake="20.0">
+            <torquecurve value="0.7" />
+            <torquecurve value="1.3" />
+            <torquecurve value="1.9" />
+            <torquecurve value="02.5" />
+        </engine>
+        
+        <antisway swayForce="200.0" forceLimit="5" rate="0.06"/>  
+    </vehicle>
+</ogreode>
+
Index: /ogreode/demos/Media/jeep_body.material
===================================================================
--- /ogreode/demos/Media/jeep_body.material	(revision 21)
+++ /ogreode/demos/Media/jeep_body.material	(revision 21)
@@ -0,0 +1,16 @@
+
+material Ac3d/Jeep_Body/Mat001_Tex00
+{
+    receive_shadows off
+	technique
+	{
+		pass
+		{
+			specular 1 1 1 1 10
+			texture_unit
+			{
+				texture red_jeep.jpg
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/jeep_wheell.material
===================================================================
--- /ogreode/demos/Media/jeep_wheell.material	(revision 21)
+++ /ogreode/demos/Media/jeep_wheell.material	(revision 21)
@@ -0,0 +1,30 @@
+
+material Ac3d/Jeep_WheelL/Mat001_Tex01
+{
+    receive_shadows off
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture jeep_wheel.jpg
+			}
+		}
+	}
+}
+material Ac3d/Jeep_WheelL/Mat002_Tex01
+{
+    receive_shadows off
+	technique
+	{
+		pass
+		{
+			specular 1 1 1 1 10
+			texture_unit
+			{
+				texture jeep_wheel.jpg
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/jeep_wheelr.material
===================================================================
--- /ogreode/demos/Media/jeep_wheelr.material	(revision 21)
+++ /ogreode/demos/Media/jeep_wheelr.material	(revision 21)
@@ -0,0 +1,30 @@
+
+material Ac3d/Jeep_WheelR/Mat001_Tex01
+{
+    receive_shadows off
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture jeep_wheel.jpg
+			}
+		}
+	}
+}
+material Ac3d/Jeep_WheelR/Mat002_Tex01
+{
+    receive_shadows off
+	technique
+	{
+		pass
+		{
+			specular 1 1 1 1 10
+			texture_unit
+			{
+				texture jeep_wheel.jpg
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/kk3d.material
===================================================================
--- /ogreode/demos/Media/kk3d.material	(revision 21)
+++ /ogreode/demos/Media/kk3d.material	(revision 21)
@@ -0,0 +1,48 @@
+material kk3d/NatureI
+{
+	technique
+	{
+		pass
+		{
+			// No dynamic lighting, fully lit
+			lighting off
+
+			// Depth writing off (always display stuff in front of it)
+			depth_write off
+
+			// Texture layer 0
+			texture_unit
+			{
+				// 6-sided texture, stevecube_fr.jpg, stevecube_up.jpg etc
+				cubic_texture nature01.tga separateUV
+				// clamp to avoid fuzziness at edges due to filtering
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+
+material kk3d/DesertVII
+{
+    receive_shadows off
+	technique
+	{
+		pass
+		{
+			// No dynamic lighting, fully lit
+			lighting off
+
+			// Depth writing off (always display stuff in front of it)
+			depth_write off
+
+			// Texture layer 0
+			texture_unit
+			{
+				// 6-sided texture, stevecube_fr.jpg, stevecube_up.jpg etc
+				cubic_texture desert07_FR.jpg desert07_BK.jpg desert07_LF.jpg desert07_RT.jpg desert07_UP.jpg desert07_DN.jpg separateUV
+				// clamp to avoid fuzziness at edges due to filtering
+				tex_address_mode clamp
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/landscape.cfg
===================================================================
--- /ogreode/demos/Media/landscape.cfg	(revision 21)
+++ /ogreode/demos/Media/landscape.cfg	(revision 21)
@@ -0,0 +1,73 @@
+# The main world texture (if you wish the terrain manager to create a material for you)
+# WorldTexture=terrain_texture.jpg
+
+# The detail texture (if you wish the terrain manager to create a material for you)
+# DetailTexture=terrain_detail.jpg
+
+#number of times the detail texture will tile in a terrain tile
+# DetailTile=3
+
+# Heightmap source
+PageSource=Heightmap
+
+# Heightmap-source specific settings
+Heightmap.image=jeep_terrain.png
+
+# If you use RAW, fill in the below too
+# RAW-specific setting - size (horizontal/vertical)
+#Heightmap.raw.size=513
+# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
+#Heightmap.raw.bpp=2
+# Use this if you want to flip the terrain (eg Terragen exports raw upside down)
+#Heightmap.flip=true
+
+# How large is a page of tiles (in vertices)? Must be (2^n)+1
+PageSize=513
+
+# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
+TileSize=65
+
+# The maximum error allowed when determining which LOD to use
+MaxPixelError=3
+
+# The size of a terrain page, in world units
+PageWorldX=1500
+PageWorldZ=1500
+# Maximum height of the terrain
+MaxHeight=100
+
+# Upper LOD limit
+MaxMipMapLevel=5
+
+VertexNormals=yes
+#VertexColors=yes
+#UseTriStrips=yes
+
+# Use vertex program to morph LODs, if available
+# VertexProgramMorph=yes
+
+# The proportional distance range at which the LOD morph starts to take effect
+# This is as a proportion of the distance between the current LODs effective range,
+# and the effective range of the next lower LOD
+LODMorphStart=0.2
+
+# This following section is for if you want to provide your own terrain shading routine
+# Note that since you define your textures within the material this makes the
+# WorldTexture and DetailTexture settings redundant
+
+# The name of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamName=morphFactor
+
+# The index of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamIndex=4
+
+# The name of the material you will define to shade the terrain
+CustomMaterialName=AutoTerrainTexture/GrassyKnoll
+
+
Index: /ogreode/demos/Media/landscape.material
===================================================================
--- /ogreode/demos/Media/landscape.material	(revision 21)
+++ /ogreode/demos/Media/landscape.material	(revision 21)
@@ -0,0 +1,28 @@
+
+material Ac3d/landscape/Mat001_Tex00
+{
+	technique
+	{
+		pass
+		{
+			specular 0.2 0.4 0.2 0.5 10
+			texture_unit
+			{
+				texture grass.jpg
+			}
+		}
+	}
+}
+material Ac3d/landscape/Mat001_Tex01
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture soil_wall.jpg
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/landscape1.cfg
===================================================================
--- /ogreode/demos/Media/landscape1.cfg	(revision 21)
+++ /ogreode/demos/Media/landscape1.cfg	(revision 21)
@@ -0,0 +1,73 @@
+# The main world texture (if you wish the terrain manager to create a material for you)
+# WorldTexture=terrain_texture.jpg
+
+# The detail texture (if you wish the terrain manager to create a material for you)
+# DetailTexture=terrain_detail.jpg
+
+#number of times the detail texture will tile in a terrain tile
+# DetailTile=3
+
+# Heightmap source
+PageSource=Heightmap
+
+# Heightmap-source specific settings
+Heightmap.image=terrain01.raw
+
+# If you use RAW, fill in the below too
+# RAW-specific setting - size (horizontal/vertical)
+Heightmap.raw.size=257
+# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
+Heightmap.raw.bpp=2
+# Use this if you want to flip the terrain (eg Terragen exports raw upside down)
+#Heightmap.flip=true
+
+# How large is a page of tiles (in vertices)? Must be (2^n)+1
+PageSize=257
+
+# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
+TileSize=65
+
+# The maximum error allowed when determining which LOD to use
+MaxPixelError=3
+
+# The size of a terrain page, in world units
+PageWorldX=1500
+PageWorldZ=1500
+# Maximum height of the terrain
+MaxHeight=100
+
+# Upper LOD limit
+MaxMipMapLevel=5
+
+VertexNormals=yes
+#VertexColors=yes
+#UseTriStrips=yes
+
+# Use vertex program to morph LODs, if available
+# VertexProgramMorph=yes
+
+# The proportional distance range at which the LOD morph starts to take effect
+# This is as a proportion of the distance between the current LODs effective range,
+# and the effective range of the next lower LOD
+LODMorphStart=0.2
+
+# This following section is for if you want to provide your own terrain shading routine
+# Note that since you define your textures within the material this makes the
+# WorldTexture and DetailTexture settings redundant
+
+# The name of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamName=morphFactor
+
+# The index of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamIndex=4
+
+# The name of the material you will define to shade the terrain
+CustomMaterialName=AutoTerrainTexture/GrassyKnoll
+
+
Index: /ogreode/demos/Media/landscape2.cfg
===================================================================
--- /ogreode/demos/Media/landscape2.cfg	(revision 21)
+++ /ogreode/demos/Media/landscape2.cfg	(revision 21)
@@ -0,0 +1,73 @@
+# The main world texture (if you wish the terrain manager to create a material for you)
+# WorldTexture=terrain_texture.jpg
+
+# The detail texture (if you wish the terrain manager to create a material for you)
+# DetailTexture=terrain_detail.jpg
+
+#number of times the detail texture will tile in a terrain tile
+# DetailTile=3
+
+# Heightmap source
+PageSource=Heightmap
+
+# Heightmap-source specific settings
+Heightmap.image=terrain02.raw
+
+# If you use RAW, fill in the below too
+# RAW-specific setting - size (horizontal/vertical)
+Heightmap.raw.size=513
+# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
+Heightmap.raw.bpp=2
+# Use this if you want to flip the terrain (eg Terragen exports raw upside down)
+#Heightmap.flip=true
+
+# How large is a page of tiles (in vertices)? Must be (2^n)+1
+PageSize=513
+
+# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
+TileSize=65
+
+# The maximum error allowed when determining which LOD to use
+MaxPixelError=3
+
+# The size of a terrain page, in world units
+PageWorldX=500
+PageWorldZ=500
+# Maximum height of the terrain
+MaxHeight=100
+
+# Upper LOD limit
+MaxMipMapLevel=5
+
+VertexNormals=yes
+#VertexColors=yes
+#UseTriStrips=yes
+
+# Use vertex program to morph LODs, if available
+# VertexProgramMorph=yes
+
+# The proportional distance range at which the LOD morph starts to take effect
+# This is as a proportion of the distance between the current LODs effective range,
+# and the effective range of the next lower LOD
+LODMorphStart=0.2
+
+# This following section is for if you want to provide your own terrain shading routine
+# Note that since you define your textures within the material this makes the
+# WorldTexture and DetailTexture settings redundant
+
+# The name of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamName=morphFactor
+
+# The index of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamIndex=4
+
+# The name of the material you will define to shade the terrain
+CustomMaterialName=AutoTerrainTexture/GrassyKnoll
+
+
Index: /ogreode/demos/Media/landscape3.cfg
===================================================================
--- /ogreode/demos/Media/landscape3.cfg	(revision 21)
+++ /ogreode/demos/Media/landscape3.cfg	(revision 21)
@@ -0,0 +1,73 @@
+# The main world texture (if you wish the terrain manager to create a material for you)
+# WorldTexture=terrain_texture.jpg
+
+# The detail texture (if you wish the terrain manager to create a material for you)
+# DetailTexture=terrain_detail.jpg
+
+#number of times the detail texture will tile in a terrain tile
+# DetailTile=3
+
+# Heightmap source
+PageSource=Heightmap
+
+# Heightmap-source specific settings
+Heightmap.image=jeep_terrain.png
+
+# If you use RAW, fill in the below too
+# RAW-specific setting - size (horizontal/vertical)
+#Heightmap.raw.size=513
+# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
+#Heightmap.raw.bpp=2
+# Use this if you want to flip the terrain (eg Terragen exports raw upside down)
+#Heightmap.flip=true
+
+# How large is a page of tiles (in vertices)? Must be (2^n)+1
+PageSize=513
+
+# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
+TileSize=65
+
+# The maximum error allowed when determining which LOD to use
+MaxPixelError=3
+
+# The size of a terrain page, in world units
+PageWorldX=1500
+PageWorldZ=1500
+# Maximum height of the terrain
+MaxHeight=100
+
+# Upper LOD limit
+MaxMipMapLevel=5
+
+VertexNormals=yes
+#VertexColors=yes
+#UseTriStrips=yes
+
+# Use vertex program to morph LODs, if available
+# VertexProgramMorph=yes
+
+# The proportional distance range at which the LOD morph starts to take effect
+# This is as a proportion of the distance between the current LODs effective range,
+# and the effective range of the next lower LOD
+LODMorphStart=0.2
+
+# This following section is for if you want to provide your own terrain shading routine
+# Note that since you define your textures within the material this makes the
+# WorldTexture and DetailTexture settings redundant
+
+# The name of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamName=morphFactor
+
+# The index of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamIndex=4
+
+# The name of the material you will define to shade the terrain
+CustomMaterialName=AutoTerrainTexture/GrassyKnoll
+
+
Index: /ogreode/demos/Media/landscape4.cfg
===================================================================
--- /ogreode/demos/Media/landscape4.cfg	(revision 21)
+++ /ogreode/demos/Media/landscape4.cfg	(revision 21)
@@ -0,0 +1,73 @@
+# The main world texture (if you wish the terrain manager to create a material for you)
+# WorldTexture=terrain_texture.jpg
+
+# The detail texture (if you wish the terrain manager to create a material for you)
+# DetailTexture=terrain_detail.jpg
+
+#number of times the detail texture will tile in a terrain tile
+# DetailTile=3
+
+# Heightmap source
+PageSource=Heightmap
+
+# Heightmap-source specific settings
+Heightmap.image=jeep_terrain.png
+
+# If you use RAW, fill in the below too
+# RAW-specific setting - size (horizontal/vertical)
+#Heightmap.raw.size=513
+# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
+#Heightmap.raw.bpp=2
+# Use this if you want to flip the terrain (eg Terragen exports raw upside down)
+#Heightmap.flip=true
+
+# How large is a page of tiles (in vertices)? Must be (2^n)+1
+PageSize=513
+
+# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
+TileSize=65
+
+# The maximum error allowed when determining which LOD to use
+MaxPixelError=3
+
+# The size of a terrain page, in world units
+PageWorldX=1500
+PageWorldZ=1500
+# Maximum height of the terrain
+MaxHeight=100
+
+# Upper LOD limit
+MaxMipMapLevel=5
+
+VertexNormals=yes
+#VertexColors=yes
+#UseTriStrips=yes
+
+# Use vertex program to morph LODs, if available
+# VertexProgramMorph=yes
+
+# The proportional distance range at which the LOD morph starts to take effect
+# This is as a proportion of the distance between the current LODs effective range,
+# and the effective range of the next lower LOD
+LODMorphStart=0.2
+
+# This following section is for if you want to provide your own terrain shading routine
+# Note that since you define your textures within the material this makes the
+# WorldTexture and DetailTexture settings redundant
+
+# The name of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamName=morphFactor
+
+# The index of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamIndex=4
+
+# The name of the material you will define to shade the terrain
+CustomMaterialName=AutoTerrainTexture/GrassyKnoll
+
+
Index: /ogreode/demos/Media/landscape5.cfg
===================================================================
--- /ogreode/demos/Media/landscape5.cfg	(revision 21)
+++ /ogreode/demos/Media/landscape5.cfg	(revision 21)
@@ -0,0 +1,73 @@
+# The main world texture (if you wish the terrain manager to create a material for you)
+# WorldTexture=terrain_texture.jpg
+
+# The detail texture (if you wish the terrain manager to create a material for you)
+# DetailTexture=terrain_detail.jpg
+
+#number of times the detail texture will tile in a terrain tile
+# DetailTile=3
+
+# Heightmap source
+PageSource=Heightmap
+
+# Heightmap-source specific settings
+Heightmap.image=jeep_terrain.png
+
+# If you use RAW, fill in the below too
+# RAW-specific setting - size (horizontal/vertical)
+#Heightmap.raw.size=513
+# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
+#Heightmap.raw.bpp=2
+# Use this if you want to flip the terrain (eg Terragen exports raw upside down)
+#Heightmap.flip=true
+
+# How large is a page of tiles (in vertices)? Must be (2^n)+1
+PageSize=513
+
+# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
+TileSize=65
+
+# The maximum error allowed when determining which LOD to use
+MaxPixelError=3
+
+# The size of a terrain page, in world units
+PageWorldX=750
+PageWorldZ=750
+# Maximum height of the terrain
+MaxHeight=100
+
+# Upper LOD limit
+MaxMipMapLevel=5
+
+VertexNormals=yes
+#VertexColors=yes
+#UseTriStrips=yes
+
+# Use vertex program to morph LODs, if available
+# VertexProgramMorph=yes
+
+# The proportional distance range at which the LOD morph starts to take effect
+# This is as a proportion of the distance between the current LODs effective range,
+# and the effective range of the next lower LOD
+LODMorphStart=0.2
+
+# This following section is for if you want to provide your own terrain shading routine
+# Note that since you define your textures within the material this makes the
+# WorldTexture and DetailTexture settings redundant
+
+# The name of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamName=morphFactor
+
+# The index of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamIndex=4
+
+# The name of the material you will define to shade the terrain
+CustomMaterialName=AutoTerrainTexture/GrassyKnoll
+
+
Index: /ogreode/demos/Media/main_rotor.material
===================================================================
--- /ogreode/demos/Media/main_rotor.material	(revision 21)
+++ /ogreode/demos/Media/main_rotor.material	(revision 21)
@@ -0,0 +1,15 @@
+
+material Ac3d/main_rotor/Mat001_Tex00
+{
+	technique
+	{
+		pass
+		{
+            specular 0.5 0.5 0.5 0.75 15
+			texture_unit
+			{
+				texture apache.png
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/myExplosion.particle
===================================================================
--- /ogreode/demos/Media/myExplosion.particle	(revision 21)
+++ /ogreode/demos/Media/myExplosion.particle	(revision 21)
@@ -0,0 +1,104 @@
+
+myExplosionTemplate
+{
+	quota	5000
+	material	PE/Streak
+	particle_width	0.2
+	particle_height	0.2
+	cull_each	false
+	renderer	billboard
+	billboard_type	point
+
+	emitter Point
+	{
+		angle	180
+		colour	1 1 0 1
+		colour_range_start	1 1 0 1
+		colour_range_end	1 0 0 1
+		direction	0 1 0
+		emission_rate	2000
+		position	0 0 0
+		velocity	0
+		velocity_min	0
+		velocity_max	26.09
+		time_to_live	0.5348
+		time_to_live_min	0.1048
+		time_to_live_max	0.5548
+		duration	0.1304
+		duration_min	0.1304
+		duration_max	0.1604
+		repeat_delay	0
+		repeat_delay_min	0
+		repeat_delay_max	0
+	}
+}
+
+
+myExplosionSmokewhiteTemplate
+{
+	quota	5000
+	material	PE/smoke
+	particle_width	2
+	particle_height	2
+	cull_each	false
+	renderer	billboard
+	billboard_type	oriented_self
+
+	emitter Point
+	{
+		angle	180
+		colour	1 1 1 1
+		colour_range_start	1 1 1 1
+		colour_range_end	1 1 1 0.1
+		direction	0 1 0
+		emission_rate	2000
+		position	0 0 0
+		velocity	0
+		velocity_min	0
+		velocity_max	6.522
+		time_to_live	0.2348
+		time_to_live_min	0.1048
+		time_to_live_max	0.2548
+		duration	0.1304
+		duration_min	0.1304
+		duration_max	0.1604
+		repeat_delay	0
+		repeat_delay_min	0
+		repeat_delay_max	0
+	}
+}
+
+
+myExplosionSmokeTemplate
+{
+	quota	5000
+	material	PE/smoke
+	particle_width	2
+	particle_height	2
+	cull_each	false
+	renderer	billboard
+	billboard_type	oriented_self
+
+	emitter Point
+	{
+		angle	180
+		colour	0 0 0 0.575342
+		colour_range_start	0 0 0 0.575342
+		colour_range_end	0 0 0 0.1
+		direction	0 1 0
+		emission_rate	2000
+		position	0 0 0
+		velocity	0
+		velocity_min	0
+		velocity_max	6.522
+		time_to_live	0.2348
+		time_to_live_min	0.1348
+		time_to_live_max	0.3348
+		duration	0.1304
+		duration_min	0.1304
+		duration_max	0.1604
+		repeat_delay	0
+		repeat_delay_min	0
+		repeat_delay_max	0
+	}
+}
Index: /ogreode/demos/Media/ninja.ogreode
===================================================================
--- /ogreode/demos/Media/ninja.ogreode	(revision 21)
+++ /ogreode/demos/Media/ninja.ogreode	(revision 21)
@@ -0,0 +1,15 @@
+<ogreode>
+    <ragdoll name="ninja" meshName="ninja.mesh">
+
+        <!-- Set up the default settings -->
+        <defaults>
+            <settings geometry="capsule"  joint="ball" collapse="none" mass="50" radius="0.25">
+                <damping angular="0.1" linear="0.1" />
+                <axis number="1" x="1" y="0" z="0" />
+                <axis number="2" x="0" y="1" z="0" />
+            </settings>
+        </defaults>
+
+    </ragdoll>
+</ogreode>
+
Index: /ogreode/demos/Media/ogreodedemos.overlay
===================================================================
--- /ogreode/demos/Media/ogreodedemos.overlay	(revision 21)
+++ /ogreode/demos/Media/ogreodedemos.overlay	(revision 21)
@@ -0,0 +1,105 @@
+OgreOdeDemos/Overlay
+{
+	zorder 500
+	// Stats block
+	container BorderPanel(OgreOdeDemos/Panel)
+	{
+		metrics_mode pixels
+		vert_align top
+        horz_align left
+		left 5
+		top 5
+		width 500
+		height 74
+		material Core/StatsBlockCenter
+        	border_size 1 1 1 1
+        	border_material Core/StatsBlockBorder
+        	border_topleft_uv     0.0000 1.0000 0.0039 0.9961
+	    	border_top_uv         0.0039 1.0000 0.9961 0.9961
+	    	border_topright_uv    0.9961 1.0000 1.0000 0.9961
+	    	border_left_uv        0.0000 0.9961 0.0039 0.0039
+	    	border_right_uv       0.9961 0.9961 1.0000 0.0039
+	    	border_bottomleft_uv  0.0000 0.0039 0.0039 0.0000
+        	border_bottom_uv      0.0039 0.0039 0.9961 0.0000
+	    	border_bottomright_uv 0.9961 0.0039 1.0000 0.0000
+
+
+		element TextArea(OgreOdeDemos/Name)
+		{
+			metrics_mode pixels
+			left 5
+			top 5
+			width 490
+			height 16
+			font_name BlueHighway
+			char_height 16
+			caption Name: None
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(OgreOdeDemos/Keys)
+		{
+			metrics_mode pixels
+			left 5
+			top 21
+			width 490
+			height 16
+			font_name BlueHighway
+			char_height 16
+			caption Keys: Press a function key; F1 - F6
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(OgreOdeDemos/Info)
+		{
+			metrics_mode pixels
+			left 5
+			top 37
+			width 490
+			height 16
+			font_name BlueHighway
+			char_height 16
+			caption Info:
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+
+		element TextArea(OgreOdeDemos/OtherKeys)
+		{
+			metrics_mode pixels
+			left 5
+			top 53
+			width 490
+			height 16
+			font_name BlueHighway
+			char_height 16
+			caption Extras: Space - Shadows, R - Look/Chase, E - Debug Objects
+			colour_top 0.5 0.7 0.5
+			colour_bottom 0.3 0.5 0.3
+		}
+	}
+}
+
+OgreOdeDemos/Target
+{
+	zorder 500
+	container Panel(OgreOdeDemos/Sights)
+	{
+		left 0.485937
+		top 0.475
+		width 0.0375
+		height 0.05
+		material OgreOdeDemos/TargetSights
+		metrics_mode relative
+		horz_align left
+		vert_align top
+		visible true
+		uv_coords  0 0 1 1
+		tiling 0 1 1
+		transparent false
+		}
+}
+
+
Index: /ogreode/demos/Media/ogreodedemos.particle
===================================================================
--- /ogreode/demos/Media/ogreodedemos.particle	(revision 21)
+++ /ogreode/demos/Media/ogreodedemos.particle	(revision 21)
@@ -0,0 +1,37 @@
+OgreOdeDemos/Rocket
+{
+    	material        	  Examples/Smoke
+    	particle_width  	  0.5
+    	particle_height 	  0.5
+    	cull_each       	  true
+    	quota           	  500
+    	billboard_type  	  point
+
+    	emitter Point
+    	{
+        	emission_rate     50
+        	time_to_live      1
+        	direction         0 1 0
+        	velocity_min      0.2
+        	velocity_max      1.0
+  	    }
+
+        affector ColourImage
+	    {
+		    image             smokecolors.png
+	    }
+
+        affector Rotator
+   	    {
+        	rotation_range_start  		   0
+        	rotation_range_end   	 	   360
+        	rotation_speed_range_start     -60
+        	rotation_speed_range_end       200
+   	    }
+
+        affector Scaler
+   	    {
+       	    rate 	          1
+   	    }
+}
+
Index: /ogreode/demos/Media/plane.material
===================================================================
--- /ogreode/demos/Media/plane.material	(revision 21)
+++ /ogreode/demos/Media/plane.material	(revision 21)
@@ -0,0 +1,20 @@
+
+material Ac3d/Plane/Mat001_Tex00
+{
+	technique
+	{
+		pass
+		{
+			ambient 1 1 1 1
+			diffuse 1 1 1 1
+			specular 0.75 0.75 1 1 10
+
+			texture_unit
+			{
+				texture tiled_floor.jpg
+				filtering anisotropic
+				max_anisotropy 8
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/racingcircuit.material
===================================================================
--- /ogreode/demos/Media/racingcircuit.material	(revision 21)
+++ /ogreode/demos/Media/racingcircuit.material	(revision 21)
@@ -0,0 +1,200 @@
+
+material Ac3d/RacingCircuit/Mat001_Tex13
+{
+	technique
+	{
+		pass
+		{
+			scene_blend alpha_blend
+			cull_hardware none
+			cull_software none
+            depth_write off            
+			alpha_rejection greater 0
+			
+			texture_unit
+			{
+				texture fence.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex14
+{
+	technique
+	{
+		pass
+		{
+			scene_blend alpha_blend
+
+			alpha_rejection greater 0
+			texture_unit
+			{
+				texture forest.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex00
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture grass.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex09
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture concrete.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex02
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+       			filtering anisotropic
+       			max_anisotropy 10
+				texture curb.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex07
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+       			filtering anisotropic
+       			max_anisotropy 10
+				texture tarmac2.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex08
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture sand.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex10
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture barrelside.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex05
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+       			filtering anisotropic
+       			max_anisotropy 10
+				texture tarmac2finish.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex06
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+       			filtering anisotropic
+       			max_anisotropy 10
+				texture tarmac2stage.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex12
+{
+	technique
+	{
+		pass
+		{
+			cull_hardware none
+			cull_software none
+			texture_unit
+			{
+       			filtering anisotropic
+       			max_anisotropy 10
+				texture devimg1.tga
+			}
+		}
+	}
+}
+material Ac3d/RacingCircuit/Mat001_Tex15
+{
+	technique
+	{
+		pass
+		{
+			cull_hardware none
+			cull_software none
+			texture_unit
+			{
+       			filtering anisotropic
+       			max_anisotropy 10
+				texture drpetter1.tga
+			}
+		}
+	}
+}
+
+material GranTurismOgre/Skybox
+{
+	technique
+	{
+		pass
+		{
+			lighting off
+			depth_write off
+			texture_unit
+			{
+				cubic_texture skybox.jpg separateUV
+				tex_address_mode clamp
+			}
+		}
+	}
+}
+
Index: /ogreode/demos/Media/robot.ogreode
===================================================================
--- /ogreode/demos/Media/robot.ogreode	(revision 21)
+++ /ogreode/demos/Media/robot.ogreode	(revision 21)
@@ -0,0 +1,16 @@
+<ogreode>
+    <ragdoll name="robot" meshName="robot.mesh">
+
+        <!-- Set up the default settings -->
+        <defaults>
+            <settings geometry="capsule"  joint="ball" collapse="none" mass="50" radius="0.25">
+                <damping angular="0.1" linear="0.1" />
+                <axis number="1" x="1" y="0" z="0" />
+                <axis number="2" x="0" y="1" z="0" />
+            </settings>
+        </defaults>
+
+
+    </ragdoll>
+</ogreode>
+
Index: /ogreode/demos/Media/scooby_body.material
===================================================================
--- /ogreode/demos/Media/scooby_body.material	(revision 21)
+++ /ogreode/demos/Media/scooby_body.material	(revision 21)
@@ -0,0 +1,41 @@
+
+material Ac3d/Scooby_Body/Mat001_Tex01
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture chasis.jpg
+			}
+		}
+	}
+}
+material Ac3d/Scooby_Body/Mat001_Tex02
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture ventanas.jpg
+			}
+		}
+	}
+}
+material Ac3d/Scooby_Body/Mat001_Tex03
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture chasis_a.jpg
+			}
+		}
+	}
+}
+
Index: /ogreode/demos/Media/scooby_wheel.material
===================================================================
--- /ogreode/demos/Media/scooby_wheel.material	(revision 21)
+++ /ogreode/demos/Media/scooby_wheel.material	(revision 21)
@@ -0,0 +1,14 @@
+
+material Ac3d/Scooby_Wheel/Mat001_Tex00
+{
+	technique
+	{
+		pass
+		{
+			texture_unit
+			{
+				texture ruedas.jpg
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/simplescenes.ogreode
===================================================================
--- /ogreode/demos/Media/simplescenes.ogreode	(revision 21)
+++ /ogreode/demos/Media/simplescenes.ogreode	(revision 21)
@@ -0,0 +1,190 @@
+<ogreode>
+    <ragdoll name="zombie" meshName="zombie.mesh">
+
+        <!-- Set up the default settings -->
+        <defaults>
+            <settings geometry="capsule"  joint="ball" collapse="none" mass="50" radius="0.25">
+                <damping angular="0.1" linear="0.1" />
+                <axis number="1" x="1" y="0" z="0" />
+                <axis number="2" x="0" y="1" z="0" />
+            </settings>
+        </defaults>
+
+  	    <!-- Set up some specific settings, if no value's provided then the value that was last set for that parameter -->
+      	<bone name="Torso">
+            <settings geometry="box" joint="fixed" />
+        </bone>
+
+        <bone name="Shoulders" />
+
+        <bone name="Neck">
+            <settings joint="universal">
+                <axis number="1" x="0" y="1" z="0">
+                    <stop low="-1.57" high="1.57" />
+                </axis>
+                <axis number="2" x="1" y="0" z="0">
+                    <stop low="-1.0" high="0.8" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="LeftAnkle">
+            <settings joint="hinge">
+                <axis number="1" x="1" y="0" z="0">
+                    <stop low="-1.57" high="0.8" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="RightAnkle" />
+
+        <bone name="LeftElbow">
+            <settings geometry="capsule">
+                <axis number="1">
+                    <stop low="0.0" high="2.0" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="RightElbow" />
+
+        <bone name="LeftKnee">
+            <settings>
+                <axis number="1">
+                    <stop low="-1.57" high="0.0" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="RightKnee" />
+
+        <bone name="RightHip">
+            <settings joint="universal">
+                <axis number="1" x="1" y="0" z="0">
+                    <stop low="-0.8" high="0.8" />
+                </axis>
+                <axis number="2" x="0" y="0" z="1">
+                    <stop low="0.0" high="0.8" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="LeftHip">
+            <settings>
+                <axis number="2" x="0" y="0" z="-1" />
+            </settings>
+        </bone>
+
+        <bone name="RightShoulder">
+            <settings>
+                <axis number="1">
+                    <stop low="-1.57" high="3.1416" />
+                </axis>
+                <axis number="2" z="1">
+                    <stop low="0" high="1.57" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="LeftShoulder">
+            <settings>
+                <axis number="2" z="-1" />
+            </settings>
+        </bone>
+
+        <!-- Set the root bone so it's collapsed up to where it joins the next
+  		     body, to stop a big thing dangling down between his legs (Ooer!)
+  		     Collapse is only (currently) supported on capsule bones -->
+        <bone name="Root">
+            <settings collapse="up" />
+        </bone>
+
+    </ragdoll>
+
+	<!-- Create the vehicle using the supplied name and body mesh, make it 1.5 units heavy
+		 e.g. tonnes and offset the center of gravity by half (a metre) to make it more stable
+		 This puts the CoG somewhere around the wheel hubs, which is probably reasonably
+		 realistic for a sports-car -->
+    <vehicle name="Subaru">
+
+        <body mesh="scooby_body.mesh">
+		  <mass value="1.5" x="0" y="-0.5" z="0" />
+        </body>
+
+		<!-- Create all the wheels, using the supplied mesh and with the specified offset
+		     relative to the car. The mass is 0.02 units, in our case that's around 20Kg -->
+        <wheel mesh="scooby_wheell.mesh" x="0.8045" y="-0.46698" z="1.4" mass="0.02">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.002" />
+        </wheel>
+		<wheel mesh="scooby_wheelr.mesh" x="-0.8045" y="-0.46698" z="1.4" mass="0.02">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.002" />
+        </wheel>
+		<wheel mesh="scooby_wheell.mesh" x="0.8045" y="-0.46698" z="-1.4" mass="0.02">
+            <power factor="1" />
+            <brake factort="0.25" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.002" />
+        </wheel>
+		<wheel mesh="scooby_wheelr.mesh" x="-0.8045" y="-0.46698" z="-1.4" mass="0.02">
+            <power factor="1" />
+            <brake factor="0.25" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.002" />
+            <suspension spring="90" damping="0.95" step="0.01" />
+        </wheel>
+
+		<!-- Set up the suspension spring and damping constants, passing the rate we're going to
+		     be stepping the world so it can work out the forces needed each step
+		     We could do this per-wheel, like the other factors, but it's easier to do it this way.
+		     N.B. You must create the wheels before you can do this! -->
+		<suspension spring="90" damping="0.95" step="0.01" />
+
+		<!-- Set the engine (and other drivetrain) parameters, lots of work still to do here! -->
+		<engine redline="70.0" brake="10.0">
+            <torque min="0.25" max="5.0" />
+        </engine>
+    </vehicle>
+
+	<!-- Create the vehicle using the supplied name and body mesh, make it 1.5 units heavy
+		 e.g. tonnes and offset the center of gravity by half (a metre) to make it more stable
+		 This puts the CoG somewhere around the wheel hubs, which is probably reasonably
+		 realistic for a sports-car -->
+    <vehicle name="Jeep">
+
+        <body mesh="jeep_body.mesh">
+		  <mass value="3" x="0" y="-1" z="0" />
+        </body>
+
+        <wheel mesh="jeep_wheell.mesh" x="1" y="-1.1" z="1.8" mass="0.06">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheelr.mesh" x="-1" y="-1.1" z="1.8" mass="0.06">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheell.mesh" x="1" y="-1.1" z="-1.6" mass="0.06">
+            <brake factor="0.25" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.004" />
+        </wheel>
+        <wheel mesh="jeep_wheelr.mesh" x="-1" y="-1.1" z="-1.6" mass="0.06">
+            <brake factor="0.25" />
+            <power factor="1.0" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.004" />
+        </wheel>
+
+		<suspension spring="100" damping="3.6" step="0.01" />
+
+		<engine redline="30.0" brake="15.0">
+            <torque min="0.5" max="10.0" />
+        </engine>
+    </vehicle>
+</ogreode>
+
Index: /ogreode/demos/Media/subaru.ogreode
===================================================================
--- /ogreode/demos/Media/subaru.ogreode	(revision 21)
+++ /ogreode/demos/Media/subaru.ogreode	(revision 21)
@@ -0,0 +1,51 @@
+<ogreode>
+   
+
+	<!-- Create the vehicle using the supplied name and body mesh, make it 1.5 units heavy
+		 e.g. tonnes and offset the center of gravity by half (a metre) to make it more stable
+		 This puts the CoG somewhere around the wheel hubs, which is probably reasonably
+		 realistic for a sports-car -->
+    <vehicle name="Subaru">
+
+        <body mesh="scooby_body.mesh">
+		  <mass value="1.5" x="0" y="-0.5" z="0" />
+        </body>
+
+		<!-- Create all the wheels, using the supplied mesh and with the specified offset
+		     relative to the car. The mass is 0.02 units, in our case that's around 20Kg -->
+        <wheel mesh="scooby_wheell.mesh" x="0.8045" y="-0.46698" z="1.4" mass="0.02">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.002" />
+        </wheel>
+		<wheel mesh="scooby_wheelr.mesh" x="-0.8045" y="-0.46698" z="1.4" mass="0.02">
+            <steer factor="1" force="8.0" speed="4.0" limit="0.75" />
+            <brake factor="0.75" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.002" />
+        </wheel>
+		<wheel mesh="scooby_wheell.mesh" x="0.8045" y="-0.46698" z="-1.4" mass="0.02">
+            <power factor="1" />
+            <brake factort="0.25" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.002" />
+        </wheel>
+		<wheel mesh="scooby_wheelr.mesh" x="-0.8045" y="-0.46698" z="-1.4" mass="0.02">
+            <power factor="1" />
+            <brake factor="0.25" />
+            <contact bouncyness="0.9" friction="1.5" fds="0.002" />
+            <suspension spring="90" damping="0.95" step="0.01" />
+        </wheel>
+
+		<!-- Set up the suspension spring and damping constants, passing the rate we're going to
+		     be stepping the world so it can work out the forces needed each step
+		     We could do this per-wheel, like the other factors, but it's easier to do it this way.
+		     N.B. You must create the wheels before you can do this! -->
+		<suspension spring="90" damping="0.95" step="0.01" />
+
+		<!-- Set the engine (and other drivetrain) parameters, lots of work still to do here! -->
+		<engine redline="70.0" brake="10.0">
+            <torque min="0.25" max="5.0" />
+        </engine>
+    </vehicle>
+
+</ogreode>
+
Index: /ogreode/demos/Media/tail_rotor.material
===================================================================
--- /ogreode/demos/Media/tail_rotor.material	(revision 21)
+++ /ogreode/demos/Media/tail_rotor.material	(revision 21)
@@ -0,0 +1,15 @@
+
+material Ac3d/tail_rotor/Mat001_Tex00
+{
+	technique
+	{
+		pass
+		{
+            specular 0.5 0.5 0.5 0.75 15
+			texture_unit
+			{
+				texture apache.png
+			}
+		}
+	}
+}
Index: /ogreode/demos/Media/target.material
===================================================================
--- /ogreode/demos/Media/target.material	(revision 21)
+++ /ogreode/demos/Media/target.material	(revision 21)
@@ -0,0 +1,15 @@
+material OgreOdeDemos/TargetSights
+{
+    technique
+    {
+        pass
+        {
+          lighting off
+          scene_blend alpha_blend
+            texture_unit
+            {
+               texture target.png
+            }
+        }
+    }
+}
Index: /ogreode/demos/Media/terrainOgreOde.cfg
===================================================================
--- /ogreode/demos/Media/terrainOgreOde.cfg	(revision 21)
+++ /ogreode/demos/Media/terrainOgreOde.cfg	(revision 21)
@@ -0,0 +1,71 @@
+# The main world texture (if you wish the terrain manager to create a material for you)
+WorldTexture=terrain_texture.jpg
+
+# The detail texture (if you wish the terrain manager to create a material for you)
+DetailTexture=terrain_detail.jpg
+
+#number of times the detail texture will tile in a terrain tile
+DetailTile=3
+
+# Heightmap source
+PageSource=Heightmap
+
+# Heightmap-source specific settings
+Heightmap.image=terrain.png
+
+# If you use RAW, fill in the below too
+# RAW-specific setting - size (horizontal/vertical)
+#Heightmap.raw.size=513
+# RAW-specific setting - bytes per pixel (1 = 8bit, 2=16bit)
+#Heightmap.raw.bpp=2
+
+# How large is a page of tiles (in vertices)? Must be (2^n)+1
+PageSize=513
+
+# How large is each tile? Must be (2^n)+1 and be smaller than PageSize
+TileSize=65
+
+# The maximum error allowed when determining which LOD to use
+MaxPixelError=3
+
+# The size of a terrain page, in world units
+PageWorldX=150
+PageWorldZ=150
+# Maximum height of the terrain 
+MaxHeight=10
+
+# Upper LOD limit
+MaxMipMapLevel=5
+
+VertexNormals=yes
+#VertexColors=yes
+#UseTriStrips=yes
+
+# Use vertex program to morph LODs, if available
+VertexProgramMorph=no
+
+# The proportional distance range at which the LOD morph starts to take effect
+# This is as a proportion of the distance between the current LODs effective range,
+# and the effective range of the next lower LOD
+LODMorphStart=0.2
+
+# This following section is for if you want to provide your own terrain shading routine
+# Note that since you define your textures within the material this makes the 
+# WorldTexture and DetailTexture settings redundant
+
+# The name of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE HIGH-LEVEL VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamName=morphFactor
+
+# The index of the vertex program parameter you wish to bind the morph LOD factor to
+# this is 0 when there is no adjustment (highest) to 1 when the morph takes it completely
+# to the same position as the next lower LOD
+# USE THIS IF YOU USE ASSEMBLER VERTEX PROGRAMS WITH LOD MORPHING
+#MorphLODFactorParamIndex=4
+
+# The name of the material you will define to shade the terrain
+#CustomMaterialName=TestTerrainMaterial
+
+
Index: /ogreode/demos/Media/zombie.material
===================================================================
--- /ogreode/demos/Media/zombie.material	(revision 21)
+++ /ogreode/demos/Media/zombie.material	(revision 21)
@@ -0,0 +1,49 @@
+material Zombie
+{
+
+	// Hardware skinning technique
+	technique 
+	{
+		pass
+		{
+			vertex_program_ref Ogre/HardwareSkinningOneWeight
+			{
+				param_named_auto worldMatrix3x4Array[0] world_matrix_array_3x4
+				param_named_auto viewProjectionMatrix viewproj_matrix
+				param_named_auto lightPos[0] light_position 0
+				param_named_auto lightPos[1] light_position 1
+				param_named_auto lightDiffuseColour[0] light_diffuse_colour 0
+				param_named_auto lightDiffuseColour[1] light_diffuse_colour 1
+				param_named_auto ambient ambient_light_colour
+
+			}
+			// alternate shadow caster program
+			shadow_caster_vertex_program_ref Ogre/HardwareSkinningOneWeightShadowCaster
+			{
+				param_named_auto worldMatrix3x4Array[0] world_matrix_array_3x4
+				param_named_auto viewProjectionMatrix viewproj_matrix
+				param_named_auto ambient ambient_light_colour
+
+			}
+
+			texture_unit
+			{
+				texture zombie.jpg
+			}
+		}
+	}
+
+	// Software blending technique
+	technique
+	{
+		pass
+		{
+
+			texture_unit
+			{
+				texture zombie.jpg
+			}
+		}
+	}
+}
+
Index: /ogreode/demos/Media/zombie.ogreode
===================================================================
--- /ogreode/demos/Media/zombie.ogreode	(revision 21)
+++ /ogreode/demos/Media/zombie.ogreode	(revision 21)
@@ -0,0 +1,104 @@
+<ogreode>
+    <ragdoll name="zombie" meshName="zombie_small.mesh">
+
+        <!-- Set up the default settings -->
+        <defaults>
+            <settings geometry="capsule"  joint="ball" collapse="none" mass="50" radius="0.25">
+                <damping angular="0.1" linear="0.1" />
+                <axis number="1" x="1" y="0" z="0" />
+                <axis number="2" x="0" y="1" z="0" />
+            </settings>
+        </defaults>
+
+  	    <!-- Set up some specific settings, if no value's provided then the value that was last set for that parameter -->
+      	<bone name="Torso">
+            <settings geometry="box" joint="fixed" />
+        </bone>
+
+        <bone name="Shoulders" />
+
+        <bone name="Neck">
+            <settings joint="universal">
+                <axis number="1" x="0" y="1" z="0">
+                    <stop low="-1.57" high="1.57" />
+                </axis>
+                <axis number="2" x="1" y="0" z="0">
+                    <stop low="-1.0" high="0.8" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="LeftAnkle">
+            <settings joint="hinge">
+                <axis number="1" x="1" y="0" z="0">
+                    <stop low="-1.57" high="0.8" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="RightAnkle" />
+
+        <bone name="LeftElbow">
+            <settings geometry="capsule">
+                <axis number="1">
+                    <stop low="0.0" high="2.0" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="RightElbow" />
+
+        <bone name="LeftKnee">
+            <settings>
+                <axis number="1">
+                    <stop low="-1.57" high="0.0" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="RightKnee" />
+
+        <bone name="RightHip">
+            <settings joint="universal">
+                <axis number="1" x="1" y="0" z="0">
+                    <stop low="-0.8" high="0.8" />
+                </axis>
+                <axis number="2" x="0" y="0" z="1">
+                    <stop low="0.0" high="0.8" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="LeftHip">
+            <settings>
+                <axis number="2" x="0" y="0" z="-1" />
+            </settings>
+        </bone>
+
+        <bone name="RightShoulder">
+            <settings>
+                <axis number="1">
+                    <stop low="-1.57" high="3.1416" />
+                </axis>
+                <axis number="2" z="1">
+                    <stop low="0" high="1.57" />
+                </axis>
+            </settings>
+        </bone>
+
+        <bone name="LeftShoulder">
+            <settings>
+                <axis number="2" z="-1" />
+            </settings>
+        </bone>
+
+        <!-- Set the root bone so it's collapsed up to where it joins the next
+  		     body, to stop a big thing dangling down between his legs (Ooer!)
+  		     Collapse is only (currently) supported on capsule bones -->
+        <bone name="Root">
+            <settings collapse="up" />
+        </bone>
+
+    </ragdoll>
+</ogreode>
+
Index: /ogreode/demos/Media/zombie_auto.ogreode
===================================================================
--- /ogreode/demos/Media/zombie_auto.ogreode	(revision 21)
+++ /ogreode/demos/Media/zombie_auto.ogreode	(revision 21)
@@ -0,0 +1,15 @@
+<ogreode>
+    <ragdoll name="zombie" meshName="zombie_small.mesh">
+
+        <!-- Set up the default settings -->
+        <defaults>
+            <settings geometry="capsule"  joint="ball" collapse="none" mass="50" radius="0.25">
+                <damping angular="0.1" linear="0.1" />
+                <axis number="1" x="1" y="0" z="0" />
+                <axis number="2" x="0" y="1" z="0" />
+            </settings>
+        </defaults>
+
+    </ragdoll>
+</ogreode>
+
Index: /ogreode/demos/SimpleScenes/Makefile.am
===================================================================
--- /ogreode/demos/SimpleScenes/Makefile.am	(revision 21)
+++ /ogreode/demos/SimpleScenes/Makefile.am	(revision 21)
@@ -0,0 +1,1 @@
+SUBDIRS = src
Index: /ogreode/demos/SimpleScenes/include/SimpleScenes.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenes.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenes.h	(revision 21)
@@ -0,0 +1,101 @@
+/*
+SimpleScenes.h
+-------------
+A basic framework class off which the specific scenes will be built.
+Does some housekeeping of objects and so on, eventually functionality
+similar to this will be built into OgreOde.
+*/
+#ifndef _SIMPLESCENES_H_
+#define _SIMPLESCENES_H_
+
+// We'll need the OgreOde definitions
+#include "OgreOde_Core.h"
+#include "OgreOde_Prefab.h"
+#include "OgreOde_Loader.h"
+
+#if !(OGRE_VERSION <  ((1 << 16) | (3 << 8) | 0))
+#include "OIS/OIS.h"
+namespace OIS
+{
+	class Keyboard;
+	class Mouse;
+};
+#endif //OGRE_VERSION not heihort
+
+enum QueryFlags
+{
+	ANY_QUERY_MASK					= 1<<0,
+	ZOMBIE_QUERY_MASK				= 1<<1,
+	GEOMETRY_QUERY_MASK				= 1<<2,
+	VEHICLE_QUERY_MASK				= 1<<3,
+	STATIC_GEOMETRY_QUERY_MASK		= 1<<4
+};
+/*
+The base Test class, is also able to listen for collisions and thus change the contact properties
+*/
+class SimpleScenes:public OgreOde::CollisionListener,public OgreOde::StepListener
+{
+public:
+	static const Ogre::Real KEY_DELAY;
+	static const Ogre::Real STEP_RATE;
+
+	// Constructor/destructor
+	SimpleScenes(OgreOde::World *world);
+	virtual ~SimpleScenes();
+
+	// Useful methods that will be handy for all tests
+    void createRagDoll();
+    OgreOde::Body* createRandomObject(OgreOde::Geometry::Class objectClass);
+	void updateScene();
+    const Ogre::SceneNode* getLastNode(){return _last_node;}
+    void setInfoText(const Ogre::String& text);
+
+	// The things we'll have to override in derived classes
+	// Actual tests must provide a name but everything else can default
+	virtual bool collision(OgreOde::Contact* contact);
+    virtual const Ogre::String& getKeys(){return Ogre::StringUtil::BLANK;}
+	virtual const Ogre::String& getName() = 0;
+	virtual void addForcesAndTorques(){}
+
+#if (OGRE_VERSION_MINOR <  4)
+    virtual void frameStarted(Ogre::Real time, Ogre::InputReader* input){};
+    virtual void frameEnded(Ogre::Real time, Ogre::InputReader* input);
+
+#else
+    virtual void frameStarted(Ogre::Real time, OIS::Keyboard* input, OIS::Mouse* mouse){};
+    virtual void frameEnded(Ogre::Real time, OIS::Keyboard* input, OIS::Mouse* mouse);
+
+#endif //OGRE_VERSION not heihort
+
+
+	// If we register this with a stepper it'll get told every time the world's about to be stepped
+	bool preStep(Ogre::Real time)
+	{
+		addForcesAndTorques();
+		return true;
+	}
+
+protected:
+	// Keep track of what created us
+	Ogre::SceneManager*	_mgr;
+	OgreOde::World*		_world;
+	OgreOde::Space*		_space;
+	OgreOde_Prefab::RagdollFactory*   _ragdollFactory; 
+
+	// Whatever the derived class sets this to will be what's looked at by the camera
+	Ogre::SceneNode*			_last_node;
+
+	// Keep track of the things we create so we can 
+	// delete them automatically when we switch scenes
+	std::vector<OgreOde::Body*>		_bodies;
+	std::vector<OgreOde::Geometry*> _geoms;
+    std::vector<OgreOde::Joint*>	_joints;
+
+    std::vector<Ogre::MovableObject*> clearList;
+    std::vector<OgreOde_Prefab::Ragdoll *> RagdollList;
+
+    Ogre::Real _key_delay;
+    OgreOde_Loader::DotLoader *dotOgreOdeLoader;
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/include/SimpleScenesApplication.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenesApplication.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenesApplication.h	(revision 21)
@@ -0,0 +1,135 @@
+/*
+SimpleScenesApplication.h
+------------------------
+Defintion of the class responsible for running the OgreOde
+demo scenes. Wrangles input and the various different test
+scenes into a single application. Extends the ExampleApplication
+and ExampleFrameListener classes.
+*/
+#ifndef _SIMPLESCENESAPPLICATION_H_
+#define _SIMPLESCENESAPPLICATION_H_
+
+// Include the OgreOde interface which includes Ogre itself
+#include "OgreOde_Core.h"
+#include "ExampleApplication.h"
+
+#if !(OGRE_VERSION_MINOR < 4)
+    using namespace OIS;
+#endif //OGRE_VERSION not heihort
+
+// Our framework class for the different tests
+#include "SimpleScenes.h"
+
+class SimpleScenesApplication;
+
+/*
+A frame listener that does default processing before deferring to the main application
+*/
+class SimpleScenesFrameListener:public ExampleFrameListener
+{
+public:
+	// Standard example constructor with one additional parameter
+	SimpleScenesFrameListener(SimpleScenesApplication* demo,RenderWindow* win,Camera* cam) : 
+      ExampleFrameListener(win,cam),
+      _demo(demo)
+	{
+		mMoveSpeed = 15.0;
+	}
+	~SimpleScenesFrameListener(){}
+
+	bool frameStarted(const FrameEvent& evt);
+	bool frameEnded(const FrameEvent& evt);
+
+protected:
+	// Keep track of the application that created us
+	SimpleScenesApplication* _demo;
+};
+
+/*
+The test application, based on the Ogre example application for consistency
+*/
+class SimpleScenesApplication: public ExampleApplication
+{
+	// The frame listener gets access to some special things
+	friend class SimpleScenesFrameListener;
+
+public:
+	// Standard constructor/destructor
+    SimpleScenesApplication() : 
+      ExampleApplication()
+	{
+		_test = 0;
+		_plane = 0;
+		_stepper = 0;	
+		_world = 0;
+
+		_time_elapsed = 0.0;
+		_time_step = SimpleScenes::STEP_RATE;
+		_looking = _chasing = false;
+		_paused = false;
+	}
+    ~SimpleScenesApplication();
+
+protected:
+	// Override stuff from the base class
+    void createScene(void);	
+    void createFrameListener(void)
+    {
+        mFrameListener= new SimpleScenesFrameListener(this,mWindow,mCamera);
+        mRoot->addFrameListener(mFrameListener);
+    }
+    void chooseSceneManager(void)
+    {
+        mSceneMgr = mRoot->createSceneManager( ST_GENERIC, "basicsm" );
+    }
+
+	// Add the standard resources, plus our own pack
+	void setupResources(void)
+    {
+		ExampleApplication::setupResources(); 
+		ResourceGroupManager *rsm = ResourceGroupManager::getSingletonPtr();
+		StringVector groups = rsm->getResourceGroups();        
+		if (std::find(groups.begin(), groups.end(), String("OgreOde")) == groups.end())
+		{
+			FileInfoListPtr finfo =  ResourceGroupManager::getSingleton().findResourceFileInfo (
+				"Bootstrap", "axes.mesh");
+
+			const bool isSDK =  (!finfo->empty()) && 
+				StringUtil::startsWith (finfo->begin()->archive->getName(), "../../media/packs/ogrecore.zip", true);
+
+			rsm->createResourceGroup("OgreOde");
+			if (isSDK)
+			{
+				rsm->addResourceLocation("../../../ogreode/demos/Media","FileSystem", "OgreOde");
+			}
+			else
+			{
+				rsm->addResourceLocation("../../../../../ogreaddons/ogreode/demos/Media","FileSystem", "OgreOde");
+			}
+		}
+	}
+
+    // The frame listener will call these	
+
+#if (OGRE_VERSION_MINOR < 4)
+    void frameStarted(const FrameEvent& evt,InputReader* mInputDevice);
+    void frameEnded(const FrameEvent& evt,InputReader* mInputDevice);
+#else
+    void frameStarted(const FrameEvent& evt, OIS::Keyboard* input, OIS::Mouse* mouse);
+    void frameEnded(const FrameEvent& evt, OIS::Keyboard* input, OIS::Mouse* mouse);
+#endif //OGRE_VERSION not heihort
+
+
+	
+protected:
+	OgreOde::World*					_world;
+	OgreOde::StepHandler*			_stepper;
+	OgreOde::InfinitePlaneGeometry* _plane;
+	SimpleScenes*					_test;
+
+	Real	_delay,_time_elapsed,_time_step;
+	Light*	_spot;
+	bool	_looking,_chasing,_paused;
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/include/SimpleScenes_BoxStack.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenes_BoxStack.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenes_BoxStack.h	(revision 21)
@@ -0,0 +1,64 @@
+/*
+SimpleScenes_BoxStack.h
+----------------------
+A reimplementation of the ODE box stacking (actually loads of different
+objects) demo using Ogre and the OgreOde wrapper.
+*/
+#ifndef _SIMPLESCENES_BOXSTACK_H_
+#define _SIMPLESCENES_BOXSTACK_H_
+
+/*
+The box stacking test extends the base test class
+*/
+class SimpleScenes_BoxStack:public SimpleScenes
+{
+public:
+	// Standard constructor/destructor
+    SimpleScenes_BoxStack(OgreOde::World *world) : SimpleScenes(world) {}
+	virtual ~SimpleScenes_BoxStack(){}
+
+	// Return our name for the test application to display
+	virtual const String& getName()
+	{
+		static String name = "Test Box Stack";
+		return name;
+	}
+
+	// Return a description of the keys that the user can use in this test
+	virtual const String& getKeys()
+	{
+		static String keys = "Z - Sphere, X - Box, C - Capsule, G - Ragdoll, T - Trimesh";
+		return keys;
+	}
+
+#if (OGRE_VERSION_MINOR < 4)
+    // Handle the user's key presses	
+    virtual void frameEnded(Real time,InputReader* input)
+    {
+        // Do default key handling
+        SimpleScenes::frameEnded(time,input);
+#else
+
+	virtual void frameEnded(Real time, OIS::Keyboard* input, OIS::Mouse* mouse)
+	{
+		// Do default processing
+		SimpleScenes::frameEnded(time, input, mouse);
+#endif
+		OgreOde::Body* body = 0;
+	
+		// Create random objects, that method will stop them being created too often
+		if (input->isKeyDown(KC_Z)) 
+            body = createRandomObject(OgreOde::Geometry::Class_Sphere);
+		else if (input->isKeyDown(KC_X)) 
+            body = createRandomObject(OgreOde::Geometry::Class_Box);
+		else if (input->isKeyDown(KC_C)) 
+            body = createRandomObject(OgreOde::Geometry::Class_Capsule);
+        else if (input->isKeyDown(KC_T)) 
+            body = createRandomObject(OgreOde::Geometry::Class_TriangleMesh);
+        else if (input->isKeyDown(KC_G)) 
+            createRagDoll();
+        
+	}
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/include/SimpleScenes_Buggy.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenes_Buggy.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenes_Buggy.h	(revision 21)
@@ -0,0 +1,211 @@
+/*
+SimpleScenes_Buggy.h
+-------------------
+A reimplementation of the ODE test Buggy application using
+the OgreOde wrapper for Ogre
+*/
+#ifndef _SIMPLESCENES_BUGGY_H_
+#define _SIMPLESCENES_BUGGY_H_
+
+#include "OgreOde_Prefab.h"
+
+//------------------------------------------------------------------------------------------------
+static const String carNames[] = {
+	"Jeep",
+	"JeepSway",
+	"Subaru"
+};
+static const String carFileNames[] = {
+	"jeep.ogreode",
+	"jeep.ogreode",
+	"subaru.ogreode"
+};
+static int sSelectedCar = 1;
+static int maxNumCar = 3;
+
+/*
+Buggy test extends from the base test class
+*/
+class SimpleScenes_Buggy:public SimpleScenes
+{
+public:
+	//------------------------------------------------------------------------------------------------
+	// Constructor also needs to create the scene
+    SimpleScenes_Buggy(OgreOde::World *world) : 
+      SimpleScenes(world),
+	  vehicle(0)
+	{
+		// Create the vehicle from the config file
+		changeCar();
+	
+		// Move the vehicle
+		vehicle->setPosition(Vector3(0,0.82898,0));
+
+		// Initially (i.e. in the config file) it's rear wheel drive
+		_drive = 'R';
+		setInfoText(carNames[sSelectedCar] + "Rear wheel drive");
+
+		// Create a box to jump over, the visual version
+		Entity* entity = _mgr->createEntity("Jump", "crate.mesh");
+		entity->setNormaliseNormals(true);
+		entity->setCastShadows(true);
+
+		SceneNode* node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+		node->attachObject(entity);
+		node->setPosition(Vector3(0,0.3,-5));
+		node->setOrientation(Quaternion(Radian(0.4),Vector3(1,0,0)));
+		node->setScale(0.3,0.1,0.4);
+
+		// Create the physical version (just static geometry, it can't move so
+		// it doesn't need a body) and keep track of it
+		OgreOde::EntityInformer ei(entity,Matrix4::getScale(node->getScale()));
+		OgreOde::Geometry *geom = ei.createSingleStaticBox(_world, _space);
+        entity->setUserObject(geom);
+        _geoms.push_back(geom);
+
+		// The car is what we'll want to look at
+		_last_node = vehicle->getSceneNode();
+	}
+
+	//------------------------------------------------------------------------------------------------
+	// Override the destructor since there's some special deleting to do
+	virtual ~SimpleScenes_Buggy()
+	{
+		delete vehicle;
+
+		// Destroy the jump manually since it's not associated with 
+		// any body it won't get deleted automatically
+		_mgr->destroySceneNode("Jump");
+		_mgr->destroyEntity("Jump");
+
+		// Geometries and Joints will get deleted by the base class
+	}
+
+	//------------------------------------------------------------------------------------------------
+	// Return our name
+	virtual const String& getName()
+	{
+		static String name = "Test Buggy";
+		return name;
+	}
+
+	//------------------------------------------------------------------------------------------------
+	// Tell the user what keys they can use
+	virtual const String& getKeys()
+	{
+		static String keys = "I/K - Accelerate/Brake, J/L - Turn, X - Change drive mode, N - Change Car";
+		return keys;
+	}
+
+
+	//------------------------------------------------------------------------------------------------
+	void changeCar()
+	{
+		sSelectedCar = (sSelectedCar + 1) % maxNumCar;
+
+		delete vehicle;
+		vehicle = static_cast <OgreOde_Prefab::Vehicle *> (dotOgreOdeLoader->loadObject (carFileNames[sSelectedCar], carNames[sSelectedCar]));
+
+
+		// Move the vehicle
+		vehicle->setPosition(Vector3(0,0.82898,0));
+	}
+	//------------------------------------------------------------------------------------------------
+#if (OGRE_VERSION_MINOR < 4)
+    // Handle the user's key presses	
+    virtual void frameEnded(Real time,InputReader* input)
+    {
+        // Do default key handling
+        SimpleScenes::frameEnded(time,input);
+#else
+
+    virtual void frameEnded(Real time, OIS::Keyboard* input, OIS::Mouse* mouse)
+    {
+        // Do default processing
+        SimpleScenes::frameEnded(time, input, mouse);
+#endif
+		// Tell the vehicle what digital inputs are being pressed; left, right, power and brake
+		// There are equivalent methods for analogue controls, current you can't change gear so
+		// you can't reverse!
+		vehicle->setInputs(input->isKeyDown(KC_J),input->isKeyDown(KC_L),input->isKeyDown(KC_I),input->isKeyDown(KC_K));
+
+		// Update the vehicle, you need to do this every time step
+		vehicle->update(time);
+		if (_key_delay > SimpleScenes::KEY_DELAY)
+		{
+
+			if ((input->isKeyDown(KC_N)))
+			{
+				changeCar();
+				_key_delay = 0.0;
+			}
+			// Change the drive mode between front, rear and 4wd
+			if ((input->isKeyDown(KC_X)))
+			{
+				switch(_drive)
+				{
+					// Switch from rear to front
+				case 'R':
+					_drive = 'F';
+
+					vehicle->getWheel(0)->setPowerFactor(1);
+					vehicle->getWheel(1)->setPowerFactor(1);
+					vehicle->getWheel(2)->setPowerFactor(0);
+					vehicle->getWheel(3)->setPowerFactor(0);
+
+					setInfoText(carNames[sSelectedCar] + "Front wheel drive");
+					break;
+
+					// Switch from front to all
+				case 'F':
+					_drive = '4';
+
+					vehicle->getWheel(0)->setPowerFactor(0.6);
+					vehicle->getWheel(1)->setPowerFactor(0.6);
+					vehicle->getWheel(2)->setPowerFactor(0.4);
+					vehicle->getWheel(3)->setPowerFactor(0.4);
+
+					setInfoText(carNames[sSelectedCar] + "All wheel drive");
+					break;
+
+					// Switch from all to rear
+				case '4':
+					_drive = 'R';
+
+					vehicle->getWheel(0)->setPowerFactor(0);
+					vehicle->getWheel(1)->setPowerFactor(0);
+					vehicle->getWheel(2)->setPowerFactor(1);
+					vehicle->getWheel(3)->setPowerFactor(1);
+
+					setInfoText(carNames[sSelectedCar] + "Rear wheel drive");
+					break;
+				}
+				_key_delay = 0.0;
+			}
+		}
+	}
+
+	//------------------------------------------------------------------------------------------------
+	// Override the collision callback to set our own parameters
+	bool collision(OgreOde::Contact* contact)
+	{
+		// If the base class doesn't think the collision needs to 
+		// happen then we won't do anything either
+		if (!SimpleScenes::collision(contact)) 
+			return false;
+
+		if (!OgreOde_Prefab::Vehicle::handleTyreCollision(contact))
+		{
+			// Set the floor to be a bit slippy
+			contact->setCoulombFriction(12.0);
+		}
+		return true;
+	}
+
+protected:
+	// Keep track of the things we need to delete manually or change according to user input
+	OgreOde_Prefab::Vehicle *vehicle;
+	char _drive;
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/include/SimpleScenes_Chain.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenes_Chain.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenes_Chain.h	(revision 21)
@@ -0,0 +1,192 @@
+/*
+SimpleScenes_Chain.h
+----------------------
+A reimplementation of the ODE spherical chain demo 
+using Ogre and the OgreOde wrapper.
+*/
+#ifndef _SIMPLESCENESCHAIN_H_
+#define _SIMPLESCENES_CHAIN_H_
+
+/*
+The chain test extends the base test class
+*/
+class SimpleScenes_Chain:public SimpleScenes
+{
+public:
+	// Standard constructor, creates everything in the demo
+    SimpleScenes_Chain(OgreOde::World *world) :
+      SimpleScenes(world)
+	{
+		// Set up the sizes of stuff
+		Real link_size = 0.4,geom_size = 0.4,adjust = 0.1;
+		OgreOde::Body* last_body = 0;
+		int num_links = 10;
+
+		_first_body = 0;
+		_force = 100;
+
+		// Create all the links in the chain
+		for (int i = num_links - 1;i >= 0;i--)
+		{
+			Real np = (Real)i * (link_size + adjust);
+			String name = String("Sphere_") + StringConverter::toString(i);
+
+			// Visuals
+			Entity* entity = _mgr->createEntity(name,"ball.mesh");
+			entity->setNormaliseNormals(true);
+			entity->setCastShadows(true);
+
+			SceneNode* node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+			node->attachObject(entity);
+			node->setScale(link_size * 0.2,link_size * 0.2,link_size * 0.2);
+			node->setPosition(Vector3(np,np + 0.4,np));
+
+			// Physicals
+			OgreOde::EntityInformer ei(entity,Matrix4::getScale(node->getScale()));
+			OgreOde::Body* body = ei.createSingleDynamicSphere(1.0,_world, _space);
+			_bodies.push_back(body);
+			_geoms.push_back(body->getGeometry(0));
+
+			// Join the current body to the last one (if there was a last one)
+			if (!_first_body)
+			{
+				_last_node = node;
+				_first_body = body;
+			}
+
+			if (last_body)
+			{
+				OgreOde::BallJoint* joint = new OgreOde::BallJoint(_world);
+				joint->attach(body,last_body);
+				Real ja = ((Real)i + 0.5) * (link_size + adjust);
+				joint->setAnchor(Vector3(ja,ja + 0.4,ja));
+
+				_joints.push_back(joint);
+			}
+
+			last_body = body;
+		}
+
+		// Create some static boxes to bump into
+		createBox(0,2,Vector3(4,1,4));
+		createBox(1,2,Vector3(-4,1,4));
+		createBox(2,2,Vector3(-4,1,-4));
+		createBox(3,2,Vector3(4,1,-4));
+	}
+
+      // Let the user throw the chain around
+#if (OGRE_VERSION_MINOR < 4)
+      // Handle the user's key presses	
+      virtual void frameEnded(Real time,InputReader* input)
+      {
+          // Do default key handling
+          SimpleScenes::frameEnded(time,input);
+#else
+
+      virtual void frameEnded(Real time, OIS::Keyboard* input, OIS::Mouse* mouse)
+      {
+          // Do default processing
+          SimpleScenes::frameEnded(time, input, mouse);
+#endif
+		_force_to_apply = Ogre::Vector3::ZERO;
+
+		Vector3 right = _mgr->getCamera("PlayerCam")->getRight();
+		Vector3 forward = right.crossProduct(Vector3::UNIT_Y);
+
+		// Up
+		if (input->isKeyDown(KC_X)) _force_to_apply += Ogre::Vector3::UNIT_Y * _force;
+
+		// Left/right
+		if (input->isKeyDown(KC_J)) _force_to_apply -= right * _force;
+		if (input->isKeyDown(KC_L)) _force_to_apply += right * _force;
+
+		// Forward/back
+		if (input->isKeyDown(KC_K)) _force_to_apply += forward * _force;
+		if (input->isKeyDown(KC_I)) _force_to_apply -= forward * _force;
+
+		_mgr->getCamera("PlayerCam");
+	}
+
+	// Apply the forces before every time step
+	void addForcesAndTorques()
+	{
+		// Apply the force we calculated in the key handler
+		_first_body->addForce(_force_to_apply);
+	}
+
+	// Return our name for the test application to display
+	virtual const String& getName()
+	{
+		static String name = "Test Chain";
+		return name;
+	}
+
+	// Tell the user what keys they can use
+	virtual const String& getKeys()
+	{
+		static String keys = "J/L, I/K, X - Throw the chain around";
+		return keys;
+	}
+
+	// Override the collision callback to set our own parameters
+	bool collision(OgreOde::Contact* contact)
+	{
+		// Set the floor to be a bit slippy
+		contact->setCoulombFriction(10.0);
+		return true;
+	}
+
+	// Use the destructor to delete the crate scene nodes
+	// everything else gets deleted automatically
+	~SimpleScenes_Chain()
+	{
+		for (int i = 0;i < 4;i++)
+		{
+			if (i != 2)
+			{
+				String name = String("Crate_") + StringConverter::toString(i);
+				_mgr->destroySceneNode(name);
+				_mgr->destroyEntity(name);
+			}
+		}
+	}
+
+protected:
+	// Utility method to create a static box
+	void createBox(int id,Real size,const Ogre::Vector3& position)
+	{
+		// Visual
+		String name = String("Crate_") + StringConverter::toString(id);
+
+		Entity* entity = _mgr->createEntity(name,"crate.mesh");
+		entity->setNormaliseNormals(true);
+		entity->setCastShadows(true);
+
+		SceneNode* node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+		node->attachObject(entity);
+		node->setScale(size * 0.1,size * 0.1,size * 0.1);
+		node->setPosition(position);
+
+		// Make one of them dynamic, the others are static
+		OgreOde::EntityInformer ei(entity,Matrix4::getScale(node->getScale()));
+		if ((position.x < 0)&&(position.z < 0))
+		{
+			_box_body = ei.createSingleDynamicBox(2.0, _world, _space); 
+			_bodies.push_back(_box_body);
+			_geoms.push_back(_box_body->getGeometry(0));
+		}
+		else
+		{
+			// Collision geometry
+			_geoms.push_back(ei.createSingleStaticBox(_world, _space));
+		}
+	}  
+
+protected:
+	// Keep track of the top of the chain so we can throw it around
+	OgreOde::Body *_first_body,*_box_body;
+	Real _force;
+	Vector3 _force_to_apply;
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/include/SimpleScenes_Crash.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenes_Crash.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenes_Crash.h	(revision 21)
@@ -0,0 +1,669 @@
+/*
+SimpleScenes_Crash.h
+----------------------
+A reimplementation of the ODE "crashing into a wall" demo 
+using Ogre and the OgreOde wrapper.
+*/
+#ifndef _SIMPLESCENES_CRASH_H_
+#define _SIMPLESCENES_CRASH_H_
+
+/*
+The crash test extends the base test class
+*/
+class SimpleScenes_Crash:public SimpleScenes
+{
+public:
+	// Standard constructor/destructor
+    SimpleScenes_Crash(OgreOde::World *world) :
+      SimpleScenes(world)
+      {
+          _rocket_node_explosion = _mgr->getRootSceneNode ()->createChildSceneNode ("rocket_node_explosion_node");
+
+          _rocketParticles_explosion = _mgr->createParticleSystem ("rocket_node_explosion", "myExplosionTemplate");
+          _rocketParticles_smoke_white = _mgr->createParticleSystem ("rocketParticles_smoke_white", "myExplosionSmokewhiteTemplate");
+          _rocketParticles_smoke = _mgr->createParticleSystem ("rocketParticles_smoke", "myExplosionSmokeTemplate");
+
+          _rocket_node_explosion->attachObject(_rocketParticles_explosion);
+          _rocket_node_explosion->attachObject(_rocketParticles_smoke_white);
+          _rocket_node_explosion->attachObject(_rocketParticles_smoke);
+
+          _rocketParticles_explosion->setSpeedFactor(0.0);
+          _rocketParticles_smoke_white->setSpeedFactor(0.0);
+          _rocketParticles_smoke->setSpeedFactor(0.0);
+
+
+
+          _rocket_node_explosion->setVisible(false);
+
+        // create helicopter
+        {
+		    // Main bit of the helicopter
+		    _apache_body = _mgr->createEntity("Apache Body", "apache_body.mesh");
+
+            _apache_body->setQueryFlags(VEHICLE_QUERY_MASK);
+
+		    _apache_body->setCastShadows(true);
+
+		    _apache_body_node = _mgr->getRootSceneNode()->createChildSceneNode("Apache Body");
+		    _apache_body_node->attachObject(_apache_body);
+		    _apache_body_node->setPosition(0,1.2,0);
+
+		    // Main rotor
+		    _main_rotor = _mgr->createEntity("Main Rotor", "main_rotor.mesh");
+            _main_rotor->setCastShadows(true);
+
+		    _main_rotor_node = _apache_body_node->createChildSceneNode("Main Rotor");
+		    _main_rotor_node->attachObject(_main_rotor);
+		    _main_rotor_node->setPosition(0,0.987322,0.573885);
+
+		    // Tail rotor
+		    _tail_rotor = _mgr->createEntity("Tail Rotor", "tail_rotor.mesh");
+            _tail_rotor->setCastShadows(true);
+
+		    _tail_rotor_node = _apache_body_node->createChildSceneNode("Tail Rotor");
+		    _tail_rotor_node->attachObject(_tail_rotor);
+		    _tail_rotor_node->setPosition(0.174927,0.173132,-3.50708);
+
+		    // Set up the parameters for the main rotor
+		    _main_min = 2.0;
+		    _main_max = 90.0;
+		    _main_spd = _main_min;
+		    _main_response = 40.0;
+		    _main_scale = 1.0;
+
+		    // Set up the parameters for the tail rotor
+		    _tail_min = -80.0;
+		    _tail_max = 80.0;
+		    _tail_response = 90.0;
+		    _tail_scale = 0.5;
+		    _tail_spd = 0.0;
+
+		    // Other simulation parameters
+		    _rotate_scale = 20.0;
+		    _thrust = 50.0;
+		    _linear_damp = 12.5;
+		    _angular_damp = 25.0;
+		    _thrust_offs = Ogre::Vector3(0,0.1,0);
+		    _fire_rate = 0.5;
+		    _fire_time = _fire_rate;
+		    _fire_force = 250.0;
+		    _fire_mass = 0.1;
+		    _fire_size = 0.25;
+		    _rockets = 0;
+
+
+		    // Create a space for the helicopter to live in
+		    _apache_space = new OgreOde::SimpleSpace(_world, _space);
+		    _apache_space->setInternalCollisions(false);
+		    _apache_space->setAutoCleanup(false);	
+
+		    // Create the physical body of the helicopter
+		    OgreOde::BoxMass apache_mass(1.5,Vector3(1.4,1.46,4.24));
+		    _apache = new OgreOde::Body(_world);
+		    _apache_body_node->attachObject(_apache);
+		    _apache->setMass(apache_mass);
+
+            _apache->setDamping(_linear_damp, _angular_damp);
+
+		    _bodies.push_back(_apache);
+		    _last_node = _apache_body_node;
+
+		    // Create the geometry of the helicopter from several bits
+
+		    // Main body
+		    OgreOde::TransformGeometry* trans = new OgreOde::TransformGeometry(_world, _apache_space);
+            trans->setBody(_apache);
+
+            _apache_body->setUserObject(trans);
+
+            OgreOde::BoxGeometry* geom = new OgreOde::BoxGeometry(Vector3(1.4,1.46,4.24), world, 0);		
+		    trans->setEncapsulatedGeometry(geom);
+		    geom->setPosition(Vector3(0.013,0.014,1.052));
+		    _geoms.push_back(geom);
+		    _geoms.push_back(trans);
+
+
+
+		    // Left wing
+		    trans = new OgreOde::TransformGeometry(_world, _apache_space);
+		    geom = new OgreOde::BoxGeometry(Vector3(0.75,0.55,1.05), world, 0);		
+		    trans->setBody(_apache);
+		    trans->setEncapsulatedGeometry(geom);
+		    geom->setPosition(Vector3(-1.089,-0.486,0.446));		
+		    _geoms.push_back(geom);
+		    _geoms.push_back(trans);
+
+		    // Right wing
+		    trans = new OgreOde::TransformGeometry(_world, _apache_space);
+		    geom = new OgreOde::BoxGeometry(Vector3(0.75,0.55,1.05), world, 0);		
+		    trans->setBody(_apache);
+		    trans->setEncapsulatedGeometry(geom);
+		    geom->setPosition(Vector3(1.089,-0.505,0.446));		
+		    _geoms.push_back(geom);
+		    _geoms.push_back(trans);
+
+		    // Tail boom
+		    trans = new OgreOde::TransformGeometry(_world, _apache_space);
+		    geom = new OgreOde::BoxGeometry(Vector3(0.73,0.66,3.28), world, 0);		
+		    trans->setBody(_apache);
+		    trans->setEncapsulatedGeometry(geom);
+		    geom->setPosition(Vector3(0,-0.533,-2.104));		
+		    _geoms.push_back(geom);
+		    _geoms.push_back(trans);
+
+		    // Tail flipper (probably not the technically correct name!)
+		    trans = new OgreOde::TransformGeometry(_world, _apache_space);
+		    geom = new OgreOde::BoxGeometry(Vector3(1.61,0.30,0.45), world, 0);		
+		    trans->setBody(_apache);
+		    trans->setEncapsulatedGeometry(geom);
+		    geom->setPosition(Vector3(-0.014,-0.622,-3.778));		
+		    _geoms.push_back(geom);
+		    _geoms.push_back(trans);
+
+		    // Tail fin
+		    trans = new OgreOde::TransformGeometry(_world, _apache_space);
+		    geom = new OgreOde::BoxGeometry(Vector3(0.30,1.27,0.96), world, 0);		
+		    trans->setBody(_apache);
+		    trans->setEncapsulatedGeometry(geom);
+		    geom->setPosition(Vector3(0,-0.042,-3.491));	
+		    _geoms.push_back(geom);
+		    _geoms.push_back(trans);
+
+		    // Rear wheel - a separate body connected by a ball joint, doesn't have a SceneNode
+		    OgreOde::SphereMass wheel_mass(0.02,0.06);
+		    _rear_wheel = new OgreOde::Body(_world);
+		    _rear_wheel->setMass(wheel_mass);
+		    _rear_wheel->setPosition(Vector3(0.0,0.068,-3.937));
+		    OgreOde::BallJoint* ball_joint = new OgreOde::BallJoint(_world);
+		    ball_joint->attach(_apache,_rear_wheel);
+		    ball_joint->setAnchor(_rear_wheel->getPosition());
+		    OgreOde::SphereGeometry* sphere = new OgreOde::SphereGeometry(0.06, _world, _apache_space);
+		    sphere->setBody(_rear_wheel);
+		    _geoms.push_back(sphere);
+		    _bodies.push_back(_rear_wheel);
+		    _joints.push_back(ball_joint);
+
+		    // Left front wheel - connected by a hinge joint so it can only roll forward
+		    OgreOde::SphereMass front_wheel_mass(0.03,0.17);
+		    _left_front = new OgreOde::Body(_world);
+		    _left_front->setMass(front_wheel_mass);
+		    _left_front->setPosition(Vector3(-0.699,0.199,1.163));
+		    OgreOde::HingeJoint* hinge_joint = new OgreOde::HingeJoint(_world);
+		    hinge_joint->attach(_apache,_left_front);
+		    hinge_joint->setAnchor(_left_front->getPosition());
+		    hinge_joint->setAxis(Vector3::UNIT_X);
+		    sphere = new OgreOde::SphereGeometry(0.17, _world, _apache_space);
+		    sphere->setBody(_left_front);
+		    _geoms.push_back(sphere);
+		    _bodies.push_back(_left_front);
+		    _joints.push_back(hinge_joint);
+
+		    // Right front wheel - connected by a hinge joint, doesn't have a SceneNode
+		    _right_front = new OgreOde::Body(_world);
+		    _right_front->setMass(front_wheel_mass);
+		    _right_front->setPosition(Vector3(0.699,0.185,1.163));
+		    hinge_joint = new OgreOde::HingeJoint(_world);
+		    hinge_joint->attach(_apache,_right_front);
+		    hinge_joint->setAnchor(_right_front->getPosition());
+		    hinge_joint->setAxis(Vector3::UNIT_X);
+		    sphere = new OgreOde::SphereGeometry(0.17, _world, _apache_space);
+		    sphere->setBody(_right_front);
+
+		    _geoms.push_back(sphere);
+		    _bodies.push_back(_right_front);
+		    _joints.push_back(hinge_joint);
+        }
+
+
+		// Create the wall of boxes to crash into, make it 
+		// smaller in Debug mode for performance reasons
+		int i = 0;
+#ifndef _DEBUG
+		for (Real y = 0.0;y <= 5.0;y += 1.0)
+		{
+			for (Real x = -6.0 + (y * 0.5);x <= 6.0 - (y * 0.5);x += 1.0)
+			{
+#else
+		for (Real y = 0.0;y <= 1.0;y += 1.0)
+		{
+			for (Real x = -2.0 + (y * 0.5);x <= 2.0 - (y * 0.5);x += 1.0)
+			{
+#endif
+				// Create the Ogre box
+				String name = String("Box_") + StringConverter::toString(i);
+                Entity* box = _mgr->createEntity(name,"crate.mesh");
+                box->setQueryFlags (GEOMETRY_QUERY_MASK);
+				box->setCastShadows(true);
+
+				SceneNode* node = _mgr->getRootSceneNode()->createChildSceneNode(name);
+				node->attachObject(box);
+				node->setScale(0.1,0.1,0.1);
+
+				// Set the position and rotate that, then rotate the box by the same amount
+				Quaternion q;
+				q.FromAngleAxis(Degree(45),Vector3::UNIT_Y);
+				Vector3 pos(x,y + 0.5,-10.0);
+				node->setPosition(q * pos);
+				node->setOrientation(q);
+
+				// Create a box for ODE and attach it to the Ogre version
+				OgreOde::Body* body = new OgreOde::Body(_world, name + "Body");
+				node->attachObject(body);
+				body->setMass(OgreOde::BoxMass(0.01,Vector3(1,1,1)));
+                body->setDamping (0.005, 0.005);
+
+				OgreOde::BoxGeometry* geom = new OgreOde::BoxGeometry(Vector3(1.0,1.0,1.0),_world, _space);
+                // Tie the collision geometry to the physical body
+                geom->setBody(body);
+                box->setUserObject(geom);
+
+				// Keep track of the ODE objects for house keeping
+				_bodies.push_back(body);
+				_geoms.push_back(geom);
+
+				i++;
+			}
+		}
+	}
+	virtual ~SimpleScenes_Crash()
+	{
+		// Destroy the non-standard scene nodes that make up the helicopter
+		_apache_body_node->removeAndDestroyChild("Main Rotor");
+		_apache_body_node->removeAndDestroyChild("Tail Rotor");
+		
+		// Remove the entities that represent the scene nodes we destroyed
+		_mgr->destroyEntity("Main Rotor");
+		_mgr->destroyEntity("Tail Rotor");
+        
+		// Delete the space in which the helicopter lived
+		delete _apache_space;
+	}
+
+	// Return our name for the test application to display
+	virtual const String& getName()
+	{
+		static String name = "Test Crash";
+		return name;
+	}
+
+	// Return a description of the keys that the user can use in this test
+	virtual const String& getKeys()
+	{
+		static String keys = "I/K - Throttle, J/L - Turn, G/B/V/N - Thrust, X - Fire";
+		return keys;
+	}
+
+#if (OGRE_VERSION_MINOR < 4)
+    // Handle the user's key presses	
+    virtual void frameEnded(Real time,InputReader* input)
+    {
+        // Do default key handling
+        SimpleScenes::frameEnded(time,input);
+#else
+
+    virtual void frameEnded(Real time, OIS::Keyboard* input, OIS::Mouse* mouse)
+    {
+        // Do default processing
+        SimpleScenes::frameEnded(time, input, mouse);
+#endif
+
+		// Throttle up or down
+		if (input->isKeyDown(KC_I)) _main_spd += (_main_response * time);
+		else if (input->isKeyDown(KC_K)) _main_spd -= (_main_response * time);
+
+		// Thrust left, right, forward, or back
+		_thrust_force = Ogre::Vector3::ZERO;
+		if (input->isKeyDown(KC_G)) _thrust_force.z += _thrust;
+		if (input->isKeyDown(KC_B)) _thrust_force.z -= _thrust;
+		if (input->isKeyDown(KC_V)) _thrust_force.x += _thrust;
+		if (input->isKeyDown(KC_N)) _thrust_force.x -= _thrust;
+
+		// Clamp the main rotor speed
+		_main_spd = std::max(_main_min,std::min(_main_max,_main_spd));
+
+		// Turn left or right or automatically stop the tail rotor
+		if (input->isKeyDown(KC_J)) _tail_spd += (_tail_response * time);
+		else if (input->isKeyDown(KC_L)) _tail_spd -= (_tail_response * time);
+		else
+		{
+			if (_tail_spd < 0.0)
+			{
+				_tail_spd += (_tail_response * time);
+				if (_tail_spd > 0.0) _tail_spd = 0.0;
+			}
+			else if (_tail_spd > 0.0)
+			{
+				_tail_spd -= (_tail_response * time);
+				if (_tail_spd < 0.0) _tail_spd = 0.0;
+			}
+		}
+		
+		// Clamp the tail rotor speed
+		_tail_spd = std::max(_tail_min,std::min(_tail_max,_tail_spd));
+
+		// Rotate the tail rotor scene node
+		_tail_rotor_node->rotate(Vector3::UNIT_X,Radian(_tail_spd * time * _rotate_scale));
+
+		// If there's some power being applied to the main rotor then...
+		if ((_main_spd > _main_min)||(!input->isKeyDown(KC_K)))
+		{
+			// Rotate the main rotor scene node
+			_main_rotor_node->rotate(Vector3::UNIT_Y,Radian(_main_spd * time * _rotate_scale));
+		}
+
+		// Fire rockets. Woo!
+		_fire_time += time;
+		if ((_fire_time > _fire_rate)&&(input->isKeyDown(KC_X)))
+		{
+			_fire_time = 0.0;
+			_rockets++;
+
+			// Create a rocket node and attach a particle system to it
+			const String name (String("Rocket_") + StringConverter::toString(_rockets));
+			ParticleSystem * rocketParticles = _mgr->createParticleSystem (name, "OgreOdeDemos/Rocket");
+			SceneNode * rocket_node = _mgr->getRootSceneNode ()->createChildSceneNode (name);
+			rocket_node->attachObject(rocketParticles);
+			
+			// Alternate firing between the left and right pods and 
+			// convert it from body coordinates to world
+			// Do the same with the firing "force" vector
+			const Vector3 pos (_apache->getPointWorldPosition (Vector3 (1.35 * ((_rockets & 1)?-1.0:1.0),-0.55,0.95)));
+			const Vector3 force (_apache->getVectorToWorld (Vector3 (0,0,_fire_force)));
+
+			rocket_node->setPosition (pos);
+
+			// Create a sphere for the physical body
+			OgreOde::Body* rocket_body = new OgreOde::Body (_world);
+			OgreOde::SphereGeometry* rocket_geom = 
+                new OgreOde::SphereGeometry (_fire_size, _world, _space);
+
+			rocket_body->setMass (OgreOde::SphereMass (_fire_mass,_fire_size));
+			rocket_body->setAffectedByGravity (false);
+			rocket_geom->setBody (rocket_body);
+
+			rocket_node->attachObject (rocket_body);
+			
+			_bodies.push_back (rocket_body);
+			_geoms.push_back (rocket_geom);
+
+			// Fire it off by applying an initial force
+			rocket_body->addForce (force);
+
+			// Initialise the rocket's life span to zero
+			_rocket_list[rocket_geom] = 0.0f;
+		}
+
+		// Check all the rockets
+		for (std::map<OgreOde::SphereGeometry*,Real>::iterator i = _rocket_list.begin();
+            i != _rocket_list.end();)
+		{
+            // Increase the time it's lived
+            float *rocketTime = &(i->second);
+			*rocketTime += time;
+
+			// If it had it's emitter disabled (see below) more than 2 seconds ago then kill it
+			if ((*rocketTime < 0.0))
+			{
+				// Get the geometry's body and kill any particle system attached to the same node
+				killParticleSystem (i->first);
+
+                OgreOde::Body * const body = i->first->getBody ();
+				// Manually remove the body from the list of managed bodies
+				for (std::vector<OgreOde::Body*>::iterator bi = _bodies.begin();
+                    bi != _bodies.end();)
+				{
+					if ((*bi) == body) 
+                        bi = _bodies.erase(bi);
+					else 
+                        ++bi;
+				}		
+					
+				// Manually delete the geometry from the list of managed geometries
+				for (std::vector<OgreOde::Geometry*>::iterator gi = _geoms.begin();
+                    gi != _geoms.end();)
+				{
+					if ((*gi) == i->first)
+                        gi = _geoms.erase(gi);
+					else 
+                        ++gi;
+				}			
+					
+				// Delete the actual body and geometry
+				delete body;						
+				delete i->first;
+
+				// Erase the rocket from the hash map
+				_rocket_list.erase(i++);
+			}
+			else 
+			{
+				// If the rocket has been alive for more than 2 seconds then kill its emitters (so it fades away)
+				if (*rocketTime > 3.0)
+                {
+                    OgreOde::SphereGeometry* sphereGeom = i->first;
+					killEmitters(sphereGeom, rocketTime);
+				}
+				++i;
+			}
+		}
+	}
+	
+	// Override the base collision callback, 'cos we don't want the "if connected" check doing
+	bool collision(OgreOde::Contact* contact)
+    {
+        OgreOde::Geometry* firstGeom = contact->getFirstGeometry();
+        OgreOde::Geometry* secondGeom = contact->getSecondGeometry();
+
+        OgreOde::SphereGeometry* rocketGeom = 0;
+        OgreOde::Geometry* otherGeom = 0;
+        float *time = 0;
+        std::map<OgreOde::SphereGeometry*,Real>::iterator li;
+        if (firstGeom->getClass () == OgreOde::Geometry::Class_Sphere || 
+            secondGeom->getClass () == OgreOde::Geometry::Class_Sphere)
+        {
+
+            // If a rocket's hit something then stop emitting particles
+            // check if it's a sphere (rocket proxy Geom...)
+            if (firstGeom->getClass () == OgreOde::Geometry::Class_Sphere)
+            {
+                li = _rocket_list.find(static_cast<OgreOde::SphereGeometry*>(firstGeom));
+                if (li != _rocket_list.end())
+                {   
+                    rocketGeom = li->first;
+                    time = &(li->second);
+                    otherGeom = secondGeom;
+                }
+            }
+
+            if (secondGeom->getClass () == OgreOde::Geometry::Class_Sphere)
+            {
+                std::map<OgreOde::SphereGeometry*,Real>::iterator li = 
+                    _rocket_list.find(static_cast<OgreOde::SphereGeometry*>(secondGeom));
+                if (li != _rocket_list.end())
+                {
+                    rocketGeom = li->first;
+                    time = &(li->second);
+                    otherGeom = firstGeom;
+                }
+            }
+            if (rocketGeom && *time > 0)
+            {
+                // prevent collision against Apache
+                if (otherGeom->getSpace() == _apache_space)
+                {
+                    return  false;
+                }
+
+                // there, Add an Explosion Effect (could make two sphere, one that destroy, one for the wave effect only.)
+                const Vector3 explosionCenter (contact->getPosition ());
+                Ogre::SphereSceneQuery* explosionAreaQuery =  _mgr->createSphereQuery(Sphere(explosionCenter, 20), 0xFFFFFFFF);
+
+                // asking for movable physic object (no particles system or static geometry (here the plane))
+                explosionAreaQuery->setQueryMask (GEOMETRY_QUERY_MASK | VEHICLE_QUERY_MASK);
+                explosionAreaQuery->setQueryTypeMask(SceneManager::ENTITY_TYPE_MASK);
+
+                const SceneQueryResult& result = explosionAreaQuery->execute ();
+                if (!result.movables.empty())
+                {
+                    SceneQueryResultMovableList::const_iterator i = result.movables.begin();
+                    while(i != result.movables.end())
+                    {
+                        //GEOMETRY_QUERY_MASK
+                        OgreOde::Geometry *affectedGeom = static_cast <OgreOde::Geometry *> ((*i)->getUserObject ());
+                        assert (affectedGeom != rocketGeom);
+                        assert (affectedGeom);
+                        OgreOde::Body *affectedBody = affectedGeom->getBody ();                        
+                        assert (affectedBody);
+                        Vector3 forceAreaDirection = (*i)->getParentNode()->getPosition() - explosionCenter;
+                        const Real forcePower = forceAreaDirection.squaredLength () / 5;
+                        forceAreaDirection.normalise ();
+
+                        // Apply the main rotor force
+                        affectedBody->addForce(forceAreaDirection * forcePower);
+                        
+                        ++i;
+                    }
+                }
+
+                // remove particle and rocket geom
+                killEmitters(rocketGeom, time);
+
+                // add explosion particles
+                _rocket_node_explosion->setPosition(explosionCenter);
+                _rocket_node_explosion->setVisible(true);
+
+                resetParticleSystem(_rocketParticles_explosion, true, 0.1);
+                resetParticleSystem(_rocketParticles_smoke_white, true, 0.3);
+                resetParticleSystem(_rocketParticles_smoke, true, 0.6);
+            }
+            
+        }
+		// Set the friction at the contact
+		contact->setCoulombFriction(5.0);
+
+		// Yes, this collision is valid
+		return true;
+	}
+
+	// Will get called just before each time step, since a timestep zeros the force accumulators
+	void addForcesAndTorques()
+	{
+		// Apply the main rotor force
+		_apache->addForce(Vector3(0,_main_spd * _main_scale,0));
+
+		// Apply the tail rotor torque
+		_apache->addRelativeTorque(Vector3(0,_tail_spd * _tail_scale,0));
+
+		// Apply the thrust force
+		_apache->addRelativeForceAtRelative(_thrust_force,_thrust_offs);
+
+       
+	}
+
+protected:
+
+	// Kill the emitters for any particle systems attached to the same node
+	// as the body with which the specified geometry is associated (if that makes sense!)
+	void killEmitters(OgreOde::SphereGeometry* geom, Real* time = 0)
+	{
+		// Find the body
+		OgreOde::Body* body = geom->getBody();
+		if (body)
+		{
+			// Find the associated scene node
+			SceneNode* node = static_cast<SceneNode*>(body->getParentNode());
+			if (node)
+			{
+				// Kill the emitters of any attached particle systems
+				for (int i = 0;i < node->numAttachedObjects();i++)
+				{
+					MovableObject* obj = node->getAttachedObject(i);
+					if (obj->getMovableType() == "ParticleSystem")
+					{ 
+						static_cast<ParticleSystem*>(obj)->removeAllEmitters();
+					}
+				}
+			}
+
+			// Set the life span value so that we can easily tell 
+			// that its had its emitters deleted
+			if (time) 
+                *time = -100.0;
+		}
+	}
+
+
+    void resetParticleSystem(Ogre::ParticleSystem *ps, bool enable, const Ogre::Real delay)
+    {
+       const unsigned short numEmitters = ps->getNumEmitters();
+       for (unsigned short i = 0; i < numEmitters; i++)
+       {
+           Ogre::ParticleEmitter *pe = ps->getEmitter(i);
+           pe->setEnabled(enable);
+           pe->setStartTime (delay);
+       }
+
+       ps->setSpeedFactor(enable ? 1.0 : 0.0);
+    }
+	// Kill the particle system and scene node associated with this geometry
+	void killParticleSystem(OgreOde::SphereGeometry* geom)
+	{
+		// Find the body
+		OgreOde::Body* body = geom->getBody();
+		if (body)
+		{
+			// Find the scene node
+			SceneNode* node = static_cast<SceneNode*>(body->getParentNode());
+			if (node)
+			{							
+				MovableObject* obj = 0;				
+				for (int i = 0;i < node->numAttachedObjects();i++)
+				{
+					// If this object isn't an OgreOde::Body then it must be
+					// (in our demo) a particle system that we need to delete
+					MovableObject* can_obj = node->getAttachedObject(i);
+					if (can_obj->getMovableType() != "OgreOde::Body") 
+                        obj = can_obj;
+				}
+
+				// Delete the node
+				_mgr->getRootSceneNode()->removeAndDestroyChild(node->getName());
+
+				// If we found a particle system then delete it
+				if (obj) 
+                    _mgr->destroyParticleSystem(obj->getName());
+			}
+		}
+	}
+
+protected:
+	// Things we'll control and delete manually
+	Entity *_apache_body,*_main_rotor,*_tail_rotor;
+	SceneNode *_apache_body_node,*_main_rotor_node,*_tail_rotor_node;
+
+	Real _rotate_scale;
+	
+	// Physical things we'll need to apply forces to and delete manually
+	OgreOde::Body *_apache,*_rear_wheel,*_left_front,*_right_front;
+	OgreOde::SimpleSpace* _apache_space;
+
+
+	// The worst helicopter flight model in the world!
+	Real _main_spd,_main_response,_main_scale,_main_min,_main_max;
+	Real _tail_spd,_tail_response,_tail_scale,_tail_min,_tail_max;
+	Real _thrust,_linear_damp,_angular_damp;
+	Vector3 _thrust_offs,_thrust_force;
+
+	// Stuff to help us shoot things
+	Real _fire_rate,_fire_time,_fire_force,_fire_mass,_fire_size;
+	std::map<OgreOde::SphereGeometry*,Real> _rocket_list;
+	int _rockets;  
+
+
+    SceneNode * _rocket_node_explosion;
+    ParticleSystem * _rocketParticles_explosion;
+    ParticleSystem * _rocketParticles_smoke_white;
+    ParticleSystem * _rocketParticles_smoke;
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/include/SimpleScenes_Joints.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenes_Joints.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenes_Joints.h	(revision 21)
@@ -0,0 +1,216 @@
+/*
+SimpleScenes_Joints.h
+---------------------
+A demo using Ogre and the OgreOde wrapper to demonstrate joints.
+*/
+#ifndef _SIMPLESCENES_JOINTS_H_
+#define _SIMPLESCENES_JOINTS_H_
+
+/*
+The joints test extends the base test class
+*/
+class SimpleScenes_Joints:public SimpleScenes
+{
+public:
+
+	// Create the scene, just a load of differently hinged doors
+    SimpleScenes_Joints(OgreOde::World *world) :
+      SimpleScenes(world)
+	{
+		left = right = up = false;
+
+		// Create the player's ball
+		Entity* entity = _mgr->createEntity("Ball","ball.mesh");
+		entity->setNormaliseNormals(true);
+		entity->setCastShadows(true);
+
+		SceneNode* node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+
+		node->attachObject(entity);
+		node->setScale(0.2,0.2,0.2);
+		node->setPosition(0,1.2,0);
+
+		OgreOde::EntityInformer ei(entity,Matrix4::getScale(node->getScale()));
+		ball_body = ei.createSingleDynamicSphere(5.0,_world, _space);
+		_last_node = static_cast<SceneNode*>(ball_body->getParentNode());	
+		_bodies.push_back(ball_body);
+		_geoms.push_back(ball_body->getGeometry(0));
+
+		// Make the ball stay in the X/Y plane
+#ifdef OGREODE_PLANARJOINT
+		OgreOde::PlanarJoint* joint2d = new OgreOde::PlanarJoint();
+		joint2d->attach(ball_body);
+		_joints.push_back(joint2d);
+#endif
+
+		// Create the free standing door
+		entity = _mgr->createEntity("Free_Door","door.mesh");
+		entity->setNormaliseNormals(true);
+		entity->setCastShadows(true);
+
+		node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+
+		node->attachObject(entity);
+		node->setPosition(15,4,0);
+		node->setOrientation(Quaternion(Degree(90),Vector3(0,1,0)));
+		node->setScale(2,2,2);
+
+		OgreOde::EntityInformer ei1(entity,Matrix4::getScale(node->getScale()));
+		OgreOde::Body* body = ei1.createSingleDynamicBox(20.0, _world, _space);
+		_bodies.push_back(body);
+		_geoms.push_back(body->getGeometry(0));
+
+		// Create a door hinged at the left hand side
+		entity = _mgr->createEntity("Left_Door","door.mesh");
+		entity->setNormaliseNormals(true);
+		entity->setCastShadows(true);
+
+		node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+
+		node->attachObject(entity);
+		node->setPosition(-10,4.01,1.5);
+		node->setOrientation(Quaternion(Degree(-90),Vector3(0,1,0)));
+		node->setScale(2,2,2);
+
+		OgreOde::EntityInformer ei2(entity,Matrix4::getScale(node->getScale()));
+		body = ei2.createSingleDynamicBox(20.0,_world, _space);
+		body->setDamping(0,20);
+
+		OgreOde::HingeJoint* joint = new OgreOde::HingeJoint(_world);
+		joint->attach(body);
+		joint->setAxis(Vector3::UNIT_Y);
+		joint->setAnchor(Vector3(-10,4.01,3.5));
+
+		_bodies.push_back(body);
+		_geoms.push_back(body->getGeometry(0));
+		_joints.push_back(joint);
+
+		// Create a door hinged at the right hand side
+		entity = _mgr->createEntity("Right_Door","door.mesh");
+		entity->setNormaliseNormals(true);
+		entity->setCastShadows(true);
+
+		node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+
+		node->attachObject(entity);
+		node->setPosition(-15,4.01,-1.5);
+		node->setOrientation(Quaternion(Degree(90),Vector3(0,1,0)));
+		node->setScale(2,2,2);
+
+		OgreOde::EntityInformer ei3(entity,Matrix4::getScale(node->getScale()));
+		body = ei3.createSingleDynamicBox(20.0,_world, _space);
+		body->setDamping(0,20);
+
+		joint = new OgreOde::HingeJoint(_world);
+		joint->attach(body);
+		joint->setAxis(Vector3::UNIT_Y);
+		joint->setAnchor(Vector3(-15,4.01,-3.5));
+
+		_bodies.push_back(body);
+		_geoms.push_back(body->getGeometry(0));
+		_joints.push_back(joint);
+
+		// Create a door hinged at the top
+		entity = _mgr->createEntity("Top_Door","door.mesh");
+		entity->setNormaliseNormals(true);
+		entity->setCastShadows(true);
+
+		node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+
+		node->attachObject(entity);
+		node->setPosition(10,4.1,0);
+		node->setOrientation(Quaternion(Degree(90),Vector3(0,1,0)));
+		node->setScale(2,2,2);
+
+		OgreOde::EntityInformer ei4(entity,Matrix4::getScale(node->getScale()));
+		body = ei4.createSingleDynamicBox(20.0,_world, _space);
+		body->setDamping(0,20);
+
+		joint = new OgreOde::HingeJoint(_world);
+		joint->attach(body);
+		joint->setAxis(Vector3::UNIT_Z);
+		joint->setAnchor(Vector3(10,8.1,0));
+
+		_bodies.push_back(body);
+		_geoms.push_back(body->getGeometry(0));
+		_joints.push_back(joint);
+	}
+	
+	// Standard destructor
+	virtual ~SimpleScenes_Joints(){}
+
+	// Return our name for the test application to display
+	virtual const String& getName()
+	{
+		static String name = "Test Joints";
+		return name;
+	}
+
+	// Return a description of the keys that the user can use in this test
+	virtual const String& getKeys()
+	{
+		static String keys = "I - Bounce, J - Left, L - Right";
+		return keys;
+	}
+
+	// Gets called every time the world is stepped, so we can apply forces every time step
+	virtual void addForcesAndTorques()
+	{
+		// Apply a torque about the Z axis to roll the ball left 
+		if(left)
+		{
+			ball_body->wake();
+			ball_body->addTorque(Vector3(0,0,50));
+		}
+
+		// Apply a torque about the Z axis to roll the ball right
+		if(right)
+		{
+			ball_body->wake();
+			ball_body->addTorque(Vector3(0,0,-50));
+		}
+
+		// Apply an upwards force, or at least opposite to gravity
+		if(up)
+		{
+			ball_body->wake();
+			ball_body->addForce(_world->getGravity() * -10.0);
+		}
+	}
+
+#if (OGRE_VERSION_MINOR < 4)
+    // Handle the user's key presses	
+    virtual void frameEnded(Real time,InputReader* input)
+    {
+        // Do default key handling
+        SimpleScenes::frameEnded(time,input);
+#else
+
+    virtual void frameEnded(Real time, OIS::Keyboard* input, OIS::Mouse* mouse)
+    {
+        // Do default processing
+        SimpleScenes::frameEnded(time, input, mouse);
+#endif
+
+		// Set the key flags so we can apply forces at the right time
+		left = input->isKeyDown(KC_J);
+		right = input->isKeyDown(KC_L);
+		up = input->isKeyDown(KC_I);
+	}
+	
+	// Set up the collision properties
+	virtual bool collision(OgreOde::Contact* contact)
+	{
+		contact->setBouncyness(0.8);
+		contact->setCoulombFriction(OgreOde::Utility::Infinity);
+		contact->setFrictionMode(OgreOde::Contact::Flag_FrictionPyramid);
+
+		return true;
+	}
+
+protected:
+	OgreOde::Body *ball_body;
+	bool left,right,up;
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/include/SimpleScenes_TriMesh.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenes_TriMesh.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenes_TriMesh.h	(revision 21)
@@ -0,0 +1,55 @@
+/*
+SimpleScenes_TriMesh.h
+---------------------
+A reimplementation of the ODE triangle mesh collision
+demo using Ogre and the OgreOde wrapper.
+*/
+#ifndef _SIMPLESCENES_TRIMESH_H_
+#define _SIMPLESCENES_TRIMESH_H_
+
+/*
+The box stacking test extends the box stacking demo, but adds a trimesh!
+*/
+class SimpleScenes_TriMesh:public SimpleScenes_BoxStack
+{
+public:
+	// Standard constructor, but create a triangle mesh
+    SimpleScenes_TriMesh(OgreOde::World *world) :
+	      SimpleScenes_BoxStack (world)
+	{
+		// Create the visual entity and scene node
+		Entity* entity = _mgr->createEntity("Landscape","landscape.mesh");
+
+		SceneNode* node = _mgr->getRootSceneNode()->createChildSceneNode(entity->getName());
+		node->attachObject(entity);
+		node->setScale(Vector3(0.4,0.3,0.4));
+		node->setPosition(Vector3(0,3,0));
+        node->setOrientation(Quaternion(Degree(30),Vector3::UNIT_Y));
+
+        entity->setNormaliseNormals(true);
+		//entity->setCastShadows(false);
+		
+		// Turn it into a triangle mesh static geometry
+		OgreOde::EntityInformer ei(entity,node->_getFullTransform());
+        OgreOde::Geometry *geom = ei.createStaticTriangleMesh(_world, _space);
+        entity->setUserObject (geom);
+        _geoms.push_back(geom);
+	}
+
+	// Destructor, manually destroy the entity and node, since they're 
+	// not associated with a body they won't get deleted automatically
+	virtual ~SimpleScenes_TriMesh()
+	{
+		_mgr->destroySceneNode("Landscape");
+		_mgr->destroyEntity("Landscape");
+	}
+
+	// Return our name for the test application to display
+	virtual const String& getName()
+	{
+		static String name = "Test Triangle Mesh";
+		return name;
+	}
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/include/SimpleScenes_Zombie.h
===================================================================
--- /ogreode/demos/SimpleScenes/include/SimpleScenes_Zombie.h	(revision 21)
+++ /ogreode/demos/SimpleScenes/include/SimpleScenes_Zombie.h	(revision 21)
@@ -0,0 +1,400 @@
+/*
+SimpleScenes_RagDoll.h
+---------------------
+A demo RagDoll shooting demo, showing ragdolls and ray intersections.
+*/
+#ifndef _SIMPLESCENES_ZOMBIE_H_
+#define _SIMPLESCENES_ZOMBIE_H_
+
+static const String xmlNames[] = {
+    "zombie",
+    "zombie",
+    "ninja",
+    "robot",
+	"GingerBreadMan"
+};
+static const String meshNames[] = {
+    "zombie_small.mesh",
+    "zombie_small.mesh",
+    "ninja.mesh",
+	"robot.mesh",
+	"GingerBreadMan.mesh"
+};
+static const String meshAnimation [] = {
+    "Walk1",
+    "Walk1",
+    "Walk",
+	"Walk",
+	"Walk1"
+};
+static const Ogre::Vector3 meshScale [] = {
+    Ogre::Vector3(1.0, 1.0, 1.0),
+    Ogre::Vector3(1.0, 1.0, 1.0),
+    Ogre::Vector3(0.02, 0.02, 0.02),
+	Ogre::Vector3(0.05, 0.05, 0.05),
+	Ogre::Vector3(1.0, 1.0, 1.0),
+};
+static const String ragdollFile [] = {
+    "zombie.ogreode",
+    "zombie_auto.ogreode",
+    "ninja.ogreode",
+    "robot.ogreode",
+	"gingerbreadman.ogreode"
+};
+static size_t sSelectedMesh = 4;
+
+#ifdef _DEBUG
+	static size_t sMaxRagdoll = 10;
+#else //_DEBUG
+	static size_t sMaxRagdoll = 30;
+#endif //_DEBUG
+
+/*
+The zombie demo extends the base test class
+*/
+class SimpleScenes_Zombie:public SimpleScenes
+{
+private:
+    typedef std::list<OgreOde_Prefab::Ragdoll *> RagDollList;
+
+    struct ragDollData
+    {
+       int  sSelectedMesh;
+      Ogre::Real timeSinceBirth;
+	  Ogre::Real timeSincePhysical;
+    };
+
+public:
+	void createRagDoll()
+    {
+
+		_last_ragdoll = 0.0;
+	
+        OgreOde_Prefab::Ragdoll *ragdoll = static_cast <OgreOde_Prefab::Ragdoll *> (dotOgreOdeLoader->loadObject(ragdollFile[sSelectedMesh],
+                                                                             xmlNames[sSelectedMesh],
+                                                                             "zombie" + StringConverter::toString(_ragdoll_count++)));
+
+
+
+		ragdoll->setCastShadows(true);		
+		ragdoll->setQueryFlags (ZOMBIE_QUERY_MASK);
+
+        Any a = ragdoll->getUserAny ();
+        assert (a.isEmpty ());
+        {
+            ragDollData *b  = new ragDollData ();
+
+            b->timeSinceBirth = 0.0f;
+            b->timeSincePhysical = 0.0f;
+            b->sSelectedMesh = sSelectedMesh;
+			
+
+            Any *newA = new Any(b);                        
+            ragdoll->setUserAny (*newA);
+        }
+
+
+		// Add entity to the scene node
+		SceneNode *ragdoll_node = _mgr->getRootSceneNode()->createChildSceneNode(ragdoll->getName() + "Node");
+		ragdoll_node->attachObject(ragdoll);
+		ragdoll_node->yaw(Degree(rand() % 360));
+		ragdoll_node->setPosition(0.0,0.0,0);
+        ragdoll_node->setScale( meshScale[sSelectedMesh]);
+
+		_last_node = ragdoll_node;
+
+        
+		ragdoll->getAnimationState(meshAnimation[sSelectedMesh])->setEnabled(true);
+
+        myRagDolls.push_back (ragdoll);
+
+
+        //sSelectedMesh = (sSelectedMesh + 1) % 4;
+	}
+
+	// Constructor
+    SimpleScenes_Zombie(OgreOde::World *world) :
+        SimpleScenes(world)
+	{
+		_over = (Overlay*)OverlayManager::getSingleton().getByName("OgreOdeDemos/Target");    
+		_over->show();
+
+		_gun = _mgr->createEntity("gun","gun.mesh");
+		_gun->setCastShadows(false);
+
+		_gun_node = _mgr->getRootSceneNode()->createChildSceneNode("gun");
+		_gun_node->attachObject(_gun);
+
+		_camera = _mgr->getCamera("PlayerCam");
+
+		_animation_speed = 1.0;
+		_ragdoll_count = 0;
+		createRagDoll();
+
+		_shot_time = 0.0;
+
+		myOdeRay = new OgreOde::RayGeometry(1000.0, _world, _space);
+		mRayQuery = _mgr->createRayQuery(Ray());
+		mRayQuery->setQueryMask (ZOMBIE_QUERY_MASK);
+		mRayQuery->setQueryTypeMask(SceneManager::ENTITY_TYPE_MASK);
+	}
+	
+	// Destructor
+	virtual ~SimpleScenes_Zombie()
+    {    
+        for ( RagDollList::iterator zE = myRagDolls.begin();
+            zE != myRagDolls.end(); ++zE)
+        {
+            assert ((*zE)->getParentNode ());
+            assert ((*zE)->getParentNode ()->getParent());
+            (static_cast<SceneNode*> ((*zE)->getParentNode ()->getParent()))->removeAndDestroyChild(
+                (*zE)->getParentNode ()->getName ());
+            _mgr->destroyMovableObject((*zE)->getName(), OgreOde_Prefab::RagdollFactory::FACTORY_TYPE_NAME);
+                
+		}   
+		delete myOdeRay;
+
+		_over->hide();
+		_mgr->destroySceneNode("gun");
+		_mgr->destroyEntity("gun");
+		_mgr->destroyQuery (mRayQuery);
+	}
+
+	// Return our name for the test application to display
+	virtual const String& getName()
+	{
+		static String name = "RagDoll Shooting Gallery";
+		return name;
+	}
+
+	// Return a description of the keys that the user can use in this test
+	virtual const String& getKeys()
+	{
+		static String keys = "X - Shoot";
+		return keys;
+	}
+
+   
+#if (OGRE_VERSION_MINOR < 4)
+    virtual void frameStarted(Real time, InputReader* input)
+#else
+    virtual void frameStarted(Real time, OIS::Keyboard* input, OIS::Mouse* mouse)
+#endif //OGRE_VERSION not heihort
+	{
+		_last_ragdoll += time;
+
+        // Do default key handling
+#if (OGRE_VERSION_MINOR < 4)
+        SimpleScenes::frameEnded(time, input);
+#else
+        SimpleScenes::frameEnded(time, input, mouse);
+#endif //OGRE_VERSION not heihort
+
+		_gun_node->setOrientation(_camera->getOrientation());
+		_gun_node->setPosition(_camera->getPosition() + (_camera->getOrientation() * Ogre::Vector3(0.3,-0.15,-1.1)));
+
+        for ( RagDollList::iterator zE = myRagDolls.begin();
+            zE != myRagDolls.end(); 
+            ++zE)
+        {   
+            ragDollData *b = any_cast<ragDollData *> ((*zE)->getUserAny());
+            if ((*zE)->isPhysical())
+            {
+                if (!(*zE)->isStatic())
+                {
+
+                    b->timeSincePhysical += time;
+                    (*zE)->update();// RagDoll Activated
+                }
+            }
+            else
+            {
+                (*zE)->getAnimationState(meshAnimation[b->sSelectedMesh])->addTime(time * _animation_speed);
+
+                (*zE)->getParentNode ()->translate(
+                    (*zE)->getParentNode ()->getOrientation() * (Vector3::UNIT_Z * time * 2.5));
+                
+            }
+        }
+
+	}
+
+
+#if (OGRE_VERSION_MINOR < 4)
+    // Handle the user's key presses	
+    virtual void frameEnded(Real time,InputReader* input)
+    {
+        // Do default key handling
+        SimpleScenes::frameEnded(time,input);
+#else
+
+    virtual void frameEnded(Real time, OIS::Keyboard* input, OIS::Mouse* mouse)
+    {
+        // Do default processing
+        SimpleScenes::frameEnded(time, input, mouse);
+#endif
+		_shot_time -= time;
+
+		if (_key_delay > 0 &&
+            input->isKeyDown(KC_C))
+        {  
+            for ( RagDollList::iterator zE = myRagDolls.begin();
+                zE != myRagDolls.end(); 
+                ++zE)
+            {
+                if ((*zE)->isPhysical())
+                {
+                    (*zE)->releasePhysicalControl();
+                    ragDollData *b = any_cast<ragDollData *> ((*zE)->getUserAny());
+                    (*zE)->getAnimationState(meshAnimation[b->sSelectedMesh])->setEnabled(true);
+                }
+            }
+
+            _key_delay = SimpleScenes::KEY_DELAY;
+		}
+
+
+
+        if (_shot_time <= 0.0 &&             
+#if (OGRE_VERSION_MINOR < 4)
+             (input->isKeyDown(KC_X) || input->getMouseButton (0)))
+#else
+            ( input->isKeyDown(KC_X) || mouse->getMouseState().buttonDown(OIS::MB_Left)))
+#endif
+		{
+
+			Ray pickRay = _camera->getCameraToViewportRay(0.5, 0.5);
+			myOdeRay->setDefinition(pickRay.getOrigin(), pickRay.getDirection());
+
+			_shot_time = 0.2;
+
+			mRayQuery->setRay (pickRay);
+			const RaySceneQueryResult& result = mRayQuery->execute();
+			if (!result.empty())
+			{
+				RaySceneQueryResult::const_iterator i = result.begin();
+		
+				//mRayQuery->setSortByDistance (true, 1);//only one hit
+				myOdeRay->enable ();
+				while((i != result.end()))
+				{
+
+					_last_ragdoll = 5.0;
+
+					OgreOde_Prefab::Ragdoll * const radgoll =
+						static_cast<OgreOde_Prefab::Ragdoll *> (i->movable);
+
+				   // uncomment to see nice debug mesh of animated mesh
+//#define _TESTTRIMESH
+#ifdef _TESTTRIMESH 
+
+					// ray cast could be tested against that instead of ragdoll.
+					// depending on complexity of mesh could be simpler
+					OgreOde::EntityInformer ei((*zE), (*zE)->getParentNode ()->_getFullTransform());
+					_geoms.push_back(ei.createStaticTriangleMesh(_space));
+#else //_TESTTRIMESH
+					bool wasPhysical = radgoll->isPhysical ();
+					if (!wasPhysical)
+					{
+						ragDollData * const b = any_cast<ragDollData *> (radgoll->getUserAny());
+						radgoll->getAnimationState(meshAnimation[b->sSelectedMesh])->setEnabled(false);
+
+						
+						// Create the ragdoll
+						radgoll->takePhysicalControl(_world, _space, false);
+						radgoll->setSelfCollisions(false);
+
+					}
+
+
+                    OgreOde::Body *hit_body;
+                    Ogre::Vector3 hit_point;
+
+					bool is_hit = false;
+					if (radgoll->pick(myOdeRay, hit_body, hit_point))
+					{
+						if (hit_body)
+						{
+							hit_body->addForceAt(pickRay.getDirection() * 250000, hit_point);
+							is_hit = true;
+							ragDollData *b = any_cast<ragDollData *> (radgoll->getUserAny());
+							b->timeSincePhysical = 0.0f;
+						}
+					}
+
+					if (!is_hit&& !wasPhysical)
+					{
+						radgoll->releasePhysicalControl();
+						ragDollData *b = any_cast<ragDollData *> (radgoll->getUserAny());
+						radgoll->getAnimationState(meshAnimation[b->sSelectedMesh])->setEnabled(true);
+					}
+#endif //_TESTTRIMESH	
+
+					++i;
+				}	// if results.	
+			}
+			myOdeRay->disable ();
+        }
+			
+	           
+		for ( RagDollList::iterator zE = myRagDolls.begin();
+			zE != myRagDolls.end(); )
+		{
+
+			OgreOde_Prefab::Ragdoll * const radgoll = (*zE);
+			ragDollData *b = any_cast<ragDollData *> (radgoll->getUserAny());
+			b->timeSinceBirth += time;
+
+			// turn to stone to improve fps,
+			// better way to do that would be to tweak
+			// simulation parameters to be less jitty.
+			// better auto sleep
+			if (radgoll->isPhysical() 
+				&& !radgoll->isStatic() 
+				&& radgoll->isAwake()
+				&& b->timeSincePhysical > 5.0)
+			{
+				//radgoll->turnToStone();
+				radgoll->sleep();
+			}
+			
+            
+			if ( b->timeSinceBirth > sMaxRagdoll)
+			{
+				(static_cast<SceneNode*> (radgoll->getParentNode ()->getParent()))->removeAndDestroyChild(
+					radgoll->getParentNode ()->getName ());
+				_mgr->destroyMovableObject(radgoll->getName(), OgreOde_Prefab::RagdollFactory::FACTORY_TYPE_NAME);
+				zE = myRagDolls.erase(zE);
+			}
+			else
+			{
+				++zE;
+			}
+		}
+        if (_last_ragdoll > 5.0 && 
+            myRagDolls.size() < static_cast<size_t>(sMaxRagdoll))
+            createRagDoll();
+		
+	}
+
+protected:
+	RagDollList myRagDolls;
+	RaySceneQuery *mRayQuery;
+
+	Real _animation_speed;
+
+	Entity *_gun;
+	SceneNode *_gun_node;
+
+	OgreOde::RayGeometry *myOdeRay;
+
+	Camera* _camera;
+	Overlay* _over;
+
+	Real _shot_time;
+
+	Real _last_ragdoll;
+	int _ragdoll_count;
+};
+
+#endif
Index: /ogreode/demos/SimpleScenes/obj/Debug/keep.me
===================================================================
--- /ogreode/demos/SimpleScenes/obj/Debug/keep.me	(revision 21)
+++ /ogreode/demos/SimpleScenes/obj/Debug/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/SimpleScenes/obj/Release/keep.me
===================================================================
--- /ogreode/demos/SimpleScenes/obj/Release/keep.me	(revision 21)
+++ /ogreode/demos/SimpleScenes/obj/Release/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/SimpleScenes/scripts/CodeBlocks/Demo_SimpleScenes.cbp
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/CodeBlocks/Demo_SimpleScenes.cbp	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/CodeBlocks/Demo_SimpleScenes.cbp	(revision 21)
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="4" />
+	<Project>
+		<Option title="Demo_SimpleScenes" />
+		<Option pch_mode="2" />
+		<Option compiler="gcc" />
+		<Build>
+			<Target title="Debug|Win32">
+				<Option output="..\..\bin\Debug|Win32\OgreOdeDemo_SimpleScenes.exe" />
+				<Option object_output="..\..\obj\Debug|Win32" />
+				<Option external_deps="..\..\lib\Debug|Win32\libOgreOde_Prefab_d.a;..\..\lib\Debug|Win32\libOgreOde_Core_d.a;" />
+				<Option type="0" />
+				<Option compiler="gcc" />
+				<Option projectResourceIncludeDirsRelation="0" />
+				<Compiler>
+					<Add option="-DWIN32" />
+					<Add option="-D_DEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add option="-W" />
+					<Add option="-O0" />
+					<Add directory="..\..\include" />
+					<Add directory="..\..\..\..\include" />
+					<Add directory="..\..\..\..\prefab\include" />
+					<Add directory="..\..\..\..\ode\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="$(OGRE_HOME)\Samples\include" />
+				</Compiler>
+				<Linker>
+					<Add library="OgreMain_d" />
+					<Add library="OgreOde_Core_d" />
+					<Add library="OgreOde_Prefab_d" />
+					<Add library="..\..\lib\Debug|Win32\libOgreOde_Prefab_d.a" />
+					<Add library="..\..\lib\Debug|Win32\libOgreOde_Core_d.a" />
+					<Add directory="$(OGRE_HOME)\lib\" />
+					<Add directory="..\..\..\..\lib\Debug|Win32" />
+					<Add directory="..\..\..\..\prefab\lib\Debug|Win32" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="copy ..\..\bin\Debug|Win32\OgreOdeDemo_SimpleScenes.exe $(OGRE_HOME)\bin\Debug|Win32" />
+				</ExtraCommands>
+			</Target>
+			<Target title="Release|Win32">
+				<Option output="..\..\bin\Release|Win32\OgreOdeDemo_SimpleScenes.exe" />
+				<Option object_output="..\..\obj\Release|Win32" />
+				<Option external_deps="..\..\lib\Release|Win32\libOgreOde_Prefab.a;..\..\lib\Release|Win32\libOgreOde_Core.a;" />
+				<Option type="0" />
+				<Option compiler="gcc" />
+				<Option projectResourceIncludeDirsRelation="0" />
+				<Compiler>
+					<Add option="-DWIN32" />
+					<Add option="-DNDEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add option="-W" />
+					<Add option="-g" />
+					<Add directory="..\..\include" />
+					<Add directory="..\..\..\..\include" />
+					<Add directory="..\..\..\..\prefab\include" />
+					<Add directory="..\..\..\..\ode\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="$(OGRE_HOME)\Samples\include" />
+				</Compiler>
+				<Linker>
+					<Add library="OgreMain" />
+					<Add library="OgreOde_Core" />
+					<Add library="OgreOde_Prefab" />
+					<Add library="..\..\lib\Release|Win32\libOgreOde_Prefab.a" />
+					<Add library="..\..\lib\Release|Win32\libOgreOde_Core.a" />
+					<Add directory="$(OGRE_HOME)\lib\" />
+					<Add directory="..\..\..\..\lib\Release|Win32" />
+					<Add directory="..\..\..\..\prefab\lib\Release|Win32" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="copy ..\..\bin\Release|Win32\OgreOdeDemo_SimpleScenes.exe $(OGRE_HOME)\bin\Release|Win32" />
+				</ExtraCommands>
+			</Target>
+		</Build>
+		<Unit filename="..\..\include\SimpleScenes.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\include\SimpleScenesApplication.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\include\SimpleScenes_BoxStack.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\include\SimpleScenes_Buggy.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\include\SimpleScenes_Chain.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\include\SimpleScenes_Crash.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\include\SimpleScenes_Joints.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\include\SimpleScenes_TriMesh.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\include\SimpleScenes_Zombie.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\src\SimpleScenes.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Unit filename="..\..\src\SimpleScenesApplication.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug|Win32" />
+			<Option target="Release|Win32" />
+		</Unit>
+		<Extensions />
+	</Project>
+</CodeBlocks_project_file>
Index: /ogreode/demos/SimpleScenes/scripts/Linux/keep.me
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/Linux/keep.me	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/Linux/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/SimpleScenes/scripts/Mac/keep.me
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/Mac/keep.me	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/Mac/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/SimpleScenes/scripts/VC6/keep.me
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC6/keep.me	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC6/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/SimpleScenes/scripts/VC7.1/Demo_SimpleScenes.vcproj
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC7.1/Demo_SimpleScenes.vcproj	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC7.1/Demo_SimpleScenes.vcproj	(revision 21)
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Demo_SimpleScenes"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include;..\..\..\..\prefab\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_SimpleScenes.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include;..\..\..\..\prefab\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\SimpleScenes.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\SimpleScenesApplication.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\SimpleScenes.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_BoxStack.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Buggy.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Chain.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Crash.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Joints.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_TriMesh.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Zombie.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenesApplication.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/SimpleScenes/scripts/VC7.1/Demo_SimpleScenes_Source.vcproj
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC7.1/Demo_SimpleScenes_Source.vcproj	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC7.1/Demo_SimpleScenes_Source.vcproj	(revision 21)
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="Demo_SimpleScenes_Source"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\prefab\include;..\..\..\..\ode\include;..\..\..\..\..\ogrenew\OgreMain\include;..\..\..\..\..\ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_SimpleScenes.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\prefab\include;..\..\..\..\ode\include;..\..\..\..\..\ogrenew\OgreMain\include;..\..\..\..\..\ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\SimpleScenes.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\SimpleScenesApplication.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\SimpleScenes.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_BoxStack.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Buggy.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Chain.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Crash.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Joints.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_TriMesh.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Zombie.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenesApplication.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/SimpleScenes/scripts/VC7.1/keep.me
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC7.1/keep.me	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC7.1/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/SimpleScenes/scripts/VC7/Demo_SimpleScenes.vcproj
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC7/Demo_SimpleScenes.vcproj	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC7/Demo_SimpleScenes.vcproj	(revision 21)
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="Demo_SimpleScenes"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_SimpleScenes.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				OptimizeForProcessor="2"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\..\OgreMain\include;..\..\..\..\include;..\..\..\..\ode-0.5\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\SimpleScenes.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\SimpleScenesApplication.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\SimpleScenes.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_BoxStack.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Buggy.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Chain.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Crash.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Joints.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_TriMesh.h">
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenesApplication.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/SimpleScenes/scripts/VC7/keep.me
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC7/keep.me	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC7/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_CVS.vcproj
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_CVS.vcproj	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_CVS.vcproj	(revision 21)
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_SimpleScenes"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\prefab\include;..\..\..\..\ode\include;..\..\..\..\loader\include;..\..\..\..\..\..\Ogrenew\OgreMain\include;..\..\..\..\..\..\Ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib ois_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreOde_Loader_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\Ogrenew\lib\;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_SimpleScenes.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\prefab\include;..\..\..\..\ode\include;..\..\..\..\loader\include;..\..\..\..\..\..\Ogrenew\OgreMain\include;..\..\..\..\..\..\Ogrenew\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib  ois.lib OgreOde_Core.lib OgreOde_Prefab.lib OgreOde_Loader.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\Ogrenew\lib\;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				LinkTimeCodeGeneration="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\SimpleScenes.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\SimpleScenesApplication.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\SimpleScenes.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_BoxStack.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Buggy.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Chain.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Crash.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Joints.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_TriMesh.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Zombie.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenesApplication.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_SDK.vcproj
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_SDK.vcproj	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_SDK.vcproj	(revision 21)
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_SimpleScenes"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib  ois_d.lib OgreOde_Core_d.lib OgreOde_Loader_d.lib OgreOde_Prefab_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_SimpleScenes.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;;&quot;$(OGRE_HOME)\Samples\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib ois.lib OgreOde_Core.lib OgreOde_Loader.lib OgreOde_Prefab.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\SimpleScenes.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\SimpleScenesApplication.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\SimpleScenes.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_BoxStack.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Buggy.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Chain.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Crash.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Joints.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_TriMesh.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Zombie.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenesApplication.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_Source.vcproj
===================================================================
--- /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_Source.vcproj	(revision 21)
+++ /ogreode/demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_Source.vcproj	(revision 21)
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="Demo_SimpleScenes"
+	ProjectGUID="{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	RootNamespace="Demo_SimpleScenes"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\ode\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;..\..\..\..\..\OgreMain\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreOde_Loader_d.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOdeDemo_SimpleScenes.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\..\..\..\Samples\Common\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\..\ode\include;..\..\..\..\include;..\..\..\..\loader\include;..\..\..\..\prefab\include;..\..\..\..\..\OgreMain\include;..\..\..\..\..\Samples\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				StringPooling="true"
+				MinimalRebuild="false"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="false"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib OgreOde_Core.lib OgreOde_Prefab.lib OgreOde_Loader.lib"
+				OutputFile="$(OutDir)/OgreOdeDemo_SimpleScenes.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\loader\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\SimpleScenes.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\SimpleScenesApplication.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\SimpleScenes.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_BoxStack.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Buggy.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Chain.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Crash.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Joints.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_TriMesh.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenes_Zombie.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\SimpleScenesApplication.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/demos/SimpleScenes/src/Makefile.am
===================================================================
--- /ogreode/demos/SimpleScenes/src/Makefile.am	(revision 21)
+++ /ogreode/demos/SimpleScenes/src/Makefile.am	(revision 21)
@@ -0,0 +1,37 @@
+noinst_PROGRAMS = SimpleScenes
+
+SimpleScenes_CXXFLAGS = \
+	${OGRE_CFLAGS} \
+	${ois_CFLAGS} \
+	-I${SAMPLES_CFLAGS} \
+	-I../include \
+	-I$(top_srcdir)/include \
+	-I$(top_srcdir)/prefab/include \
+	-I$(top_srcdir)/tinyxml \
+	-I$(top_srcdir)/loader/include
+#	-I$(top_srcdir)/$(top_srcdir)renew/Samples/Common/include
+
+SimpleScenes_LDFLAGS = \
+	-L$(top_srcdir)/src \
+	-L$(top_srcdir)/prefab/src \
+	-L$(top_srcdir)/loader/src
+	
+SimpleScenes_LDADD = \
+	$(OGRE_LIBS) \
+	${ois_LIBS} \
+	-lOgreOde_Core \
+	-lOgreOde_Prefab \
+	-lOgreOde_Loader
+
+SimpleScenes_SOURCES = \
+	SimpleScenesApplication.cpp \
+	SimpleScenes.cpp \
+	$(top_srcdir)/tinyxml/tinystr.cpp \
+	$(top_srcdir)/tinyxml/tinyxml.cpp \
+	$(top_srcdir)/tinyxml/tinyxmlerror.cpp \
+	$(top_srcdir)/tinyxml/tinyxmlparser.cpp
+
+
+install-exec-local:
+	$(INSTALL_PROGRAM) .libs/SimpleScenes $(SAMPLES)/Common/bin/SimpleScenes
+
Index: /ogreode/demos/SimpleScenes/src/SimpleScenes.cpp
===================================================================
--- /ogreode/demos/SimpleScenes/src/SimpleScenes.cpp	(revision 21)
+++ /ogreode/demos/SimpleScenes/src/SimpleScenes.cpp	(revision 21)
@@ -0,0 +1,361 @@
+/*
+SimpleScenes.cpp
+---------------
+Code for the base scene class from which the specific scenes are derived
+*/
+#include "SimpleScenes.h"
+
+using namespace Ogre;
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+using namespace OgreOde_Loader;
+
+const Ogre::Real SimpleScenes::KEY_DELAY = 1.0;
+const Ogre::Real SimpleScenes::STEP_RATE = 0.01;
+
+/*
+Constructor; initailise stuff
+*/
+SimpleScenes::SimpleScenes(OgreOde::World *world)
+{
+	_world = world;
+	_mgr = _world->getSceneManager();
+	_world->setCollisionListener(this);
+	_space = _world->getDefaultSpace();
+	_key_delay = SimpleScenes::KEY_DELAY;
+    _last_node = 0;
+
+    dotOgreOdeLoader = new  OgreOde_Loader::DotLoader (world);
+
+    _ragdollFactory = new OgreOde_Prefab::RagdollFactory();
+    Ogre::Root::getSingletonPtr()->addMovableObjectFactory(_ragdollFactory); 
+    setInfoText(StringUtil::BLANK);
+}
+
+/*
+Called by OgreOde whenever a collision occurs, so 
+that we can modify the contact parameters
+*/
+bool SimpleScenes::collision(OgreOde::Contact* contact) 
+{
+	// Check for collisions between things that are connected and ignore them
+	OgreOde::Geometry * const g1 = contact->getFirstGeometry();
+	OgreOde::Geometry * const g2 = contact->getSecondGeometry();
+
+	if (g1 && g2)
+	{
+		const OgreOde::Body * const b1 = g1->getBody();
+		const OgreOde::Body * const  b2 = g2->getBody();
+		if (b1 && b2 && OgreOde::Joint::areConnected(b1, b2)) 
+           return false; 
+	}
+
+	// Set the friction at the contact
+	contact->setCoulombFriction(OgreOde::Utility::Infinity);
+
+    contact->setBouncyness(0.1);
+
+    //contact->setCoulombFriction(5.0);
+    //contact->setFrictionMode(OgreOde::Contact::Flag_SurfaceIsBouncy);
+
+    //contact->setCoulombFriction(OgreOde::Utility::Infinity);
+
+	// Yes, this collision is valid
+	return true;
+}
+
+/*
+Handle key presses
+*/
+#if (OGRE_VERSION_MINOR < 4)
+void SimpleScenes::frameEnded(Real time, InputReader* input)
+#else
+void SimpleScenes::frameEnded(Real time, OIS::Keyboard* input, OIS::Mouse* mouse)
+#endif //OGRE_VERSION not heihort
+{
+	_key_delay += time;
+
+    std::for_each (RagdollList.begin(), RagdollList.end(), 
+        std::mem_fun (&OgreOde_Prefab::Ragdoll::update)); 
+}
+
+/*
+Utility method to set the information string in the UI
+*/
+void SimpleScenes::setInfoText(const String& text)
+{
+	OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Info")->setCaption(String("Info: ") + text);
+}
+
+static const String xmlNames[] = {
+    "zombie",
+    "zombie",
+    "ninja",
+    "robot"
+};
+static const String meshNames[] = {
+    "zombie_small.mesh",
+    "zombie_small.mesh",
+    "ninja.mesh",
+    "robot.mesh"
+};
+static const String meshAnimation [] = {
+    "Walk1",
+    "Walk1",
+    "Walk",
+    "Walk"
+};
+static const Ogre::Vector3 meshScale [] = {
+    Ogre::Vector3(1.0, 1.0, 1.0),
+    Ogre::Vector3(1.0, 1.0, 1.0),
+    Ogre::Vector3(1.0, 1.0, 1.0),
+    Ogre::Vector3(1.0, 1.0, 1.0)
+};
+static const String ragdollFile [] = {
+    "zombie.ogreode",
+    "zombie_auto.ogreode",
+    "ninja.ogreode",
+    "robot.ogreode"
+};
+static int sSelectedMesh = 0;
+static int _ragdoll_count = 0;
+
+/*
+Create a ragdoll
+*/
+void SimpleScenes::createRagDoll()
+{
+    if (_key_delay < SimpleScenes::KEY_DELAY) 
+        return;
+ 
+    _key_delay = 0.0;
+
+
+    OgreOde_Prefab::Ragdoll *_ragdoll = static_cast <OgreOde_Prefab::Ragdoll *> (dotOgreOdeLoader->loadObject (ragdollFile[sSelectedMesh], 
+                                                                           xmlNames[sSelectedMesh], 
+                                                                            "zombie" + StringConverter::toString(_ragdoll_count++)));
+
+
+    _ragdoll->setCastShadows(true);
+
+    SceneNode *_ragdoll_node = _mgr->getRootSceneNode()->createChildSceneNode(_ragdoll->getName() + "Node");
+    _ragdoll_node->attachObject(_ragdoll);
+
+    //_ragdoll_node->yaw(Degree(rand() % 360));
+    //_ragdoll_node->pitch(Degree(rand() % 360));
+
+
+    _ragdoll_node->setOrientation(Quaternion(Radian(OgreOde::Utility::randomReal() * 10.0 - 5.0),
+                                    Ogre::Vector3(OgreOde::Utility::randomReal() * 2.0 - 1.0,
+                                    OgreOde::Utility::randomReal() * 2.0 - 1.0,
+                                    OgreOde::Utility::randomReal() * 2.0 - 1.0)));
+
+    _ragdoll_node->setPosition(Vector3((OgreOde::Utility::randomReal() * 10.0) - 5.0,
+                                OgreOde::Utility::randomReal() + 5,
+                                (OgreOde::Utility::randomReal() * 10.0) - 5.0));
+
+
+    _ragdoll_node->setScale( meshScale[sSelectedMesh]);
+
+
+    _ragdoll->getAnimationState(meshAnimation[sSelectedMesh])->setEnabled(false);
+
+
+    // Create the ragdoll
+    _ragdoll->takePhysicalControl(_world, _space, false);
+    _ragdoll->setSelfCollisions(false);
+
+    RagdollList.push_back(_ragdoll);
+
+}
+/*
+Create a randomly sized box, sphere or capsule for dropping on things
+*/ 
+OgreOde::Body* SimpleScenes::createRandomObject(OgreOde::Geometry::Class objectClass)
+{
+	if (_key_delay < SimpleScenes::KEY_DELAY) 
+        return 0;
+
+	String typeName = (objectClass == OgreOde::Geometry::Class_Box)?"crate":
+				      (objectClass == OgreOde::Geometry::Class_Sphere)?"ball":
+					  (objectClass == OgreOde::Geometry::Class_Capsule)?"capsule":
+                      (objectClass == OgreOde::Geometry::Class_TriangleMesh)?"gun":
+                      "unknown";
+
+	// Create the visual representation (the Ogre entity and scene node)
+	String name = typeName + StringConverter::toString((unsigned int)_bodies.size());
+	Entity* entity = _mgr->createEntity(name, typeName + ".mesh");
+    entity->setQueryFlags (GEOMETRY_QUERY_MASK);
+
+	SceneNode* node = _mgr->getRootSceneNode()->createChildSceneNode(name);
+	node->attachObject(entity);
+	entity->setNormaliseNormals(true);
+	entity->setCastShadows(true);
+
+	// Pick a size
+	Vector3 size((OgreOde::Utility::randomReal() * 0.5 + 0.1) * 2.0,
+                (OgreOde::Utility::randomReal() * 0.5 + 0.1) * 2.0,
+                (OgreOde::Utility::randomReal() * 0.5 + 0.1) * 2.0);
+
+	// Create a body associated with the node we created
+    OgreOde::Body* body = new OgreOde::Body(_world);
+	node->attachObject(body);
+
+	// Set the mass and geometry to match the visual representation
+	OgreOde::Geometry* geom = 0;
+	switch (objectClass)
+	{
+		case OgreOde::Geometry::Class_Box:
+		{
+			size *= 1.75;
+
+			OgreOde::BoxMass mass(1.0,size);
+			mass.setDensity(5.0,size);
+			
+            geom = (OgreOde::Geometry*)new OgreOde::BoxGeometry(size, _world, _space); 
+			node->setScale(size.x * 0.1,size.y * 0.1,size.z * 0.1);
+			body->setMass(mass);
+		}
+		break;
+
+		case OgreOde::Geometry::Class_Sphere:
+		{
+			OgreOde::SphereMass mass(1.0,size.x);
+			mass.setDensity(5.0,size.x);
+
+            geom = (OgreOde::Geometry*)new OgreOde::SphereGeometry(size.x, _world, _space);
+			node->setScale(size.x * 0.2,size.x * 0.2,size.x * 0.2);
+			body->setMass(mass);
+		}
+		break;
+
+		case OgreOde::Geometry::Class_Capsule:
+		{
+			size.x *= 0.5;
+
+			OgreOde::CapsuleMass mass(1.0,size.x,Vector3::UNIT_Z,size.y);
+			mass.setDensity(5.0,size.x,Vector3::UNIT_Z,size.y);
+			
+			geom = (OgreOde::Geometry*)new OgreOde::CapsuleGeometry(size.x,size.y, _world, _space);
+			node->setScale(size.x,size.x,(size.y + (size.x * 2.0)) * 0.25);
+			body->setMass(mass);
+		}
+        break;
+
+        case OgreOde::Geometry::Class_TriangleMesh:
+        {
+                OgreOde::EntityInformer ei(entity, node->_getFullTransform());
+                geom = ei.createStaticTriangleMesh( _world, _space);
+
+            OgreOde::BoxMass mass(1.0, ei.getSize());
+            mass.setDensity(5.0, ei.getSize());
+
+            //node->setScale(size.x,size.x,(size.y + (size.x * 2.0)) * 0.25);
+            body->setMass(mass);
+        }
+        break;
+	}
+
+	// Tie the collision geometry to the physical body
+    geom->setBody(body);
+    entity->setUserObject(geom);
+
+	// Keep track of the body
+	_bodies.push_back(body);
+	_geoms.push_back(geom);
+	
+	_key_delay = 0.0;
+
+	// If we created something position and orient it randomly
+	if (body)
+	{
+		body->setOrientation(Quaternion(Radian(OgreOde::Utility::randomReal() * 10.0 - 5.0),
+                                Ogre::Vector3(OgreOde::Utility::randomReal() * 2.0 - 1.0,
+                                        OgreOde::Utility::randomReal() * 2.0 - 1.0,
+                                        OgreOde::Utility::randomReal() * 2.0 - 1.0)));
+		body->setPosition(Vector3((OgreOde::Utility::randomReal() * 10.0) - 5.0,
+                                    OgreOde::Utility::randomReal() + 5,
+                                    (OgreOde::Utility::randomReal() * 10.0) - 5.0));
+
+		// Set the last body we created to be looked at
+		_last_node = static_cast<SceneNode*>(body->getParentNode());
+	}
+
+	return body;
+}
+
+/*
+Destructor, delete everything we're keeping track of
+*/
+SimpleScenes::~SimpleScenes(void)
+{
+	// Stop listening for collisions
+	if (_world->getCollisionListener() == this) 
+        _world->setCollisionListener(0);
+
+	// Delete all the joints
+	for (std::vector<OgreOde::Joint*>::iterator i = _joints.begin();i != _joints.end();++i)
+	{
+		delete (*i);
+	}
+
+	// Run through the list of bodies we're monitoring
+	for (std::vector<OgreOde::Body*>::iterator i = _bodies.begin();i != _bodies.end();++i)
+	{
+		// Get the node this body controls
+		SceneNode* node = static_cast<SceneNode*>((*i)->getParentNode());
+		if (node)
+		{
+			// Get its name and remember all the things attached to it
+			String name = node->getName();
+			int num = node->numAttachedObjects();
+			for (int cur = 0;cur < num; cur++)
+			{
+				MovableObject* obj = node->getAttachedObject(cur);
+				if (obj->getMovableType() != OgreOde::Body::MovableType) 
+                    clearList.push_back(obj);
+			}
+
+			// Destroy the node by name
+			_mgr->getRootSceneNode()->removeAndDestroyChild(name);
+		}
+
+		// Delete the body
+		delete (*i);
+	}
+
+	// Remove all the entities we found attached to scene nodes we're controlling
+	for (std::vector<MovableObject*>::iterator i = clearList.begin();i != clearList.end();++i)
+	{
+        if ((*i)->getMovableType() == "Entity") 
+        {
+            MovableObject* m = static_cast<MovableObject*>(*i);
+            //_mgr->destroyMovableObject(m->getName(), m->);
+            _mgr->destroyMovableObject(m);
+        }
+		else  if ((*i)->getMovableType() == "ParticleSystem") 
+        {
+            _mgr->destroyParticleSystem(static_cast<ParticleSystem*>(*i));
+        }
+	}
+
+	// Delete all the collision geometries
+	for (std::vector<OgreOde::Geometry*>::iterator i = _geoms.begin();i != _geoms.end();++i)
+	{
+		delete (*i);
+	}
+    // Remove all the entities we found attached to scene nodes we're controlling
+    for (std::vector<OgreOde_Prefab::Ragdoll *>::iterator i = RagdollList.begin();i != RagdollList.end();++i)
+    {
+
+        assert ((*i)->getParentNode ());
+        assert ((*i)->getParentNode ()->getParent());
+        (static_cast<SceneNode*> ((*i)->getParentNode ()->getParent()))->removeAndDestroyChild(
+            (*i)->getParentNode ()->getName ());
+
+        _mgr->destroyMovableObject((*i)->getName(), OgreOde_Prefab::RagdollFactory::FACTORY_TYPE_NAME);
+        //_mgr->destroyMovableObject(m);
+    }
+	Ogre::Root::getSingletonPtr()->removeMovableObjectFactory(_ragdollFactory);
+	delete _ragdollFactory; 
+}
Index: /ogreode/demos/SimpleScenes/src/SimpleScenesApplication.cpp
===================================================================
--- /ogreode/demos/SimpleScenes/src/SimpleScenesApplication.cpp	(revision 21)
+++ /ogreode/demos/SimpleScenes/src/SimpleScenesApplication.cpp	(revision 21)
@@ -0,0 +1,517 @@
+/*
+SimpleScenesApplication.cpp
+--------------------------
+The main applicatin that handles switching between the
+different scenes in this demo, as well as any common 
+setup and input handling.
+*/
+#include "SimpleScenesApplication.h"
+
+// The tests we can display
+#include "SimpleScenes_BoxStack.h"
+#include "SimpleScenes_Buggy.h"
+#include "SimpleScenes_Chain.h"
+#include "SimpleScenes_TriMesh.h"
+#include "SimpleScenes_Crash.h"
+#include "SimpleScenes_Joints.h"
+#include "SimpleScenes_Zombie.h"
+
+// Windows stuff
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include "windows.h"
+
+/*
+Windows entry point
+*/
+INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT nCmdShow)
+#else
+int main(int argc,char* argv[])
+#endif
+{
+	// Create the application and try to run it
+    SimpleScenesApplication app;
+
+    try
+	{
+		app.go();
+    } 
+	catch(Ogre::Exception& e)
+	{
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+		MessageBox( 0, e.getFullDescription().c_str(), "OgreOde SimpleScenes: Exception", MB_OK | MB_ICONERROR | MB_TASKMODAL);
+#else
+        std::cerr << "An exception has occured: " << e.getFullDescription().c_str() << std::endl;
+#endif
+    }
+    return 0;
+}
+
+using namespace Ogre;
+
+#if !(OGRE_VERSION_MINOR < 4)
+using namespace OIS;
+#endif //OGRE_VERSION not heihort
+
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+using namespace OgreOde_Loader;
+
+/*
+The frame listener is informed before every frame
+*/
+bool SimpleScenesFrameListener::frameStarted(const FrameEvent& evt)
+{
+
+	// Do the default demo input handling and keep our UI display
+	// in sync with the other stuff (frame rate, logo, etc)
+	bool show = mStatsOn;
+	bool bOK = ExampleFrameListener::frameStarted(evt);
+	if (mStatsOn != show)
+	{
+	    Overlay* pOver = (Overlay*)OverlayManager::getSingleton().getByName("OgreOdeDemos/Overlay");    
+		if (pOver)
+		{
+			if (mStatsOn) 
+                pOver->show();
+			else 
+                pOver->hide();
+		}
+	}
+    // Tell the demo application that it needs to handle input	
+#if (OGRE_VERSION_MINOR < 4)
+    _demo->frameStarted(evt,mInputDevice);
+#else
+    _demo->frameStarted(evt, mKeyboard, mMouse);
+#endif //OGRE_VERSION not heihort
+
+	// Quit or carry on according to the normal demo input
+	return bOK;
+}
+
+/*
+The frame listener is informed after every frame
+*/
+bool SimpleScenesFrameListener::frameEnded(const FrameEvent& evt)
+{
+	// Tell our demo that the frame's ended before doing default processing
+
+#if (OGRE_VERSION_MINOR < 4)
+    _demo->frameEnded(evt,mInputDevice);
+#else
+    _demo->frameEnded(evt, mKeyboard, mMouse);
+#endif //OGRE_VERSION not heihort
+    return ExampleFrameListener::frameEnded(evt);
+}
+
+/*
+Create the scene from an Ogre point of view
+and create the common OgreOde things we'll need
+*/
+void SimpleScenesApplication::createScene(void)
+{
+	MovableObject::setDefaultQueryFlags (ANY_QUERY_MASK);
+
+#ifndef _DEBUG
+	// Set up shadowing
+	mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE);
+    mSceneMgr->setShadowColour(ColourValue(0.5, 0.5, 0.5));
+	mSceneMgr->setShadowFarDistance(30);
+
+	if (StringUtil::startsWith(mRoot->getRenderSystem()->getName(),"direct")) 
+        mSceneMgr->setShadowTextureSettings(1024, 2);
+    else 
+        mSceneMgr->setShadowTextureSettings(512, 2);
+#endif
+
+	// Add some default lighting to the scene
+	mSceneMgr->setAmbientLight(ColourValue(0.25, 0.25, 0.25));
+
+	// Create a directional light to shadow and light the bodies
+	_spot = mSceneMgr->createLight("Spot");
+	_spot->setType(Light::LT_DIRECTIONAL);
+	_spot->setDirection(-0.40824828,-0.81649655,-0.40824828);
+	_spot->setCastShadows(true);
+    _spot->setSpecularColour(1,1,0.8);
+
+	// Give us some sky
+	mSceneMgr->setSkyBox(true,"kk3d/DesertVII",5000,true);
+
+	// Position and orient the camera
+	mCamera->setPosition(13,4.5,0);
+	mCamera->lookAt(0,0.5,0);
+	mCamera->setNearClipDistance(0.5);
+
+	// Create the ODE world
+	_world = new OgreOde::World(mSceneMgr);
+
+	_world->setGravity(Vector3(0,-9.80665,0));
+	_world->setCFM(10e-5);
+	_world->setERP(0.8);
+	_world->setAutoSleep(true);
+    _world->setAutoSleepAverageSamplesCount(10);
+	_world->setContactCorrectionVelocity(1.0);
+
+	// Create something that will step the world, but don't do it automatically
+
+    const int _stepper_mode_choice = 2;
+    const int _stepper_choice = 3;
+    const Ogre::Real time_scale = Ogre::Real(1.7);
+    const Ogre::Real max_frame_time = Ogre::Real(1.0 / 4);
+    const Ogre::Real frame_rate = Ogre::Real(1.0 / 60);
+
+
+    StepHandler::StepModeType stepModeType;
+
+    switch(_stepper_mode_choice)
+    {
+    case 0: stepModeType = StepHandler::BasicStep; break;
+    case 1: stepModeType = StepHandler::FastStep; break;
+    case 2: stepModeType = StepHandler::QuickStep; break;
+
+    default: stepModeType = StepHandler::QuickStep; break;
+    }
+
+    switch (_stepper_choice)
+    {
+    case 0:
+        _stepper = new OgreOde::StepHandler(_world,
+            StepHandler::QuickStep, 
+            _time_step,
+            max_frame_time,
+            time_scale);
+
+        break;
+    case 1:
+        _stepper = new OgreOde::ExactVariableStepHandler(_world, 
+            stepModeType, 
+            _time_step,
+            max_frame_time,
+            time_scale);
+
+        break;
+    case 2:
+        _stepper = new OgreOde::ForwardFixedStepHandler(_world, 
+            stepModeType, 
+            _time_step,
+            max_frame_time,
+            time_scale);
+
+        break;
+    case 3:
+    default:
+        _stepper = new OgreOde::ForwardFixedInterpolatedStepHandler (_world, 
+            stepModeType, 
+            _time_step,
+            frame_rate,
+            max_frame_time,
+            time_scale);
+        break;
+    }
+
+    //_stepper->setAutomatic(OgreOde::StepHandler::AutoMode_PostFrame, mRoot);
+    //_stepper->setAutomatic(OgreOde::Stepper::AutoMode_PreFrame, mRoot);
+
+    Root::getSingleton().setFrameSmoothingPeriod(5.0f);
+    //Root::getSingleton().setFrameSmoothingPeriod(0.0f);
+
+	// Create a default plane to act as the ground
+	_plane = new OgreOde::InfinitePlaneGeometry(Plane(Vector3(0,1,0),0), _world, _world->getDefaultSpace());
+
+	// Use a load of meshes to represent the floor
+    int i = 0;
+    StaticGeometry* s;
+    s = mSceneMgr->createStaticGeometry("StaticFloor");
+    s->setRegionDimensions(Vector3(160.0, 100.0, 160.0));
+    // Set the region origin so the center is at 0 world
+    s->setOrigin(Vector3::ZERO);
+	for (Real z = -80.0;z <= 80.0;z += 20.0)
+	{
+		for (Real x = -80.0;x <= 80.0;x += 20.0)
+		{
+			String name = String("Plane_") + StringConverter::toString(i++);
+			
+			Entity* entity = mSceneMgr->createEntity(name, "plane.mesh");
+            entity->setQueryFlags (STATIC_GEOMETRY_QUERY_MASK);
+            entity->setUserObject(_plane);
+			entity->setCastShadows(false);
+            s->addEntity(entity, Vector3(x,0,z));
+		}
+    }
+    s->build();
+    //SceneNode* mPlaneNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(name);
+
+	// Load up our UI and display it
+    Overlay* pOver = (Overlay*)OverlayManager::getSingleton().getByName("OgreOdeDemos/Overlay");    
+    pOver->show();
+
+	// Initialise stuff
+	_test = 0;
+    _delay = 1.0;
+}
+
+/*
+The frame listener will notify us when a frame's 
+about to be started, so we can update stuff
+*/
+
+#if (OGRE_VERSION_MINOR < 4)
+void SimpleScenesApplication::frameStarted(const FrameEvent& evt,InputReader* mInputDevice)
+#else
+void SimpleScenesApplication::frameStarted(const FrameEvent& evt, OIS::Keyboard* mKeyboard, OIS::Mouse* mMouse)
+#endif //OGRE_VERSION not heihort
+{
+	// If we're looking at something then adjust the camera
+	if (_test && _test->getLastNode())
+	{
+		if (_looking)
+		{
+			mCamera->lookAt(_test->getLastNode()->getPosition());
+
+			if (_chasing)
+			{
+				// Thanks to Ahmed!
+				const Ogre::Real followFactor = 0.1; 
+				const Ogre::Real camHeight = 5.0; 
+				const Ogre::Real camDistance = 7.0; 
+				
+				Quaternion q = _test->getLastNode()->getOrientation(); 
+				Vector3 toCam = _test->getLastNode()->getPosition(); 
+
+				toCam.y += camHeight; 
+				toCam.z -= camDistance * q.zAxis().z; 
+				toCam.x -= camDistance * q.zAxis().x; 
+      
+				mCamera->move( (toCam - mCamera->getPosition()) * followFactor ); 
+			}
+		}
+	}
+
+	// Set the shadow distance according to how far we are from the plane that receives them
+	mSceneMgr->setShadowFarDistance((fabs(mCamera->getPosition().y) + 1.0) * 3.0);
+
+	// If we're running a test, tell it that a frame's ended
+    if ((_test)&&(!_paused))
+    {
+#if (OGRE_VERSION_MINOR < 4)
+        _test->frameStarted(evt.timeSinceLastFrame, mInputDevice);
+#else
+        _test->frameStarted(evt.timeSinceLastFrame, mKeyboard, mMouse);
+#endif //OGRE_VERSION not heihort
+    }
+}
+
+/*
+The frame listener will let us know when a frame's ended. So we
+can do stuff that we can't do in a frame started event
+e.g. delete things that we can't delete at the start of a frame,
+presumably because some processing has already been done, leaving
+things dangling, like particle systems.
+*/
+#if (OGRE_VERSION_MINOR < 4)
+void SimpleScenesApplication::frameEnded(const FrameEvent& evt,InputReader* myInput)
+#else
+void SimpleScenesApplication::frameEnded(const FrameEvent& evt, OIS::Keyboard* myInput, OIS::Mouse* mMouse)
+#endif //OGRE_VERSION not heihort
+{
+	Real time = evt.timeSinceLastFrame;
+
+	// If we're running a test, tell it that a frame's ended
+    // If we're running a test, tell it that a frame's ended
+    if ((_test)&&(!_paused))
+    {
+#if (OGRE_VERSION_MINOR < 4)
+        _test->frameEnded(time, myInput);
+#else
+        _test->frameEnded(time, myInput, mMouse);
+#endif //OGRE_VERSION not heihort
+    }
+
+	
+	// Step the world and then synchronise the scene nodes with it, 
+	// we could get this to do this automatically, but we 
+	// can't be sure of what order the frame listeners will fire in
+	if (_stepper->step(time))
+    {
+		_world->synchronise(); 
+    }
+
+	_delay += time;
+	if (_delay > 1.0)
+	{
+		bool changed = false;
+
+		// Switch the test we're displaying
+		if (myInput->isKeyDown(KC_F1))
+		{
+			delete _test;
+			_test = new SimpleScenes_BoxStack(_world);
+			changed = true;
+		}
+		else if (myInput->isKeyDown(KC_F2))
+		{
+			delete _test;
+			_test = new SimpleScenes_Chain(_world);
+			changed = true;
+		}
+		else if (myInput->isKeyDown(KC_F3))
+		{
+			delete _test;
+			_test = new SimpleScenes_Buggy(_world);
+			changed = true;
+		}
+		else if (myInput->isKeyDown(KC_F4))
+		{
+			delete _test;
+			_test = new SimpleScenes_TriMesh(_world);
+			changed = true;
+		}
+		else if (myInput->isKeyDown(KC_F5))
+		{
+			delete _test;
+			_test = new SimpleScenes_Crash(_world);
+			changed = true;
+		}
+		else if (myInput->isKeyDown(KC_F6))
+		{
+			delete _test;
+			_test = new SimpleScenes_Joints(_world);
+
+			if (mCamera->getPosition().z < 10.0)
+			{
+				Vector3 pos = mCamera->getPosition();
+				mCamera->setPosition(pos.x,pos.y,10.0);
+				mCamera->lookAt(0,0,0);
+			}
+			changed = true;
+		}
+		else if (myInput->isKeyDown(KC_F7))
+		{
+			delete _test;
+			_test = new SimpleScenes_Zombie(_world);
+
+			changed = true;
+		}
+
+		// If we changed the test...
+		if ((_test)&&(changed))
+		{
+			// Register it with the stepper, so we can (for example) add forces before each step
+			_stepper->setStepListener(_test);
+
+			// Set the UI to show the test's details
+			OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Name")->setCaption("Name: " + _test->getName());
+			OverlayManager::getSingleton().getOverlayElement("OgreOdeDemos/Keys")->setCaption("Keys: " + _test->getKeys());
+
+			_delay = 0.0;
+		}
+
+		// Switch shadows
+		if (myInput->isKeyDown(KC_SPACE))
+		{
+            static Ogre::uint shadowtype = 0;
+            shadowtype += 1;
+            if (shadowtype > 5)
+                shadowtype = 0;
+            switch (shadowtype)
+            {
+            case 0:
+                mSceneMgr->setShadowTechnique (SHADOWTYPE_NONE);	
+                break;
+            case 1:
+                mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE);
+                mSceneMgr->setShadowColour(ColourValue(0.5, 0.5, 0.5));
+                mSceneMgr->setShadowFarDistance(30);
+                if (StringUtil::startsWith(mRoot->getRenderSystem()->getName(),"direct")) 
+                    mSceneMgr->setShadowTextureSettings(1024, 2);
+                else 
+                    mSceneMgr->setShadowTextureSettings(512, 2);
+                break;
+            case 2:
+                mSceneMgr->setShadowTechnique (SHADOWTYPE_STENCIL_ADDITIVE);	
+                break;
+            case 3:
+                mSceneMgr->setShadowTechnique (SHADOWTYPE_STENCIL_MODULATIVE );	
+                break;
+            case 4:
+                mSceneMgr->setShadowTechnique (SHADOWTYPE_TEXTURE_ADDITIVE );	 
+                mSceneMgr->setShadowColour(ColourValue(0.5, 0.5, 0.5));
+                mSceneMgr->setShadowFarDistance(30);
+                if (StringUtil::startsWith(mRoot->getRenderSystem()->getName(),"direct")) 
+                    mSceneMgr->setShadowTextureSettings(1024, 2);
+                else 
+                    mSceneMgr->setShadowTextureSettings(512, 2);
+                break;
+            default:
+                mSceneMgr->setShadowTechnique (SHADOWTYPE_NONE);	
+                break;
+            }
+			_delay = 0.0;
+		}
+
+		// Look at the last object, chase it, or not
+		if (myInput->isKeyDown(KC_M))
+		{
+			if (_looking)
+            {
+                if (_chasing) 
+                {
+                    _looking = _chasing = false;
+                }
+                else
+                {
+                    _chasing = true;
+                }
+            }
+			else 
+            {
+                _looking = true;
+            }
+			_delay = 0.0;
+		}
+
+		// Switch debugging objects on or off
+		if (myInput->isKeyDown(KC_E))
+		{
+			_world->setShowDebugGeometries(!_world->getShowDebugGeometries());
+			_delay = 0.0;
+		}
+
+        // Switch debugging Contacts on or off
+        if (myInput->isKeyDown(KC_B))
+        {
+            _world->setShowDebugContact(!_world->getShowDebugContact());
+            _delay = 0.5;
+        }
+
+		// Pause or Run the simulation
+		if (myInput->isKeyDown(KC_P))
+		{
+			_paused = !_paused;
+			_delay = 0.0;
+
+			_stepper->pause(_paused);
+
+            const Ogre::Real timeSet = (_paused)? 0.0 : 1.0;
+
+            Ogre::SceneManager::MovableObjectIterator it = 
+                mSceneMgr->getMovableObjectIterator(ParticleSystemFactory::FACTORY_TYPE_NAME);
+            while(it.hasMoreElements())
+            {
+                ParticleSystem* p = static_cast<ParticleSystem*>(it.getNext());
+                p->setSpeedFactor(timeSet);
+            }
+		}
+	}
+}
+
+/*
+Destructor, delete stuff we created
+*/
+SimpleScenesApplication::~SimpleScenesApplication(void)
+{
+	delete _test;
+	delete _plane;
+	delete _stepper;	
+	delete _world;
+}
Index: /ogreode/include/Makefile.am
===================================================================
--- /ogreode/include/Makefile.am	(revision 21)
+++ /ogreode/include/Makefile.am	(revision 21)
@@ -0,0 +1,19 @@
+ogreodecoreincludedir = $(includedir)/OgreOde_Core
+
+ogreodecoreinclude_HEADERS = \
+	OgreOdeBody.h \
+	OgreOdeCollision.h \
+	OgreOdeDebugObject.h \
+	OgreOdeEigenSolver.h \
+	OgreOdeEntityInformer.h \
+	OgreOdeFrameListener.h \
+	OgreOdeGeometry.h \
+	OgreOdeJoint.h \
+	OgreOdeMaintainedList.h \
+	OgreOdeMass.h \
+	OgreOdePreReqs.h \
+	OgreOdeSpace.h \
+	OgreOdeStepper.h \
+	OgreOdeUtility.h \
+	OgreOdeWorld.h \
+	OgreOde_Core.h
Index: /ogreode/include/OgreOdeBody.h
===================================================================
--- /ogreode/include/OgreOdeBody.h	(revision 21)
+++ /ogreode/include/OgreOdeBody.h	(revision 21)
@@ -0,0 +1,417 @@
+#ifndef _OGREODEBODY_H_
+#define _OGREODEBODY_H_
+
+#include "OgreOdePreReqs.h"
+
+namespace OgreOde 
+{
+	//-----------------------------------------------------------------------
+	class _OgreOdeExport BodyState
+	{
+	public:
+		BodyState(){};
+		BodyState(const Ogre::Vector3	&position,
+				  const Ogre::Quaternion &orientation);
+
+        void operator=(const BodyState &other);
+		bool operator==(const BodyState &other) const;
+		bool operator!=(const BodyState &other) const;
+
+		//-----------------------------------------------------------------------
+		/// compare with another physics state for "significant" differences.
+		/// used for detecting position or orientation snaps which need smoothing.
+		bool isDifferent(const BodyState &other, const Ogre::Real threshold = Ogre::Real(0.01)) const;
+
+        void interpolate(const BodyState * const _previous_state, 
+                                const BodyState * const _current_state, 
+                                const Ogre::Real alpha);
+
+		Ogre::Vector3		_position;
+		Ogre::Quaternion	_orientation;
+	};
+
+	//-----------------------------------------------------------------------
+	template <class T>
+	class _OgreOdeExport CircularBuffer
+	{
+	public:
+
+		CircularBuffer() :
+			head (0),
+			tail (0)
+		{
+		}
+
+		void resize(const size_t size)
+		{
+			head = 0;
+			tail = 0;
+			buffers.resize(size);
+		}
+
+		size_t size()
+		{
+			int count = (int)head - (int)tail;
+			if (count<0)
+				count += (int) buffers.size();
+			return (size_t) count;
+		}
+
+		void add(const T &buffer)
+		{
+			buffers[head] = buffer;
+			next(head);
+
+		}
+
+		void remove()
+		{
+			assert(!empty());
+			next(tail);
+		}
+
+		T& oldest()
+		{
+			assert(!empty());
+			return buffers[tail];
+		}
+
+		T& newest()
+		{
+			assert(!empty());
+			int index = (int)head - 1;
+			if (index == -1)
+				index = (int) buffers.size() - 1;
+			return buffers[index];
+		}
+
+		T& almostNewest()
+		{
+			assert(buffers.size() > 1);
+			int index = (int)head - 2;
+			if (index == -1)
+				index = (int) buffers.size() - 1;
+			return buffers[index];
+		}
+
+		bool empty() const
+		{
+			return head == tail;
+		}
+
+		void next(size_t &index)
+		{
+			if (index  == (size_t)buffers.size()) 
+				index -= (size_t)buffers.size();
+			else
+				index ++;
+		}
+
+		void previous(size_t &index)
+		{			
+			if ((int)index - 1 < 0)
+				index += (size_t)buffers.size();
+			else
+				index --;
+		}
+
+		T& operator[](size_t index)
+		{
+			assert(index<(size_t)buffers.size());
+			return buffers[index];
+		}
+
+	public:
+
+		size_t head;
+		size_t tail;
+
+	private:
+		std::vector<T> buffers;
+	};
+    /** 
+        This object is the class defining a for all Dynamically physical objects in OgreOde.
+    @remarks
+        This object is tied attached to a scene node, 
+        or/and tied a Entity Object using UserDefinedObject
+    @remarks
+        It extends the OGRE UserDefinedObject to allow reverse links from Ogre::Entity.
+        It extends the OGRE MovableObject to allow scene node attachment.
+    */  
+	class _OgreOdeExport Body : public Ogre::MovableObject, public Ogre::UserDefinedObject
+    {
+		friend class Joint;
+		friend class World;
+		friend class Geometry;
+
+	public:
+		Body(World *world, const Ogre::String& name = Ogre::StringUtil::BLANK);
+		virtual ~Body();
+
+        static const Ogre::String MovableType;
+
+		void _historyResize(const size_t size);
+		inline void updateParentNode();
+		inline void updatePreviousState();
+		inline void updateCurrentState();
+		inline void updateDrawState ();
+		inline void interpolateDrawState(const Ogre::Real alpha);
+		inline void synchronise();
+
+		void deriveLocation();
+
+		void setPosition(const Ogre::Vector3& position); 
+		void setOrientation(const Ogre::Quaternion& orientation); 
+		void setLinearVelocity(const Ogre::Vector3& linear_velocity); 
+		void setAngularVelocity(const Ogre::Vector3& angular_velocity); 
+
+		inline const Ogre::Vector3& getPosition() const;
+
+		inline const Ogre::Quaternion& getOrientation() const;
+		inline void updatePosition(BodyState * const bodystate);
+        inline void updateOrientation(BodyState * const bodystate);
+
+		const Ogre::Vector3& getLinearVelocity(); 
+		const Ogre::Vector3& getAngularVelocity(); 
+
+		virtual const Ogre::String& getMovableType() const; 
+        virtual void _notifyAttached(Ogre::Node* parent,bool isTagPoint = false);
+		virtual const Ogre::String& getName(void) const;
+		virtual void _notifyCurrentCamera(Ogre::Camera* camera);
+		virtual const Ogre::AxisAlignedBox& getBoundingBox(void) const;
+		virtual Ogre::Real getBoundingRadius(void) const;
+        virtual void _updateRenderQueue(Ogre::RenderQueue* queue);
+		
+		void setMass(const Mass& mass);
+		const Mass& getMass();
+
+		void addForce(const Ogre::Vector3& force); 
+		void addTorque(const Ogre::Vector3& torque); 
+		void addRelativeForce(const Ogre::Vector3& force); 
+		void addRelativeTorque(const Ogre::Vector3& torque); 
+		void addForceAt(const Ogre::Vector3& force,const Ogre::Vector3& position); 
+		void addForceAtRelative(const Ogre::Vector3& force,const Ogre::Vector3& position); 
+		void addRelativeForceAt(const Ogre::Vector3& force,const Ogre::Vector3& position); 
+		void addRelativeForceAtRelative(const Ogre::Vector3& force,const Ogre::Vector3& position); 
+
+		const Ogre::Vector3& getForce(); 
+        const Ogre::Vector3& getTorque(); 
+        void setForce(const Ogre::Vector3&); 
+        void setTorque(const Ogre::Vector3&); 
+
+
+		Ogre::Vector3 getPointWorldPosition(const Ogre::Vector3& position); 
+		Ogre::Vector3 getPointWorldVelocity(const Ogre::Vector3& position);
+		Ogre::Vector3 getPointVelocity(const Ogre::Vector3& position); 
+		Ogre::Vector3 getPointBodyPosition(const Ogre::Vector3& position);
+		Ogre::Vector3 getVectorToWorld(const Ogre::Vector3& vector);
+		Ogre::Vector3 getVectorFromWorld(const Ogre::Vector3& vector);
+
+		void wake();
+		void sleep(); 
+		inline bool isAwake() const; 
+		void setAutoSleep(bool auto_sleep);
+		bool getAutoSleep(); 
+		void setAutoSleepLinearThreshold(Ogre::Real linear_threshold);
+		Ogre::Real getAutoSleepLinearThreshold(); 
+		void setAutoSleepAngularThreshold(Ogre::Real angular_threshold);
+		Ogre::Real getAutoSleepAngularThreshold(); 
+		void setAutoSleepSteps(int steps);
+		int  getAutoSleepSteps(); 
+		void setAutoSleepTime(Ogre::Real time);
+		Ogre::Real getAutoSleepTime(); 
+		void setAutoSleepDefaults();
+
+		void setFiniteRotationMode(bool on); 
+		bool getFiniteRotationMode(); 
+		void setFiniteRotationAxis(const Ogre::Vector3& axis); 
+		const Ogre::Vector3& getFiniteRotationAxis(); 
+
+        int getJointCount(); 
+		Joint* getJoint(int index); 
+
+		void setModifyParentOrientation(bool bModify);
+
+        void addGeometry(Geometry *g); 
+        void removeGeometry(Geometry *g); 
+        size_t getGeometryCount(); 
+        Geometry* getGeometry(int index);
+        GeometryArray* getGeometries();
+
+		void setAffectedByGravity(bool on);
+		bool getAffectedByGravity(); 
+
+		void setDamping(Ogre::Real linear_damping, Ogre::Real angular_damping);
+		void setLinearDamping(Ogre::Real linear_damping);
+		void setAngularDamping(Ogre::Real angular_damping);
+		Ogre::Real getLinearDamping();
+		Ogre::Real getAngularDamping();
+
+		void setUserData(unsigned long user_data);
+		unsigned long getUserData();
+
+		virtual unsigned long getID();
+		virtual void setDebug(const bool debug);
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+            Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Body");return sName;};
+
+        bool collide(void* data, Geometry *g);
+        bool collide(void* data, Body *b);
+        bool collidePlaneBounds(void* data, Ogre::SceneQuery::WorldFragment *);
+
+	protected:
+		dBodyID getBodyID() const;
+
+		void destroyDebugNode();
+		void addDebugNode(Ogre::Node* node);
+
+		void recursiveSetMode(Ogre::SceneNode* node);
+		
+		void applyDamping();
+
+	protected:
+		dBodyID	_body;
+		Ogre::String _name;
+		Ogre::Node* _debug_node;
+
+		static int _body_count;
+
+		Ogre::Vector3 _linear_vel;
+		Ogre::Vector3 _angular_vel;
+		Ogre::Vector3 _finite_axis;
+		Ogre::Vector3 _force;
+		Ogre::Vector3 _torque;
+		Ogre::AxisAlignedBox _bounding_box;
+		Mass* _mass;
+
+		bool _is_damped;
+		bool _is_linear_damped;
+		dReal _linear_damping;
+		bool _is_angular_damped;
+		dReal _angular_damping;
+
+		unsigned long _user_data;
+
+		// Major members
+		bool _isEnabled;
+		bool _modify_parent_orientation; 
+
+		BodyState	   _draw_state;
+        CircularBuffer<BodyState *> _state_history;
+
+        /// Collision proxies, must be set up if collision enabled
+        GeometryArray _geometries;
+        
+		World *_world;
+
+	};
+
+    //-----------------------------------------------------------------------
+    inline bool Body::isAwake() const { return _isEnabled; }
+    //-----------------------------------------------------------------------
+    inline void Body::updateParentNode()
+    {
+        if (mParentNode)
+        { 
+            mParentNode->setPosition(_draw_state._position);
+            mParentNode->setOrientation(_draw_state._orientation);
+        }
+
+        if (_debug_node)
+        {
+            _debug_node->setPosition(_draw_state._position);
+            _debug_node->setOrientation(_draw_state._orientation);
+
+            recursiveSetMode(static_cast<Ogre::SceneNode*>(_debug_node));
+        }
+    } 
+    //-----------------------------------------------------------------------
+    inline void Body::updatePreviousState()
+    {
+        _isEnabled = dBodyIsEnabled(_body) || _debug_node;
+        if (_isEnabled)
+        {
+            BodyState *previous = _state_history.almostNewest ();
+            updatePosition (previous);
+            updateOrientation (previous);
+        }
+    }
+    //-----------------------------------------------------------------------
+    inline void Body::updateCurrentState()
+    {
+        _isEnabled = dBodyIsEnabled(_body) || _debug_node;
+        if (_isEnabled)
+        {
+            BodyState *current = _state_history.newest ();
+            updatePosition(current);
+            updateOrientation(current);
+        }
+    }
+    //-----------------------------------------------------------------------
+    inline void Body::updateDrawState ()
+    {
+        _isEnabled = dBodyIsEnabled(_body) || _debug_node;
+        if (_isEnabled)
+        {
+            updatePosition(&_draw_state);
+            updateOrientation(&_draw_state);
+        }
+    }
+    //-----------------------------------------------------------------------
+    inline void Body::interpolateDrawState(const Ogre::Real alpha)
+    {
+        if (_isEnabled)
+        {
+            BodyState *current = _state_history.newest ();
+            BodyState *previous = _state_history.almostNewest ();
+            assert (current != previous);
+            _draw_state.interpolate (previous, current, alpha);
+        }
+    }
+    //-----------------------------------------------------------------------
+    inline void Body::synchronise()
+    {
+        if (_isEnabled)
+        {
+            if (_is_damped)
+                applyDamping();
+            updateParentNode();
+        }
+    }
+    //-----------------------------------------------------------------------
+    inline const Ogre::Vector3& Body::getPosition() const
+    {
+        return _draw_state._position;
+    }
+    //-----------------------------------------------------------------------
+    inline const Ogre::Quaternion& Body::getOrientation() const
+    {
+        return _draw_state._orientation;
+    }
+    //-----------------------------------------------------------------------
+    inline void Body::updatePosition(BodyState * const bodystate)
+    {
+        const dReal * const position = dBodyGetPosition(_body);
+
+        bodystate->_position.x = (Ogre::Real)position[0];
+        bodystate->_position.y = (Ogre::Real)position[1];
+        bodystate->_position.z = (Ogre::Real)position[2];
+    }
+    //-----------------------------------------------------------------------
+    inline void Body::updateOrientation(BodyState * const bodystate)
+    {
+        const dReal * const orientation = dBodyGetQuaternion(_body); 
+        bodystate->_orientation.w = (Ogre::Real)orientation[0];
+        bodystate->_orientation.x = (Ogre::Real)orientation[1];
+        bodystate->_orientation.y = (Ogre::Real)orientation[2];
+        bodystate->_orientation.z = (Ogre::Real)orientation[3];
+    }
+    //-----------------------------------------------------------------------
+}
+
+#endif
Index: /ogreode/include/OgreOdeCollision.h
===================================================================
--- /ogreode/include/OgreOdeCollision.h	(revision 21)
+++ /ogreode/include/OgreOdeCollision.h	(revision 21)
@@ -0,0 +1,124 @@
+#ifndef _OGREODECOLLISION_H_
+#define _OGREODECOLLISION_H_
+
+#include "OgreOdePreReqs.h"
+
+namespace OgreOde 
+{
+	class _OgreOdeExport CollisionListener
+	{
+	public:
+		CollisionListener();
+		virtual ~CollisionListener();
+
+		virtual bool collision(Contact* contact) = 0;
+	};
+
+
+	class _OgreOdeExport CollisionCallback : public CollisionListener
+	{
+	public:
+	
+		friend class Space;
+		friend class Geometry;
+	
+		CollisionCallback();
+		virtual ~CollisionCallback();
+		
+		/** handles the ode callback and passes on to pure virtual methods that inherited classes implement
+		*/
+		static void collisionCallback(void *data, dGeomID geom_a, dGeomID geom_b);
+
+		/** user impliemented
+		*/
+		virtual void collisionCallback(OgreOde::Space* spaceFirst, OgreOde::Space* spaceSecond);
+		
+		virtual void collisionCallback(OgreOde::Space* space, OgreOde::Geometry* geometry);
+		
+		virtual void collisionCallback(OgreOde::Space* space);
+		
+		virtual void collisionCallback(OgreOde::Geometry* geometryFirst, OgreOde::Geometry* geometrySecond);
+	};
+
+
+	class _OgreOdeExport Contact
+	{
+		friend class Geometry;
+		friend class ContactMapCollisionListener;
+	
+	public:
+		enum Flag
+		{
+			Flag_UseAdditionalFriction			= dContactMu2,
+			Flag_UseFirstFrictionDirection		= dContactFDir1,
+			Flag_SurfaceIsBouncy				= dContactBounce,
+			Flag_UseERP							= dContactSoftERP,
+			Flag_UseCFM							= dContactSoftCFM,
+			Flag_IndependentMotion				= dContactMotion1, 
+			Flag_AdditionalIndependentMotion	= dContactMotion2,
+			Flag_UseFDS							= dContactSlip1,
+			Flag_UseAdditionalFDS				= dContactSlip2,
+			Flag_FrictionPyramid				= dContactApprox1_1,
+			Flag_AdditionalFrictionPyramid		= dContactApprox1_2,
+			Flag_BothFrictionPyramids			= dContactApprox1 
+		};
+
+	public:
+		Contact();
+		~Contact();
+
+		const Ogre::Vector3& getPosition();
+		const Ogre::Vector3& getNormal();
+		Ogre::Real getPenetrationDepth();
+
+        int getFirstSide();
+        int getSecondSide();
+
+		Geometry* getFirstGeometry();
+		Geometry* getSecondGeometry();
+
+		void setFirstFrictionDirection(const Ogre::Vector3& vector);
+		void setFrictionMode(Contact::Flag flag);
+
+		void setCoulombFriction(Ogre::Real mu, Ogre::Real additional_mu = -1.0);
+		void setBouncyness(Ogre::Real bouncyness, Ogre::Real velocity_threshold = -1.0);
+		void setSoftness(Ogre::Real ERP, Ogre::Real CFM);
+		void setIndependentMotion(Ogre::Real velocity, Ogre::Real additional_velocity = -1.0);
+		void setForceDependentSlip(Ogre::Real FDS);
+		void setAdditionalFDS(Ogre::Real FDS);
+
+		inline void setContact(dContact* contact)
+		{
+			_contact = contact;
+			_contact->surface.mode = 0;
+		}
+	protected:
+		inline Contact& operator=(dContact* contact)
+		{
+			_contact = contact;
+			_contact->surface.mode = 0;
+			return *this;
+		}
+
+	protected:
+		dContact* _contact;
+		Ogre::Vector3 _position,_normal;
+	};
+
+	class _OgreOdeExport ContactMapCollisionListener:public CollisionListener
+	{
+	public:
+		ContactMapCollisionListener();
+		virtual ~ContactMapCollisionListener();
+
+		virtual bool collision(Contact* contact);
+
+		void createContact(MaterialID materialA,MaterialID materialB); 
+		Contact *getContactPtr(MaterialID materialA,MaterialID materialB); 
+
+	protected:
+		std::map<MaterialID,MaterialMap* > _map;
+	};
+}
+
+#endif
Index: /ogreode/include/OgreOdeDebugContact.h
===================================================================
--- /ogreode/include/OgreOdeDebugContact.h	(revision 21)
+++ /ogreode/include/OgreOdeDebugContact.h	(revision 21)
@@ -0,0 +1,152 @@
+/**
+* File: OgreOdeDebugContact.h
+*
+* description: This create create a billboarding object that display a text.
+* derived from Movable Text
+* @author  2003 by cTh see gavocanov@rambler.ru
+* @update  2006 by barraq see nospam@barraquand.com
+*/
+
+#ifndef __include_OgreOdeDebugContact_H__
+#define __include_OgreOdeDebugContact_H__
+
+#include "OgreOdePreReqs.h"
+#include "OgreOdeDebugObject.h"
+
+namespace OgreOde 
+{
+    class DebugContact
+    {
+    public:
+        DebugContact(const Ogre::String &name, World *world);
+         ~DebugContact();
+
+         bool isEnabled () const;
+         void setEnabled (bool enable);
+
+        void update(Contact * const contact);
+
+    private:
+        DebugNormal         *_normal;
+        DebugContactText    *_text;
+        Ogre::Entity        *_point;
+        bool                _enabled;
+        Ogre::String        _name;
+        Ogre::SceneNode     *_node;
+        Ogre::SceneNode     *_point_node;
+        World               *_world;
+    };
+
+    class DebugNormal : public DebugLines
+    {
+    public:
+        DebugNormal() : DebugLines(){};
+        ~DebugNormal(){};
+
+        void update (Contact * const contact);
+    };
+
+    class DebugContactText : public Ogre::MovableObject, public Ogre::Renderable
+    {
+    public:
+        enum HorizontalAlignment    {H_LEFT, H_CENTER};
+        enum VerticalAlignment      {V_BELOW, V_ABOVE};
+        /******************************** public methods ******************************/
+    public:
+        DebugContactText(const Ogre::String &name, 
+                         Ogre::SceneNode *node,
+                         const Ogre::String &caption = "", 
+                         const Ogre::String &fontName = "BlueHighway", 
+                         int charHeight = 32, 
+                         const Ogre::ColourValue &color = Ogre::ColourValue::White);
+
+
+         ~DebugContactText();
+
+        // Set settings
+        void    setPosition(const Ogre::Vector3 &pos);
+
+        void    setFontName(const Ogre::String &fontName);
+        void    setCaption(const Ogre::String &caption);
+        void    setColor(const Ogre::ColourValue &color);
+        void    setCharacterHeight(unsigned int height);
+        void    setSpaceWidth(unsigned int width);
+        void    setTextAlignment(const HorizontalAlignment& horizontalAlignment, 
+                                const VerticalAlignment& verticalAlignment);
+        void    setAdditionalHeight( Ogre::Real height );
+        void    showOnTop(bool show=true);
+
+        // Get settings
+        const   Ogre::String          &getFontName() const {return mFontName;}
+        const   Ogre::String          &getCaption() const {return mCaption;}
+        const   Ogre::ColourValue     &getColor() const {return mColor;}
+
+        unsigned int    getCharacterHeight() const {return mCharHeight;}
+        unsigned int    getSpaceWidth() const {return mSpaceWidth;}
+        Ogre::Real                  getAdditionalHeight() const {return mAdditionalHeight;}
+        bool                    getShowOnTop() const {return mOnTop;}
+        Ogre::AxisAlignedBox	        GetAABB(void) { return mAABB; }
+
+        /******************************** protected methods and overload **************/
+    protected:
+
+        // from OgreOdeDebugContact, create the object
+        void	_setupGeometry();
+        void	_updateColors();
+
+        // from MovableObject
+        void                            getWorldTransforms(Ogre::Matrix4 *xform) const;
+        Ogre::Real                      getBoundingRadius(void) const {return mRadius;};
+        Ogre::Real                      getSquaredViewDepth(const Ogre::Camera *cam) const {return 0;};
+        const   Ogre::Quaternion        &getWorldOrientation(void) const;
+        const   Ogre::Vector3           &getWorldPosition(void) const;
+        const   Ogre::AxisAlignedBox    &getBoundingBox(void) const {return mAABB;};
+        const   Ogre::String            &getName(void) const {return mName;};
+        const   Ogre::String            &getMovableType(void) const {static Ogre::String movType = "MovableText"; return movType;};
+
+        void                            _notifyCurrentCamera(Ogre::Camera *cam);
+        void                            _updateRenderQueue(Ogre::RenderQueue* queue);
+
+        // from renderable
+        void                            getRenderOperation(Ogre::RenderOperation &op);
+        const   Ogre::MaterialPtr       &getMaterial(void) const {assert(!mpMaterial.isNull());return mpMaterial;};
+        const   Ogre::LightList         &getLights(void) const {return mLList;};
+
+        /******************************** OgreOdeDebugContact data ****************************/
+  
+
+    protected:
+        Ogre::String			mFontName;
+        Ogre::String			mType;
+        Ogre::String			mName;
+        Ogre::String			mCaption;
+        HorizontalAlignment	    mHorizontalAlignment;
+        VerticalAlignment	    mVerticalAlignment;
+
+        Ogre::ColourValue		mColor;
+        Ogre::RenderOperation	mRenderOp;
+        Ogre::AxisAlignedBox	mAABB;
+        Ogre::LightList		    mLList;
+
+        unsigned int			mCharHeight;
+        unsigned int			mSpaceWidth;
+
+        bool			        mNeedUpdate;
+        bool			        mUpdateColors;
+        bool			        mOnTop;
+
+        Ogre::Real			    mTimeUntilNextToggle;
+        Ogre::Real			    mRadius;
+        Ogre::Real              mAdditionalHeight;
+
+        Ogre::Camera			*mpCam;
+        Ogre::RenderWindow	    *mpWin;
+        Ogre::Font			    *mpFont;
+        Ogre::MaterialPtr		mpMaterial;
+        Ogre::MaterialPtr		mpBackgroundMaterial;
+
+        Ogre::SceneNode         *mNode;
+    };
+}
+
+#endif
Index: /ogreode/include/OgreOdeDebugObject.h
===================================================================
--- /ogreode/include/OgreOdeDebugObject.h	(revision 21)
+++ /ogreode/include/OgreOdeDebugObject.h	(revision 21)
@@ -0,0 +1,110 @@
+#ifndef _OGREODEDEBUGOBJECT_H_
+#define _OGREODEDEBUGOBJECT_H_
+
+#include "OgreOdePreReqs.h"
+
+namespace OgreOde
+{
+    //------------------------------------------------------------------------------------------------
+	class _OgreOdeExport DebugLines:public Ogre::SimpleRenderable
+	{
+	public:
+		DebugLines(void);
+		~DebugLines(void);
+
+		void addLine(const Ogre::Vector3 &start,const Ogre::Vector3 &end)
+		{
+			clear();
+
+			_points.push_back(start);
+			_points.push_back(end);
+		}
+		void addLine(Ogre::Real start_x, Ogre::Real start_y, Ogre::Real start_z, 
+            Ogre::Real end_x, Ogre::Real end_y, Ogre::Real end_z)
+		{
+			addLine(Ogre::Vector3(start_x,start_y,start_z),Ogre::Vector3(end_x,end_y,end_z));
+		}
+		void draw();
+		void clear();
+
+		Ogre::Real getSquaredViewDepth(const Ogre::Camera *cam) const;
+		Ogre::Real getBoundingRadius(void) const;
+
+	protected:
+
+		Vector3Array _points;
+		bool _drawn;
+
+		static bool _materials_created;
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport DebugObject:public DebugLines
+	{
+	public:
+		enum Mode
+		{
+			Mode_Unknown,
+			Mode_Enabled,
+			Mode_Disabled,
+			Mode_Static
+		};
+
+	public:
+        DebugObject(DebugObject::Mode mode = DebugObject::Mode_Enabled);
+		virtual ~DebugObject();
+
+		void setMode(DebugObject::Mode mode);
+
+	protected:
+		DebugObject::Mode _mode;
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport BoxDebugObject:public DebugObject
+	{
+	public:
+		BoxDebugObject(const Ogre::Vector3& size);
+		virtual ~BoxDebugObject();
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport SphereDebugObject:public DebugObject
+	{
+	public:
+		SphereDebugObject(Ogre::Real radius);
+		virtual ~SphereDebugObject();
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport CapsuleDebugObject:public DebugObject
+	{
+	public:
+		CapsuleDebugObject(Ogre::Real radius, Ogre::Real length);
+		virtual ~CapsuleDebugObject();
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport CylinderDebugObject:public DebugObject
+	{
+	public:
+		CylinderDebugObject(Ogre::Real radius, Ogre::Real length);
+		virtual ~CylinderDebugObject();
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport TriangleMeshDebugObject:public DebugObject
+	{
+	public:
+		TriangleMeshDebugObject(int vertex_count);
+		virtual ~TriangleMeshDebugObject();
+
+		void beginDefinition();
+		void setVertex(int index, const Ogre::Vector3& vertex);
+		void endDefinition();
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport RayDebugObject:public DebugObject
+	{
+	public:
+		RayDebugObject(const Ogre::Vector3& start,const Ogre::Vector3& direction,const Ogre::Real length);
+		void setDefinition(const Ogre::Vector3& start,const Ogre::Vector3& direction,const Ogre::Real length);
+		virtual ~RayDebugObject();
+	};
+}
+
+#endif
Index: /ogreode/include/OgreOdeEigenSolver.h
===================================================================
--- /ogreode/include/OgreOdeEigenSolver.h	(revision 21)
+++ /ogreode/include/OgreOdeEigenSolver.h	(revision 21)
@@ -0,0 +1,68 @@
+#ifndef _OGREODEEIGENSOLVER_H_
+#define _OGREODEEIGENSOLVER_H_
+
+#include "OgreOdePreReqs.h"
+
+namespace OgreOde 
+{
+	class _OgreOdeExport EigenSolver
+	{
+	public:
+		EigenSolver(int iSize);
+		~EigenSolver();
+
+		// set the matrix for eigensolving
+		Ogre::Real& operator() (int iRow, int iCol);
+
+		// Get the eigenresults (eigenvectors are columns of eigenmatrix).  The
+		// GetEigenvector calls involving Vector2, Ogre::Vector3, and Vector4 should
+		// only be called if you know that the eigenmatrix is of the appropriate
+		// size.
+	    void GetEigenvector (int i, Ogre::Vector3& rkV) const;
+		Ogre::Real GetEigenvalue (int i) const;
+
+		// solve eigensystem, use decreasing sort on eigenvalues
+	    void DecrSortEigenStuff3 ();
+		void IncrSortEigenStuff3 ();
+
+		static void GenerateOrthonormalBasis (Ogre::Vector3& rkU, Ogre::Vector3& rkV, Ogre::Vector3& rkW, bool bUnitLengthW);
+		static void orthogonalLineFit(unsigned int vertex_count, const Ogre::Vector3* vertices, Ogre::Vector3& origin, Ogre::Vector3& direction);
+		static Ogre::Real SqrDistance(const Ogre::Vector3& rkPoint,const Ogre::Vector3& origin,const Ogre::Vector3& direction);
+		static void GaussPointsFit(unsigned int iQuantity,const Ogre::Vector3* akPoint, Ogre::Vector3 &rkCenter, Ogre::Vector3 akAxis[3], Ogre::Real afExtent[3]);
+
+	protected:
+		int m_iSize;
+		Ogre::Matrix3 m_kMat;
+		Ogre::Real* m_afDiag;
+		Ogre::Real* m_afSubd;
+
+		// For odd size matrices, the Householder reduction involves an odd
+		// number of reflections.  The product of these is a reflection.  The
+		// QL algorithm uses rotations for further reductions.  The final
+		// orthogonal matrix whose columns are the eigenvectors is a reflection,
+		// so its determinant is -1.  For even size matrices, the Householder
+		// reduction involves an even number of reflections whose product is a
+		// rotation.  The final orthogonal matrix has determinant +1.  Many
+		// algorithms that need an eigendecomposition want a rotation matrix.
+		// We want to guarantee this is the case, so m_bRotation keeps track of
+		// this.  The DecrSort and IncrSort further complicate the issue since
+		// they swap columns of the orthogonal matrix, causing the matrix to
+		// toggle between rotation and reflection.  The value m_bRotation must
+		// be toggled accordingly.
+		bool m_bIsRotation;
+		void GuaranteeRotation ();
+
+		// Householder reduction to tridiagonal form
+	    void Tridiagonal3 ();
+  
+		// QL algorithm with implicit shifting, applies to tridiagonal matrices
+		bool QLAlgorithm ();
+
+		// sort eigenvalues from largest to smallest
+		void DecreasingSort ();
+
+		void IncreasingSort ();
+	};
+}
+
+#endif
Index: /ogreode/include/OgreOdeEntityInformer.h
===================================================================
--- /ogreode/include/OgreOdeEntityInformer.h	(revision 21)
+++ /ogreode/include/OgreOdeEntityInformer.h	(revision 21)
@@ -0,0 +1,63 @@
+#ifndef _OGREODEENTITYINFORMER_H_
+#define _OGREODEENTITYINFORMER_H_
+
+#include "OgreOdePreReqs.h"
+
+namespace OgreOde 
+{
+    class _OgreOdeExport EntityInformer
+    {
+	public:
+		EntityInformer(Ogre::Entity *entity,const Ogre::Matrix4 &transform = Ogre::Matrix4::IDENTITY);
+		EntityInformer();
+		~EntityInformer();
+
+		void addEntity(Ogre::Entity *entity,const Ogre::Matrix4 &transform = Ogre::Matrix4::IDENTITY);
+		// Cannot be animated. 
+		void addMesh(const Ogre::MeshPtr &mesh, const Ogre::Matrix4 &transform = Ogre::Matrix4::IDENTITY);
+
+		Ogre::Real getRadius();
+		Ogre::Vector3 getSize();
+
+		Body* createSingleDynamicSphere(Ogre::Real mass, World *world, Space* space = 0);
+		Body* createSingleDynamicBox(Ogre::Real mass, World *world, Space* space = 0);
+
+		TriangleMeshGeometry* createStaticTriangleMesh(World *world, Space* space = 0);
+		BoxGeometry* createSingleStaticBox(World *world, Space* space = 0);
+
+		CapsuleGeometry* createOrientedCapsule(unsigned char bone, World *world, Space* space = 0);
+		BoxGeometry* createOrientedBox(unsigned char bone, World *world, Space* space = 0);
+		BoxGeometry* createAlignedBox(unsigned char bone, World *world, Space* space = 0);
+
+		const Ogre::Vector3* getVertices();
+		unsigned int getVertexCount();
+		const unsigned int* getIndices();
+		unsigned int getIndexCount();
+
+	protected:
+        void addVertexData(const Ogre::VertexData *vertex_data, 
+            const Ogre::VertexData *blended_data = 0, 
+            const Ogre::Mesh::IndexMap *indexMap = 0);
+		void addIndexData(Ogre::IndexData *data, const unsigned int offset = 0);
+		bool getBoneVertices(unsigned char bone,unsigned int &vertex_count, Ogre::Vector3* &vertices);
+
+		Ogre::Entity*		_entity;
+		Ogre::SceneNode*	_node;
+		Ogre::Matrix4		_transform;
+
+		Ogre::Real		_radius;
+		Ogre::Vector3		_size;
+
+        Ogre::Vector3*	   _vertices;
+		unsigned int*  _indices;
+		unsigned int   _vertex_count;
+		unsigned int   _index_count;
+
+
+		BoneMapping *_bone_mapping;
+	};
+}
+
+#endif
+
+
Index: /ogreode/include/OgreOdeFrameListener.h
===================================================================
--- /ogreode/include/OgreOdeFrameListener.h	(revision 21)
+++ /ogreode/include/OgreOdeFrameListener.h	(revision 21)
@@ -0,0 +1,151 @@
+/*
+    PhysicsFrameListener.h
+
+	A very simple wrapper class for ODE
+	primarily for the example car application
+*/
+#ifndef _PHYSICSFRAMELISTENER_H_
+#define _PHYSICSFRAMELISTENER_H_
+
+// Uncomment this if you're planning to use the Plane2D joint
+// But you'll have to have modified ODE first!
+// #define INCLUDE_PLANE2D_JOINT
+
+/*
+A physical thing
+*/
+class PhysicalThing : public RaySceneQueryListener
+{
+public:
+	// Doesn't actually do anything
+	PhysicalThing(dSpace *space);
+	~PhysicalThing(void);
+
+	// Just create geoms
+    void makePlane(Real a,Real b,Real c,Real d);				// Plane
+    void makeBox(Real x,Real y,Real z,Real lx,Real ly,Real lz);	// Box
+    void makeSphere(Real x,Real y,Real z,Real r);				// Sphere
+
+	// Create bodies and geoms
+    void makePlane(dWorld *world,SceneNode *node);
+	void makeBox(dWorld *world,SceneNode *node,Real mass = 1,Vector3 const &offs = Vector3(0,0,0));
+    void makeSphere(dWorld *world,SceneNode *node,Real mass = 1);
+	void makeTerrainTriMesh(dWorld *world,SceneManager *mgr,Real grid_size,Real grid_spacing);
+
+	// Callback functions for the ray scene query functionality
+	virtual bool queryResult(SceneQuery::WorldFragment *fragment,Real distance);
+	virtual bool queryResult(MovableObject *obj,Real distance);
+
+	// Update the position and orientation of the scene node we're controlling
+	void update(void);
+
+	// Utility functions to get at internal stuff
+	SceneNode *getNode(void);
+	dBodyID getBodyID(void);
+	dSpaceID getSpaceID(void);
+
+protected:
+	dGeom		*_geom;
+	dBody		*_body;
+	dSpace		*_space;
+	SceneNode	*_node;
+
+	std::list<Vector3> _frag;
+
+	dVector3 *_vertices;
+	int *_indices;
+};
+
+/*
+A Frame listener that implements the physics
+*/
+class PhysicsFrameListener : public FrameListener
+{
+protected:
+	// All the stuff we need for ODE
+    dWorld          *world;
+    dHashSpace      *space;
+    dJointGroup     *contactgroup;
+    dSpace          *current_space;
+	bool			paused;
+
+	// Keep track of anything we've created
+    std::list<PhysicalThing*>   things;
+    std::list<dSimpleSpace*>    spaces;
+	std::list<dJoint*>			joints;
+    
+	// Adjustable variables
+    Real total_time,step_size;
+	Real k_spring,k_damper,k_tyre,k_mu,k_erp,k_cfm;
+
+	// Utility function to find the physical thing associated with an Ogre scene node
+	dBodyID getBodyID(SceneNode *node);
+
+public:
+	// Standard constructor/destructor
+    PhysicsFrameListener(void);
+    ~PhysicsFrameListener(void);
+
+	// Tell us when every frame's about to be started
+    bool frameStarted(const FrameEvent& evt);
+	void pause(bool p = true);
+
+	// Mainly so we can access internal stuff from the collision callback
+    dWorld *getWorld(void){return world;};
+    dSpace *getSpace(void){return space;};
+    dJointGroup *getContactGroup(void){return contactgroup;};
+
+	// Create things manually, no physical bodies 
+	// so they won't move, but things will collide with them
+    PhysicalThing *createPlane(Real a,Real b,Real c,Real d);
+    PhysicalThing *createBox(Real x,Real y,Real z,Real lx,Real ly,Real lz);
+    PhysicalThing *createSphere(Real x,Real y,Real z,Real r);
+
+	// Create objects based on Ogre nodes, these nodes will then
+	// come under control of the physics simulation and will move about
+	// as if by magic!
+	// Except for the plane, which can't actually be a physical body
+	// and the trimesh which we're not going to allow to be a physical body
+    PhysicalThing *createPlane(SceneNode *node);
+	PhysicalThing *createBox(SceneNode *node,Real mass = 1,Vector3 const &offs = Vector3(0,0,0));
+    PhysicalThing *createSphere(SceneNode *node,Real mass = 1);
+	PhysicalThing *createTerrainTriMesh(SceneManager *mgr,Real grid_size,Real grid_spacing);
+
+	// Create and activate a new space inside the standard hash space
+	// Things won't collide within a space so (for example) the objects
+	// that make up a car won't collide with each other
+    dSimpleSpace *createSpace(void);
+
+	// Create joints between the nodes specified
+	// The order of n1/n2 does matter; n1 is what you want attaching
+	// and n2 is what you want it attaching to
+	dJoint *createHinge2(SceneNode *n1,SceneNode *n2,const Vector3 &suspension = Vector3(0,1,0),const Vector3 &axle = Vector3(1,0,0));
+	dJoint *createHinge(SceneNode *n1,SceneNode *n2,const Vector3 &axis = Vector3(1,0,0));
+	dJoint *createSlider(SceneNode *n1,SceneNode *n2,const Vector3 &axis = Vector3(0,1,0));
+	dJoint *createBall(SceneNode *n1,SceneNode *n2);
+#ifdef INCLUDE_PLANE2D_JOINT
+	dJoint *createPlane2D(SceneNode *n);
+#endif
+
+	// Apply forces to a body under our control
+	void addTorque(SceneNode *n,const Vector3 &force);
+
+	// Set the parameters used for the CFM/ERP joint parameters
+	void setSuspension(Real spring,Real damper);
+
+	// Set the acceleration due to gravity
+	void setGravity(Real g);
+
+	// Get our constants
+	Real getTyre(void){return k_tyre;};
+	Real getMu(void){return k_mu;};
+	Real getCFM(void){return k_cfm;};
+	Real getERP(void){return k_erp;};
+
+	// Static function for ODE to call when collisions (potentially) occur
+    static void collisionCallback(void *data,dGeomID o1,dGeomID o2);
+};
+
+#endif
+
+
Index: /ogreode/include/OgreOdeGeometry.h
===================================================================
--- /ogreode/include/OgreOdeGeometry.h	(revision 21)
+++ /ogreode/include/OgreOdeGeometry.h	(revision 21)
@@ -0,0 +1,559 @@
+#ifndef _OGREODEGEOMETRY_H_
+#define _OGREODEGEOMETRY_H_
+
+#include "OgreOdePreReqs.h"
+#include "OgreOdeMaintainedList.h"
+
+namespace OgreOde 
+{
+    /** 
+    This object is the base class for all Geometry objects in OgreOde.
+    @remarks
+        This object is tied either to a Body (acting as collision proxy for a physic object) 
+        or to a Entity Object (which then is physically "static")
+    @remarks
+        It extends the OGRE UserDefinedObject to allow reverse links from Ogre::Entity.
+        Note that this class does not override the UserDefinedObject's getTypeId method 
+        because this class is abstract.
+    */  
+    class _OgreOdeExport Geometry : public Ogre::UserDefinedObject
+	{
+		friend class Space;
+        friend class World;
+        friend class Body;
+		friend class TransformGeometry;
+
+	public:
+		enum Class
+		{
+			Class_Sphere		= dSphereClass,
+			Class_Box			= dBoxClass,
+			Class_Capsule		= dCapsuleClass,
+			Class_Cylinder		= dCCylinderClass,
+			Class_InfinitePlane = dPlaneClass,
+			Class_Ray			= dRayClass,
+			Class_TriangleMesh	= dTriMeshClass,
+			Class_Terrain		= dHeightfieldClass,
+			Class_Convex		= dConvexClass,
+			Class_Transform		= dGeomTransformClass,
+			Class_NoGeometry
+		};
+
+	public:
+        Geometry(World *world,  Space* space = 0);
+		virtual ~Geometry();
+
+		virtual void                        setBody(Body* body);
+		Body*                               getBody(); 
+
+
+		virtual void                        setPosition(const Ogre::Vector3& position);
+		virtual void                        setOrientation(const Ogre::Quaternion& orientation);	
+		virtual const Ogre::Vector3&        getPosition();
+		virtual const Ogre::Quaternion&     getOrientation();
+		virtual const Ogre::AxisAlignedBox& getAxisAlignedBox(); 
+
+
+		Space*                              getSpace(); 
+
+		void                                 enable();
+		void                                 disable();
+		bool                                 isEnabled(); 
+
+		Geometry::Class                     getClass() const; 
+
+        void                                 setCategoryBitfield(unsigned long bits); 
+        void                                 setCollisionBitfield(unsigned long bits); 
+		unsigned long                         getCategoryBitfield(); 
+		unsigned long                         getCollisionBitfield(); 
+
+		int                                 collide(Geometry* geometry, CollisionListener* listener = 0);
+
+		void                                setMaxContacts(unsigned int max_contacts);
+		unsigned int                        getMaxContacts() const;
+		unsigned int                        getContactHighWaterMark() const;
+
+		void                                setEncapsulator(Geometry* encapsulator);
+		Geometry*                           getEncapsulator(){return _encapsulator;}
+
+		void                                setUserData(unsigned long user_data){_user_data = user_data;}
+		unsigned long                       getUserData() const {return _user_data;}
+
+		void                                setUserObject(void* object){_user_object = object;}
+		void*                               getUserObject(){return _user_object;}
+
+		virtual unsigned long               getID() const ;
+		virtual void                        notify(Body* body);
+
+
+        virtual void                        setDebug(const bool debug);
+        virtual void                        createDebugObject();
+        virtual void                        destroyDebugObject();
+        void                                reparentDebugObject(Ogre::Node* node);
+
+        virtual void                        setDebugContact(const bool debug);
+        void                                updateDebugContact();
+
+		void                                clearOffset();
+		int                                 isOffset();
+
+		void                                setOffsetPosition (const Ogre::Vector3 &position);
+		void                                setOffsetQuaternion(const Ogre::Quaternion &orientation);
+
+		 void                               setOffsetWorldPosition(const Ogre::Vector3 &position);		
+		 void                               setOffsetWorldQuaternion(const Ogre::Quaternion &orientation) ;
+
+		 Ogre::Vector3                      getOffsetPosition() ;
+		 Ogre::Quaternion                   getOffsetQuaternion() ;
+
+	protected:
+		dGeomID                             getGeometryID() const;
+		void                                registerGeometry();
+		dSpaceID                            getSpaceID(Space* space) const;
+
+	protected:
+		dGeomID                             _geom;
+		unsigned int                        _max_contacts;
+        unsigned int                        _contact_high_water_mark;
+        unsigned int                        _last_contact_num;
+		dContact*                           _contacts;
+
+		DebugObject*                        _debug_obj;
+        Ogre::Node*                         _debug_node;
+        DebugContact**                      _debug_contacts;
+
+		Geometry*                           _encapsulator;
+		Ogre::AxisAlignedBox                _bounding_box;
+		Ogre::Quaternion                    _orientation;
+		Ogre::Vector3                       _position;
+
+		static int                          _geometry_count;
+		unsigned long                       _user_data;
+		void*                               _user_object;
+        World                               *_world;
+
+	};
+
+	//------------------------------------------------------------------------------------------------
+    class _OgreOdeExport SphereGeometry:public Geometry
+	{
+	public:
+		SphereGeometry(Ogre::Real radius, World *world, Space* space = 0);
+		~SphereGeometry();
+
+		virtual void createDebugObject();
+
+		void setRadius(Ogre::Real radius);
+		Ogre::Real getRadius();
+        Ogre::Real getPointDepth(const Ogre::Vector3& point);  
+        /** Return a string identifying the type of user defined object.
+           @remarks
+           Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Sphere");return sName;};
+
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport BoxGeometry:public Geometry
+	{
+	public:
+		BoxGeometry(const Ogre::Vector3& size,  World *world, Space* space = 0);
+		~BoxGeometry();
+
+		virtual void createDebugObject();
+
+		void setSize(const Ogre::Vector3& size);
+		const Ogre::Vector3& getSize();
+		Ogre::Real getPointDepth(const Ogre::Vector3& point);
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Box");return sName;};
+
+	protected:
+		Ogre::Vector3 _size;
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport InfinitePlaneGeometry:public Geometry
+	{
+	public:
+		InfinitePlaneGeometry(const Ogre::Plane& plane, World *world, Space* space = 0);
+		~InfinitePlaneGeometry();
+
+		void setDefinition(const Ogre::Plane& plane);
+		const Ogre::Plane& getDefinition();
+		Ogre::Real getPointDepth(const Ogre::Vector3& point);
+
+		void setPosition(const Ogre::Vector3& position);
+		void setOrientation(const Ogre::Quaternion& orientation);	
+		const Ogre::Vector3& getPosition();
+		const Ogre::Quaternion& getOrientation();
+		const Ogre::AxisAlignedBox& getAxisAlignedBox(); 
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Infinity Plane");return sName;};
+
+	protected:
+		Ogre::Plane _plane;
+    };
+    //------------------------------------------------------------------------------------------------
+	class _OgreOdeExport CapsuleGeometry:public Geometry
+	{
+	public:
+		CapsuleGeometry(Ogre::Real radius, Ogre::Real length, World *world, Space* space = 0);
+		~CapsuleGeometry();
+
+		virtual void createDebugObject();
+ 
+		void setDefinition(Ogre::Real radius, Ogre::Real length);
+		Ogre::Real getRadius();
+		Ogre::Real getLength();
+		Ogre::Real getPointDepth(const Ogre::Vector3& point);
+
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Capsule");return sName;};
+
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport CylinderGeometry:public Geometry
+	{
+	public:
+		CylinderGeometry(Ogre::Real radius, Ogre::Real length, World *world, Space* space = 0);
+		~CylinderGeometry();
+
+		virtual void createDebugObject();
+
+		void setDefinition(Ogre::Real radius, Ogre::Real length);
+		Ogre::Real getRadius();
+		Ogre::Real getLength();
+		Ogre::Real getPointDepth(const Ogre::Vector3& point);
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Cylinder");return sName;};
+
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport RayGeometry:public Geometry
+	{
+	public:
+		RayGeometry(Ogre::Real length, World *world, Space* space = 0);
+		~RayGeometry();
+
+		virtual void createDebugObject();
+		
+		void setLength(Ogre::Real length);
+		Ogre::Real getLength();
+		void setDefinition(const Ogre::Vector3& start, const Ogre::Vector3& direction);
+		const Ogre::Vector3& getStart();
+		const Ogre::Vector3& getDirection();
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Ray");return sName;};
+
+	protected:
+		Ogre::Vector3 _direction,_start;
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport TransformGeometry:public Geometry
+	{
+	public:
+		TransformGeometry(World *world, Space* space);
+		~TransformGeometry();
+
+		virtual void createDebugObject();
+		virtual void destroyDebugObject();
+
+		void setEncapsulatedGeometry(Geometry* geometry);
+		Geometry* getEncapsulatedGeometry() const;
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Transform");return sName;};
+
+	};
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport TriangleMeshCollisionListener
+	{
+	public:
+		TriangleMeshCollisionListener(){}
+		virtual ~TriangleMeshCollisionListener(){}
+
+		virtual bool collide(TriangleMeshGeometry* triangle_mesh, Geometry* geometry, int triangle) {return true;}
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport TriangleMeshIntersectionListener
+	{
+	public:
+		TriangleMeshIntersectionListener(){}
+		virtual ~TriangleMeshIntersectionListener(){}
+
+		virtual void intersect(TriangleMeshGeometry* triangle_mesh, Geometry* geometry, const int* triangles, int triangle_count){}
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport TriangleMeshRayListener
+	{
+	public:
+		TriangleMeshRayListener(){}
+		virtual ~TriangleMeshRayListener(){}
+
+		virtual bool collide(TriangleMeshGeometry* triangle_mesh, RayGeometry* ray,int triangle, const Ogre::Vector3& uv){return true;}
+	};
+
+	//------------------------------------------------------------------------------------------------
+	struct _OgreOdeExport TriangleMeshTriangle
+	{
+		Ogre::Vector3 v0,v1,v2;
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport TriangleMeshGeometry:public Geometry
+	{
+	public:
+		TriangleMeshGeometry(const Ogre::Vector3* vertices, 
+                             unsigned int vertex_count, 
+                             const unsigned int* indices,
+                             unsigned int index_count,
+                             World *world, 
+                             Space* space = 0);
+		~TriangleMeshGeometry();
+
+		Ogre::Vector3 getPoint(unsigned int index, const Ogre::Vector3& uv);
+		TriangleMeshTriangle getTriangle(int index);
+
+		void clearTemporalCoherenceCache(); 
+		void enableTemporalCoherence(Geometry::Class geometry_class,bool enable); 
+		bool isTemporalCoherenceEnabled(Geometry::Class geometry_class);
+
+		static int _collisionCallback(dGeomID mesh,dGeomID object,int triangle);
+		void setCollisionListener(TriangleMeshCollisionListener* collision_listener);
+
+		static void _intersectionCallback(dGeomID mesh,dGeomID object,const int* triangles,int triangle_count);
+		void setIntersectionListener(TriangleMeshIntersectionListener* intersection_listener); 
+
+		static int _rayCallback(dGeomID mesh,dGeomID ray,int triangle,dReal u,dReal v);
+		void setRayListener(TriangleMeshRayListener* ray_listener); 
+
+		virtual void createDebugObject();
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Trimesh");return sName;};
+
+	protected:
+		dTriMeshDataID _data;
+		dVector3* _vertices;
+		unsigned int* _indices;
+		unsigned int _vertex_count;
+        unsigned int _index_count;
+
+		TriangleMeshCollisionListener* _collision_listener;
+		TriangleMeshIntersectionListener* _intersection_listener;
+		TriangleMeshRayListener* _ray_listener;
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport ConvexGeometry:public Geometry
+	{
+	public:
+		ConvexGeometry(const Ogre::Vector3* vertices, 
+						unsigned int vertex_count, 
+						const unsigned int* indices,
+						unsigned int index_count,
+						World *world, 
+                        Space* space = 0);
+		~ConvexGeometry();
+
+
+		virtual void createDebugObject();
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Convex");return sName;};
+
+	protected:
+		dReal	* _vertices;
+		unsigned int* _indices;
+		unsigned int _vertex_count;
+		unsigned int _index_count;
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport TerrainGeometryHeightListener
+	{
+	public:
+		TerrainGeometryHeightListener(){}
+		virtual ~TerrainGeometryHeightListener(){}
+
+		virtual Ogre::Real heightAt(const Ogre::Vector3& position) = 0;
+	};
+
+	//------------------------------------------------------------------------------------------------
+	class _OgreOdeExport TerrainGeometry:public Geometry, public Ogre::RaySceneQueryListener
+	{
+	public:
+        TerrainGeometry(World *world, 
+                        Space* space,
+                        const Ogre::Vector3 &scale,
+                        int nodes_per_sideX,
+                        int nodes_per_sideY,
+                        Ogre::Real worldSizeX,
+                        Ogre::Real worldSizeZ,
+                        bool centered,
+                        Ogre::Real thickness = 10.0f);
+
+		~TerrainGeometry();
+
+		Ogre::Real getPointDepth(const Ogre::Vector3& point);
+		const Ogre::Vector3& getPosition();
+		const Ogre::Quaternion& getOrientation();
+		
+		static dReal _heightCallback(void* data, dReal x, dReal z);
+		static dReal _heightCallback(void* data, int x, int z);
+		void setHeightListener(TerrainGeometryHeightListener* listener);
+
+        inline Ogre::Real getHeightAt(const Ogre::Vector3& position)
+        {
+            _num_query++;
+            const Ogre::Vector3 pos (position.x * _sample_width - (_centered?_halfWorldSizeX:0),
+                position.y,
+                position.z * _sample_height - (_centered?_halfWorldSizeZ:0)); 
+            _ray.setOrigin(pos);
+            _ray_query->setRay(_ray);
+            _distance_to_terrain = static_cast<Ogre::Real>(0.0);
+            _ray_query->execute(this);
+            return position.y - _distance_to_terrain;
+        }
+
+		bool queryResult(Ogre::MovableObject *obj, Ogre::Real distance);
+		bool queryResult(Ogre::SceneQuery::WorldFragment *fragment, Ogre::Real distance);
+
+        size_t getNumQueries() const {return _num_query;};
+        void resetNumQueries(){_num_query = 0;};
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Terrain");return sName;};
+
+	protected:
+		Ogre::Real _max_height;
+		Ogre::Real _distance_to_terrain;
+		Ogre::Real _sample_width, _sample_height;
+		TerrainGeometryHeightListener* _listener;
+		Ogre::Ray _ray;
+		Ogre::RaySceneQuery* _ray_query;
+        bool _centered;
+        Ogre::Real _halfWorldSizeX; 
+        Ogre::Real _halfWorldSizeZ;
+        size_t _num_query;
+    };
+    //------------------------------------------------------------------------------------------------
+    class _OgreOdeExport PlaneBoundedRegionGeometryPlaneListener
+    {
+    public:
+        PlaneBoundedRegionGeometryPlaneListener(){}
+        virtual ~PlaneBoundedRegionGeometryPlaneListener(){}
+
+        virtual std::list<Ogre::Plane>* planesAt(const Ogre::Vector3& position) = 0;
+    };
+
+    //------------------------------------------------------------------------------------------------
+    class _OgreOdeExport PlaneBoundedRegionGeometry:public Geometry, public Ogre::RaySceneQueryListener
+    {
+    public:
+        PlaneBoundedRegionGeometry(World *world, 
+                                    Space* space,
+                                    const Ogre::AxisAlignedBox &scale);
+
+        ~PlaneBoundedRegionGeometry();
+
+        Ogre::Real getPointDepth(const Ogre::Vector3& point);
+        const Ogre::Vector3& getPosition();
+        const Ogre::Quaternion& getOrientation();
+
+        static std::list<Ogre::Plane> * _planeCallback(void* data, dReal x, dReal z);
+        static std::list<Ogre::Plane> * _planeCallback(void* data, int x, int z);
+        void setPlaneListener(PlaneBoundedRegionGeometryPlaneListener* listener);
+
+        inline std::list<Ogre::Plane> *planesAt(const Ogre::Vector3& position)
+        {
+            _num_query++;
+//             const Ogre::Vector3 pos (position.x * _sample_width - (_centered?_halfWorldSizeX:0),
+//                                     position.y,
+//                                     position.z * _sample_height - (_centered?_halfWorldSizeZ:0)); 
+//             _ray.setOrigin(pos);
+//             _ray_query->setRay(_ray);
+//             _distance_to_terrain = static_cast<Ogre::Real>(0.0);
+//             _ray_query->execute(this);
+
+            return _last_query_results;
+
+        }
+
+        bool queryResult(Ogre::MovableObject *obj, Ogre::Real distance);
+        bool queryResult(Ogre::SceneQuery::WorldFragment *fragment, Ogre::Real distance);
+
+        size_t getNumQueries() const {return _num_query;};
+        void resetNumQueries(){_num_query = 0;};
+
+        /** Return a string identifying the type of user defined object.
+        @remarks
+        Used to differentiate between different Bodies, Geometries and prefab_object
+        */
+        const Ogre::String& getTypeName(void) const
+        {static Ogre::String sName("Geometry Plane Bounded Region");return sName;};
+
+    protected:
+        Ogre::Real _max_height;
+        Ogre::Real _distance_to_terrain;
+        Ogre::Real _sample_width, _sample_height;
+        PlaneBoundedRegionGeometryPlaneListener* _listener;
+        Ogre::Ray _ray;
+        Ogre::RaySceneQuery* _ray_query;
+        bool _centered;
+        Ogre::Real _halfWorldSizeX; 
+        Ogre::Real _halfWorldSizeZ;
+        size_t _num_query;
+
+        std::list<Ogre::Plane> *_last_query_results;
+    };
+}
+
+#endif
Index: /ogreode/include/OgreOdeJoint.h
===================================================================
--- /ogreode/include/OgreOdeJoint.h	(revision 21)
+++ /ogreode/include/OgreOdeJoint.h	(revision 21)
@@ -0,0 +1,327 @@
+#ifndef _OGREODEJOINT_H_
+#define _OGREODEJOINT_H_
+
+#include "OgreOdePreReqs.h"
+#include "OgreOdeMaintainedList.h"
+
+namespace OgreOde 
+{
+	class _OgreOdeExport JointGroup
+	{
+		friend class World;
+		friend class Joint;
+
+	public:
+        JointGroup(World *world);
+		virtual ~JointGroup();
+
+		void empty();
+
+		virtual unsigned long getID();
+
+	protected:
+		dJointGroupID getJointGroupID() const;
+
+	protected:
+        dJointGroupID _joint_group;
+        World *_world;
+	};
+
+	class _OgreOdeExport Joint
+    {
+		friend class World;
+
+	public:
+		enum Type
+		{
+			Type_BallJoint					= dJointTypeBall,
+			Type_HingeJoint					= dJointTypeHinge,
+			Type_SliderJoint				= dJointTypeSlider,
+			Type_UniversalJoint				= dJointTypeUniversal,
+			Type_Suspension_Joint			= dJointTypeHinge2,
+			Type_FixedJoint					= dJointTypeFixed,
+			Type_AngularMotorJoint			= dJointTypeAMotor,
+			Type_PlanarJoint				= dJointTypePlane2D,
+			Type_SliderHingeJoint			= dJointTypePR
+		};
+
+		enum Parameter
+		{
+			Parameter_LowStop				= dParamLoStop,
+			Parameter_HighStop				= dParamHiStop,
+			Parameter_LowStop2				= dParamLoStop2, // SliderHingeJoint
+			Parameter_HighStop2				= dParamHiStop2, // SliderHingeJoint
+			Parameter_MotorVelocity			= dParamVel,
+			Parameter_MaximumForce			= dParamFMax,
+			Parameter_FudgeFactor			= dParamFudgeFactor,
+			Parameter_Bounceyness			= dParamBounce,
+			Parameter_CFM					= dParamCFM,
+			Parameter_ERP					= dParamERP,
+			Parameter_StopERP				= dParamStopERP,
+			Parameter_StopCFM				= dParamStopCFM,
+			Parameter_SuspensionERP			= dParamSuspensionERP, // SuspensionJoint
+			Parameter_SuspensionCFM			= dParamSuspensionCFM  // SuspensionJoint
+		};
+
+	public:
+		Joint(World *world, const JointGroup* group = 0);
+		virtual ~Joint();
+
+		Joint::Type getType(); 
+
+		void registerJoint();
+
+		void detach();
+		virtual void attach(const Body* body);
+		virtual void attach(const Body* body_a,const Body* body_b); 
+
+		Body* getFirstBody(); 
+		Body* getSecondBody(); 
+		
+		static bool areConnected(const Body* body_a,const Body* body_b); 
+		static bool areConnectedExcluding(const Body* body_a,const Body* body_b,Joint::Type joint_type); 
+	
+		void enableFeedback(); 
+		void disableFeedback(); 
+		const Ogre::Vector3& getFirstForce();
+		const Ogre::Vector3& getFirstTorque();
+		const Ogre::Vector3& getSecondForce();
+		const Ogre::Vector3& getSecondTorque();
+
+		virtual void setAnchor(const Ogre::Vector3& position);
+		virtual const Ogre::Vector3& getAnchor();
+		virtual const Ogre::Vector3& getAnchorError();
+		virtual void setAxis(const Ogre::Vector3& axis);
+		virtual const Ogre::Vector3& getAxis();
+		virtual void setAdditionalAxis(const Ogre::Vector3& axis);
+		virtual const Ogre::Vector3& getAdditionalAxis();
+		virtual Ogre::Real getAngle();
+		virtual Ogre::Real getAngleRate();
+		virtual Ogre::Real getPosition();
+		virtual Ogre::Real getPositionRate();
+
+		virtual void setParameter(Joint::Parameter parameter,Ogre::Real value,int axis = 1);
+		virtual Ogre::Real getParameter(Joint::Parameter parameter,int axis = 1);
+
+		virtual unsigned long getID();
+
+		virtual void addTorque(Ogre::Real torque, Ogre::Real torque2 = 0.0, Ogre::Real torque3 = 0.0);
+		virtual void addForce(Ogre::Real force, Ogre::Real force2 = 0.0, Ogre::Real force3 = 0.0);
+
+	protected:
+		dJointID getJointID();
+
+		dWorldID getWorldID();
+		dJointGroupID getJointGroupID(const JointGroup* group) const;
+
+	protected:
+		dJointID _joint;
+		dJointFeedback _feedback;
+		Ogre::Vector3 _axis,_anchor,_anchor_error,_additional_axis;
+        Ogre::Vector3 _first_force,_first_torque,_second_force,_second_torque;
+        World *_world;
+	};
+
+	class _OgreOdeExport BallJoint:public Joint
+	{
+	public:
+		BallJoint(World *world, const JointGroup* group = 0);
+		~BallJoint();
+
+		virtual void setAnchor(const Ogre::Vector3& position);
+		virtual const Ogre::Vector3& getAnchor();
+		virtual const Ogre::Vector3& getAnchorError();
+		
+		// as of ode-0.9 can set Parameter_CFM and Parameter_ERP to make the joint springy, an axis value isn't needed
+		virtual void setParameter(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+		virtual Ogre::Real getParameter(Joint::Parameter parameter,int axis = 1);
+	};
+
+	class _OgreOdeExport HingeJoint:public Joint
+	{
+	public:
+		HingeJoint(World *world, const JointGroup* group = 0);
+		~HingeJoint();
+
+		virtual void setAnchor(const Ogre::Vector3& position);
+		virtual const Ogre::Vector3& getAnchor();
+		virtual const Ogre::Vector3& getAnchorError();
+		virtual void setAxis(const Ogre::Vector3& axis);
+		virtual const Ogre::Vector3& getAxis();
+		virtual Ogre::Real getAngle();
+		virtual Ogre::Real getAngleRate();
+
+		virtual void setParameter(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+		virtual Ogre::Real getParameter(Joint::Parameter parameter,int axis = 1);
+
+		virtual void addTorque(Ogre::Real torque, Ogre::Real torque2 = 0.0, Ogre::Real torque3 = 0.0);
+	};
+
+	class _OgreOdeExport SliderJoint:public Joint
+	{
+	public:
+		SliderJoint(World *world, const JointGroup* group = 0);
+		~SliderJoint();
+
+		virtual void setAxis(const Ogre::Vector3& axis);
+		virtual const Ogre::Vector3& getAxis();
+		virtual Ogre::Real getPosition();
+		virtual Ogre::Real getPositionRate();
+
+		virtual void setParameter(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+		virtual Ogre::Real getParameter(Joint::Parameter parameter, int axis = 1);
+
+		virtual void addForce(Ogre::Real force, Ogre::Real force2 = 0.0, Ogre::Real force3 = 0.0);
+	};
+
+	class _OgreOdeExport UniversalJoint:public Joint
+	{
+	public:
+		UniversalJoint(World *world, const JointGroup* group = 0);
+		~UniversalJoint();
+
+		virtual void setAnchor(const Ogre::Vector3& position);
+		virtual const Ogre::Vector3& getAnchor();
+		virtual const Ogre::Vector3& getAnchorError();
+		virtual void setAxis(const Ogre::Vector3& axis);
+		virtual const Ogre::Vector3& getAxis();
+		virtual void setAdditionalAxis(const Ogre::Vector3& axis);
+		virtual const Ogre::Vector3& getAdditionalAxis();
+
+		virtual void setParameter(Joint::Parameter parameter, Ogre::Real value, int axis = 1);
+		virtual Ogre::Real getParameter(Joint::Parameter parameter,int axis = 1);
+
+		virtual void addTorque(Ogre::Real torque, Ogre::Real torque2 = 0.0, Ogre::Real torque3 = 0.0);
+	};
+
+	class _OgreOdeExport FixedJoint:public Joint
+	{
+	public:
+		FixedJoint(World *world, const JointGroup* group = 0);
+		~FixedJoint();
+
+		virtual void attach(const Body* body);
+		virtual void attach(const Body* body_a,const Body* body_b); 
+	};
+
+	class _OgreOdeExport SuspensionJoint:public Joint
+	{
+	public:
+		SuspensionJoint(World *world, const JointGroup* group = 0);
+		~SuspensionJoint();
+
+		virtual void setAnchor(const Ogre::Vector3& position);
+		virtual const Ogre::Vector3& getAnchor();
+		virtual const Ogre::Vector3& getAdditionalAnchor();
+		virtual const Ogre::Vector3& getAnchorError();
+		virtual void setAxis(const Ogre::Vector3& axis);
+		virtual const Ogre::Vector3& getAxis();
+		virtual void setAdditionalAxis(const Ogre::Vector3& axis);
+		virtual const Ogre::Vector3& getAdditionalAxis();
+		virtual Ogre::Real getAngle();
+		virtual Ogre::Real getAngleRate();
+		virtual Ogre::Real getPositionRate();
+
+		virtual void setParameter(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+		virtual Ogre::Real getParameter(Joint::Parameter parameter,int axis = 1);
+
+		virtual void addTorque(Ogre::Real torque, Ogre::Real torque2 = 0.0, Ogre::Real torque3 = 0.0);
+
+	protected:
+		Ogre::Vector3 _anchor2;
+	};
+
+	class _OgreOdeExport AngularMotorJoint:public Joint
+	{
+	public:
+		enum Mode
+		{
+			Mode_UserAngularMotor	= dAMotorUser,
+			Mode_EulerAngularMotor	= dAMotorEuler 
+		};
+
+		enum RelativeOrientation
+		{
+			RelativeOrientation_GlobalFrame = 0,
+			RelativeOrientation_FirstBody	= 1,		
+			RelativeOrientation_SecondBody	= 2
+		};
+
+	public:
+		AngularMotorJoint(World *world, const JointGroup* group = 0);
+		~AngularMotorJoint();
+
+		void setMode(AngularMotorJoint::Mode mode);
+		AngularMotorJoint::Mode getMode(); 
+
+		void setAxisCount(int axes);
+		int getAxisCount(); 
+
+		void setAxis(int axis_number,AngularMotorJoint::RelativeOrientation orientation,const Ogre::Vector3& axis);
+		const Ogre::Vector3& getAxis(int axis_number);
+		AngularMotorJoint::RelativeOrientation getAxisRelativeOrientation(int axis_number); 
+
+		void setAngle(int axis, Ogre::Real angle); 
+		Ogre::Real getAngle(int axis); 
+		Ogre::Real getAngleRate(int axis); 
+
+		virtual void setParameter(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+		virtual Ogre::Real getParameter(Joint::Parameter parameter,int axis = 1);
+
+		virtual void addTorque(Ogre::Real torque, Ogre::Real torque2 = 0.0, Ogre::Real torque3 = 0.0);
+	};
+
+	class _OgreOdeExport PlanarJoint:public Joint
+	{
+	public:
+		PlanarJoint(World *world, const JointGroup* group = 0);
+		~PlanarJoint();
+
+		virtual void setParameterX(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+		virtual void setParameterY(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+		virtual void setParameterAngle(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+	};
+	
+	
+	/** A prismatic and rotoide joint (ODE_API JointPR) combines a Slider (prismatic) and a Hinge (rotoide). 
+		It can be used to decrease the number of bodies in a simulation. 
+		Usually you cannot attach 2 ODE joints together they need a body in between. 
+		An example of use of this type of joint can be in the creation of a hydraulic piston.
+		
+		The 2 axies must not be parallel. Since this is a new joint only when the 2 joint are at 
+		90deg of each other was fully tested.
+	*/
+	class _OgreOdeExport SliderHingeJoint:public Joint
+	{
+		public:
+		SliderHingeJoint(World *world, const JointGroup* group = 0);
+		~SliderHingeJoint();
+		
+		virtual void setAnchor(const Ogre::Vector3& position);
+		virtual const Ogre::Vector3& getAnchor();
+		
+		// Equivalent to getting the Slider's extension
+		virtual Ogre::Real getPosition();
+		virtual Ogre::Real getPositionRate();
+		
+		// Set the axis for the Slider articulation
+		virtual void setAxis(const Ogre::Vector3& axis);
+		// Get the axis for the Slider articulation
+		virtual const Ogre::Vector3& getAxis();
+		// Set the axis for the Hinge articulation. 
+		virtual void setAdditionalAxis(const Ogre::Vector3& axis);
+		// Get the axis for the Hinge articulation
+		virtual const Ogre::Vector3& getAdditionalAxis();
+		
+		// Set joint parameter axis = 3 for Hinge
+		virtual void setParameter(Joint::Parameter parameter, Ogre::Real value,int axis = 1);
+		virtual Ogre::Real getParameter(Joint::Parameter parameter,int axis = 1);
+		
+		// Applies the torque about the Hinge axis of the joint 
+		virtual void addTorque(Ogre::Real torque, Ogre::Real torque2 = 0.0, Ogre::Real torque3 = 0.0);
+	};
+	
+	
+}
+
+#endif 
Index: /ogreode/include/OgreOdeMaintainedList.h
===================================================================
--- /ogreode/include/OgreOdeMaintainedList.h	(revision 21)
+++ /ogreode/include/OgreOdeMaintainedList.h	(revision 21)
@@ -0,0 +1,191 @@
+/*!
+ * <File comment goes here!!>
+ * 
+ * Copyright (c) 2005 by <your name/ organization here>
+ */
+#ifndef _OGREODEMAINTAINEDLIST_H_
+#define _OGREODEMAINTAINEDLIST_H_
+
+#include "OgreOdePreReqs.h"
+
+/*!
+ * \brief
+ * Write brief comment for OgreOde here.
+ * 
+ * Write detailed description for OgreOde here.
+ * 
+ * \remarks
+ * Write remarks for OgreOde here.
+ * 
+ * \see
+ * Separate items with the '|' character.
+ */
+namespace OgreOde
+{
+
+	/** Convenience class to make it easy to step through all MaintainedItem in a MaintainedList.
+	*/
+	template <class T>
+	class _OgreOdeExport MaintainedItemIterator
+	{
+
+	public:
+		typedef std::deque<T*> MaintainedItemList;
+		typedef std::map<unsigned long,T*> MaintainedItemMap;
+
+
+	protected:
+		typename MaintainedItemList::iterator mPos;
+		typename MaintainedItemList::iterator mStart;
+		typename MaintainedItemList::iterator mEnd;
+
+
+	public:
+		/// constructor, only available for MaintainedList::getIterator
+		MaintainedItemIterator(typename MaintainedItemList::iterator start, typename MaintainedItemList::iterator end)
+		{
+			mStart = mPos = start;
+			mEnd = end;
+		}
+		// Returns true when at the end of the MaintainedItem list
+		inline bool end(void) const 
+		{
+			return (mPos == mEnd);
+		}
+		/** Returns a pointer to the next MaintainedItem, and moves the iterator on by 1 element. */
+		inline T* getNext(void)
+		{
+			return static_cast<T*>(*mPos++);
+		}
+	};
+
+	template <class T>
+	class _OgreOdeExport MaintainedList
+	{
+	public:
+		typedef std::deque<T*>				MaintainedItemList;
+		typedef std::map<unsigned long,T*>	MaintainedItemMap;
+
+	public:
+		MaintainedList(){};
+		~MaintainedList(){};
+
+		void registerItem(T* ptr)	
+		{
+			assert(ptr->getID());
+			_map[ptr->getID()] = ptr;
+			_list.push_back (ptr);
+		}
+
+		T* findItem(unsigned long id)
+		{
+			assert (_map.find(id) != _map.end());
+			return _map[id];
+		}
+
+		void unregisterItem(unsigned long id)
+		{
+			assert (_map.find(id) != _map.end());
+			T* m = _map[id];
+			_map.erase(id);
+
+			typename MaintainedItemList::iterator i = std::find(_list.begin (), 
+				_list.end (), 
+				m);
+			if(i != _list.end())
+			{
+				assert(*i == m);
+				_list.erase(i);
+			}
+		}
+
+		void setDebug(const bool debug)
+		{
+			typename MaintainedItemList::iterator i = _list.begin();
+			typename MaintainedItemList::iterator end = _list.end();
+			for(;i != end;++i)
+			{
+				(*i)->setDebug(debug);
+			}
+        }
+
+        void setDebugContact(const bool debug)
+        {
+            typename MaintainedItemList::iterator i = _list.begin();
+            typename MaintainedItemList::iterator end = _list.end();
+            for(;i != end;++i)
+            {
+                (*i)->setDebugContact(debug);
+            }
+        }
+
+        void updateDebugContact()
+        {
+            std::for_each(_list.begin (), 
+                _list.end (),  
+                std::mem_fun(&T::updateDebugContact));
+        }
+
+
+
+		void synchronise()
+		{
+			std::for_each(_list.begin (), 
+				_list.end (),  
+				std::mem_fun(&T::synchronise));
+		}
+
+		void updateDrawState()
+		{
+			std::for_each(_list.begin (), 
+				_list.end (),  
+				std::mem_fun(&T::updateDrawState));
+		}
+		void updatePreviousState()
+		{
+			std::for_each(_list.begin (), 
+				_list.end (),  
+				std::mem_fun(&T::updatePreviousState));
+		}
+
+		void updateCurrentState()
+		{
+			std::for_each(_list.begin (), 
+				_list.end (),  
+				std::mem_fun(&T::updateCurrentState));
+		}
+
+		void interpolateDrawState(const Ogre::Real alpha)
+		{
+			typename MaintainedItemList::iterator i = _list.begin();
+			typename MaintainedItemList::iterator end = _list.end();
+			for(;i != end;++i)
+			{
+				(*i)->interpolateDrawState(alpha);
+			}
+		}
+
+		void notify(Body* body)
+		{
+			typename MaintainedItemList::iterator i = _list.begin();
+			typename MaintainedItemList::iterator end = _list.end();
+			for(;i != end;++i)
+			{
+				(*i)->notify(body);
+			}
+		}
+
+		MaintainedItemIterator<T> getIterator(void)
+		{
+			return MaintainedItemIterator<T>(_list.begin(), _list.end());
+		}
+
+	protected:
+
+		MaintainedItemMap  _map;
+		MaintainedItemList _list;
+	};
+
+}
+
+#endif
Index: /ogreode/include/OgreOdeMass.h
===================================================================
--- /ogreode/include/OgreOdeMass.h	(revision 21)
+++ /ogreode/include/OgreOdeMass.h	(revision 21)
@@ -0,0 +1,88 @@
+#ifndef _OGREODEMASS_H_
+#define _OGREODEMASS_H_
+
+#include "OgreOdePreReqs.h"
+
+namespace OgreOde 
+{
+	class _OgreOdeExport Mass
+	{
+		friend class Body;
+
+	public:
+		Mass();
+        Mass(Ogre::Real mass, const Ogre::Vector3& center_of_gravity, const Ogre::Matrix3& intertia_matrix); 
+		virtual ~Mass();
+
+		inline Mass(const Mass& other)
+		{
+			memcpy(&_mass,&(other._mass),sizeof(_mass));
+		}
+
+		inline Mass& operator=(const Mass& other)
+		{
+			memcpy(&_mass,&(other._mass),sizeof(_mass));
+			return *this;
+		}
+
+		inline Mass& operator=(const dMass* other)
+		{
+			assert(other);
+			memcpy(&_mass,other,sizeof(_mass));
+			return *this;
+		}
+
+		void adjust(Ogre::Real mass); 
+		void translate(const Ogre::Vector3& offset); 
+		void rotate(const Ogre::Quaternion& orientation); 
+		void add(const Mass& other); 
+
+		Ogre::Matrix3 getLocalInertiaTensor() const; 
+
+	protected:
+		const dMass* getMassPtr() const;
+		dMass _mass;
+	};
+
+	class _OgreOdeExport SphereMass:public Mass
+	{
+	public:
+		SphereMass();
+		SphereMass(Ogre::Real mass, Ogre::Real radius);
+		~SphereMass();
+
+		void setDensity(Ogre::Real density, Ogre::Real radius);
+	};
+
+	class _OgreOdeExport CapsuleMass:public Mass
+	{
+	public:
+		CapsuleMass();
+		CapsuleMass(Ogre::Real mass, Ogre::Real radius,const Ogre::Vector3& direction, Ogre::Real length);
+		~CapsuleMass();
+
+		void setDensity(Ogre::Real density, Ogre::Real radius,const Ogre::Vector3& direction, Ogre::Real length);
+	};
+
+	class _OgreOdeExport CylinderMass:public Mass
+	{
+	public:
+		CylinderMass();
+		CylinderMass(Ogre::Real mass,const Ogre::Vector3& direction, Ogre::Real radius, Ogre::Real length);
+		~CylinderMass();
+
+		void setDensity(Ogre::Real density,const Ogre::Vector3& direction, Ogre::Real radius, Ogre::Real length);
+	};
+
+	class _OgreOdeExport BoxMass:public Mass
+	{
+	public:
+		BoxMass();
+		BoxMass(Ogre::Real mass,const Ogre::Vector3& size);
+		~BoxMass();
+
+		void setDensity(Ogre::Real density,const Ogre::Vector3& size);
+	};
+}
+
+#endif
Index: /ogreode/include/OgreOdePreReqs.h
===================================================================
--- /ogreode/include/OgreOdePreReqs.h	(revision 21)
+++ /ogreode/include/OgreOdePreReqs.h	(revision 21)
@@ -0,0 +1,86 @@
+#ifndef _OGREODEPREREQS_H_
+#define _OGREODEPREREQS_H_
+
+#include "Ogre.h"
+#include "OgreNoMemoryMacros.h"
+#include "ode/ode.h"
+#include "OgreMemoryMacros.h"
+
+
+namespace OgreOde 
+{
+    #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+    #   if defined( OGREODE_EXPORTS )
+    #       define _OgreOdeExport __declspec( dllexport )
+    #   else
+    #       define _OgreOdeExport __declspec( dllimport )
+    #   endif
+    #else
+    #   define _OgreOdeExport
+    #endif
+
+	class World;
+	class Space;
+
+	class Body;
+	class Mass;
+
+	class JointGroup;
+	class Joint;
+
+    class Geometry;
+    typedef std::list<Geometry*>   GeometryList;
+    typedef std::vector<Geometry*> GeometryArray;
+
+    class RayGeometry;
+    class CylinderGeometry;
+    class SphereGeometry;
+    class InfinitePlaneGeometry;
+    class TransformGeometry;
+	
+	class TriangleMeshData;
+	class TriangleMeshDataPtr;
+	class TriangleMeshGeometry;
+	class BoxGeometry;
+    class CapsuleGeometry;
+
+
+	class Contact;
+
+    class StepListener;
+
+    class StepHandler;
+    class BasicStepper;
+    class QuickStepper;
+    class FastStepper;
+
+    class StepMode;
+    class BasicStepMode;
+    class QuickStepMode;
+    class FastStepMode;
+
+
+
+	class CollisionListener;
+	class CollisionCallback;
+	class MaintainedItem;
+
+
+	class EntityInformer;
+    typedef std::vector<Ogre::Vector3> Vector3Array;
+	typedef std::map<unsigned char,Vector3Array* > BoneMapping;
+	typedef std::pair<unsigned short,Vector3Array* > BoneMappingKey;
+
+	typedef unsigned long MaterialID;
+	typedef std::map<MaterialID,Contact*> MaterialMap;
+    typedef std::pair<MaterialID,MaterialMap* > MaterialMapPair;
+
+    class DebugObject;
+    class DebugContact;
+    class DebugContactText;
+    class DebugNormal;
+}
+
+
+#endif
+
Index: /ogreode/include/OgreOdePrecompiledHeaders.h
===================================================================
--- /ogreode/include/OgreOdePrecompiledHeaders.h	(revision 21)
+++ /ogreode/include/OgreOdePrecompiledHeaders.h	(revision 21)
@@ -0,0 +1,26 @@
+#ifndef __OgreOdePrecompiledHeaders_
+#define __OgreOdePrecompiledHeaders_
+ 
+#ifdef _PRECOMP
+
+#include "OgreOdePreReqs.h"
+#include "OgreOdeWorld.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeMass.h" 
+#include "OgreOdeJoint.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeCollision.h"
+#include "OgreOdeStepper.h"
+
+#include "OgreOdeEntityInformer.h"
+
+
+#include "OgreOdeEigenSolver.h"
+#include "OgreOdeUtility.h"
+
+#include "OgreOdeDebugObject.h"
+#include "OgreOdeDebugContact.h"
+
+#endif //_PRECOMP
+#endif //__OgreOdePrecompiledHeaders_
Index: /ogreode/include/OgreOdeSpace.h
===================================================================
--- /ogreode/include/OgreOdeSpace.h	(revision 21)
+++ /ogreode/include/OgreOdeSpace.h	(revision 21)
@@ -0,0 +1,111 @@
+#ifndef _OGREODESPACE_H_
+#define _OGREODESPACE_H_
+
+#include "OgreOdePreReqs.h"
+#include "OgreOdeMaintainedList.h"
+
+namespace OgreOde 
+{
+	class _OgreOdeExport Space
+	{
+        friend class Geometry;
+		friend class World;
+
+	public:
+		Space(World *world, const Space* space = 0);
+		virtual ~Space();
+
+		void registerSpace();
+
+		void setAutoCleanup(bool on); 
+		bool getAutoCleanup(); 
+
+		void addGeometry(const Geometry& geometry); 
+		void removeGeometry(const Geometry& geometry); 
+		bool containsGeometry(const Geometry& geometry); 
+		int getGeometryCount(); 
+		Geometry* getGeometry(int index);
+
+		virtual void collide(void* data = 0);
+		virtual void collide(Space* space,void* data = 0);
+		virtual void collide(Geometry* geometry,void* data = 0);
+		
+		
+		virtual void collide(CollisionCallback* colCallback);
+		virtual void collide(CollisionCallback* colCallback, Space* space);
+		virtual void collide(CollisionCallback* colCallback, Geometry* geometry);
+		
+		
+		void setInternalCollisions(bool collide);
+		bool getInternalCollisions();
+
+		virtual const Ogre::AxisAlignedBox& getAxisAlignedBox(); 
+
+		virtual unsigned long getID();
+
+		World* getWorld(){ return _world; }
+
+	protected:
+		dSpaceID getSpaceID() const;
+		dSpaceID getSpaceID(const Space* space) const;
+
+	protected:
+		dSpaceID                _space;
+		bool                    _internal_collisions;
+		Ogre::AxisAlignedBox    _bounding_box;
+        World                   *_world;
+	};
+
+	class _OgreOdeExport SimpleSpace:public Space
+	{
+	public:
+		SimpleSpace(World *world, const Space* space = 0);
+		~SimpleSpace();
+	};
+
+	class _OgreOdeExport HashTableSpace:public Space
+	{
+	public:
+		HashTableSpace(World *world, const Space* space = 0);
+		~HashTableSpace();
+
+		void setLevels(int min_level,int max_level);
+		int getMinimumLevel();
+		int getMaximumLevel();
+	};
+
+	class _OgreOdeExport QuadTreeSpace:public Space
+	{
+	public:
+		QuadTreeSpace(const Ogre::Vector3& center,const Ogre::Vector3& extents,int depth,World *world, const Space* space = 0);
+		~QuadTreeSpace();
+    };
+
+    /*
+    * use Scene manager specialized scene partition algo to find collision
+    * 
+    */
+    class _OgreOdeExport OgreSceneManagerSpace:public Space
+    {
+    public:
+        OgreSceneManagerSpace(const Ogre::Vector3& center,
+                                const Ogre::Vector3& extents,
+                                int depth,
+                                Ogre::SceneManager *scn_mgr,
+                                World *world, const Space* space = 0);
+        ~OgreSceneManagerSpace();
+
+        void collide(void* data = 0);
+
+    private:
+        Ogre::SceneManager              *_scn_mgr;
+        Ogre::IntersectionSceneQuery    *_intersection_query;
+
+        // does scene manager has plane collision geometry support
+        // BSP scene manager has that.
+        bool                            _scene_geometry;
+    };
+}
+
+#endif
+
Index: /ogreode/include/OgreOdeStepper.h
===================================================================
--- /ogreode/include/OgreOdeStepper.h	(revision 21)
+++ /ogreode/include/OgreOdeStepper.h	(revision 21)
@@ -0,0 +1,177 @@
+#ifndef _OGREODESTEPPER_H_
+#define _OGREODESTEPPER_H_
+
+#include "OgreOdePreReqs.h"
+
+namespace OgreOde 
+{
+    //------------------------------------------------------------------------------------------------
+    class _OgreOdeExport StepMode
+    {
+    public:
+        StepMode(World *world) : _world(world){};
+        virtual ~StepMode(){};
+
+        virtual void step(const Ogre::Real time) = 0;
+
+    protected:
+        World* _world;
+    };
+    //------------------------------------------------------------------------------------------------
+    class _OgreOdeExport BasicStepMode : public StepMode
+    {
+    public:
+        BasicStepMode(World *world) : StepMode(world) {};
+        virtual ~BasicStepMode(){};
+
+        inline void step(const Ogre::Real time){ dWorldStep(_world->getWorldID(), (dReal)time);};
+    };
+    //------------------------------------------------------------------------------------------------
+    class _OgreOdeExport QuickStepMode : public StepMode
+    {
+    public:
+        QuickStepMode(World *world) : StepMode(world) {};
+        virtual ~QuickStepMode(){};
+
+        inline void step(const Ogre::Real time){ dWorldQuickStep(_world->getWorldID(), (dReal)time);};
+    };
+    //------------------------------------------------------------------------------------------------
+    class _OgreOdeExport FastStepMode : public StepMode
+    {
+    public:
+        FastStepMode(World *world, int max_iteration = 40) : StepMode(world), _max_iteration(max_iteration) {};
+        virtual ~FastStepMode(){};
+
+        inline void step(const Ogre::Real time){ dWorldStepFast1(_world->getWorldID(), (dReal)time, _max_iteration);};
+    private:
+        int _max_iteration;
+    };
+    //------------------------------------------------------------------------------------------------
+	class _OgreOdeExport StepListener
+	{
+	public:
+		StepListener(){};
+		virtual ~StepListener(){};
+
+        virtual bool preStep(Ogre::Real time) { return true; };
+        virtual bool postStep(Ogre::Real time)  { return true; };
+        virtual bool middleStep(Ogre::Real time)  { return true; };
+    };
+    //------------------------------------------------------------------------------------------------
+	class _OgreOdeExport StepHandler:public Ogre::FrameListener
+    {
+	public:
+		enum AutoMode
+		{
+			AutoMode_NotAutomatic,
+			AutoMode_PreFrame,
+			AutoMode_PostFrame
+        };
+        enum StepModeType
+        {
+            BasicStep = 0,
+            QuickStep,
+            FastStep,
+            StepModeTypeCount
+        };
+
+	public:
+        StepHandler(World *world, 
+            StepModeType stepModeType = QuickStep,
+            const Ogre::Real step_size = Ogre::Real (0.01), 
+            const Ogre::Real max_interval = Ogre::Real(1.0 / 4), 
+            const Ogre::Real time_scale = Ogre::Real(1.0));
+		virtual ~StepHandler();
+
+		virtual bool step(const Ogre::Real time);
+
+		Ogre::Real getStepSize() const {return _step_size;}
+		void setStepSize (const Ogre::Real step_size){_step_size = step_size;}
+
+		void pause(bool pause);
+		bool isPaused();
+
+		void setStepListener(StepListener* listener);
+		void setAutomatic(StepHandler::AutoMode mode, Ogre::Root* root = 0);
+
+		bool frameStarted(const Ogre::FrameEvent& evt);
+		bool frameEnded(const Ogre::FrameEvent& evt);
+
+    protected:
+        bool isRunning(const Ogre::Real time);
+        bool prepareSteppingTime(const Ogre::Real time);
+        bool basicStep(const Ogre::Real time);
+
+	protected:
+		World* _world;
+		bool _paused,_auto_pre,_auto_post;
+		StepListener* _listener;
+		Ogre::Root* _root;
+		Ogre::Real _step_size;
+        Ogre::Real _total_time;
+        Ogre::Real _max_interval;
+        Ogre::Real _time_scale;
+
+        StepMode *_current_stepper;
+    };
+
+    //------------------------------------------------------------------------------------------------
+	class _OgreOdeExport ForwardFixedStepHandler:public StepHandler
+	{
+	public:
+        ForwardFixedStepHandler(World *world, 
+            StepModeType stepModeType = QuickStep,
+            const Ogre::Real step_size = Ogre::Real (0.01), 
+            const Ogre::Real max_interval = Ogre::Real(1.0 / 4), 
+            const Ogre::Real time_scale = Ogre::Real(1.0));
+		virtual ~ForwardFixedStepHandler();
+
+		virtual bool step(const Ogre::Real time);
+    };
+    //------------------------------------------------------------------------------------------------
+	class _OgreOdeExport ExactVariableStepHandler:public StepHandler
+	{
+	public:
+        ExactVariableStepHandler(World *world ,
+            StepModeType stepModeType = QuickStep,
+            const Ogre::Real step_size = Ogre::Real (0.01), 
+            const Ogre::Real max_interval = Ogre::Real(1.0 / 4), 
+            const Ogre::Real time_scale = Ogre::Real(1.0));
+		virtual ~ExactVariableStepHandler();
+
+		virtual bool step(const Ogre::Real time);
+    };
+    //------------------------------------------------------------------------------------------------
+	// Fix your timestep Gaffer implementation.
+	// http://www.gaffer.org/articles/Timestep.html
+	// Gaffer :"If you implement this interpolation technique you ensure that there will
+	// not be any visual stuttering when your display and physics framerates 
+	// are out of sync. It will also perfectly handle the undersampling case so 
+	// your objects will move smoothly when you view your simulation in slow 
+	// motion or ten years from now on that Sexium." 
+	class _OgreOdeExport ForwardFixedInterpolatedStepHandler :public StepHandler
+	{
+	public:
+        ForwardFixedInterpolatedStepHandler(World *world, 
+            StepModeType stepModeType = QuickStep,
+            const Ogre::Real step_size = Ogre::Real (0.01), 
+            const Ogre::Real frame_rate = Ogre::Real (1.0 / 60),
+            const Ogre::Real max_interval = Ogre::Real(1.0 / 4), 
+            const Ogre::Real time_scale = Ogre::Real(1.0));
+		virtual ~ForwardFixedInterpolatedStepHandler();
+
+		virtual bool step(const Ogre::Real time);
+    private :
+        Ogre::Real _dbl_step_size;
+        Ogre::Real _inv_step_size;
+
+        Ogre::Real _next_total_time;
+        unsigned int _next_frame_step_count;
+        Ogre::Real _inv_next_total_time;
+        bool _fixed_frame_rate;
+        Ogre::Real _frame_rate;
+	};
+
+}
+
+#endif
Index: /ogreode/include/OgreOdeUtility.h
===================================================================
--- /ogreode/include/OgreOdeUtility.h	(revision 21)
+++ /ogreode/include/OgreOdeUtility.h	(revision 21)
@@ -0,0 +1,33 @@
+#ifndef _OGREODEUTILITY_H_
+#define _OGREODEUTILITY_H_
+
+#include "OgreOdePreReqs.h"
+
+namespace OgreOde
+{
+	class _OgreOdeExport Utility
+	{
+	public:
+		Utility(){}
+		~Utility(){}
+
+		static Ogre::Real randomReal();
+
+		static const Ogre::Real Infinity;
+		
+		/** returns a CFM value for use on joints or contacts
+		*/
+		static Ogre::Real getCFM(Ogre::Real spring, Ogre::Real dampening, Ogre::Real timeStep);
+
+		/** returns a ERP value for use on joints or contacts
+		*/
+		static Ogre::Real getERP(Ogre::Real spring, Ogre::Real dampening, Ogre::Real timeStep);
+		
+		/** can be used to get spring constants out of a ERP and CFM value
+		*/
+		static void getSpringConstants(Ogre::Real CFM, Ogre::Real ERP, Ogre::Real timeStep, Ogre::Real &spring, Ogre::Real &dampening);
+	};
+}
+
+#endif
+
Index: /ogreode/include/OgreOdeWorld.h
===================================================================
--- /ogreode/include/OgreOdeWorld.h	(revision 21)
+++ /ogreode/include/OgreOdeWorld.h	(revision 21)
@@ -0,0 +1,216 @@
+#ifndef _OGREODEWORLD_H_
+#define _OGREODEWORLD_H_
+
+#include "OgreOdePreReqs.h"
+#include "OgreOdeMaintainedList.h"
+#include "OgreSingleton.h"
+
+#include <map>
+
+namespace OgreOde 
+{
+	/** The main class which you will use to simulate your world.
+     * 
+	 * This is the core class of OgreOde, it is directly analogous to the ODE world except that
+	 * in OgreOde you can have only one world, which is why it is Singleton.
+	 *
+	 * A World is a container for all the bodies and geometries in you simulation. You also
+	 * use it to set global options for things like gravity, ERP, CFM and automatic sleeping.
+	 * Also, the World is what you step when you want to advance your simulation by a certain time
+	 * period.
+	 */
+	class _OgreOdeExport World
+    {
+        friend class Body;
+		friend class JointGroup;
+		friend class Joint;
+		friend class Space;
+		friend class Geometry;
+		friend class StepHandler;
+
+	public:
+		/** Construct a new World.
+		 * 
+		 * You will need to call this to create the World into which you cabn place your physical objects.
+		 * The World requires a reference to the scene manager you are using in order to create things
+		 * like nodes for debug objects and to obtain configuration options for world geometry.
+		 * 
+		 * \param manager The scene manager you are using.
+		 */
+		World(Ogre::SceneManager* manager);
+		~World();
+
+		void setGravity(const Ogre::Vector3& gravity = Ogre::Vector3::ZERO);
+		const Ogre::Vector3& getGravity();
+
+		void setHistorySize (size_t historySize);
+		size_t getHistorySize () const;
+
+		void setERP(Ogre::Real erp = 0.2);
+		Ogre::Real getERP();
+		void setCFM(Ogre::Real cfm = 10e-5);
+		Ogre::Real getCFM();
+
+		void setContactCorrectionVelocity(Ogre::Real velocity = 0.1);
+		void setContactSurfaceLayer(Ogre::Real layer = 0.001);
+
+		void setAutoSleep(bool auto_sleep = false);
+		bool getAutoSleep();
+		void setAutoSleepLinearThreshold(Ogre::Real linear_threshold = 0.01);
+		Ogre::Real getAutoSleepLinearThreshold();
+		void setAutoSleepAngularThreshold(Ogre::Real angular_threshold = 0.01);
+		Ogre::Real getAutoSleepAngularThreshold();
+		void setAutoSleepSteps(int steps = 10);
+		int getAutoSleepSteps();
+		void setAutoSleepTime(Ogre::Real time = 0);
+		Ogre::Real getAutoSleepTime(); 
+        void setAutoSleepAverageSamplesCount(size_t time = 10);
+        size_t getAutoSleepAverageSamplesCount();
+		inline void step(Ogre::Real stepsize); 
+        inline void quickStep(Ogre::Real stepsize);
+        inline void fastStep(Ogre::Real stepsize);
+
+		void setQuickStepIterations(int iterations);
+		int getQuickStepIterations();
+
+		Body* findBody(Ogre::SceneNode* node);
+		Body* findBody(const Ogre::String& name);
+
+		inline void clearContacts();
+
+		void setCollisionListener(CollisionListener* collision_listener);
+		CollisionListener* getCollisionListener();
+
+		void setShowDebugGeometries(bool show);
+        bool getShowDebugGeometries(){return _show_debug_geoms;}
+
+        void setShowDebugContact(bool show);
+        bool getShowDebugContact(){return _show_debug_contact;}
+
+		inline void notifyGeometry(Body* body);
+
+		Space* getDefaultSpace(){return _default_space;}
+		void setDefaultSpace(Space* space);
+
+		inline Ogre::SceneManager* getSceneManager(){return _manager;}
+
+		void setDamping(Ogre::Real linear_damping,Ogre::Real angular_damping);
+		Ogre::Real getLinearDamping();
+		Ogre::Real getAngularDamping();
+
+		inline void synchronise();
+	
+		inline void updateDrawState();
+		inline void updatePreviousState();
+		inline void updateCurrentState();
+		inline void interpolateDrawState(const Ogre::Real alpha);
+
+
+		inline MaintainedList<Body>			&getBodyList()		{return _body_list;}
+		inline MaintainedList<Joint>		&getJointList()		{return _joint_list;}
+		inline MaintainedList<JointGroup>	&getJointGroupList(){return _joint_group_list;}
+		inline MaintainedList<Geometry>		&getGeometryList()	{return _geometry_list;}
+		inline MaintainedList<Space>		&getSpaceList()		{return _space_list;}
+
+        inline dWorldID                            getWorldID();
+	protected:
+
+        inline dJointGroupID                       getContactGroupID();
+		static void                         collisionCallback(void *data,
+                                                            dGeomID geom_a,
+                                                            dGeomID geom_b);
+
+	protected:
+		dWorldID		            _world;
+		dJointGroupID	            _contacts;
+
+		Space*		                _default_space;
+		
+		static CollisionListener*   _collision_listener;
+
+		MaintainedList<Body>		_body_list;
+		MaintainedList<Joint>		_joint_list;
+		MaintainedList<JointGroup>	_joint_group_list;
+		MaintainedList<Geometry>	_geometry_list;
+		MaintainedList<Space>		_space_list;
+
+        bool			            _show_debug_geoms;
+        bool			            _show_debug_contact;
+
+		Ogre::SceneManager*        	_manager;
+
+		Ogre::Vector3               _gravity;
+		dReal	                    _linear_damping,_angular_damping;
+		size_t                      _history_size;
+	};
+
+
+    //------------------------------------------------------------------------------------------------
+    //INLINED Methods
+    //------------------------------------------------------------------------------------------------
+    //------------------------------------------------------------------------------------------------
+    inline dWorldID World::getWorldID()
+    {
+        return _world;
+    }
+    //------------------------------------------------------------------------------------------------
+    inline dJointGroupID World::getContactGroupID()
+    {
+        return _contacts;
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::notifyGeometry(Body* body)
+    {
+        _geometry_list.notify(body);
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::synchronise()
+    {
+        _body_list.synchronise ();
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::updateDrawState()
+    {
+        _body_list.updateDrawState ();
+        if (_show_debug_contact)
+            _geometry_list.updateDebugContact();
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::interpolateDrawState(const Ogre::Real alpha)
+    {
+        _body_list.interpolateDrawState(alpha);
+        if (_show_debug_contact)
+            _geometry_list.updateDebugContact();
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::updatePreviousState()
+    {
+        _body_list.updatePreviousState();
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::updateCurrentState()
+    {
+        _body_list.updateCurrentState ();
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::clearContacts()
+    {
+        dJointGroupEmpty(_contacts);
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::step(Ogre::Real stepsize)
+    {
+        dWorldStep(_world,(dReal)stepsize); 
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::quickStep(Ogre::Real stepsize)
+    {
+        dWorldQuickStep(_world,(dReal)stepsize);
+    }
+    //------------------------------------------------------------------------------------------------
+    inline void World::fastStep(Ogre::Real stepsize)
+    {
+        dWorldStepFast1(_world,(dReal)stepsize,20);
+    }
+}
+#endif
Index: /ogreode/include/OgreOde_Core.h
===================================================================
--- /ogreode/include/OgreOde_Core.h	(revision 21)
+++ /ogreode/include/OgreOde_Core.h	(revision 21)
@@ -0,0 +1,17 @@
+#ifndef _OGREODE_CORE_H_
+#define _OGREODE_CORE_H_
+
+#include "OgreOdePreReqs.h"
+#include "OgreOdeUtility.h"
+#include "OgreOdeWorld.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeMass.h"
+#include "OgreOdeJoint.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeCollision.h"
+#include "OgreOdeStepper.h"
+#include "OgreOdeEntityInformer.h"
+#include "OgreOdeDebugObject.h"
+
+#endif
Index: /ogreode/lib/Debug/keep.me
===================================================================
--- /ogreode/lib/Debug/keep.me	(revision 21)
+++ /ogreode/lib/Debug/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/lib/Release/keep.me
===================================================================
--- /ogreode/lib/Release/keep.me	(revision 21)
+++ /ogreode/lib/Release/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/loader/Makefile.am
===================================================================
--- /ogreode/loader/Makefile.am	(revision 21)
+++ /ogreode/loader/Makefile.am	(revision 21)
@@ -0,0 +1,2 @@
+SUBDIRS = include src
+
Index: /ogreode/loader/include/Makefile.am
===================================================================
--- /ogreode/loader/include/Makefile.am	(revision 21)
+++ /ogreode/loader/include/Makefile.am	(revision 21)
@@ -0,0 +1,7 @@
+ogreodeloaderincludedir = $(includedir)/OgreOde_Loader
+
+ogreodeloaderinclude_HEADERS = \
+   OgreOdeDotLoader.h \
+   OgreOde_Loader.h \
+   OgreOde_LoaderPreReqs.h
+
Index: /ogreode/loader/include/OgreOdeDotLoader.h
===================================================================
--- /ogreode/loader/include/OgreOdeDotLoader.h	(revision 21)
+++ /ogreode/loader/include/OgreOdeDotLoader.h	(revision 21)
@@ -0,0 +1,53 @@
+#ifndef _DotLoader_H_
+#define _DotLoader_H_
+
+#include "OgreOde_Loader.h"
+
+class TiXmlNode;
+class TiXmlDocument;
+
+namespace OgreOde_Loader 
+{
+
+	class _OgreOdeExport_Loader DotLoader 
+	{
+	public:
+        DotLoader(OgreOde::World * world = 0, OgreOde::Space * space = 0);
+		~DotLoader(){};
+
+        void setWorld(OgreOde::World * world)  {_world = world;};
+        void setSpace(OgreOde::Space * space)  {_space = space;};
+
+        ObjectList  *load(const Ogre::String &filename, const Ogre::StringVector &objects_names, const Ogre::StringVector &instance_names);
+        void         save(const Ogre::String &filename, const Ogre::StringVector &objects_names, ObjectList  *objects);
+
+        OgreOde_Prefab::Object    *loadObject(const Ogre::String &filename, const Ogre::String &object_name, const Ogre::String &instance_name = Ogre::StringUtil::BLANK);
+        void                       saveObject(const Ogre::String &filename, const Ogre::String &object_name, OgreOde_Prefab::Object  *object);
+
+
+    private:
+
+        void                serializeObject(const Ogre::String &filename, const Ogre::String &object_name,  OgreOde_Prefab::Object  *object);
+        void                serializeVehicle(const Ogre::String &filename, const Ogre::String &vehicle_name, OgreOde_Prefab::Vehicle *vehicle);
+        void                serializeRagdoll(const Ogre::String &filename, const Ogre::String &ragdoll_name, OgreOde_Prefab::Ragdoll *ragdoll);
+
+        OgreOde_Prefab::Object      *parseObject  (const TiXmlNode *child, const Ogre::String &object_name, const Ogre::String &instance_name = Ogre::StringUtil::BLANK);
+        OgreOde_Prefab::Object      *parseCompositeObject  (const TiXmlNode *child, const Ogre::String &object_name, const Ogre::String &instance_name = Ogre::StringUtil::BLANK);
+        OgreOde_Prefab::Object      *parseSingleObject  (const TiXmlNode *child, const Ogre::String &object_name, const Ogre::String &instance_name = Ogre::StringUtil::BLANK);
+        OgreOde_Prefab::Vehicle     *parseVehicle (const TiXmlNode *child, const Ogre::String &vehicle_name, const Ogre::String &instance_name = Ogre::StringUtil::BLANK);
+        OgreOde_Prefab::Ragdoll     *parseRagdoll (const TiXmlNode *child, const Ogre::String &ragdoll_name, const Ogre::String &instance_name = Ogre::StringUtil::BLANK);
+
+
+
+		void parseRagdollSettings(OgreOde_Prefab::Ragdoll::BoneSettings *bone_settings, const void *tag) const;
+
+    protected:
+        // load and check file
+        TiXmlDocument * loadFile(const Ogre::String &filename);
+
+        OgreOde::World * _world;
+        OgreOde::Space * _space;
+	};
+}
+
+#endif //DotLoader
Index: /ogreode/loader/include/OgreOde_Loader.h
===================================================================
--- /ogreode/loader/include/OgreOde_Loader.h	(revision 21)
+++ /ogreode/loader/include/OgreOde_Loader.h	(revision 21)
@@ -0,0 +1,8 @@
+#ifndef _OGREODE_LOADER_H_
+#define _OGREODE_LOADER_H_
+
+#include "OgreOde_LoaderPreReqs.h"
+#include "OgreOdeDotLoader.h"
+
+
+#endif
Index: /ogreode/loader/include/OgreOde_LoaderPreReqs.h
===================================================================
--- /ogreode/loader/include/OgreOde_LoaderPreReqs.h	(revision 21)
+++ /ogreode/loader/include/OgreOde_LoaderPreReqs.h	(revision 21)
@@ -0,0 +1,28 @@
+#ifndef _OGREODELOADERPREREQS_H_
+#define _OGREODELOADERPREREQS_H_
+
+
+#include "Ogre.h"
+#include "OgreNoMemoryMacros.h"
+#include "ode/ode.h"
+#include "OgreMemoryMacros.h"
+#include "OgreOde_Core.h"
+#include "OgreOde_Prefab.h"
+
+namespace OgreOde_Loader
+{
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#   if defined( OGREODEEXPORT_LOADER )
+#       define _OgreOdeExport_Loader __declspec( dllexport )
+#   else
+#       define _OgreOdeExport_Loader __declspec( dllimport )
+#   endif
+#else
+#   define _OgreOdeExport_Loader
+#endif
+
+    typedef std::list<OgreOde_Prefab::Object  *>   ObjectList;
+	class DotLoader;
+}
+
+#endif //_OGREODELOADERPREREQS_H_
Index: /ogreode/loader/scripts/Linux/keep.me
===================================================================
--- /ogreode/loader/scripts/Linux/keep.me	(revision 21)
+++ /ogreode/loader/scripts/Linux/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/loader/scripts/Mac/keep.me
===================================================================
--- /ogreode/loader/scripts/Mac/keep.me	(revision 21)
+++ /ogreode/loader/scripts/Mac/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/loader/scripts/VC6/keep.me
===================================================================
--- /ogreode/loader/scripts/VC6/keep.me	(revision 21)
+++ /ogreode/loader/scripts/VC6/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/loader/scripts/VC7/keep.me
===================================================================
--- /ogreode/loader/scripts/VC7/keep.me	(revision 21)
+++ /ogreode/loader/scripts/VC7/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/loader/scripts/VC8/OgreOde_Loader_CVS.vcproj
===================================================================
--- /ogreode/loader/scripts/VC8/OgreOde_Loader_CVS.vcproj	(revision 21)
+++ /ogreode/loader/scripts/VC8/OgreOde_Loader_CVS.vcproj	(revision 21)
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Loader"
+	ProjectGUID="{396CBDBA-F19B-403E-BD66-5C037E6AC13E}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\prefab\include;..\..\..\..\..\Ogrenew\OgreMain\include;..\..\..\tinyxml"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_LOADER"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreMain_d.lib tinyxmld.lib"
+				OutputFile="$(OutDir)/OgreOde_Loader_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="..\..\..\..\..\Ogrenew\lib;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateManifest="true"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Loader_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Loader_d.lib"
+				TargetMachine="1"
+				AllowIsolation="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+				UseFAT32Workaround="true"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="1"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\prefab\include;..\..\..\..\..\Ogrenew\OgreMain\include;..\..\..\tinyxml"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_LOADER"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core.lib OgreOde_Prefab.lib OgreMain.lib tinyxml.lib"
+				OutputFile="$(OutDir)/OgreOde_Loader.dll"
+				Version="1.2"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="..\..\..\..\..\Ogrenew\lib;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Loader.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+				UseFAT32Workaround="true"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdeDotLoader.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_Loader.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOde_LoaderPreReqs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDotLoader.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/loader/scripts/VC8/OgreOde_Loader_SDK.vcproj
===================================================================
--- /ogreode/loader/scripts/VC8/OgreOde_Loader_SDK.vcproj	(revision 21)
+++ /ogreode/loader/scripts/VC8/OgreOde_Loader_SDK.vcproj	(revision 21)
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Loader"
+	ProjectGUID="{F89C700A-E965-46D2-A90F-7B2497947AB9}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\prefab\include;..\..\..\tinyxml;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_Loader"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreMain_d.lib tinyxmld.lib"
+				OutputFile="$(OutDir)/OgreOde_Loader_d.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Loader_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Loader_d.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\prefab\include;..\..\..\tinyxml;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_Loader"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core.lib OgreOde_Prefab.lib OgreMain.lib tinyxml.lib"
+				OutputFile="$(OutDir)/OgreOde_Loader.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Loader.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdeDotLoader.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_LoaderPreReqs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDotLoader.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/loader/scripts/VC8/OgreOde_Loader_Source.vcproj
===================================================================
--- /ogreode/loader/scripts/VC8/OgreOde_Loader_Source.vcproj	(revision 21)
+++ /ogreode/loader/scripts/VC8/OgreOde_Loader_Source.vcproj	(revision 21)
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Loader"
+	ProjectGUID="{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\prefab\include;..\..\..\ode\include;..\..\..\..\OgreMain\include;..\..\..\tinyxml"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_Loader"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="tinyxmld.lib OgreOde_Core_d.lib OgreOde_Prefab_d.lib OgreMain_d.lib"
+				OutputFile="$(OutDir)/OgreOde_Loader_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Loader_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Loader_d.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\Samples\Common\bin\$(ConfigurationName)\$(TargetFileName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\prefab\include;..\..\..\ode\include;&quot;..\..\..\..\OgreMain\include&quot;;..\..\..\tinyxml"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_Loader"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="tinyxml.lib OgreOde_Core.lib OgreOde_Prefab.lib OgreMain.lib"
+				OutputFile="$(OutDir)/OgreOde_Loader.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\prefab\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Loader.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\Samples\Common\bin\$(ConfigurationName)\$(TargetFileName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdeDotLoader.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_LoaderPreReqs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDotLoader.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/loader/src/Makefile.am
===================================================================
--- /ogreode/loader/src/Makefile.am	(revision 21)
+++ /ogreode/loader/src/Makefile.am	(revision 21)
@@ -0,0 +1,25 @@
+INCLUDES = \
+   $(STLPORT_CFLAGS) \
+   ${OGRE_CFLAGS} \
+   -I$(top_srcdir)/include \
+   -I../include \
+   -I$(top_srcdir)/tinyxml\
+   -I$(top_srcdir)/prefab/include 
+
+
+
+lib_LTLIBRARIES = libOgreOde_Loader.la
+
+libOgreOde_Loader_la_SOURCES = \
+   OgreOdeDotLoader.cpp \
+   $(top_srcdir)/tinyxml/tinystr.cpp \
+   $(top_srcdir)/tinyxml/tinyxml.cpp \
+   $(top_srcdir)/tinyxml/tinyxmlerror.cpp \
+   $(top_srcdir)/tinyxml/tinyxmlparser.cpp
+
+
+libOgreOde_Loader_la_LIBADD = \
+   $(OGRE_LIBS) \
+   -L$(top_srcdir)/src \
+   -lOgreOde_Core \
+   -lode 
Index: /ogreode/loader/src/OgreOdeDotLoader.cpp
===================================================================
--- /ogreode/loader/src/OgreOdeDotLoader.cpp	(revision 21)
+++ /ogreode/loader/src/OgreOdeDotLoader.cpp	(revision 21)
@@ -0,0 +1,527 @@
+#include "OgreOde_Core.h"
+#include "OgreOde_Prefab.h"
+#include "OgreOde_Loader.h"
+
+#include "tinyxml.h"
+
+using namespace Ogre;
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+using namespace OgreOde_Loader;
+
+//------------------------------------------------------------------------------------------------
+static const TiXmlElement *getFirstOgreOde(const TiXmlElement *root);
+static const TiXmlElement *getFirstOgreOde(const TiXmlElement *root)                       
+{
+    // should have some recursive algo 
+    if (!strcmp(root->Value(), "ogreode"))
+    {
+        return root;
+    }
+    for (const TiXmlNode *child = root->FirstChild(); child; child = child->NextSibling())
+    {
+        if (child->Type() == TiXmlNode::ELEMENT)
+        {
+            const TiXmlElement *res = getFirstOgreOde(child->ToElement ());
+            if (res)
+                return res;
+        }
+    }
+    return 0;
+}
+
+//------------------------------------------------------------------------------------------------
+DotLoader::DotLoader(OgreOde::World * world, OgreOde::Space * space) :
+    _world(world),
+    _space (space)
+{
+
+}
+//------------------------------------------------------------------------------------------------
+void DotLoader::saveObject(const String &filename, const String &object_name, Object  *object)
+{
+
+}
+//------------------------------------------------------------------------------------------------
+void DotLoader::serializeObject(const String &filename, const String &object_name, Object  *)
+{
+
+}
+//------------------------------------------------------------------------------------------------
+void DotLoader::serializeVehicle(const String &filename, const String &vehicle_name, Vehicle *)
+{
+
+}
+//------------------------------------------------------------------------------------------------
+void DotLoader::serializeRagdoll(const String &filename, const String &ragdoll_name, Ragdoll *)
+{
+
+}
+//------------------------------------------------------------------------------------------------
+void DotLoader::save(const String &filename, const StringVector &objects_names, ObjectList  *)
+{
+
+}
+//------------------------------------------------------------------------------------------------
+ObjectList  *DotLoader::load(const String &filename, const StringVector &objects_names, const StringVector &instance_names)
+{
+    ObjectList* objectList = new ObjectList();
+
+    //
+
+    return  objectList;
+
+}
+
+
+//------------------------------------------------------------------------------------------------
+Object* DotLoader::loadObject(const String &filename, const String &object_name, const String &instance_name)
+{
+   // load and check file
+   TiXmlDocument *doc = loadFile (filename);
+   const TiXmlElement *root = getFirstOgreOde(doc->RootElement());
+   // search for any element
+   Object* objLoading = 0;
+
+   for (const TiXmlNode *child = root->FirstChild(); child; child = child->NextSibling() )
+   {
+       if (child->Type() == TiXmlNode::ELEMENT)
+       {
+           objLoading = parseObject (child, object_name, instance_name);
+           if (objLoading)
+            break;
+       }
+   }
+   delete doc;
+   return objLoading;
+}
+
+//------------------------------------------------------------------------------------------------
+Object* DotLoader::parseObject(const TiXmlNode *child, const String &object_name, const String &instance_name)
+{
+    Object* objLoading = 0;
+    if ((child->Type() == TiXmlNode::ELEMENT) && (!strcmp(child->Value(), "vehicle")))
+    {
+        objLoading = parseVehicle (child, object_name, instance_name);
+    }
+    else if ((child->Type() == TiXmlNode::ELEMENT) && (!strcmp(child->Value(), "ragdoll")))
+    {
+        objLoading = parseRagdoll (child, object_name, instance_name);
+    }
+    else if ((child->Type() == TiXmlNode::ELEMENT) && (!strcmp(child->Value(), "composite")))
+    {
+        objLoading = parseCompositeObject  (child, object_name, instance_name);
+    }
+    else if ((child->Type() == TiXmlNode::ELEMENT) && (!strcmp(child->Value(), "object")))
+    {
+        objLoading = parseSingleObject (child, object_name, instance_name);
+    }
+    return objLoading;
+}
+
+//------------------------------------------------------------------------------------------------
+Object*  DotLoader::parseCompositeObject(const TiXmlNode*child, const String &object_name, const String &instance_name)
+{
+	Object* object = new Object(ObjectType_CompositeObject, _world);
+
+       
+
+	return  object;
+}
+//------------------------------------------------------------------------------------------------
+Object*  DotLoader::parseSingleObject(const TiXmlNode*child, const String &object_name, const String &instance_name)
+{
+    Object* object = new Object(ObjectType_Single_Object, _world);
+
+
+
+    return  object;
+}
+//------------------------------------------------------------------------------------------------
+Vehicle* DotLoader::parseVehicle(const TiXmlNode* child, const String &vehicle_name, const String &instance_name)
+{
+	String my_name = vehicle_name;
+	Vehicle *vehicle = 0;
+
+	const TiXmlElement *vehicleElement = (const TiXmlElement*)child;
+	if (vehicleElement->Attribute("name") && (!strcmp(vehicleElement->Attribute("name"),my_name.c_str())))
+	{
+
+        String instanceFinalName ((instance_name == StringUtil::BLANK) ?
+            vehicle_name + StringConverter::toString(OgreOde_Prefab::Object::getInstanceNumberAndIncrement ())
+            : instance_name);
+
+        vehicle = new Vehicle(instanceFinalName, _world, _space);
+
+		for (const TiXmlNode *tag = child->FirstChild(); tag; tag = tag->NextSibling() )
+		{
+			if (tag->Type() == TiXmlNode::ELEMENT)
+			{
+				const TiXmlElement *element = (const TiXmlElement*)tag;
+
+				if (!strcmp(tag->Value(),"body"))
+				{
+					if (element->Attribute("mesh"))
+					{
+						MeshManager::getSingleton().load(
+							element->Attribute("mesh"),
+							// note that you can change the group by pre-loading the mesh
+							ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME );
+						vehicle->setEntity (_world->getSceneManager()->createEntity(
+							vehicle->getName() + Ogre::StringConverter::toString (vehicle->getInstanceNumber()) +  "_Entity", 
+							element->Attribute("mesh")));
+						vehicle->getEntity()->setCastShadows(true);
+
+						vehicle->getTransNode()->attachObject(vehicle->getEntity());
+
+						EntityInformer ei(vehicle->getEntity());
+						Vector3 box = ei.getSize();
+
+						if (!vehicle->getGeometry()) 
+							vehicle->setGeometry(new BoxGeometry(box, _world, _space));
+						vehicle->getGeometry()->setUserObject(vehicle);
+
+						vehicle->setTransformGeometry(new TransformGeometry(_world, vehicle->getSpace()));
+						vehicle->getTransformGeometry()->setEncapsulatedGeometry(vehicle->getGeometry());
+						vehicle->getTransformGeometry()->setBody(vehicle->getBody());
+					}
+
+					for (const TiXmlNode *sub_tag = tag->FirstChild(); sub_tag; sub_tag = sub_tag->NextSibling() )
+					{
+						if (sub_tag->Type() == TiXmlNode::ELEMENT)
+						{
+							const TiXmlElement *sub_element = (const TiXmlElement*)sub_tag;
+
+							if (vehicle->getEntity() && (!strcmp(sub_tag->Value(),"mass")))
+							{
+								double tmp;
+								if (sub_element->Attribute("value",&tmp))
+								{
+									EntityInformer ei(vehicle->getEntity());
+									Vector3 box = ei.getSize();
+
+									BoxMass box_mass((Real)tmp,Vector3(box.x,box.y,box.z));
+									vehicle->getBody()->setMass(box_mass);
+								}
+
+								Vector3 offset = Ogre::Vector3::ZERO;
+
+								if (sub_element->Attribute("x",&tmp)) offset.x = (Real)tmp; 
+								if (sub_element->Attribute("y",&tmp)) offset.y = (Real)tmp; 
+								if (sub_element->Attribute("z",&tmp)) offset.z = (Real)tmp; 
+
+								vehicle->setOffset(-offset);
+							}
+						}
+					}
+				}
+				else if (!strcmp(tag->Value(),"wheel"))
+				{
+					Vehicle::Wheel *wheel = 0;
+					double x,y,z,mass;
+
+					if (element->Attribute("mesh"))
+					{
+						wheel = vehicle->addWheel(element->Attribute("mesh"),
+										Vector3((element->Attribute("x",&x))?(Real)x:0.0,
+												(element->Attribute("y",&y))?(Real)y:0.0,
+												(element->Attribute("z",&z))?(Real)z:0.0),
+										(element->Attribute("mass",&mass))?(Real)mass:1.0);
+					}
+
+					if (wheel)
+					{
+						for (const TiXmlNode *sub_tag = tag->FirstChild(); sub_tag; sub_tag = sub_tag->NextSibling() )
+						{
+							if (sub_tag->Type() == TiXmlNode::ELEMENT)
+							{
+								const TiXmlElement *sub_element = (const TiXmlElement*)sub_tag;
+
+								if (!strcmp(sub_tag->Value(),"steer"))
+								{
+									double tmp;
+									if (sub_element->Attribute("factor",&tmp)) wheel->setSteerFactor(tmp);
+									if (sub_element->Attribute("limit",&tmp)) wheel->setSteerLimit(tmp);
+									if (sub_element->Attribute("force",&tmp)) wheel->setSteerForce(tmp);
+									if (sub_element->Attribute("speed",&tmp)) wheel->setSteerSpeed(tmp);
+								}
+								else if (!strcmp(sub_tag->Value(),"power"))
+								{
+									double tmp;
+									if (sub_element->Attribute("factor",&tmp)) wheel->setPowerFactor(tmp);
+								}
+								else if (!strcmp(sub_tag->Value(),"brake"))
+								{
+									double tmp;
+									if (sub_element->Attribute("factor",&tmp)) wheel->setBrakeFactor(tmp);
+								}
+								else if (!strcmp(sub_tag->Value(),"contact"))
+								{
+									double bouncyness,friction,fds;
+									wheel->setContact((sub_element->Attribute("bouncyness",&bouncyness))?(Real)bouncyness:0.0,(sub_element->Attribute("friction",&friction))?(Real)friction:0.0,(sub_element->Attribute("fds",&fds))?(Real)fds:0.0);
+								}
+								else if (!strcmp(sub_tag->Value(),"suspension"))
+								{
+									double spring,damping,step;
+									vehicle->setSuspension((sub_element->Attribute("spring",&spring))?(Real)spring:0.0,(sub_element->Attribute("damping",&damping))?(Real)damping:0.0,(sub_element->Attribute("step",&step))?(Real)step:0.0);
+								}
+							}
+						}
+					}
+				}
+				else if (!strcmp(tag->Value(),"suspension"))
+				{
+					double spring,damping,step;
+					vehicle->setSuspension((element->Attribute("spring",&spring))?(Real)spring:0.0,(element->Attribute("damping",&damping))?(Real)damping:0.0,(element->Attribute("step",&step))?(Real)step:0.0);
+				}
+				else if (!strcmp(tag->Value(),"engine"))
+				{
+					double tmp;
+
+					if (element->Attribute("redline",&tmp)) vehicle->getEngine()->setRevLimit((Real)tmp);
+					if (element->Attribute("brake",&tmp)) vehicle->getEngine()->setBrakeForce((Real)tmp);
+
+					static const unsigned int MAX_SAMPLES = 255;
+					Real torqueCurve[MAX_SAMPLES];
+					unsigned int torqueSamples = 0;
+					for (const TiXmlNode *sub_tag = tag->FirstChild(); sub_tag; sub_tag = sub_tag->NextSibling() )
+					{
+						if (sub_tag->Type() == TiXmlNode::ELEMENT)
+						{
+							const TiXmlElement *sub_element = (const TiXmlElement*)sub_tag;
+
+							if (!strcmp(sub_tag->Value(),"torque"))
+							{
+								double min_torque,max_torque;
+								vehicle->getEngine()->setTorque((sub_element->Attribute("min",&min_torque))?min_torque:0.0,(sub_element->Attribute("max",&max_torque))?max_torque:0.0);
+							}
+							else if (!strcmp(sub_tag->Value(),"torquecurve"))
+							{
+								double curveValue;
+								if( sub_element->Attribute( "value", &curveValue ) )
+								{
+									if( torqueSamples < MAX_SAMPLES )
+										torqueCurve[torqueSamples++] = curveValue;
+								}
+							}
+						}
+					}
+					if( torqueSamples )
+					{
+						vehicle->getEngine()->setTorque( torqueCurve, torqueSamples );
+					}
+				}
+				else if (!strcmp(tag->Value(),"antisway"))
+				{
+					vehicle->enableAntiSway (true);
+
+					double dtmp;
+					if (element->Attribute("swayForce",&dtmp)) 
+						vehicle->setSwayForce((Real) dtmp);
+
+					int uitmp;
+					if (element->Attribute("forceLimit",&uitmp)) 
+						vehicle->setSwayForceLimit((unsigned int) uitmp);
+
+					if (element->Attribute("rate",&dtmp)) 
+						vehicle->setSwayForceRate((Real) dtmp);
+				}
+			}
+		}
+	}
+
+	
+
+    if (vehicle)
+    {
+        if (vehicle->isAntiSwayEnabled() && vehicle->getWheelCount() != 4)
+	    {
+		    assert (0 && "no sway for non 4 wheels");
+		    vehicle->enableAntiSway (false);
+	    }
+    }
+	return vehicle;
+}
+//------------------------------------------------------------------------------------------------
+Ragdoll* DotLoader::parseRagdoll(const TiXmlNode *child, const String &ragdoll_name, const String &instance_name)
+{
+    Ragdoll *ragdoll = 0;
+
+	const TiXmlElement *ragdollElement = (const TiXmlElement*)child;
+	Ogre::String ragdoll_name_asked (ragdoll_name);
+	Ogre::String ragdoll_name_from_file (ragdollElement->Attribute("name"));
+
+	Ogre::StringUtil::toLowerCase(ragdoll_name_from_file);
+	Ogre::StringUtil::toLowerCase(ragdoll_name_asked);
+	bool found = ragdoll_name_asked.empty() || (!ragdoll_name_from_file.empty() && ragdoll_name_from_file == ragdoll_name_asked);
+
+	if (found)
+	{
+        const String meshFileName (ragdollElement->Attribute("meshName"));
+
+        String instanceFinalName ((instance_name == StringUtil::BLANK) ?
+             meshFileName + StringConverter::toString(OgreOde_Prefab::Object::getInstanceNumberAndIncrement ())
+            : instance_name);
+  
+
+        NameValuePairList params;
+        params["mesh"] = meshFileName;
+        ragdoll = static_cast<OgreOde_Prefab::Ragdoll*>
+            (_world->getSceneManager ()->createMovableObject(instanceFinalName, 
+                                                                            OgreOde_Prefab::RagdollFactory::FACTORY_TYPE_NAME,
+                                                                            &params)); 
+
+		Ragdoll::BoneSettings settings;
+
+		for (const TiXmlNode *tag = child->FirstChild(); tag; tag = tag->NextSibling() )
+		{
+			if (tag->Type() == TiXmlNode::ELEMENT)
+			{
+                const TiXmlElement *element = (const TiXmlElement*)tag;
+				if (!strcmp(tag->Value(),"defaults"))
+				{
+					parseRagdollSettings(&settings,tag);
+					ragdoll->setDefaultBoneSettings(settings);
+				}
+				else if ((!strcmp(tag->Value(),"bone")) 
+                        && (element->Attribute("name")))
+				{
+					parseRagdollSettings(&settings,tag);
+					ragdoll->setBoneSettings(element->Attribute("name"),settings); 
+				}
+			}
+		}
+	}
+	return ragdoll;
+}
+
+//------------------------------------------------------------------------------------------------
+void DotLoader::parseRagdollSettings(Ragdoll::BoneSettings *bone_settings,const void *tag) const
+{
+    const TiXmlElement *element = (const TiXmlElement *)tag;
+
+    for (const TiXmlNode *node = element->FirstChild(); node; node = node->NextSibling() )
+    {
+        if ((node->Type() ==  TiXmlNode::ELEMENT) && (!stricmp(node->Value(),"settings")))
+        {
+            const TiXmlElement *settings = (const TiXmlElement*)node;
+            double tmp;
+
+            if (settings->Attribute("geometry"))
+            {
+                if (!strcmp(settings->Attribute("geometry"),"capsule")) bone_settings->_geometry_class = Geometry::Class_Capsule;
+                else if (!strcmp(settings->Attribute("geometry"),"box")) bone_settings->_geometry_class = Geometry::Class_Box;
+                else if (!strcmp(settings->Attribute("geometry"),"none")) bone_settings->_geometry_class = Geometry::Class_NoGeometry;
+            }
+
+            if (settings->Attribute("joint"))
+            {
+                if (!strcmp(settings->Attribute("joint"),"fixed")) bone_settings->_joint_type = Joint::Type_FixedJoint;
+                else if (!strcmp(settings->Attribute("joint"),"hinge")) bone_settings->_joint_type = Joint::Type_HingeJoint;
+                else if (!strcmp(settings->Attribute("joint"),"ball")) bone_settings->_joint_type = Joint::Type_BallJoint;
+                else if (!strcmp(settings->Attribute("joint"),"universal")) bone_settings->_joint_type = Joint::Type_UniversalJoint;
+            }
+
+            if (settings->Attribute("joint"))
+            {
+                if (!strcmp(settings->Attribute("joint"),"fixed")) bone_settings->_joint_type = Joint::Type_FixedJoint;
+                else if (!strcmp(settings->Attribute("joint"),"hinge")) bone_settings->_joint_type = Joint::Type_HingeJoint;
+                else if (!strcmp(settings->Attribute("joint"),"ball")) bone_settings->_joint_type = Joint::Type_BallJoint;
+                else if (!strcmp(settings->Attribute("joint"),"universal")) bone_settings->_joint_type = Joint::Type_UniversalJoint;
+            }
+
+            if (settings->Attribute("collapse"))
+            {
+                if (!strcmp(settings->Attribute("collapse"),"none")) bone_settings->_collapse = Ragdoll::BoneSettings::Collapse_None;
+                else if (!strcmp(settings->Attribute("collapse"),"up")) bone_settings->_collapse = Ragdoll::BoneSettings::Collapse_Up;
+                else if (!strcmp(settings->Attribute("collapse"),"down")) bone_settings->_collapse = Ragdoll::BoneSettings::Collapse_Down;
+            }
+
+            if (settings->Attribute("mass",&tmp)) bone_settings->_mass = (Real)tmp;
+            if (settings->Attribute("radius",&tmp)) bone_settings->_radius = (Real)tmp;
+
+            for (const TiXmlNode *sub_node = node->FirstChild(); sub_node; sub_node = sub_node->NextSibling() )
+            {
+                if (sub_node->Type() ==  TiXmlNode::ELEMENT)
+                {
+                    const TiXmlElement *sub_settings = (const TiXmlElement*)sub_node;
+
+                    if (!stricmp(sub_node->Value(),"damping"))
+                    {
+                        if (sub_settings->Attribute("angular",&tmp)) bone_settings->_angular_damping = (Real)tmp;
+                        if (sub_settings->Attribute("linear",&tmp)) bone_settings->_linear_damping = (Real)tmp;
+                    }
+                    else if (!stricmp(sub_node->Value(),"axis"))
+                    {
+                        int n;
+                        if (sub_settings->Attribute("number",&n))
+                        {
+                            if (n == 1)
+                            {
+                                if (sub_settings->Attribute("x",&tmp)) bone_settings->_primary_axis.x = (Real)tmp;
+                                if (sub_settings->Attribute("y",&tmp)) bone_settings->_primary_axis.y = (Real)tmp;
+                                if (sub_settings->Attribute("z",&tmp)) bone_settings->_primary_axis.z = (Real)tmp;
+
+                                bone_settings->_primary_axis.normalise();
+                            }
+                            else if (n == 2)
+                            {
+                                if (sub_settings->Attribute("x",&tmp)) bone_settings->_secondary_axis.x = (Real)tmp;
+                                if (sub_settings->Attribute("y",&tmp)) bone_settings->_secondary_axis.y = (Real)tmp;
+                                if (sub_settings->Attribute("z",&tmp)) bone_settings->_secondary_axis.z = (Real)tmp;
+
+                                bone_settings->_secondary_axis.normalise();
+                            }
+
+                            for (const TiXmlNode *sub_sub_node = sub_node->FirstChild(); sub_sub_node; sub_sub_node = sub_sub_node->NextSibling() )
+                            {
+                                if ((sub_sub_node->Type() ==  TiXmlNode::ELEMENT) && (!stricmp(sub_sub_node->Value(),"stop")))
+                                {
+                                    const TiXmlElement *sub_sub_settings = (const TiXmlElement*)sub_sub_node;
+
+                                    if (n == 1)
+                                    {
+                                        if (sub_sub_settings->Attribute("low",&tmp)) bone_settings->_primary_lostop = (Real)tmp;
+                                        if (sub_sub_settings->Attribute("high",&tmp)) bone_settings->_primary_histop = (Real)tmp;
+                                    }
+                                    else if (n == 2)
+                                    {
+                                        if (sub_sub_settings->Attribute("low",&tmp)) bone_settings->_secondary_lostop = (Real)tmp;
+                                        if (sub_sub_settings->Attribute("high",&tmp)) bone_settings->_secondary_histop = (Real)tmp;
+                                    }
+                                }	
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+
+//------------------------------------------------------------------------------------------------
+TiXmlDocument * DotLoader::loadFile(const String &filename)
+{
+    // load and check file
+    DataStreamPtr file = ResourceGroupManager::getSingleton().openResource(filename);
+    TiXmlDocument *doc = new TiXmlDocument(filename.c_str());
+    doc->Parse(file->getAsString().c_str());
+    if (doc->Error())
+    {
+        throw new Exception(doc->ErrorId(),
+            doc->ErrorDesc(), 
+            __FILE__,
+            "erreur",
+            ((char*)(file->getName().c_str())),
+            doc->ErrorRow());
+    }
+
+    // get the ogreode element.
+    TiXmlNode* node = doc->FirstChild( "ogreode" );
+    if (!node)
+    {
+        Ogre::LogManager::getSingleton().logMessage("  cannot find ogreode root in XML file!");
+        return 0;
+    }
+    return doc;
+}
Index: /ogreode/nsis/OgreOde_Demos.nsi
===================================================================
--- /ogreode/nsis/OgreOde_Demos.nsi	(revision 21)
+++ /ogreode/nsis/OgreOde_Demos.nsi	(revision 21)
@@ -0,0 +1,270 @@
+;--------------------------------
+
+!define BASE_NAME "OgreOde"
+!define PKG_NAME "${BASE_NAME}_Demo"
+!define PKG_EXE "${PKG_NAME}_Setup.exe"
+!define PKG_SUBMENU "Ogre SDK\${PKG_NAME}" 
+!define PKG_FOLDER "${PKG_NAME}"
+ 
+!define VERSION "V.1.0"
+
+;--------------------------------
+SetCompress off
+SetCompressor /SOLID lzma
+CRCCheck on
+
+XPStyle on
+SetDateSave on
+SilentInstall normal
+
+;--------------------------------
+Var OGRE_HOME 
+Var PKG_BINDIR
+
+;-------------------------------
+;Include Modern UI
+!include "MUI.nsh"
+  
+
+;--------------------------------
+Name "${PKG_NAME}"
+OutFile "${PKG_EXE}"
+InstallDirRegKey HKLM "Software\Ogre\${PKG_NAME}" "Install_Dir"
+
+
+  
+;----------------
+;Modern UI Configuration
+
+  !define MUI_FINISHPAGE_RUN "$PKG_BINDIR\${BASE_NAME}Demo_SimpleScenes.exe"
+  ;!define MUI_FINISHPAGE_SHOWREADME "$PKG_BINDIR\${BASE_NAME}ReadMe.txt"
+  !define MUI_FINISHPAGE_NOREBOOTSUPPORT 1
+
+  ;Remember the installer language
+  !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
+  !define MUI_LANGDLL_REGISTRY_KEY "Software\Ogre\${PKG_NAME}"
+  !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+  !define MUI_HEADERIMAGE
+  !define MUI_HEADERIMAGE_BITMAP ".\${BASE_NAME}_header.bmp"
+  
+  !define MUI_WELCOMEFINISHPAGE_BITMAP ".\${BASE_NAME}_left.bmp"
+  
+  ;Start Menu Folder Page Configuration
+  !define MUI_STARTMENUPAGE
+  !define MUI_STARTMENUPAGE_DEFAULTFOLDER "Ogre\${PKG_NAME}"
+  !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
+  !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Ogre\${PKG_NAME}"
+  !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+  !define MUI_STARTMENUPAGE_VARIABLE "$R9"
+
+
+  !define MUI_ABORTWARNING
+
+;--------------------------------
+;Pages
+
+  !insertmacro MUI_PAGE_WELCOME
+  !insertmacro MUI_PAGE_COMPONENTS
+  !insertmacro MUI_PAGE_DIRECTORY
+  
+  ;!insertmacro MUI_PAGE_STARTMENU  
+  !insertmacro MUI_PAGE_LICENSE "license.txt"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_PAGE_FINISH
+
+  !insertmacro MUI_UNPAGE_CONFIRM
+  !insertmacro MUI_UNPAGE_INSTFILES  
+  !insertmacro MUI_UNPAGE_FINISH
+
+  !insertmacro MUI_UNPAGE_CONFIRM
+  !insertmacro MUI_UNPAGE_DIRECTORY
+  !insertmacro MUI_UNPAGE_COMPONENTS
+  !insertmacro MUI_UNPAGE_INSTFILES
+  
+;--------------------------------
+;Languages
+
+  !insertmacro MUI_LANGUAGE "English"
+  !insertmacro MUI_LANGUAGE "French"
+ ; !insertmacro MUI_LANGUAGE "German"
+ ; !insertmacro MUI_LANGUAGE "Spanish"
+ ; !insertmacro MUI_LANGUAGE "SimpChinese"
+ ; !insertmacro MUI_LANGUAGE "TradChinese"
+  ;!insertmacro MUI_LANGUAGE "Japanese"
+  ;;!insertmacro MUI_LANGUAGE "Korean"
+  ;!insertmacro MUI_LANGUAGE "Italian"
+  ;!insertmacro MUI_LANGUAGE "Dutch"
+  ;!insertmacro MUI_LANGUAGE "Danish"
+ ; !insertmacro MUI_LANGUAGE "Swedish"
+ ; !insertmacro MUI_LANGUAGE "Greek"
+ ; !insertmacro MUI_LANGUAGE "Russian"
+ ; !insertmacro MUI_LANGUAGE "Portuguese"
+ ; !insertmacro MUI_LANGUAGE "PortugueseBR"
+ ; !insertmacro MUI_LANGUAGE "Polish"
+ ; !insertmacro MUI_LANGUAGE "Ukrainian"
+ ; !insertmacro MUI_LANGUAGE "Czech"
+ ; !insertmacro MUI_LANGUAGE "Slovak"
+ ; !insertmacro MUI_LANGUAGE "Croatian"
+ ; !insertmacro MUI_LANGUAGE "Bulgarian"
+ ; !insertmacro MUI_LANGUAGE "Hungarian"
+ ; !insertmacro MUI_LANGUAGE "Thai"
+  ;!insertmacro MUI_LANGUAGE "Romanian"
+  ;!insertmacro MUI_LANGUAGE "Macedonian"
+ ; !insertmacro MUI_LANGUAGE "Estonian"
+ ; !insertmacro MUI_LANGUAGE "Turkish"
+ ; !insertmacro MUI_LANGUAGE "Lithuanian"
+ ; !insertmacro MUI_LANGUAGE "Catalan"
+ ; !insertmacro MUI_LANGUAGE "Serbian"
+
+;--------------------------------
+;Reserve Files
+
+  ;Things that need to be extracted on first (keep these lines before any File command!)
+  ;Only for BZIP2 compression
+  !insertmacro MUI_RESERVEFILE_LANGDLL
+;--------------------------------
+;Language Strings
+
+  ;Description
+    
+  ;Header
+  LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Please review the license terms before installing ${MUI_PRODUCT}"
+  LangString TEXT_IO_SUBTITLE ${LANG_FRENCH} "Prière de lire la license avant l'installation ${MUI_PRODUCT}"
+
+;--------------------------------
+;Data
+  
+  
+  LicenseData "license.txt"
+  
+;--------------------------------
+Function .onInit
+    ReadEnvStr $OGRE_HOME OGRE_HOME
+
+    StrCpy $INSTDIR "$OGRE_HOME\..\${PKG_FOLDER}"
+    StrCpy $PKG_BINDIR "$INSTDIR"
+    
+    # the plugins dir is automatically deleted when the installer exits
+    InitPluginsDir
+    #optional
+    #File /oname=$PLUGINSDIR\splash.wav "C:\myprog\sound.wav"
+    File /oname=$PLUGINSDIR\splash.bmp "${BASE_NAME}_splash.bmp"
+    advsplash::show 1000 600 400 0x00005B $PLUGINSDIR\splash
+    Pop $0
+
+    Delete $PLUGINSDIR\splash.bmp
+    !insertmacro MUI_LANGDLL_DISPLAY
+    
+FunctionEnd
+
+
+Section "${PKG_NAME} (required)"
+
+  SectionIn RO
+  
+   SetOutPath $INSTDIR  
+  
+  
+              
+    File ..\..\OgreSDK\bin\Release\OgreOdeDemo_Landscape.exe        
+    File ..\..\OgreSDK\bin\Release\OgreOdeDemo_SimpleScenes.exe     
+    File ..\..\OgreSDK\bin\Release\OgreOdeDemo_GranTurismOgre.exe   
+    
+    File ..\..\OgreSDK\bin\Release\OgreOde_Core.dll                 
+    File ..\..\OgreSDK\bin\Release\OgreOde_Prefab.dll                 
+    File ..\..\OgreSDK\bin\Release\OgreOde_Loader.dll               
+
+    File /oname=Plugins.cfg Plugins_ogreode_binary.cfg       
+    File /oname=resources.cfg resources_ogreode_binary.cfg     
+
+    File ..\..\OgreSDK\bin\Release\OgreMain.dll                  
+    File ..\..\OgreSDK\bin\Release\Plugin_CgProgramManager.dll      
+    File ..\..\OgreSDK\bin\Release\Plugin_ParticleFX.dll    
+    
+    File ..\..\OgreSDK\bin\Release\Plugin_BSPSceneManager.dll       
+    File ..\..\OgreSDK\bin\Release\Plugin_OctreeSceneManager.dll         
+
+    File ..\..\OgreSDK\bin\Release\RenderSystem_GL.dll              
+    File ..\..\OgreSDK\bin\Release\RenderSystem_Direct3D9.dll       
+
+    File ..\..\OgreSDK\bin\Release\cg.dll                           
+    File ..\..\OgreSDK\bin\Release\ois.dll                         
+
+    ;File "D:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest"    
+    ;File "D:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcm80.dll"    
+    ;File "D:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcp80.dll"    
+    ;File "D:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcr80.dll"    
+
+    
+   SetOutPath $INSTDIR\Media\OgreOde\  
+   
+    File ..\Demos\Media\*.* 
+
+
+   SetOutPath $INSTDIR\Media\Ogre\packs
+    File ..\..\OgreSDK\media\packs\OgreCore.zip
+   
+   SetOutPath $INSTDIR\Media\Ogre\fonts
+   File ..\..\OgreSDK\media\fonts\*.*  
+   
+   SetOutPath $INSTDIR\Media\Ogre\materials\programs
+   File ..\..\OgreSDK\media\materials\programs\*.*  
+   
+   SetOutPath $INSTDIR\Media\Ogre\materials\scripts
+   File ..\..\OgreSDK\media\materials\scripts\*.* 
+   
+   SetOutPath $INSTDIR\Media\Ogre\materials\textures
+   File ..\..\OgreSDK\media\materials\textures\*.* 
+   
+   SetOutPath $INSTDIR\Media\Ogre\models
+   File ..\..\OgreSDK\media\models\*.* 
+   
+   SetOutPath $INSTDIR\Media\Ogre\overlays
+   File ..\..\OgreSDK\media\overlays\*.* 
+   
+   SetOutPath $INSTDIR\Media\Ogre\particle
+   File ..\..\OgreSDK\media\particle\*.*
+   
+   SetOutPath $INSTDIR\Media\Ogre\gui
+   File ..\..\OgreSDK\media\gui\*.* 
+
+   SetOutPath $INSTDIR  
+   
+  WriteRegStr HKLM "SOFTWARE\${PKG_SUBMENU}" "Install_Dir" "$INSTDIR"
+  
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "DisplayName" ${PKG_NAME}
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "UninstallString" '"$INSTDIR\uninstall.exe"'
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "NoModify" 1
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "NoRepair" 1
+  WriteUninstaller "uninstall.exe"
+  
+  Exec '"$INSTDIR\someprogram.exe"'
+
+SectionEnd
+
+Section "Start Menu Shortcuts"
+  
+  CreateDirectory "$SMPROGRAMS\${PKG_SUBMENU}"
+  
+  SetOutPath $PKG_BINDIR
+
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\${BASE_NAME}DemoSimplesScenes.lnk" "$PKG_BINDIR\${BASE_NAME}Demo_SimpleScenes.exe" "" "$PKG_BINDIR\${BASE_NAME}DemoSimpleScenes.exe" 0
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\${BASE_NAME}GranTurismo.lnk" "$PKG_BINDIR\${BASE_NAME}GranTurismOgre.exe" "" "$PKG_BINDIR\${BASE_NAME}GranTurismOgre.exe" 0
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\${BASE_NAME}Landscape.lnk" "$PKG_BINDIR\${BASE_NAME}Demo_Landscape.exe" "" "$PKG_BINDIR\${BASE_NAME}Landscape.exe" 0
+  
+  SetOutPath $OUTDIR
+
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+  
+SectionEnd
+
+Section "Uninstall"
+    
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}"
+  DeleteRegKey HKLM SOFTWARE\Ogre\${BASE_NAME}
+
+  RMDir /r "$SMPROGRAMS\${PKG_SUBMENU}\"  
+  RMDir /r "$INSTDIR"
+
+SectionEnd
Index: /ogreode/nsis/OgreOde_SDK.nsi
===================================================================
--- /ogreode/nsis/OgreOde_SDK.nsi	(revision 21)
+++ /ogreode/nsis/OgreOde_SDK.nsi	(revision 21)
@@ -0,0 +1,205 @@
+;--------------------------------
+
+!define BASE_NAME "OgreOde"
+!define PKG_NAME "${BASE_NAME}_SourceSDK"
+!define PKG_EXE "${PKG_NAME}_Setup.exe"
+!define PKG_SUBMENU "Ogre SDK\${PKG_NAME}" 
+!define PKG_FOLDER "${BASE_NAME}"
+ 
+!define VERSION "V.1.0"
+
+;--------------------------------
+SetCompress off
+SetCompressor /SOLID lzma
+CRCCheck on
+
+XPStyle on
+SetDateSave on
+SilentInstall normal
+
+;--------------------------------
+Var OGRE_HOME 
+Var PKG_BINDIR
+
+;-------------------------------
+;Include Modern UI
+!include "MUI.nsh"
+  
+
+;--------------------------------
+Name "${PKG_NAME}"
+OutFile "${PKG_EXE}"
+InstallDirRegKey HKLM "Software\Ogre\${PKG_NAME}" "Install_Dir"
+
+
+  
+;----------------
+;Modern UI Configuration
+
+  ;;!define MUI_FINISHPAGE_RUN "$INSTDIR\${GAME_NAME}.bat"
+  !define MUI_FINISHPAGE_NOREBOOTSUPPORT 1
+
+  ;Remember the installer language
+  !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
+  !define MUI_LANGDLL_REGISTRY_KEY "Software\Ogre\${PKG_NAME}"
+  !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+  !define MUI_HEADERIMAGE
+  !define MUI_HEADERIMAGE_BITMAP ".\${BASE_NAME}_header.bmp"
+  
+  !define MUI_WELCOMEFINISHPAGE_BITMAP ".\${BASE_NAME}_left.bmp"
+  
+  ;Start Menu Folder Page Configuration
+  !define MUI_STARTMENUPAGE
+  !define MUI_STARTMENUPAGE_DEFAULTFOLDER "Ogre\${PKG_NAME}"
+  !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
+  !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Ogre\${PKG_NAME}"
+  !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+  !define MUI_STARTMENUPAGE_VARIABLE "$R9"
+
+  !define MUI_ABORTWARNING
+
+;--------------------------------
+;Pages
+
+  !insertmacro MUI_PAGE_WELCOME
+  !insertmacro MUI_PAGE_COMPONENTS
+  !insertmacro MUI_PAGE_DIRECTORY
+  
+  ;!insertmacro MUI_PAGE_STARTMENU  
+  !insertmacro MUI_PAGE_LICENSE "license.txt"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_PAGE_FINISH
+
+  !insertmacro MUI_UNPAGE_CONFIRM
+  !insertmacro MUI_UNPAGE_INSTFILES  
+  !insertmacro MUI_UNPAGE_FINISH
+
+  !insertmacro MUI_UNPAGE_CONFIRM
+  !insertmacro MUI_UNPAGE_DIRECTORY
+  !insertmacro MUI_UNPAGE_COMPONENTS
+  !insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+;Languages
+
+  !insertmacro MUI_LANGUAGE "English"
+  !insertmacro MUI_LANGUAGE "French"
+ ; !insertmacro MUI_LANGUAGE "German"
+ ; !insertmacro MUI_LANGUAGE "Spanish"
+ ; !insertmacro MUI_LANGUAGE "SimpChinese"
+ ; !insertmacro MUI_LANGUAGE "TradChinese"
+  ;!insertmacro MUI_LANGUAGE "Japanese"
+  ;;!insertmacro MUI_LANGUAGE "Korean"
+  ;!insertmacro MUI_LANGUAGE "Italian"
+  ;!insertmacro MUI_LANGUAGE "Dutch"
+  ;!insertmacro MUI_LANGUAGE "Danish"
+ ; !insertmacro MUI_LANGUAGE "Swedish"
+ ; !insertmacro MUI_LANGUAGE "Greek"
+ ; !insertmacro MUI_LANGUAGE "Russian"
+ ; !insertmacro MUI_LANGUAGE "Portuguese"
+ ; !insertmacro MUI_LANGUAGE "PortugueseBR"
+ ; !insertmacro MUI_LANGUAGE "Polish"
+ ; !insertmacro MUI_LANGUAGE "Ukrainian"
+ ; !insertmacro MUI_LANGUAGE "Czech"
+ ; !insertmacro MUI_LANGUAGE "Slovak"
+ ; !insertmacro MUI_LANGUAGE "Croatian"
+ ; !insertmacro MUI_LANGUAGE "Bulgarian"
+ ; !insertmacro MUI_LANGUAGE "Hungarian"
+ ; !insertmacro MUI_LANGUAGE "Thai"
+  ;!insertmacro MUI_LANGUAGE "Romanian"
+  ;!insertmacro MUI_LANGUAGE "Macedonian"
+ ; !insertmacro MUI_LANGUAGE "Estonian"
+ ; !insertmacro MUI_LANGUAGE "Turkish"
+ ; !insertmacro MUI_LANGUAGE "Lithuanian"
+ ; !insertmacro MUI_LANGUAGE "Catalan"
+ ; !insertmacro MUI_LANGUAGE "Serbian"
+
+;--------------------------------
+;Reserve Files
+
+  ;Things that need to be extracted on first (keep these lines before any File command!)
+  ;Only for BZIP2 compression
+  !insertmacro MUI_RESERVEFILE_LANGDLL
+;--------------------------------
+;Language Strings
+
+  ;Description
+    
+  ;Header
+  LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Please review the license terms before installing ${MUI_PRODUCT}"
+  LangString TEXT_IO_SUBTITLE ${LANG_FRENCH} "Prière de lire la license avant l'installation ${MUI_PRODUCT}"
+
+;--------------------------------
+;Data
+  
+  
+  LicenseData "license.txt"
+  
+;--------------------------------
+Function .onInit
+    ReadEnvStr $OGRE_HOME OGRE_HOME
+
+    StrCpy $INSTDIR "$OGRE_HOME\..\${PKG_FOLDER}"
+    StrCpy $PKG_BINDIR "$OGRE_HOME\bin\Release"
+    
+    # the plugins dir is automatically deleted when the installer exits
+    InitPluginsDir
+    #optional
+    #File /oname=$PLUGINSDIR\splash.wav "C:\myprog\sound.wav"
+    File /oname=$PLUGINSDIR\splash.bmp "${BASE_NAME}_splash.bmp"
+    advsplash::show 1000 600 400 0x00005B $PLUGINSDIR\splash
+    Pop $0
+
+    Delete $PLUGINSDIR\splash.bmp
+    !insertmacro MUI_LANGDLL_DISPLAY
+    
+FunctionEnd
+
+
+Section "${PKG_NAME} (required)"
+
+  SectionIn RO
+  
+   SetOutPath $INSTDIR  
+  
+  File /r /x *.sbr /x *.bsc /x *.pch /x *.exp /x *.lib /x BuildLog.htm /x nsis /x *.exe /x *.svn /x CVS /x *.res /x *.user /x *.obj /x *.ncb  /x *.bat /x *.idb /x *.pdb /x *.ilk /x *.dep /x *.dll /x *.manifest "..\*.*"
+  
+  WriteRegStr HKLM "SOFTWARE\${PKG_SUBMENU}" "Install_Dir" "$INSTDIR"
+  
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "DisplayName" ${PKG_NAME}
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "UninstallString" '"$INSTDIR\uninstall.exe"'
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "NoModify" 1
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "NoRepair" 1
+  WriteUninstaller "uninstall.exe"
+  
+SectionEnd
+
+Section "Start Menu Shortcuts"
+  
+  CreateDirectory "$SMPROGRAMS\${PKG_SUBMENU}"
+  
+  SetOutPath $PKG_BINDIR
+
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\${BASE_NAME}DemoSimplesScenes.lnk" "$PKG_BINDIR\${BASE_NAME}Demo_SimpleScenes.exe" "" "$PKG_BINDIR\${BASE_NAME}DemoSimpleScenes.exe" 0
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\${BASE_NAME}GranTurismo.lnk" "$PKG_BINDIR\${BASE_NAME}GranTurismOgre.exe" "" "$PKG_BINDIR\${BASE_NAME}GranTurismOgre.exe" 0
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\${BASE_NAME}Landscape.lnk" "$PKG_BINDIR\${BASE_NAME}Demo_Landscape.exe" "" "$PKG_BINDIR\${BASE_NAME}Landscape.exe" 0
+  
+  SetOutPath $OUTDIR
+
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+  
+SectionEnd
+
+Section "Uninstall"
+    
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}"
+  DeleteRegKey HKLM SOFTWARE\Ogre\${BASE_NAME}
+
+  RMDir /r "$SMPROGRAMS\${PKG_SUBMENU}\" 
+  
+  Delete "$PKG_BINDIR\${BASE_NAME}*.*"
+  
+  RMDir /r "$INSTDIR"
+
+SectionEnd
Index: /ogreode/nsis/OgreOde_Source.nsi
===================================================================
--- /ogreode/nsis/OgreOde_Source.nsi	(revision 21)
+++ /ogreode/nsis/OgreOde_Source.nsi	(revision 21)
@@ -0,0 +1,195 @@
+;--------------------------------
+
+!define BASE_NAME "OgreOde"
+!define PKG_NAME "${BASE_NAME}_Source"
+!define PKG_EXE "${PKG_NAME}_Setup.exe"
+!define PKG_SUBMENU "Ogre SDK\${PKG_NAME}" 
+!define PKG_FOLDER "${BASE_NAME}"
+ 
+!define VERSION "V.1.0"
+
+;--------------------------------
+SetCompress off
+SetCompressor /SOLID lzma
+CRCCheck on
+
+XPStyle on
+SetDateSave on
+SilentInstall normal
+
+;--------------------------------
+Var OGRE_HOME 
+Var PKG_BINDIR
+
+;-------------------------------
+;Include Modern UI
+!include "MUI.nsh"
+  
+
+;--------------------------------
+Name "${PKG_NAME}"
+OutFile "${PKG_EXE}"
+InstallDirRegKey HKLM "Software\Ogre\${PKG_NAME}" "Install_Dir"
+
+
+  
+;----------------
+;Modern UI Configuration
+
+  ;;!define MUI_FINISHPAGE_RUN "$INSTDIR\${GAME_NAME}.bat"
+  !define MUI_FINISHPAGE_NOREBOOTSUPPORT 1
+
+  ;Remember the installer language
+  !define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
+  !define MUI_LANGDLL_REGISTRY_KEY "Software\Ogre\${PKG_NAME}"
+  !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+  !define MUI_HEADERIMAGE
+  !define MUI_HEADERIMAGE_BITMAP ".\${BASE_NAME}_header.bmp"
+  
+  !define MUI_WELCOMEFINISHPAGE_BITMAP ".\${BASE_NAME}_left.bmp"
+  
+  ;Start Menu Folder Page Configuration
+  !define MUI_STARTMENUPAGE
+  !define MUI_STARTMENUPAGE_DEFAULTFOLDER "Ogre\${PKG_NAME}"
+  !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
+  !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Ogre\${PKG_NAME}"
+  !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+  !define MUI_STARTMENUPAGE_VARIABLE "$R9"
+
+  !define MUI_ABORTWARNING
+
+;--------------------------------
+;Pages
+
+  !insertmacro MUI_PAGE_WELCOME
+  !insertmacro MUI_PAGE_COMPONENTS
+  !insertmacro MUI_PAGE_DIRECTORY
+  
+  ;!insertmacro MUI_PAGE_STARTMENU  
+  !insertmacro MUI_PAGE_LICENSE "license.txt"
+  !insertmacro MUI_PAGE_INSTFILES
+  !insertmacro MUI_PAGE_FINISH
+
+  !insertmacro MUI_UNPAGE_CONFIRM
+  !insertmacro MUI_UNPAGE_INSTFILES  
+  !insertmacro MUI_UNPAGE_FINISH
+
+  !insertmacro MUI_UNPAGE_CONFIRM
+  !insertmacro MUI_UNPAGE_DIRECTORY
+  !insertmacro MUI_UNPAGE_COMPONENTS
+  !insertmacro MUI_UNPAGE_INSTFILES
+
+;--------------------------------
+;Languages
+
+  !insertmacro MUI_LANGUAGE "English"
+  !insertmacro MUI_LANGUAGE "French"
+ ; !insertmacro MUI_LANGUAGE "German"
+ ; !insertmacro MUI_LANGUAGE "Spanish"
+ ; !insertmacro MUI_LANGUAGE "SimpChinese"
+ ; !insertmacro MUI_LANGUAGE "TradChinese"
+  ;!insertmacro MUI_LANGUAGE "Japanese"
+  ;;!insertmacro MUI_LANGUAGE "Korean"
+  ;!insertmacro MUI_LANGUAGE "Italian"
+  ;!insertmacro MUI_LANGUAGE "Dutch"
+  ;!insertmacro MUI_LANGUAGE "Danish"
+ ; !insertmacro MUI_LANGUAGE "Swedish"
+ ; !insertmacro MUI_LANGUAGE "Greek"
+ ; !insertmacro MUI_LANGUAGE "Russian"
+ ; !insertmacro MUI_LANGUAGE "Portuguese"
+ ; !insertmacro MUI_LANGUAGE "PortugueseBR"
+ ; !insertmacro MUI_LANGUAGE "Polish"
+ ; !insertmacro MUI_LANGUAGE "Ukrainian"
+ ; !insertmacro MUI_LANGUAGE "Czech"
+ ; !insertmacro MUI_LANGUAGE "Slovak"
+ ; !insertmacro MUI_LANGUAGE "Croatian"
+ ; !insertmacro MUI_LANGUAGE "Bulgarian"
+ ; !insertmacro MUI_LANGUAGE "Hungarian"
+ ; !insertmacro MUI_LANGUAGE "Thai"
+  ;!insertmacro MUI_LANGUAGE "Romanian"
+  ;!insertmacro MUI_LANGUAGE "Macedonian"
+ ; !insertmacro MUI_LANGUAGE "Estonian"
+ ; !insertmacro MUI_LANGUAGE "Turkish"
+ ; !insertmacro MUI_LANGUAGE "Lithuanian"
+ ; !insertmacro MUI_LANGUAGE "Catalan"
+ ; !insertmacro MUI_LANGUAGE "Serbian"
+
+;--------------------------------
+;Reserve Files
+
+  ;Things that need to be extracted on first (keep these lines before any File command!)
+  ;Only for BZIP2 compression
+  !insertmacro MUI_RESERVEFILE_LANGDLL
+;--------------------------------
+;Language Strings
+
+  ;Description
+    
+  ;Header
+  LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Please review the license terms before installing ${MUI_PRODUCT}"
+  LangString TEXT_IO_SUBTITLE ${LANG_FRENCH} "Prière de lire la license avant l'installation ${MUI_PRODUCT}"
+
+;--------------------------------
+;Data
+  
+  
+  LicenseData "license.txt"
+  
+;--------------------------------
+Function .onInit
+    ReadEnvStr $OGRE_HOME OGRE_HOME
+
+    StrCpy $INSTDIR "$OGRE_HOME\..\${PKG_FOLDER}"
+    StrCpy $PKG_BINDIR "$OGRE_HOME\bin\Release"
+    
+    # the plugins dir is automatically deleted when the installer exits
+    InitPluginsDir
+    #optional
+    #File /oname=$PLUGINSDIR\splash.wav "C:\myprog\sound.wav"
+    File /oname=$PLUGINSDIR\splash.bmp "${BASE_NAME}_splash.bmp"
+    advsplash::show 1000 600 400 0x00005B $PLUGINSDIR\splash
+    Pop $0
+
+    Delete $PLUGINSDIR\splash.bmp
+    !insertmacro MUI_LANGDLL_DISPLAY
+    
+FunctionEnd
+
+
+Section "${PKG_NAME} (required)"
+
+  SectionIn RO
+  
+   SetOutPath $INSTDIR  
+  
+  File /r /x *.pch /x *.sbr /x *.bsc /x *.exp /x *.lib /x BuildLog.htm /x nsis /x *.exe /x *.svn /x CVS /x *.res /x *.user /x *.obj /x *.ncb  /x *.bat /x *.idb /x *.pdb /x *.ilk /x *.dep /x *.dll /x *.manifest "..\*.*"
+  
+  WriteRegStr HKLM "SOFTWARE\${PKG_SUBMENU}" "Install_Dir" "$INSTDIR"
+  
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "DisplayName" ${PKG_NAME}
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "UninstallString" '"$INSTDIR\uninstall.exe"'
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "NoModify" 1
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}" "NoRepair" 1
+  WriteUninstaller "uninstall.exe"
+  
+SectionEnd
+
+Section "Start Menu Shortcuts"
+  
+  CreateDirectory "$SMPROGRAMS\${PKG_SUBMENU}"  
+
+  CreateShortCut  "$SMPROGRAMS\${PKG_SUBMENU}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+  
+SectionEnd
+
+Section "Uninstall"
+    
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PKG_NAME}"
+  DeleteRegKey HKLM SOFTWARE\Ogre\${BASE_NAME}
+
+  RMDir /r "$SMPROGRAMS\${PKG_SUBMENU}\" 
+    
+  RMDir /r "$INSTDIR"
+
+SectionEnd
Index: /ogreode/nsis/Plugins_ogreode_binary.cfg
===================================================================
--- /ogreode/nsis/Plugins_ogreode_binary.cfg	(revision 21)
+++ /ogreode/nsis/Plugins_ogreode_binary.cfg	(revision 21)
@@ -0,0 +1,13 @@
+# Defines plugins to load
+
+# Define plugin folder
+PluginFolder=.
+
+# Define plugins
+Plugin=RenderSystem_Direct3D9
+Plugin=RenderSystem_GL
+
+Plugin=Plugin_ParticleFX
+Plugin=Plugin_BSPSceneManager
+Plugin=Plugin_OctreeSceneManager
+Plugin=Plugin_CgProgramManager
Index: /ogreode/nsis/license.txt
===================================================================
--- /ogreode/nsis/license.txt	(revision 21)
+++ /ogreode/nsis/license.txt	(revision 21)
@@ -0,0 +1,514 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
Index: /ogreode/nsis/resources_ogreode_binary.cfg
===================================================================
--- /ogreode/nsis/resources_ogreode_binary.cfg	(revision 21)
+++ /ogreode/nsis/resources_ogreode_binary.cfg	(revision 21)
@@ -0,0 +1,19 @@
+# Resource locations to be added to the 'boostrap' path
+# This also contains the minimum you need to use the Ogre example framework
+[Bootstrap]
+Zip=Media\Ogre\packs/OgreCore.zip
+
+# Resource locations to be added to the default path
+[General]
+FileSystem=Media\Ogre\fonts
+FileSystem=Media\Ogre\materials/programs
+FileSystem=Media\Ogre\materials/scripts
+FileSystem=Media\Ogre\materials/textures
+FileSystem=Media\Ogre\models
+FileSystem=Media\Ogre\overlays
+FileSystem=Media\Ogre\particle
+FileSystem=Media\Ogre\gui
+
+
+[OgreOde]
+FileSystem=Media\OgreOde
Index: /ogreode/obj/Debug/keep.me
===================================================================
--- /ogreode/obj/Debug/keep.me	(revision 21)
+++ /ogreode/obj/Debug/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/obj/Release/BuildLog.htm
===================================================================
--- /ogreode/obj/Release/BuildLog.htm	(revision 21)
+++ /ogreode/obj/Release/BuildLog.htm	(revision 21)
@@ -0,0 +1,120 @@
+<html>
+<head>
+<META HTTP-EQUIV="Content-Type" content="text/html; charset=Windows-1252">
+</head>
+<body>
+<pre>
+<table width=100% bgcolor=#CFCFE5><tr> <td> <font face=arial size=+3>
+Build Log
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>
+<h3>------- Build started: Project: OgreOde, Configuration: Release|Win32 -------
+</h3>
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Environment Space
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>    ALLUSERSPROFILE=C:\Documents and Settings\All Users
+    APPDATA=C:\Documents and Settings\Steve\Application Data
+    APR_ICONV_PATH=E:\usefuleresources\TortoiseSVN\iconv
+    CG_BIN_PATH=C:\Program Files\NVIDIA Corporation\Cg\bin
+    CG_INC_PATH=C:\Program Files\NVIDIA Corporation\Cg\include
+    CG_LIB_PATH=C:\Program Files\NVIDIA Corporation\Cg\lib
+    CLASSPATH=.;"C:\Program Files\Java\j2re1.4.1_02\lib\ext\QTJava.zip"
+    CLIENTNAME=Console
+    CommonProgramFiles=C:\Program Files\Common Files
+    COMPUTERNAME=SINBAD
+    ComSpec=C:\WINDOWS\system32\cmd.exe
+    CVS_RSH=ssh
+    DXSDK_DIR=E:\dx9sdk_summer\
+    FP_NO_HOST_CHECK=NO
+    frameworkdir=c:\windows\microsoft.net\framework\
+    frameworksdkdir=e:\visualstudio.net\frameworksdk\
+    GS_FONTPATH=E:\UsefulResources\GhostScript\gs8.11\fonts
+    HOME=e:\UsefulResources\cvs\ssh\Home
+    HOMEDRIVE=C:
+    HOMEPATH=\Documents and Settings\Steve
+    INCLUDE=E:\UsefulResources\STLport-4.6.2\stlport;E:\dx9sdk_summer\Include;E:\VisualStudio.NET\Vc7\include;E:\VisualStudio.NET\Vc7\atlmfc\include;E:\VisualStudio.NET\FrameworkSDK\include;E:\VisualStudio.NET\Vc7\PlatformSDK\Include;E:\UsefulResources\fmodapi361win32\api\inc;e:\usefulresources\Maya\include;E:\UsefulResources\3dsMax5\maxsdk\include;E:\UsefulResources\ode\include;E:\UsefulResources\Tokamak\tokamak_lib_1010\include;E:\Python22\include;E:\UsefulResources\cppunit-1.9.11\include;E:\UsefulResources\boost_1_31_0;
+    LC_ALL=EN_US
+    LIB=E:\UsefulResources\STLport-4.6.2\lib;E:\dx9sdk_summer\Lib;E:\VisualStudio.NET\Vc7\lib;E:\VisualStudio.NET\Vc7\atlmfc\lib;E:\VisualStudio.NET\Vc7\PlatformSDK\lib\prerelease;E:\VisualStudio.NET\Vc7\PlatformSDK\lib;E:\VisualStudio.NET\FrameworkSDK\lib;E:\Python22\libs;E:\VisualStudio.NET\Vc7\PlatformSDK\lib;E:\UsefulResources\fmodapi361win32\api\lib;e:\usefulresources\Maya\lib;E:\UsefulResources\3dsMax5\maxsdk\lib;E:\UsefulResources\cppunit-1.9.11\lib;E:\UsefulResources\boost_1_31_0\stage\lib;E:\UsefulResources\ode\lib;
+    LIBPATH=
+    LOGONSERVER=\\SINBAD
+    MsVCDir=e:\visualstudio.net\
+    NUMBER_OF_PROCESSORS=1
+    OS=Windows_NT
+    Path=E:\dx9sdk_summer\Utilities;C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Utilities;E:\VisualStudio.NET\Vc7\bin;E:\VisualStudio.NET\Common7\Tools\bin\prerelease;E:\VisualStudio.NET\Common7\Tools\bin;E:\VisualStudio.NET\Common7\tools;E:\VisualStudio.NET\Common7\ide;C:\Program Files\HTML Help Workshop\;E:\VisualStudio.NET\FrameworkSDK\bin;C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;e:\UsefulResources\cvs\ssh;
+    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
+    PROCESSOR_ARCHITECTURE=x86
+    PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 7, GenuineIntel
+    PROCESSOR_LEVEL=15
+    PROCESSOR_REVISION=0207
+    ProgramFiles=C:\Program Files
+    QTJAVA="C:\Program Files\Java\j2re1.4.1_02\lib\ext\QTJava.zip"
+    SESSIONNAME=Console
+    SystemDrive=C:
+    SystemRoot=C:\WINDOWS
+    TEMP=C:\DOCUME~1\Steve\LOCALS~1\Temp
+    TMP=C:\DOCUME~1\Steve\LOCALS~1\Temp
+    USERDOMAIN=SINBAD
+    USERNAME=Steve
+    USERPROFILE=C:\Documents and Settings\Steve
+    VCInstallDir=e:\visualstudio.net\vc7\
+    VSCOMNTOOLS="E:\VisualStudio.NET\Common7\Tools\"
+    VSInstallDir=e:\visualstudio.net\
+    windir=C:\WINDOWS
+    _ACP_ATLPROV=E:\VisualStudio.NET\Vc7\bin\ATLPROV.DLL
+    _ACP_INCLUDE=E:\UsefulResources\STLport-4.6.2\stlport;E:\dx9sdk_summer\Include;E:\VisualStudio.NET\Vc7\include;E:\VisualStudio.NET\Vc7\atlmfc\include;E:\VisualStudio.NET\FrameworkSDK\include;E:\VisualStudio.NET\Vc7\PlatformSDK\Include;E:\UsefulResources\fmodapi361win32\api\inc;e:\usefulresources\Maya\include;E:\UsefulResources\3dsMax5\maxsdk\include;E:\UsefulResources\OpCode;E:\UsefulResources\Tokamak\tokamak_lib_1010\include;E:\Python22\include;E:\UsefulResources\cppunit-1.9.11\include;E:\UsefulResources\boost_1_31_0;
+    _ACP_LIB=E:\UsefulResources\STLport-4.6.2\lib;E:\dx9sdk_summer\Lib;E:\VisualStudio.NET\Vc7\lib;E:\VisualStudio.NET\Vc7\atlmfc\lib;E:\VisualStudio.NET\Vc7\PlatformSDK\lib\prerelease;E:\VisualStudio.NET\Vc7\PlatformSDK\lib;E:\VisualStudio.NET\FrameworkSDK\lib;E:\Python22\libs;E:\VisualStudio.NET\Vc7\PlatformSDK\lib;E:\UsefulResources\fmodapi361win32\api\lib;e:\usefulresources\Maya\lib;E:\UsefulResources\3dsMax5\maxsdk\lib;E:\UsefulResources\cppunit-1.9.11\lib;E:\UsefulResources\boost_1_31_0\stage\lib;E:\Projects\OgreCVS\ogrenew\OgreMain\lib\Debug;E:\Projects\OgreCVS\ogrenew\OgreMain\lib\Release;;..\..\include;..\..\ode-0.5\include;..\..\..\OgreMain\include;E:\UsefulResources\STLport-4.6.2\stlport;E:\dx9sdk_summer\Include;E:\VisualStudio.NET\Vc7\include;E:\VisualStudio.NET\Vc7\atlmfc\include;E:\VisualStudio.NET\FrameworkSDK\include;E:\VisualStudio.NET\Vc7\PlatformSDK\Include;E:\UsefulResources\fmodapi361win32\api\inc;e:\usefulresources\Maya\include;E:\UsefulResources\3dsMax5\maxsdk\include;E:\UsefulResources\OpCode;E:\UsefulResources\Tokamak\tokamak_lib_1010\include;E:\Python22\include;E:\UsefulResources\cppunit-1.9.11\include;E:\UsefulResources\boost_1_31_0;
+    _ACP_PATH=E:\dx9sdk_summer\Utilities;C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Utilities;E:\VisualStudio.NET\Vc7\bin;E:\VisualStudio.NET\Common7\Tools\bin\prerelease;E:\VisualStudio.NET\Common7\Tools\bin;E:\VisualStudio.NET\Common7\tools;E:\VisualStudio.NET\Common7\ide;C:\Program Files\HTML Help Workshop\;E:\VisualStudio.NET\FrameworkSDK\bin;C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;e:\UsefulResources\cvs\ssh;
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Command Lines
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>Creating temporary file "e:\Projects\OgreCVS\ogreaddons\ogreode\obj\Release\RSP000001.rsp" with contents
+[
+/O2 /GT /GL /G6 /I "..\..\include" /I "..\..\ode-0.5\include" /I "..\..\..\OgreMain\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "OGREODE_EXPORTS" /D "_MBCS" /D "_WINDLL" /GF /FD /EHsc /MD /Gy /Fo"..\..\obj\Release/" /Fd"..\..\obj\Release/vc70.pdb" /W3 /c /Wp64 /Zi /TP
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeWorld.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeVehicle.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeUtility.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeStepper.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeSpace.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeMeshInformer.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeMass.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeMaintainedList.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeJoint.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeGeometry.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeDebugObject.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeCollision.cpp
+\Projects\OgreCVS\ogreaddons\ogreode\src\OgreOdeBody.cpp
+]
+Creating command line "cl.exe @e:\Projects\OgreCVS\ogreaddons\ogreode\obj\Release\RSP000001.rsp /nologo"
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Output Window
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>Compiling...
+OgreOdeWorld.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeVehicle.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeUtility.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeStepper.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeSpace.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeMeshInformer.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeMass.cpp
+..\..\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeMaintainedList.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeJoint.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeGeometry.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeDebugObject.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeCollision.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+OgreOdeBody.cpp
+e:\Projects\OgreCVS\ogreaddons\ogreode\include\OgreOdePreReqs.h(4) : fatal error C1083: Cannot open include file: 'Ogre.h': No such file or directory
+</pre></table><table width=100% bgcolor=#DFDFE5><tr><td><font face=arial size=+2>
+Results
+</font></table><table width=* cellspacing=0 cellpadding=0><tr><td width=0 bgcolor=#EDEDF5>&nbsp;</td><td width=0 bgcolor=#FFFFFF>&nbsp;</td><td width=*><pre>
+Build log was saved at "file://e:\Projects\OgreCVS\ogreaddons\ogreode\obj\Release\BuildLog.htm"
+OgreOde - 13 error(s), 0 warning(s)</pre></table><table   width=100% height=20 bgcolor=#CFCFE5><tr><td><font face=arial size=+2>
+</font></table></body></html>
Index: /ogreode/obj/Release/keep.me
===================================================================
--- /ogreode/obj/Release/keep.me	(revision 21)
+++ /ogreode/obj/Release/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/Makefile.am
===================================================================
--- /ogreode/prefab/Makefile.am	(revision 21)
+++ /ogreode/prefab/Makefile.am	(revision 21)
@@ -0,0 +1,2 @@
+SUBDIRS = include src
+
Index: /ogreode/prefab/include/Makefile.am
===================================================================
--- /ogreode/prefab/include/Makefile.am	(revision 21)
+++ /ogreode/prefab/include/Makefile.am	(revision 21)
@@ -0,0 +1,9 @@
+ogreodeprefabincludedir = $(includedir)/OgreOde_Prefab
+
+ogreodeprefabinclude_HEADERS = \
+   OgreOde_Prefab.h \
+   OgreOdePrefabObject.h \
+   OgreOdeVehicle.h \
+   OgreOdeRagdoll.h \
+   OgreOdeObject.h \
+   OgreOde_PrefabPreReqs.h
Index: /ogreode/prefab/include/OgreOdeObject.h
===================================================================
--- /ogreode/prefab/include/OgreOdeObject.h	(revision 21)
+++ /ogreode/prefab/include/OgreOdeObject.h	(revision 21)
@@ -0,0 +1,31 @@
+#ifndef _OGREODEOBJECT_H_
+#define _OGREODEOBJECT_H_
+
+#include "OgreOde_Prefab.h"
+
+#if 0
+namespace OgreOde_Prefab 
+{
+
+    class _OgreOdeExport_Prefab Object : public PrefabObject
+    {
+	public:
+		Object():
+		  PrefabObject (ObjectType_Object)
+        {
+             
+        }
+
+		~Object()
+        {
+            
+        }
+
+
+	protected:
+		// ...
+	};
+
+}
+#endif
+#endif // _OGREODEOBJECT_H_
Index: /ogreode/prefab/include/OgreOdePrefabObject.h
===================================================================
--- /ogreode/prefab/include/OgreOdePrefabObject.h	(revision 21)
+++ /ogreode/prefab/include/OgreOdePrefabObject.h	(revision 21)
@@ -0,0 +1,47 @@
+#ifndef _OGREODEPREFABOBJECT_H_
+#define _OGREODEPREFABOBJECT_H_
+
+#include "OgreOde_Prefab.h"
+
+namespace OgreOde_Prefab 
+{
+
+    class _OgreOdeExport_Prefab Object
+    {
+	public:
+        Object(ObjectType type, OgreOde::World *world):
+          _type(type),
+          _world(world)
+        {
+              instanceNumber++;
+        }
+		virtual ~Object()
+        {
+            instanceNumber--;
+        }
+
+		OgreOde_Prefab::ObjectType getObjectType() const
+        {
+            return _type;
+        }
+
+		static unsigned int getInstanceNumber()
+		{
+			return instanceNumber;
+		}
+
+        static unsigned int getInstanceNumberAndIncrement()
+        {
+            return instanceNumber++;
+        }
+
+	protected:
+		OgreOde_Prefab::ObjectType  _type;
+        OgreOde::World              *_world;
+
+        static unsigned int instanceNumber;
+	};
+}
+
+#endif
+
Index: /ogreode/prefab/include/OgreOdeRagdoll.h
===================================================================
--- /ogreode/prefab/include/OgreOdeRagdoll.h	(revision 21)
+++ /ogreode/prefab/include/OgreOdeRagdoll.h	(revision 21)
@@ -0,0 +1,147 @@
+#ifndef _OGREODERAGDOLL_H_
+#define _OGREODERAGDOLL_H_
+
+#include "OgreOde_Prefab.h"
+
+#include <map>
+
+namespace OgreOde_Prefab 
+{
+
+    class _OgreOdeExport_Prefab Ragdoll : public Object, public Ogre::Entity, public OgreOde::CollisionListener
+    {
+
+        friend class RagdollFactory;
+
+    public:
+        class PhysicalBone;
+        typedef std::vector<Ragdoll::PhysicalBone*> RagdollPhysicalBoneList;
+
+    public:
+		class _OgreOdeExport_Prefab PhysicalBone 
+		{
+		public:
+			PhysicalBone();
+			~PhysicalBone();
+
+		public:
+			OgreOde::Body								*_body;
+			OgreOde::Geometry							*_geometry;
+			Ogre::Vector3						_original_position;
+			Ogre::Quaternion					_original_orientation;
+			Ogre::Bone							*_bone;
+			PhysicalBone						*_parent_bone;
+			RagdollPhysicalBoneList	            _child_bones;
+			OgreOde::Joint								*_joint;
+			OgreOde::AngularMotorJoint					*_motor;
+		};
+
+		class _OgreOdeExport_Prefab BoneSettings
+		{
+		public:
+			enum Collapse
+			{
+				Collapse_None,
+				Collapse_Up,
+				Collapse_Down
+			};
+
+		public:
+			BoneSettings();
+			~BoneSettings();
+
+		public:
+			OgreOde::Geometry::Class		_geometry_class;
+			OgreOde::Joint::Type			_joint_type;
+			Ogre::Vector3		_primary_axis;
+			Ogre::Vector3		_secondary_axis;
+			Collapse			_collapse;
+			Ogre::Real			_mass;
+			Ogre::Real			_radius;
+			Ogre::Real			_primary_histop,_primary_lostop,_secondary_histop,_secondary_lostop;
+			Ogre::Real			_linear_damping,_angular_damping;
+		};
+
+	public:
+		void setDefaultBoneSettings(const Ragdoll::BoneSettings &settings);
+		const Ragdoll::BoneSettings &getDefaultBoneSettings(){return _default_bone_settings;}
+		
+		void setBoneSettings(const Ogre::String& bone_name,const Ragdoll::BoneSettings &settings);
+		void setSelfCollisions(bool collide);
+
+        void takePhysicalControl(OgreOde::World* world, OgreOde::Space* space, bool static_geometry = false);
+		void turnToStone();
+
+		void sleep();
+		void sleep(Ragdoll::PhysicalBone* bone);
+
+		void wake();
+		void wake(Ragdoll::PhysicalBone* bone);
+
+		bool isAwake();
+		bool isAwake(Ragdoll::PhysicalBone* bone);
+
+		void releasePhysicalControl();
+
+		bool isPhysical()const {return _is_physical;}
+		bool isStatic()const {return _is_static;}
+
+		~Ragdoll();
+
+		void update();
+
+        virtual const Ogre::AxisAlignedBox& getBoundingBox(void) const;
+
+		bool pick(OgreOde::RayGeometry *ray, OgreOde::Body* &body, Ogre::Vector3 &position);
+		bool collision(OgreOde::Contact* contact);
+
+
+	protected:
+
+		Ragdoll(const Ogre::String& name, Ogre::MeshPtr& ptr); 
+
+		void createBoneBody(Ogre::Bone *bone, Ragdoll::PhysicalBone *parent, bool static_geometry);
+		void updatePhysicalBone(Ragdoll::PhysicalBone *physical_bone, const Ogre::Matrix4 &this_trans, const Ogre::Matrix4 &base_trans);
+
+		void turnToStone(Ragdoll::PhysicalBone* bone);
+		void releasePhysicalControl(Ragdoll::PhysicalBone* bone);
+
+		void pick(Ragdoll::PhysicalBone *bone, OgreOde::RayGeometry *ray);
+
+		RagdollPhysicalBoneList _root_bones;
+		Ragdoll::BoneSettings _default_bone_settings;
+		std::map<Ogre::String, Ragdoll::BoneSettings> _bone_settings;
+		Ogre::Matrix4 _node_trans,_node_trans_inv;
+		Ogre::Quaternion _node_orient;
+		Ogre::Vector3 _node_posn;
+
+		std::vector<std::pair<OgreOde::Body*,Ogre::Vector3> > _hit_list;
+
+		OgreOde::EntityInformer *_ei;
+		OgreOde::SimpleSpace    *_space;
+        OgreOde::JointGroup     *_joint_group;
+
+		bool    _is_static;
+		bool    _is_physical;
+        bool    _is_hardwareAnimationRemovedByMe;
+
+	};
+
+	/** Factory object for creating Ragdoll instances */
+	class _OgreOdeExport_Prefab RagdollFactory : public Ogre::MovableObjectFactory
+	{
+	protected:
+		Ogre::MovableObject* createInstanceImpl( const Ogre::String& name, const Ogre::NameValuePairList* params);
+	public:
+		RagdollFactory() {}
+		~RagdollFactory() {}
+
+		static Ogre::String FACTORY_TYPE_NAME;
+
+		const Ogre::String& getType(void) const;
+		void destroyInstance( Ogre::MovableObject* obj); 
+
+	}; 
+}
+
+#endif
Index: /ogreode/prefab/include/OgreOdeVehicle.h
===================================================================
--- /ogreode/prefab/include/OgreOdeVehicle.h	(revision 21)
+++ /ogreode/prefab/include/OgreOdeVehicle.h	(revision 21)
@@ -0,0 +1,247 @@
+#ifndef _OGREODEVEHICLE_H_
+#define _OGREODEVEHICLE_H_
+
+#include "OgreOde_Prefab.h"
+
+#include <vector>
+
+namespace OgreOde_Prefab 
+{
+
+    class _OgreOdeExport_Prefab Vehicle : public Object
+    {
+	public:
+		class _OgreOdeExport_Prefab Engine
+		{
+		public:
+			Engine();
+			~Engine();
+
+            void setInputs(Ogre::Real throttle_position, Ogre::Real brake_position);
+            void setInputs(Ogre::Real throttle_brake);
+			void setInputs(bool throttle, bool brake);
+			
+			Ogre::Real getBrakeForce();
+			Ogre::Real getPowerAtRPM(Ogre::Real rpm);
+			Ogre::Real getDesiredRPM();
+
+			void update(Ogre::Real time);
+
+			// Manual gearbox
+			void changeUp();
+			void changeDown();
+			void setGear(char code);
+			void setGear(unsigned int i);
+
+			// Information functions
+			Ogre::Real getRevFactor();
+			char getGearCode();
+		
+			// Engine parameters
+			void setRevLimit(Ogre::Real rpm);
+			void setTorque(Ogre::Real* torque, unsigned int samples);
+			void setTorque(Ogre::Real constant);
+			void setTorque(Ogre::Real minimum, Ogre::Real maximum);
+
+			// Braking parameters
+			void setBrakeForce(Ogre::Real force);
+
+			// Drivetrain parameters
+			void addGear(Ogre::Real ratio, char code);
+            void setFinalDrive(Ogre::Real ratio);
+			void setAutoShiftRevs(Ogre::Real up, Ogre::Real down);
+			void setAutoBox(bool automatic);
+
+		protected:
+			std::vector<std::pair<char,Ogre::Real> >	_gears;
+			unsigned int					        	_current_gear_num;
+			std::pair<char,Ogre::Real>		        	_current_gear;
+			Ogre::Real*						        	_torque_curve;
+			unsigned int					        	_curve_length;
+			Ogre::Real						        	_rev_limit,_throttle_position,_brake_position,_wheel_rpm,_inv_rev_limit;
+			Ogre::Real						        	_brake_force;
+			Ogre::Real						        	_final_drive;
+			Ogre::Real						        	_shift_up,_shift_down;
+			bool							        	_auto_box;
+		};
+
+		class _OgreOdeExport_Prefab Wheel : public Object
+		{
+		public:
+			static const Ogre::Real FudgeFactor;
+
+            Wheel(Vehicle* vehicle,
+                const Ogre::String& name,
+                const Ogre::String& mesh,
+                const Ogre::Vector3& position, 
+                Ogre::Real mass, 
+                OgreOde::World *world, 
+                OgreOde::Space* space);
+
+			~Wheel();
+
+			void setFactors(Ogre::Real steer, Ogre::Real power, Ogre::Real brake);
+			void setContact(Ogre::Real bouncyness, Ogre::Real friction, Ogre::Real fds)
+			{
+				_bouncyness = bouncyness;
+				_friction = friction;
+				_fds = fds;
+			}
+
+			void setSteerFactor(Ogre::Real factor);
+			void setSteerLimit(Ogre::Real limit);
+			void setSteerForce(Ogre::Real force){_steer_force = force;}
+			void setSteerSpeed(Ogre::Real speed){_steer_speed = speed;}
+			void setSteer(Ogre::Real position);
+			
+			void setPowerFactor(Ogre::Real power){_power_factor = power;}
+			void setBrakeFactor(Ogre::Real brake){_brake_factor = brake;}
+
+			void setSuspension(Ogre::Real spring_constant, Ogre::Real damping_constant, Ogre::Real step_size);
+
+			const Ogre::Vector3& getPosition();
+			const Ogre::Quaternion& getOrientation();
+			void setPosition(const Ogre::Vector3& position);
+
+			Ogre::Real getRPM();
+			Ogre::Real getSteer();
+
+			void update(Ogre::Real power_force, Ogre::Real desired_rpm, Ogre::Real brake_force);
+	
+            Ogre::SceneNode* getSceneNode(){return _node;}
+			Ogre::Entity*	getEntity(){return _entity;}
+            OgreOde::Body* getBody(){return _body;}
+
+			OgreOde::Geometry* getGeometry(){return _geometry;}
+
+            Ogre::Real getRadius()const{return _radius;}
+
+			void snapOff();
+
+			void setupTyreContact(OgreOde::Contact* contact);
+
+		protected:
+			void adjustJointParameters();
+
+			Ogre::SceneNode*				_node;
+			Ogre::Entity*					_entity;
+			Ogre::Real				    	_steer_factor,_steer_limit,_steer_force,_steer_speed;
+			Ogre::Real				    	_power_factor;
+			Ogre::Real				    	_brake_factor;
+			Ogre::Real				    	_spring,_damping,_step;
+			Ogre::Real				    	_bouncyness,_friction,_fds;
+			Ogre::Real				    	_radius;
+            OgreOde::Body*					_body;
+            OgreOde::Geometry*				_geometry;
+            OgreOde::SuspensionJoint*		_joint;
+            Ogre::String					_name;
+			Vehicle*				        _owner;
+		};
+
+	public:
+        Vehicle(const Ogre::String& name,const Ogre::String& mesh, Ogre::Real mass, 
+            OgreOde::World *world, 
+            OgreOde::Space* space,
+            const Ogre::Vector3& offset = Ogre::Vector3::ZERO,
+            OgreOde::Geometry* geometry = 0);
+
+        Vehicle(const Ogre::String& name, 
+                OgreOde::World *world, 
+                OgreOde::Space* space = 0,
+                OgreOde::Geometry* geometry = 0);
+		~Vehicle();
+
+        Vehicle::Wheel* addWheel(const Ogre::String& mesh,const Ogre::Vector3& position, Ogre::Real mass);
+		
+		const Ogre::Vector3& getPosition();
+		const Ogre::Quaternion& getOrientation();
+		void setPosition(const Ogre::Vector3& position);
+
+		void setSuspension(Ogre::Real spring_constant, Ogre::Real damping_constant, Ogre::Real step_size);
+		
+		void setInputs(Ogre::Real steering, Ogre::Real throttle,Ogre::Real brake);
+		void setInputs(Ogre::Real steering, Ogre::Real throttle_brake);
+		void setInputs(bool left, bool right, bool throttle, bool brake);
+
+		void setSteering(Ogre::Real steering_position);
+
+		const Ogre::String&	getName(){return _name;}
+
+		virtual void		applyAntiSwayBarForces();
+		void				update(Ogre::Real time);
+
+		Ogre::Entity*				getEntity(){return _entity;}
+		void				        setEntity(Ogre::Entity *e){ _entity = e;}
+
+        OgreOde::Body*				getBody(){return _body;}
+
+		Ogre::SceneNode*			getSceneNode(){return _node;}
+
+		Vehicle::Wheel*		getWheel(unsigned int i){return _wheels[i];}
+		size_t				getWheelCount()const{return _wheels.size();}
+
+		OgreOde::TransformGeometry*	getTransformGeometry(){return _transform;}
+		void				setTransformGeometry(OgreOde::TransformGeometry*g){_transform = g;}
+
+        void				setTransNode(Ogre::SceneNode *s){_trans_node = s;}
+		Ogre::SceneNode*			getTransNode(){return _trans_node;}
+
+        OgreOde::Geometry*			getGeometry(){return _geometry;}
+		void				setGeometry(OgreOde::Geometry*g){_geometry = g;}
+
+		Engine*				getEngine(){return _engine;}
+
+		Vehicle::Wheel*		findWheel(OgreOde::Geometry* geometry);
+
+		OgreOde::Space*		getSpace(){return _space;}
+
+        Ogre::Vector3				getOffset(){return _offset;}
+		void				setOffset(const Ogre::Vector3 &of)
+		{
+			_offset = of;
+			if (_geometry) 
+				_geometry->setPosition(of);
+			_trans_node->setPosition(of);
+		}
+
+		Ogre::Real getVelocity();
+		
+		static bool handleTyreCollision(OgreOde::Contact* contact);
+
+		void load(const Ogre::String &filename, const Ogre::String &definition_name = Ogre::StringUtil::BLANK);
+
+		bool isAntiSwayEnabled()const {return _antisway;};
+		void enableAntiSway(bool enable){_antisway = enable;};
+
+		void  setSwayForce(Ogre::Real swayForce){_swayForce = swayForce;};
+		void  setSwayForceLimit(unsigned int swayForceLimit){_swayForceLimit = swayForceLimit;}
+		void  setSwayForceRate(Ogre::Real swayRate){_swayRate = swayRate;}
+
+		Ogre::Real		  getSwayForce (Ogre::Real swayForce) const{return _swayForce;};
+		unsigned int  getSwayForceLimit(unsigned int swayForceLimit) const{return _swayForceLimit;}
+		Ogre::Real          getSwayForceRate(Ogre::Real swayRate) const{return _swayRate;}
+
+	protected:
+		Ogre::SceneNode*						_node;
+		Ogre::SceneNode*						_trans_node;
+		Ogre::Entity*							_entity;
+        OgreOde::Body*							_body;
+        OgreOde::TransformGeometry*				_transform;
+        OgreOde::Geometry*						_geometry;
+		std::vector<Vehicle::Wheel*>	_wheels;
+		Ogre::String							_name;
+        OgreOde::SimpleSpace*					_space;
+        Ogre::Vector3							_offset;
+		Ogre::Vector3							_lastPosition;
+		Engine*							_engine;
+		
+		bool							_antisway;
+		Ogre::Real							_swayForce;
+		unsigned int					_swayForceLimit;
+		Ogre::Real							_swayRate;
+		Ogre::Real							_swayLastUpdate;
+	};
+}
+
+#endif
+
Index: /ogreode/prefab/include/OgreOde_Prefab.h
===================================================================
--- /ogreode/prefab/include/OgreOde_Prefab.h	(revision 21)
+++ /ogreode/prefab/include/OgreOde_Prefab.h	(revision 21)
@@ -0,0 +1,35 @@
+#ifndef _OGREODE_PREFAB_H_
+#define _OGREODE_PREFAB_H_
+
+#include "OgreOde_PrefabPreReqs.h"
+
+namespace OgreOde_Prefab
+{
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#   if defined( OGREODEEXPORT_PREFAB )
+#       define _OgreOdeExport_Prefab __declspec( dllexport )
+#   else
+#       define _OgreOdeExport_Prefab __declspec( dllimport )
+#   endif
+#else
+#   define _OgreOdeExport_Prefab
+#endif
+
+    enum ObjectType
+    {
+        ObjectType_Sphere_Wheeled_Vehicle,
+        ObjectType_Ray_Wheeled_Vehicle,
+        ObjectType_Wheel,
+        ObjectType_Ragdoll,
+        ObjectType_CompositeObject,
+        ObjectType_Single_Object
+        //,...
+    };
+}
+
+#include "OgreOdePrefabObject.h"
+#include "OgreOdeVehicle.h"
+#include "OgreOdeRagdoll.h"
+
+
+#endif
Index: /ogreode/prefab/include/OgreOde_PrefabPreReqs.h
===================================================================
--- /ogreode/prefab/include/OgreOde_PrefabPreReqs.h	(revision 21)
+++ /ogreode/prefab/include/OgreOde_PrefabPreReqs.h	(revision 21)
@@ -0,0 +1,19 @@
+#ifndef _OGREODEPREFABPREREQS_H_
+#define _OGREODEPREFABPREREQS_H_
+
+
+#include "OgreOde_Core.h"
+
+namespace OgreOde_Prefab
+{
+
+	class PrefabObject;
+
+	class RagdollFactory;
+	class Ragdoll;
+
+	class Vehicle;
+	
+}
+
+#endif //_OGREODEPREFABPREREQS_H_
Index: /ogreode/prefab/lib/Debug/keep.me
===================================================================
--- /ogreode/prefab/lib/Debug/keep.me	(revision 21)
+++ /ogreode/prefab/lib/Debug/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/lib/Release/keep.me
===================================================================
--- /ogreode/prefab/lib/Release/keep.me	(revision 21)
+++ /ogreode/prefab/lib/Release/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/obj/Debug/keep.me
===================================================================
--- /ogreode/prefab/obj/Debug/keep.me	(revision 21)
+++ /ogreode/prefab/obj/Debug/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/obj/Release/keep.me
===================================================================
--- /ogreode/prefab/obj/Release/keep.me	(revision 21)
+++ /ogreode/prefab/obj/Release/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/scripts/CodeBlocks/OgreOde_Prefab_SDK.cbp
===================================================================
--- /ogreode/prefab/scripts/CodeBlocks/OgreOde_Prefab_SDK.cbp	(revision 21)
+++ /ogreode/prefab/scripts/CodeBlocks/OgreOde_Prefab_SDK.cbp	(revision 21)
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="5" />
+	<Project>
+		<Option title="OgreOde_Prefab" />
+		<Option pch_mode="2" />
+		<Option default_target="" />
+		<Option compiler="gcc" />
+		<Option virtualFolders="" />
+		<Build>
+			<Target title="Debug">
+				<Option output="..\..\lib\Debug\OgreOde_Prefab_d.dll" />
+				<Option object_output="..\..\obj\Debug" />
+				<Option external_deps="Debug\libtinyxmld.a;..\..\lib\Debug|Win32\libOgreOde_Core_d.a;" />
+				<Option type="3" />
+				<Option compiler="gcc" />
+				<Option createDefFile="1" />
+				<Option createStaticLib="1" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-g" />
+					<Add option="-O0" />
+					<Add option="-DWIN32" />
+					<Add option="-D_DEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add option="-D_USRDLL" />
+					<Add option="-DOGREODEEXPORT_PREFAB" />
+					<Add directory="..\..\..\ode\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="..\..\..\tinyxml" />
+					<Add directory="$(OGRE_HOME)\stlport\stlport" />
+					<Add directory="..\..\include" />
+					<Add directory="..\..\..\..\include" />
+				</Compiler>
+				<Linker>
+					<Add library="OgreOde_Core_d" />
+					<Add library="OgreMain_d" />
+					<Add library="tinyxmld" />
+					<Add library="libtinyxmld.a" />
+					<Add library="libOgreOde_Core_d.a" />
+					<Add library="stlportstlg.5.0" />
+					<Add directory="..\..\..\lib\Debug" />
+					<Add directory="..\..\..\tinyxml\Debug" />
+					<Add directory="$(OGRE_HOME)\bin\debug" />
+					<Add directory="..\..\..\..\lib\Debug" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="$(OGREODE_HOME)\scripts\codeblocks\copy.bat $(OGREODE_HOME)\prefab\lib\Debug\$(APPNAME) $(OGRE_HOME)\bin\debug\$(APPNAME)" />
+				</ExtraCommands>
+				<Environment>
+					<Variable name="APPNAME" value="OgreOde_Prefab_d.dll" />
+				</Environment>
+			</Target>
+			<Target title="Release">
+				<Option output="..\..\lib\Release\OgreOde_Prefab.dll" />
+				<Option object_output="..\..\obj\Release" />
+				<Option external_deps="Release\libtinyxml.a;..\..\lib\Release|Win32\libOgreOde_Core.a;" />
+				<Option type="3" />
+				<Option compiler="gcc" />
+				<Option createDefFile="1" />
+				<Option createStaticLib="1" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-DWIN32" />
+					<Add option="-DNDEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add option="-D_USRDLL" />
+					<Add option="-DOGREODEEXPORT_PREFAB" />
+					<Add directory="..\..\..\ode\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="..\..\..\tinyxml" />
+					<Add directory="$(OGRE_HOME)\stlport\stlport" />
+					<Add directory="..\..\include" />
+					<Add directory="..\..\..\..\include" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+					<Add library="OgreOde_Core" />
+					<Add library="OgreMain" />
+					<Add library="tinyxml" />
+					<Add library="libtinyxml.a" />
+					<Add library="libOgreOde_Core.a" />
+					<Add library="stlport.5.0" />
+					<Add directory="..\..\..\lib\Release\" />
+					<Add directory="..\..\..\tinyxml\Release" />
+					<Add directory="$(OGRE_HOME)\bin\release" />
+					<Add directory="..\..\..\..\lib\Release" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="$(OGREODE_HOME)\scripts\codeblocks\copy.bat $(OGREODE_HOME)\prefab\lib\Release\$(APPNAME) $(OGRE_HOME)\bin\release\$(APPNAME)" />
+				</ExtraCommands>
+				<Environment>
+					<Variable name="APPNAME" value="OgreOde_Prefab.dll" />
+				</Environment>
+			</Target>
+			<Environment>
+				<Variable name="OGREODE_HOME" value="$(OGRE_HOME)" />
+			</Environment>
+		</Build>
+		<Compiler>
+			<Add option="-mthreads" />
+			<Add option="-fmessage-length=0" />
+			<Add option="-fexceptions" />
+			<Add option="-fident" />
+		</Compiler>
+		<Linker>
+			<Add option="-Wl,--enable-runtime-pseudo-reloc" />
+			<Add option="-Wl,--enable-auto-image-base" />
+			<Add option="-Wl,--add-stdcall-alias" />
+		</Linker>
+		<Unit filename="..\..\include\OgreOdePrefabObject.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeRagdoll.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeVehicle.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOde_Prefab.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdePrefabObject.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeRagdoll.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeVehicle.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Extensions />
+	</Project>
+</CodeBlocks_project_file>
Index: /ogreode/prefab/scripts/Linux/keep.me
===================================================================
--- /ogreode/prefab/scripts/Linux/keep.me	(revision 21)
+++ /ogreode/prefab/scripts/Linux/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/scripts/Mac/keep.me
===================================================================
--- /ogreode/prefab/scripts/Mac/keep.me	(revision 21)
+++ /ogreode/prefab/scripts/Mac/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/scripts/VC6/keep.me
===================================================================
--- /ogreode/prefab/scripts/VC6/keep.me	(revision 21)
+++ /ogreode/prefab/scripts/VC6/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/scripts/VC7.1/OgreOde_Prefab.vcproj
===================================================================
--- /ogreode/prefab/scripts/VC7.1/OgreOde_Prefab.vcproj	(revision 21)
+++ /ogreode/prefab/scripts/VC7.1/OgreOde_Prefab.vcproj	(revision 21)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="OgreOde_Prefab"
+	ProjectGUID="{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\ode\include;..\..\..\tinyxml;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core_d.lib OgreMain_d.lib tinyxmld.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;;&quot;$(OGRE_HOME)\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Prefab_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab_d.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\ode\include;..\..\..\tinyxml;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core.lib OgreMain.lib tinyxml.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;;&quot;$(OGRE_HOME)\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\OgreOdePrefabObject.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeRagdoll.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeVehicle.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\OgreOde_Prefab.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePrefabObject.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeRagdoll.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeVehicle.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/prefab/scripts/VC7.1/OgreOde_Prefab_Source.vcproj
===================================================================
--- /ogreode/prefab/scripts/VC7.1/OgreOde_Prefab_Source.vcproj	(revision 21)
+++ /ogreode/prefab/scripts/VC7.1/OgreOde_Prefab_Source.vcproj	(revision 21)
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="OgreOde_Prefab_Source"
+	ProjectGUID="{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\ode\include;..\..\..\tinyxml;..\..\..\..\ogrenew\OgreMain\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core_d.lib OgreMain_d.lib tinyxmld.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;;&quot;..\..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Prefab_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab_d.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\ode\include;..\..\..\tinyxml;..\..\..\..\ogrenew\OgreMain\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core.lib OgreMain.lib tinyxml.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;;&quot;..\..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\OgreOdePrefabObject.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeRagdoll.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeVehicle.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\OgreOde_Prefab.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePrefabObject.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeRagdoll.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeVehicle.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/prefab/scripts/VC7/keep.me
===================================================================
--- /ogreode/prefab/scripts/VC7/keep.me	(revision 21)
+++ /ogreode/prefab/scripts/VC7/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/prefab/scripts/VC8/OgreOde_Prefab_CVS.vcproj
===================================================================
--- /ogreode/prefab/scripts/VC8/OgreOde_Prefab_CVS.vcproj	(revision 21)
+++ /ogreode/prefab/scripts/VC8/OgreOde_Prefab_CVS.vcproj	(revision 21)
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Prefab"
+	ProjectGUID="{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\..\..\Ogrenew\OgreMain\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core_d.lib OgreMain_d.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="..\..\..\..\..\Ogrenew\lib;&quot;..\..\..\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Prefab_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab_d.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="1"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\..\..\Ogrenew\OgreMain\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core.lib OgreMain.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab.dll"
+				Version="1.2"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="..\..\..\..\..\Ogrenew\lib;&quot;..\..\..\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdePrefabObject.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeRagdoll.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeVehicle.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_Prefab.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePrefabObject.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeRagdoll.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeVehicle.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/prefab/scripts/VC8/OgreOde_Prefab_SDK.vcproj
===================================================================
--- /ogreode/prefab/scripts/VC8/OgreOde_Prefab_SDK.vcproj	(revision 21)
+++ /ogreode/prefab/scripts/VC8/OgreOde_Prefab_SDK.vcproj	(revision 21)
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Prefab"
+	ProjectGUID="{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\tinyxml;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core_d.lib OgreMain_d.lib tinyxmld.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab_d.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Prefab_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab_d.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\tinyxml;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core.lib OgreMain.lib tinyxml.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(OGRE_HOME)\lib\&quot;;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdeObject.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdePrefabObject.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeRagdoll.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeVehicle.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_Prefab.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOde_PrefabPreReqs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeObject.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePrefabObject.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeRagdoll.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeVehicle.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/prefab/scripts/VC8/OgreOde_Prefab_Source.vcproj
===================================================================
--- /ogreode/prefab/scripts/VC8/OgreOde_Prefab_Source.vcproj	(revision 21)
+++ /ogreode/prefab/scripts/VC8/OgreOde_Prefab_Source.vcproj	(revision 21)
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Prefab"
+	ProjectGUID="{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\ode\include;..\..\..\..\OgreMain\include;..\..\..\tinyxml"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core_d.lib OgreMain_d.lib tinyxmld.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Prefab_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab_d.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\Samples\Common\bin\$(ConfigurationName)\$(TargetFileName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="true"
+				AdditionalIncludeDirectories="..\..\include;..\..\..\include;..\..\..\ode\include;&quot;..\..\..\..\OgreMain\include&quot;;..\..\..\tinyxml"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODEEXPORT_PREFAB"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreOde_Core.lib OgreMain.lib tinyxml.lib"
+				OutputFile="$(OutDir)/OgreOde_Prefab.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;..\..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\..\lib\$(ConfigurationName)&quot;;&quot;..\..\..\tinyxml\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Prefab.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\Samples\Common\bin\$(ConfigurationName)\$(TargetFileName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdePrefabObject.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeRagdoll.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeVehicle.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_Prefab.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePrefabObject.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeRagdoll.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeVehicle.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/prefab/src/Makefile.am
===================================================================
--- /ogreode/prefab/src/Makefile.am	(revision 21)
+++ /ogreode/prefab/src/Makefile.am	(revision 21)
@@ -0,0 +1,26 @@
+INCLUDES = \
+   $(STLPORT_CFLAGS) \
+   ${OGRE_CFLAGS} \
+   -I$(top_srcdir)/include \
+   -I../include \
+   -I$(top_srcdir)/tinyxml
+
+
+lib_LTLIBRARIES = libOgreOde_Prefab.la
+
+libOgreOde_Prefab_la_SOURCES = \
+   OgreOdeVehicle.cpp \
+   OgreOdeRagdoll.cpp \
+   OgreOdePrefabObject.cpp \
+   OgreOdeObject.cpp \
+   $(top_srcdir)/tinyxml/tinystr.cpp \
+   $(top_srcdir)/tinyxml/tinyxml.cpp \
+   $(top_srcdir)/tinyxml/tinyxmlerror.cpp \
+   $(top_srcdir)/tinyxml/tinyxmlparser.cpp
+
+
+libOgreOde_Prefab_la_LIBADD = \
+   $(OGRE_LIBS) \
+   -L$(top_srcdir)/src \
+   -lOgreOde_Core \
+   -lode 
Index: /ogreode/prefab/src/OgreOdeObject.cpp
===================================================================
--- /ogreode/prefab/src/OgreOdeObject.cpp	(revision 21)
+++ /ogreode/prefab/src/OgreOdeObject.cpp	(revision 21)
@@ -0,0 +1,8 @@
+#include "OgreOdeObject.h"
+
+
+using namespace Ogre;
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+
+//------------------------------------------------------------------------------------------------
Index: /ogreode/prefab/src/OgreOdePrefabObject.cpp
===================================================================
--- /ogreode/prefab/src/OgreOdePrefabObject.cpp	(revision 21)
+++ /ogreode/prefab/src/OgreOdePrefabObject.cpp	(revision 21)
@@ -0,0 +1,12 @@
+#include "OgreOdePreReqs.h"
+#include "OgreOde_Prefab.h"
+#include "OgreOdePrefabObject.h"
+
+using namespace Ogre;
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+
+namespace OgreOde_Prefab
+{
+    unsigned int Object::instanceNumber = 0;
+}
Index: /ogreode/prefab/src/OgreOdeRagdoll.cpp
===================================================================
--- /ogreode/prefab/src/OgreOdeRagdoll.cpp	(revision 21)
+++ /ogreode/prefab/src/OgreOdeRagdoll.cpp	(revision 21)
@@ -0,0 +1,713 @@
+
+#include "OgreOdeWorld.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeJoint.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeEntityInformer.h"
+#include "OgreOdeMass.h"
+#include "OgreOdeUtility.h"
+
+#include "OgreOde_Prefab.h"
+#include "OgreOdeRagdoll.h"
+
+using namespace Ogre;
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+
+
+//------------------------------------------------------------------------------------------------
+Ragdoll::PhysicalBone::PhysicalBone()
+{
+	_body = 0;
+	_geometry = 0;
+	_original_position = Ogre::Vector3::ZERO;
+	_original_orientation = Ogre::Quaternion::IDENTITY;
+	_bone = 0;
+	_parent_bone = 0;
+	_joint = 0;
+	_motor = 0;
+}
+//------------------------------------------------------------------------------------------------
+Ragdoll::PhysicalBone::~PhysicalBone()
+{
+	delete _joint;
+	delete _geometry;
+	delete _body;
+	delete _motor;
+
+	for (RagdollPhysicalBoneList::iterator i = _child_bones.begin();
+        i != _child_bones.end(); ++i) 
+        delete (*i);
+}
+//------------------------------------------------------------------------------------------------
+Ragdoll::BoneSettings::BoneSettings()
+{
+	_geometry_class		= Geometry::Class_Capsule;
+	_joint_type			= Joint::Type_BallJoint;
+	_primary_axis		= Ogre::Vector3::UNIT_X;
+	_secondary_axis		= Ogre::Vector3::UNIT_Y;
+	_collapse			= Ragdoll::BoneSettings::Collapse_None;
+	_mass				= 1.0;
+	_radius				= 1.0;
+	_primary_histop		= OgreOde::Utility::Infinity;
+	_primary_lostop		= -OgreOde::Utility::Infinity;
+	_secondary_histop	= OgreOde::Utility::Infinity;
+	_secondary_lostop	= -OgreOde::Utility::Infinity;
+	_linear_damping     = 0.0;
+	_angular_damping    = 0.0;
+}
+//------------------------------------------------------------------------------------------------
+Ragdoll::BoneSettings::~BoneSettings()
+{
+}
+//------------------------------------------------------------------------------------------------
+Ragdoll::Ragdoll(const String& name, MeshPtr& ptr):
+    Entity(name, ptr),
+    Object(OgreOde_Prefab::ObjectType_Ragdoll, 0)
+{ 
+	setDefaultBoneSettings(Ragdoll::BoneSettings());
+	_ei = 0;
+	_joint_group = 0;
+	_is_static = true;
+	_space = 0;
+	_is_physical = false;
+
+	_node_trans = Matrix4::IDENTITY;
+	_node_trans_inv = _node_trans.inverse();
+	_node_orient = Ogre::Quaternion::IDENTITY;
+	_node_posn = Ogre::Vector3::ZERO;
+    _is_hardwareAnimationRemovedByMe = false;
+
+    //mDisplaySkeleton = true;
+}
+
+//------------------------------------------------------------------------------------------------
+void Ragdoll::sleep(Ragdoll::PhysicalBone* bone)
+{
+	bone->_body->sleep();
+	for (RagdollPhysicalBoneList::iterator i = bone->_child_bones.begin();
+		i != bone->_child_bones.end();++i)
+	{
+		sleep(*i);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::sleep()
+{
+	if (!_is_static)
+	{
+		for (RagdollPhysicalBoneList::iterator i = _root_bones.begin();
+			i != _root_bones.end();++i)
+		{
+			sleep(*i);
+		}
+	}
+}
+//------------------------------------------------------------------------------------------------
+bool Ragdoll::isAwake(Ragdoll::PhysicalBone* bone)
+{
+	if (bone->_body->isAwake())
+		return true;
+	for (RagdollPhysicalBoneList::iterator i = bone->_child_bones.begin();
+		i != bone->_child_bones.end();++i)
+	{
+		if (isAwake(*i) == true)
+			return true;
+	}
+	return false;
+}
+//------------------------------------------------------------------------------------------------
+bool Ragdoll::isAwake()
+{
+	if (!_is_static)
+	{
+		for (RagdollPhysicalBoneList::iterator i = _root_bones.begin();
+			i != _root_bones.end();++i)
+		{
+			if (isAwake(*i) == true)
+				return true;
+		}
+	}
+	return false;
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::wake(Ragdoll::PhysicalBone* bone)
+{
+	bone->_body->wake();
+	for (RagdollPhysicalBoneList::iterator i = bone->_child_bones.begin();
+		i != bone->_child_bones.end();++i)
+	{
+		wake(*i);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::wake()
+{
+	if (!_is_static)
+	{
+		for (RagdollPhysicalBoneList::iterator i = _root_bones.begin();
+			i != _root_bones.end();++i)
+		{
+			wake(*i);
+		}
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::setDefaultBoneSettings(const Ragdoll::BoneSettings &settings)
+{
+	_default_bone_settings = settings;
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::setBoneSettings(const String& bone_name,const Ragdoll::BoneSettings &settings)
+{
+	_bone_settings.insert(std::pair<String,Ragdoll::BoneSettings>(bone_name,settings));
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::setSelfCollisions(bool collide)
+{
+	_space->setInternalCollisions(collide);
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::takePhysicalControl(World *world, Space* space,bool static_geometry)
+{
+    _world = world;
+    // disable Hardware Animation
+    assert (hasSkeleton()) ;
+    if (isHardwareAnimationEnabled())
+    {    
+        const unsigned int numSubEntities  = getNumSubEntities ();
+        for (unsigned int k = 0; k < numSubEntities; k++)
+        {
+            SubEntity *subEntity = getSubEntity (k);
+
+            MaterialPtr mHWAnimated = MaterialManager::getSingleton().getByName(subEntity->getMaterialName ());
+            // check if we didn't modify that once before
+            MaterialPtr mSWAnimated = MaterialManager::getSingleton().getByName(subEntity->getMaterialName ()  + "ClonedSW");
+            if (mSWAnimated.isNull ())
+            {
+                mSWAnimated = mHWAnimated->clone (subEntity->getMaterialName () + "ClonedSW");
+                mSWAnimated->load ();
+
+                bool notEmptiedOfHWTechnique = true;
+                bool removedAtLeastOne = false;
+                Technique *t;
+                while (notEmptiedOfHWTechnique)
+                {              
+                    unsigned short i = 0  ;     
+                    const unsigned short numTechniques = mSWAnimated->getNumSupportedTechniques ();
+                    while (i < numTechniques)
+                    {
+                        t = mSWAnimated->getSupportedTechnique (i);
+                        if (t->getPass(0) &&
+                            t->getPass(0)->hasVertexProgram() &&
+                            t->getPass(0)->getVertexProgram()->isSkeletalAnimationIncluded()
+                            //t->getPass(0)->getVertexProgram()->isPoseAnimationIncluded() ??
+                            )
+                        {
+                            mSWAnimated->removeTechnique (i);
+                            removedAtLeastOne = true;
+                            break;
+                        }
+                        i++;
+                    }
+                    if (i == numTechniques)
+                    {
+                        notEmptiedOfHWTechnique = false;
+                        mSWAnimated->reload ();
+                    }
+                    // re-loop to ensure there is no HW animation left...                   
+                }
+            }
+            subEntity->setMaterialName (mSWAnimated->getName());                
+        }
+        _is_hardwareAnimationRemovedByMe = true;
+    }
+
+	// Cache node transformations
+	_node_posn = mParentNode->_getDerivedPosition();
+	_node_orient = mParentNode->_getDerivedOrientation();
+	_node_trans = mParentNode->_getFullTransform();
+	_node_trans_inv = _node_trans.inverse();
+
+	_space = new SimpleSpace(world, space);
+	_space->setInternalCollisions(false);
+	_space->setAutoCleanup(false);
+
+	_is_physical = true;
+	_is_static = static_geometry;
+
+	_joint_group = new JointGroup(_world);
+
+	_ei = new EntityInformer(this, _node_trans);
+
+
+    addSoftwareAnimationRequest(false);
+
+    Skeleton::BoneIterator rbi = mSkeletonInstance->getRootBoneIterator();
+
+	while(rbi.hasMoreElements())
+	{
+		createBoneBody(rbi.getNext(), 0, static_geometry);
+	}
+
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::createBoneBody(Bone *bone,Ragdoll::PhysicalBone *parent,bool static_geometry)
+{
+	// We're controlling the bone now
+	bone->setManuallyControlled (true);
+    //bone->setInheritOrientation (false);
+
+	// Make up a name
+	String body_name = mName + bone->getName();
+
+	// Cache bone transformations
+	Matrix4 bone_trans = bone->_getFullTransform();
+	Vector3 bone_posn = bone->_getDerivedPosition();
+	Quaternion bone_orient = bone->_getDerivedOrientation();
+
+	// Find the settings for this bone, or use defaults
+	std::map<String,Ragdoll::BoneSettings>::iterator i = _bone_settings.find(bone->getName());
+	Ragdoll::BoneSettings settings = (i != _bone_settings.end())? i->second : _default_bone_settings;	
+	Ragdoll::PhysicalBone *physical_bone = 0;
+
+	// Create an oriented capsule
+	if (settings._geometry_class == Geometry::Class_Capsule)
+	{
+		// Create the geometry
+		CapsuleGeometry *geom = _ei->createOrientedCapsule(bone->getHandle(), _world, _space);
+		if (geom)
+		{
+			// Create a bone
+			physical_bone = new Ragdoll::PhysicalBone();
+			physical_bone->_body = (static_geometry)?0:(new Body(_world, body_name));
+			physical_bone->_geometry = geom;
+
+			// Don't collapse, set capsule inertia tensor
+			if (settings._collapse == Ragdoll::BoneSettings::Collapse_None)
+			{
+				if (physical_bone->_body) 
+                    physical_bone->_body->setMass(
+                            CapsuleMass(settings._mass,
+                                        geom->getRadius(),
+                                        Ogre::Vector3::UNIT_Z,
+                                        geom->getLength()));
+			}
+			else
+			{
+				// Get the details of the capsule we created and work out where it is in relation to the bone (joint)
+				const Ogre::Real radius = geom->getRadius();
+				const Ogre::Real length = geom->getLength();
+				const Ogre::Quaternion orient = geom->getOrientation(); 
+				
+				const Ogre::Vector3 jpos = _node_trans * bone_posn;
+				const Ogre::Vector3 posn = geom->getPosition();
+				const Ogre::Vector3 offs = jpos - posn;
+
+				// Don't need the capsule geometry anymore, create a new sphere one
+				delete geom;
+                SphereGeometry *newGeom = new SphereGeometry(radius, _world, _space);
+				physical_bone->_geometry = newGeom;
+				if (physical_bone->_body) 
+                    physical_bone->_body->setMass(SphereMass(settings._mass,radius));
+
+				// Move the geometry up away from the joint, or down to the joint
+				if (settings._collapse == Ragdoll::BoneSettings::Collapse_Up)
+				{
+					newGeom->setPosition(posn - offs);
+					newGeom->setOrientation(orient);
+				}
+				else
+				{
+					newGeom->setPosition(posn + offs);
+					newGeom->setOrientation(orient);
+				}
+			}
+		}
+	}
+	// Create an oriented box
+	else if (settings._geometry_class == Geometry::Class_Box)
+	{
+		BoxGeometry *geom = _ei->createOrientedBox(bone->getHandle(), _world, _space);
+		if (geom)
+		{
+			physical_bone = new Ragdoll::PhysicalBone();
+			physical_bone->_body = (static_geometry)?0:(new Body(_world, body_name));
+			physical_bone->_geometry = geom;
+
+			if (physical_bone->_body) 
+                physical_bone->_body->setMass(
+                        BoxMass(settings._mass, geom->getSize()));
+		}
+	}
+	// Don't create any geometry
+	else if (settings._geometry_class == Geometry::Class_NoGeometry)
+	{
+		physical_bone = new Ragdoll::PhysicalBone();
+		physical_bone->_body = (static_geometry)?0:(new Body(_world, body_name));
+
+		if (physical_bone->_body)
+		{
+			physical_bone->_body->setMass(SphereMass(settings._mass,settings._radius));
+			physical_bone->_body->setPosition(_node_trans * bone_posn);
+		}
+	}
+	
+	if (physical_bone)
+    {
+        // set what does control the bone
+        physical_bone->_parent_bone = parent;
+        physical_bone->_bone = bone;
+
+		// Sync the body and geometry
+		if ((physical_bone->_body) && (physical_bone->_geometry))
+		{
+			physical_bone->_body->setPosition(physical_bone->_geometry->getPosition());
+			physical_bone->_body->setOrientation(physical_bone->_geometry->getOrientation());
+		}
+
+		if (physical_bone->_geometry)
+		{
+			physical_bone->_geometry->setBody(physical_bone->_body);
+			physical_bone->_geometry->setUserObject(this);
+		}
+
+		if (physical_bone->_body)
+		{
+			physical_bone->_original_orientation = bone_orient.UnitInverse() * (_node_orient.UnitInverse() * physical_bone->_body->getOrientation());
+			physical_bone->_original_position = physical_bone->_body->getPointBodyPosition(_node_trans * bone_posn);
+
+			physical_bone->_body->setDamping(settings._linear_damping,settings._angular_damping);
+		}
+
+        // update and record in parent
+		if ((physical_bone->_parent_bone) 
+            && (physical_bone->_parent_bone->_body) 
+            && (physical_bone->_body))
+		{
+			if (settings._joint_type == Joint::Type_BallJoint)
+			{
+				physical_bone->_joint = new BallJoint(_world, _joint_group);
+				physical_bone->_joint->attach(physical_bone->_parent_bone->_body,physical_bone->_body);
+				physical_bone->_joint->setAnchor(_node_trans * bone_posn);
+
+				physical_bone->_motor = new AngularMotorJoint(_world, _joint_group);
+				physical_bone->_motor->attach(physical_bone->_parent_bone->_body,physical_bone->_body);
+				physical_bone->_motor->setMode(AngularMotorJoint::Mode_UserAngularMotor);
+				physical_bone->_motor->setAnchor(_node_trans * bone_posn);
+				physical_bone->_motor->setAxisCount(2);
+				
+				physical_bone->_motor->setAxis(1,AngularMotorJoint::RelativeOrientation_FirstBody,(_node_orient * physical_bone->_parent_bone->_bone->_getDerivedOrientation()) * settings._primary_axis);
+				physical_bone->_motor->setAngle(1,0);
+				physical_bone->_motor->setParameter(Joint::Parameter_LowStop,settings._primary_lostop,1);
+				physical_bone->_motor->setParameter(Joint::Parameter_HighStop,settings._primary_histop,1);
+
+				physical_bone->_motor->setAxis(2,AngularMotorJoint::RelativeOrientation_FirstBody,(_node_orient * physical_bone->_parent_bone->_bone->_getDerivedOrientation()) * settings._secondary_axis);
+				physical_bone->_motor->setAngle(2,0);
+				physical_bone->_motor->setParameter(Joint::Parameter_LowStop,settings._secondary_lostop,2);
+				physical_bone->_motor->setParameter(Joint::Parameter_HighStop,settings._secondary_histop,2);
+			}
+			else if (settings._joint_type == Joint::Type_HingeJoint)
+			{
+				physical_bone->_joint = new HingeJoint(_world, _joint_group);
+				physical_bone->_joint->attach(physical_bone->_parent_bone->_body,physical_bone->_body);
+				physical_bone->_joint->setAnchor(_node_trans * bone_posn);
+				physical_bone->_joint->setAxis((_node_orient * physical_bone->_parent_bone->_bone->_getDerivedOrientation()) * settings._primary_axis);
+
+				physical_bone->_joint->setParameter(Joint::Parameter_LowStop,settings._primary_lostop);
+				physical_bone->_joint->setParameter(Joint::Parameter_HighStop,settings._primary_histop);
+			}
+			else if (settings._joint_type == Joint::Type_UniversalJoint)
+			{
+				physical_bone->_joint = new UniversalJoint(_world, _joint_group);
+				physical_bone->_joint->attach(physical_bone->_parent_bone->_body,physical_bone->_body);
+				physical_bone->_joint->setAnchor(_node_trans * bone_posn);
+				physical_bone->_joint->setAxis((_node_orient * physical_bone->_parent_bone->_bone->_getDerivedOrientation()) * settings._primary_axis);
+				physical_bone->_joint->setAdditionalAxis((_node_orient * physical_bone->_parent_bone->_bone->_getDerivedOrientation()) * settings._secondary_axis);
+
+				physical_bone->_joint->setParameter(Joint::Parameter_LowStop,settings._primary_lostop);
+				physical_bone->_joint->setParameter(Joint::Parameter_HighStop,settings._primary_histop);
+
+				physical_bone->_joint->setParameter(Joint::Parameter_LowStop,settings._secondary_lostop,2);
+				physical_bone->_joint->setParameter(Joint::Parameter_HighStop,settings._secondary_histop,2);
+			}
+			else if (settings._joint_type == Joint::Type_FixedJoint)
+			{
+				physical_bone->_joint = new FixedJoint(_world, _joint_group);
+				physical_bone->_joint->attach(physical_bone->_parent_bone->_body,physical_bone->_body);
+				physical_bone->_joint->setAnchor(_node_trans * bone_posn);
+			}
+
+			physical_bone->_parent_bone->_child_bones.push_back(physical_bone);
+		}
+		else 
+        {
+            _root_bones.push_back(physical_bone);
+        }
+	}
+
+	Node::ChildNodeIterator cni = bone->getChildIterator();
+	while(cni.hasMoreElements())
+	{
+		createBoneBody((Bone*)cni.getNext(),(physical_bone)?physical_bone:parent,static_geometry);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::turnToStone(Ragdoll::PhysicalBone* bone)
+{
+	if(bone->_geometry != 0) 
+		bone->_geometry->setBody(0);
+
+	delete bone->_motor;
+	delete bone->_joint;
+	delete bone->_body;
+
+	bone->_motor = 0;
+	bone->_joint = 0;
+	bone->_body = 0;
+
+	for (RagdollPhysicalBoneList::iterator i = bone->_child_bones.begin();i != bone->_child_bones.end();++i)
+	{
+		turnToStone(*i);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::turnToStone()
+{
+	if (!_is_static)
+	{
+		for (RagdollPhysicalBoneList::iterator i = _root_bones.begin();
+            i != _root_bones.end();++i)
+		{
+			turnToStone(*i);
+		}
+
+		delete _joint_group;
+		_joint_group = 0;
+
+		_is_static = true;
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::releasePhysicalControl(Ragdoll::PhysicalBone* bone)
+{
+	bone->_bone->setManuallyControlled(false);
+
+	delete bone->_geometry;
+	bone->_geometry = 0;
+
+	for (RagdollPhysicalBoneList::iterator i = bone->_child_bones.begin();i != bone->_child_bones.end();++i)
+	{
+		releasePhysicalControl(*i);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::releasePhysicalControl()
+{
+	turnToStone();
+    
+	if (_is_physical)
+    {
+       // re-enable hardware Animation if previously disabled
+        if (_is_hardwareAnimationRemovedByMe) 
+        {
+            const unsigned int numSubEntities  = getNumSubEntities ();
+            for (unsigned int k = 0; k < numSubEntities; k++)
+            {
+                SubEntity *subEntity = getSubEntity (k);
+                const String hwMatName (subEntity->getMaterialName ());
+                MaterialPtr mSWAnimated = MaterialManager::getSingleton().getByName(hwMatName);
+                assert (std::string::npos != hwMatName.find("ClonedSW"));
+                const String swMatName(hwMatName, 0, hwMatName.find("ClonedSW"));
+                MaterialPtr mHWAnimated = MaterialManager::getSingleton().getByName(swMatName);
+                assert (!mHWAnimated.isNull ());
+                
+                subEntity->setMaterialName (mHWAnimated->getName());                
+            }
+            _is_hardwareAnimationRemovedByMe = false;
+        }
+
+		for (RagdollPhysicalBoneList::iterator i = _root_bones.begin();i != _root_bones.end();++i)
+		{
+			releasePhysicalControl(*i);
+			delete (*i);
+		}
+		_root_bones.clear();
+
+		delete _space;
+		_space = 0;
+
+        _is_physical = false;
+
+        removeSoftwareAnimationRequest(false);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::updatePhysicalBone(Ragdoll::PhysicalBone *physical_bone,const Matrix4 &this_trans,const Matrix4 &base_trans)
+{
+
+    // USE OF BASE_TRANS ???
+	Quaternion body_orient = physical_bone->_body->getOrientation() * physical_bone->_original_orientation.UnitInverse();
+	Quaternion bone_orient = Ogre::Quaternion::IDENTITY;
+
+	Vector3 body_posn = physical_bone->_body->getPointWorldPosition(physical_bone->_original_position);
+	Vector3 bone_posn = Ogre::Vector3::ZERO;
+
+	Matrix3 bone_rot;
+	body_orient.ToRotationMatrix(bone_rot);
+
+	Matrix4 bone_trans = Matrix4::IDENTITY;
+	bone_trans = bone_rot;
+	bone_trans.setTrans(body_posn);
+
+	bone_trans = this_trans.inverse() * bone_trans;
+
+	bone_posn = Ogre::Vector3(bone_trans[0][3], bone_trans[1][3], bone_trans[2][3]);
+	bone_trans.extract3x3Matrix(bone_rot);
+	bone_orient.FromRotationMatrix(bone_rot);
+
+	physical_bone->_bone->setOrientation(bone_orient);
+	physical_bone->_bone->setPosition(bone_posn);
+
+    //physical_bone->_bone->needUpdate (true);
+
+	for (RagdollPhysicalBoneList::iterator i = physical_bone->_child_bones.begin();
+        i != physical_bone->_child_bones.end();++i)
+	{
+		updatePhysicalBone(*i,
+            base_trans * (*i)->_bone->getParent()->_getFullTransform(),
+            base_trans);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::update()
+{
+	if ((_is_physical) && (!_is_static))
+	{		
+		for (RagdollPhysicalBoneList::iterator i = _root_bones.begin();
+            i != _root_bones.end();++i)
+		{
+			updatePhysicalBone(*i, _node_trans, _node_trans);
+		}
+		mParentNode->needUpdate();        
+	}
+}
+//------------------------------------------------------------------------------------------------
+const AxisAlignedBox& Ragdoll::getBoundingBox(void) const
+{
+	if (_space)
+	{
+		// Get from space and convert to local 
+		mFullBoundingBox = _space->getAxisAlignedBox();
+		mFullBoundingBox.transform(_node_trans_inv);
+	}
+	else
+	{
+		// Get from Mesh
+		mFullBoundingBox = mMesh->getBounds();
+		mFullBoundingBox.merge(getChildObjectsBoundingBox());
+	}
+	return mFullBoundingBox;
+}
+//------------------------------------------------------------------------------------------------
+bool Ragdoll::collision(Contact* contact)
+{
+	Body *body = contact->getFirstGeometry()->getBody();
+	if (!body) 
+        body = contact->getSecondGeometry()->getBody();
+	_hit_list.push_back(std::pair<Body*,Vector3>(body,contact->getPosition()));
+	return false;
+}
+//------------------------------------------------------------------------------------------------
+void Ragdoll::pick(Ragdoll::PhysicalBone *bone,RayGeometry *ray)
+{
+	if (bone->_geometry) 
+        ray->collide(bone->_geometry,this);
+	
+	for (RagdollPhysicalBoneList::iterator i = bone->_child_bones.begin();
+        i != bone->_child_bones.end();++i)
+	{
+		pick(*i,ray);
+	}
+}
+//------------------------------------------------------------------------------------------------
+bool Ragdoll::pick(RayGeometry *ray,Body* &body,Vector3 &position)
+{
+	_hit_list.clear();
+	for (RagdollPhysicalBoneList::iterator i = _root_bones.begin();
+        i != _root_bones.end();++i)
+	{
+		pick(*i, ray);
+	}
+
+	const bool rc = (_hit_list.empty())? false : true;
+
+	if (rc)
+	{
+	    const Ogre::Real dist = ray->getLength();
+	    for (std::vector<std::pair<Body*,Vector3> >::iterator i = _hit_list.begin();
+            i != _hit_list.end();++i)
+	    {
+		    const Ogre::Real this_dist = (i->second - ray->getPosition()).length();
+		    if (this_dist < dist)
+		    {
+			    body = i->first;
+			    position = i->second;
+		    }
+	    }
+	}
+
+	return rc;
+}
+//------------------------------------------------------------------------------------------------
+Ragdoll::~Ragdoll()
+{
+    releasePhysicalControl ();
+	for (RagdollPhysicalBoneList::iterator i = _root_bones.begin();i != _root_bones.end();++i) 
+        delete (*i);
+	delete _space;
+	delete _ei;
+	delete _joint_group;
+}
+
+//-----------------------------------------------------------------------
+//-----------------------------------------------------------------------
+String RagdollFactory::FACTORY_TYPE_NAME = "ODERagdoll";
+//-----------------------------------------------------------------------
+const String& RagdollFactory::getType(void) const
+{
+	return FACTORY_TYPE_NAME;
+}
+//-----------------------------------------------------------------------
+MovableObject* RagdollFactory::createInstanceImpl( const String& name,
+												  const NameValuePairList* params)
+{
+	// must have mesh parameter
+	MeshPtr pMesh;
+	if (params != 0)
+	{
+		NameValuePairList::const_iterator ni = params->find("mesh");
+		if (ni != params->end())
+		{
+			// Get mesh (load if required)
+			pMesh = MeshManager::getSingleton().load(
+				ni->second,
+				// note that you can change the group by pre-loading the mesh
+				ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME );
+		}
+	}
+	if (pMesh.isNull())
+	{
+		OGRE_EXCEPT(Exception::ERR_INVALIDPARAMS,
+			"'mesh' parameter required when constructing an Ragdoll.",
+			"RagdollFactory::createInstance");
+	}
+	return new Ragdoll(name, pMesh);
+
+}
+//-----------------------------------------------------------------------
+void RagdollFactory::destroyInstance( MovableObject* obj)
+{
+	delete obj;
+} 
Index: /ogreode/prefab/src/OgreOdeVehicle.cpp
===================================================================
--- /ogreode/prefab/src/OgreOdeVehicle.cpp	(revision 21)
+++ /ogreode/prefab/src/OgreOdeVehicle.cpp	(revision 21)
@@ -0,0 +1,657 @@
+#include "OgreOdeWorld.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeJoint.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeVehicle.h"
+#include "OgreOdeEntityInformer.h"
+#include "OgreOdeMass.h"
+#include "OgreOdeUtility.h"
+
+#include "OgreOdeVehicle.h"
+
+using namespace Ogre;
+using namespace OgreOde;
+using namespace OgreOde_Prefab;
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Real Vehicle::Wheel::FudgeFactor = 0.1;
+
+//------------------------------------------------------------------------------------------------
+Vehicle::Wheel::Wheel(Vehicle* vehicle,const String& name,const String& mesh,const Ogre::Vector3& position,Real mass, World *world, Space* space):
+	Object(OgreOde_Prefab::ObjectType_Wheel, world) 
+{
+	_owner = vehicle;
+	_name = name;
+
+	_entity = _world->getSceneManager()->createEntity(name + "_Entity",mesh);
+	_entity->setCastShadows(true);	
+
+	EntityInformer ei(_entity);
+	_radius = ei.getRadius();
+
+	_node = _world->getSceneManager()->getRootSceneNode()->createChildSceneNode(name + "_Node");
+	_node->setPosition(position);
+	_body = new Body(_world, name + "_Body");
+
+
+	_node->attachObject(_entity);
+	_node->attachObject(_body);
+
+	_body->setMass(SphereMass(mass,_radius));
+
+	_geometry = new SphereGeometry(_radius, _world, space);
+	_geometry->setBody(_body);
+	_geometry->setUserObject(this);
+
+	_joint = new SuspensionJoint(_world);
+	_joint->attach(vehicle->getBody(),_body);
+	_joint->setAnchor(_body->getPosition());
+	_joint->setAxis(Vector3::UNIT_Y);
+	_joint->setAdditionalAxis(Vector3::NEGATIVE_UNIT_X);
+	_joint->setParameter(Joint::Parameter_FudgeFactor,Vehicle::Wheel::FudgeFactor);
+	
+	_bouncyness = _friction = _fds = 0.0;
+
+	setSteerFactor(0.0);
+	setSteerLimit(0.0);
+	setSteerForce(0.0);
+	setSteerSpeed(0.0);
+			
+	setPowerFactor(0.0);
+			
+	setBrakeFactor(0.0);
+
+	setSteer(0.0);
+}
+
+
+//------------------------------------------------------------------------------------------------
+void Vehicle::Wheel::setFactors(Real steer,Real power,Real brake)
+{
+	setSteerFactor(steer);
+	setPowerFactor(power);
+	setBrakeFactor(brake);
+}
+
+
+//------------------------------------------------------------------------------------------------
+Real Vehicle::Wheel::getRPM()
+{
+	return ((_joint)&&(_power_factor > 0.0))?_joint->getParameter(Joint::Parameter_MotorVelocity,2):0.0;
+}
+
+
+//------------------------------------------------------------------------------------------------
+Real Vehicle::Wheel::getSteer()
+{
+	return ((_joint)&&(_steer_factor != 0.0))?_joint->getAngle():0.0;
+}
+
+
+//------------------------------------------------------------------------------------------------
+void Vehicle::Wheel::setSteerFactor(Real factor)
+{
+	_steer_factor = factor;
+	adjustJointParameters();
+}
+
+
+//------------------------------------------------------------------------------------------------
+void Vehicle::Wheel::setSteerLimit(Real limit)
+{
+	_steer_limit = limit;
+	adjustJointParameters();
+}
+
+
+//------------------------------------------------------------------------------------------------
+void Vehicle::Wheel::adjustJointParameters()
+{
+	if (_joint)
+	{
+		_joint->setParameter(Joint::Parameter_HighStop,_steer_limit * fabs(_steer_factor));
+		_joint->setParameter(Joint::Parameter_LowStop,-(_steer_limit * fabs(_steer_factor)));
+	}
+}
+
+
+//------------------------------------------------------------------------------------------------
+/* 
+According to the ODE docs;
+
+By adjusting the values of ERP and CFM, you can achieve various effects. 
+For example you can simulate springy constraints, where the two bodies oscillate 
+as though connected by springs. Or you can simulate more spongy constraints, without 
+the oscillation. In fact, ERP and CFM can be selected to have the same effect as any 
+desired spring and damper constants. If you have a spring constant kp and damping constant kd, 
+then the corresponding ODE constants are:
+
+ERP = h kp / (h kp + kd)
+CFM = 1 / (h kp + kd)
+
+where h is the stepsize. These values will give the same effect as a spring-and-damper 
+system simulated with implicit first order integration.
+*/
+void Vehicle::Wheel::setSuspension(Real spring_constant,Real damping_constant,Real step_size)
+{
+	_spring = spring_constant;
+	_damping = damping_constant;
+	_step = step_size;
+
+	if (_joint)
+	{
+		_joint->setParameter(Joint::Parameter_SuspensionERP,_step * _spring / (_step * _spring + _damping));
+		_joint->setParameter(Joint::Parameter_SuspensionCFM,1.0 / (_step * _spring + _damping));
+	}
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& Vehicle::Wheel::getPosition()
+{
+	return _body->getPosition();
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Quaternion& Vehicle::Wheel::getOrientation()
+{
+	return _body->getOrientation();
+}
+void Vehicle::Wheel::setPosition(const Ogre::Vector3& position)
+{
+	_body->setPosition(position);
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Wheel::update(Real power_force,Real desired_rpm,Real brake_force)
+{
+	if (!_joint) return;
+
+	Real force = (power_force * _power_factor) - (brake_force * _brake_factor);
+
+	if (force > 0.0)
+	{
+		_joint->setParameter(Joint::Parameter_MotorVelocity,desired_rpm,2);
+		_joint->setParameter(Joint::Parameter_MaximumForce,force,2);
+	}
+	else
+	{
+		_joint->setParameter(Joint::Parameter_MotorVelocity,0.01,2);
+		_joint->setParameter(Joint::Parameter_MaximumForce,-force,2);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Wheel::setSteer(Real position)
+{
+	Real steer_angle = position * _steer_limit;
+
+	// Steer
+	if (_steer_limit * _steer_factor != 0.0)
+	{
+		Real vel = (steer_angle * _steer_factor) - _joint->getAngle();
+		vel *= (_steer_speed * fabs(_steer_factor));
+
+		_joint->setParameter(Joint::Parameter_MotorVelocity,vel);
+		_joint->setParameter(Joint::Parameter_MaximumForce,_steer_force);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Wheel::snapOff()
+{
+	delete _joint;
+	_joint = 0;
+}
+//------------------------------------------------------------------------------------------------
+Vehicle::Wheel::~Wheel()
+{
+	delete _joint;
+	delete _body;
+	delete _geometry;
+
+	_world->getSceneManager()->getRootSceneNode()->removeAndDestroyChild(_node->getName());
+	_world->getSceneManager()->destroyEntity(_entity->getName());
+}
+//------------------------------------------------------------------------------------------------
+Vehicle::Vehicle(const Ogre::String& name,const Ogre::String& mesh, Ogre::Real mass, 
+                 OgreOde::World *world, 
+                 OgreOde::Space* space,
+                 const Ogre::Vector3& offset,
+                 OgreOde::Geometry* geometry):
+	Object(OgreOde_Prefab::ObjectType_Sphere_Wheeled_Vehicle, world),
+    _name ( name),
+    _antisway (false),
+    _swayRate (Ogre::Real(0.0)),
+    _swayLastUpdate (Ogre::Real(0.0)),
+    _swayForce (Ogre::Real(0.0)),
+    _swayForceLimit (0)
+
+{
+	
+	_entity = _world->getSceneManager()->createEntity(name + "_Entity",mesh);
+	_entity->setCastShadows(true);
+	_node = _world->getSceneManager()->getRootSceneNode()->createChildSceneNode(name + "_Node");
+    _body = new Body(_world, name + "_Body");
+
+	_trans_node = _node->createChildSceneNode("Trans_" + _node->getName());
+	_trans_node->attachObject(_entity);
+	_node->attachObject(_body);
+
+	EntityInformer ei(_entity);
+	Vector3 box = ei.getSize();
+	
+	BoxMass box_mass(mass,Vector3(box.x,box.y,box.z));
+	_body->setMass(box_mass);
+
+    _space = new SimpleSpace(_world, space ? space : _world->getDefaultSpace());
+	_space->setInternalCollisions(false);
+	_space->setAutoCleanup(false);
+
+	_offset = -offset;
+
+	if (!geometry) 
+		_geometry = new BoxGeometry(box, _world, space ? space : _world->getDefaultSpace());
+	else 
+		_geometry = geometry;
+	_geometry->setUserObject(this);
+
+	_transform = new TransformGeometry(_world, _space);
+	_transform->setEncapsulatedGeometry(_geometry);
+	_transform->setBody(_body);
+	_geometry->setPosition(_offset);
+
+	_trans_node->setPosition(_offset);
+
+	_engine = new Vehicle::Engine();
+}
+//------------------------------------------------------------------------------------------------
+    Vehicle::Vehicle(const Ogre::String& name, 
+                    OgreOde::World *world, 
+                    OgreOde::Space* space,
+                    OgreOde::Geometry* geometry) : 
+        Object(OgreOde_Prefab::ObjectType_Sphere_Wheeled_Vehicle, world),
+        _name (name),
+        _antisway(false),
+        _swayRate (Ogre::Real(0.0)),
+        _swayLastUpdate (Ogre::Real(0.0)),
+        _swayForce (Ogre::Real(0.0)),
+        _swayForceLimit (0),
+        _entity (0),
+        _geometry (geometry),
+        _transform (0)
+{
+
+        _space = new SimpleSpace(_world, space?space:_world->getDefaultSpace());
+	_space->setInternalCollisions(false);
+	_space->setAutoCleanup(false);
+
+	_engine = new Vehicle::Engine();
+
+	_node = _world->getSceneManager()->getRootSceneNode()->createChildSceneNode(_name  + Ogre::StringConverter::toString (instanceNumber) + "_Node");
+	_body = new Body(_world, _name  + Ogre::StringConverter::toString (instanceNumber) + "_Body");
+
+	_trans_node = _node->createChildSceneNode("Trans_" + _node->getName());
+	_node->attachObject(_body);
+
+	if (_geometry) 
+		_geometry->setUserObject(this);
+	
+}
+//------------------------------------------------------------------------------------------------
+Vehicle::Wheel* Vehicle::addWheel(const String& mesh,const Ogre::Vector3& position,Real mass)
+{
+	const String wheelName ( _name +  
+		Ogre::StringConverter::toString (instanceNumber) +  
+		"_Wheel" + 
+		StringConverter::toString((unsigned int)_wheels.size() + 1));
+
+	Vehicle::Wheel* wheel = new Vehicle::Wheel(this, 
+												wheelName, 
+												mesh, 
+												position + _body->getPosition() + _offset,
+												mass,
+                                                _world,
+												_space);
+	_wheels.push_back(wheel);
+	return wheel;
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& Vehicle::getPosition()
+{
+    _lastPosition = _body->getPosition() + _offset;
+	return _lastPosition;
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Quaternion& Vehicle::getOrientation()
+{
+	return _body->getOrientation();
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::setPosition(const Ogre::Vector3& position)
+{
+	for (std::vector<Vehicle::Wheel*>::iterator i = _wheels.begin();i != _wheels.end();i++)
+	{
+		Vector3 diff = (*i)->getPosition() - _body->getPosition();
+		(*i)->setPosition(position + diff);
+	}
+	_body->setPosition(position);
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::setSuspension(Real spring_constant,Real damping_constant,Real step_size)
+{
+	for (std::vector<Vehicle::Wheel*>::iterator i = _wheels.begin();i != _wheels.end();i++)
+	{
+		(*i)->setSuspension(spring_constant,damping_constant,step_size);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::setInputs(bool left,bool right,bool throttle,bool brake)
+{
+    if (left || right || throttle)
+    {
+        for (std::vector<Vehicle::Wheel*>::iterator i = _wheels.begin();i != _wheels.end();i++)
+        {
+            (*i)->getBody()->wake();
+        }
+        _body->wake();
+    }
+	_engine->setInputs(throttle,brake);
+	setSteering(0.0 + ((right)?1.0:0.0) - ((left)?1.0:0.0));
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::setInputs(Real steering_position,Real throttle_brake)
+{
+	_engine->setInputs(throttle_brake);
+	setSteering(steering_position);
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::setInputs(Real steering_position,Real throttle_position,Real brake_position)
+{
+	_engine->setInputs(throttle_position,brake_position);
+	setSteering(steering_position);
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::setSteering(Real steering_position)
+{
+	for (std::vector<Vehicle::Wheel*>::iterator i = _wheels.begin();i != _wheels.end();i++)
+	{
+		(*i)->setSteer(steering_position);
+	}
+}
+//------------------------------------------------------------------------------------------------
+Real Vehicle::getVelocity()
+{
+	return _body->getLinearVelocity().length();
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::applyAntiSwayBarForces (  )
+{
+	Real amt;
+	Body * wheelBody;
+	for( int i = 0; i < 4; i++)
+	{
+		SuspensionJoint * const wheelJoint = static_cast<SuspensionJoint*>( _wheels.at( i )->getBody()->getJoint(0) );
+		const Ogre::Vector3 anchor2 (wheelJoint->getAdditionalAnchor());
+		const Ogre::Vector3 anchor1 (wheelJoint->getAnchor());
+		const Ogre::Vector3 axis (wheelJoint->getAxis());
+		const Ogre::Real displacement = ( anchor1 - anchor2 ).dotProduct( axis );
+		if( displacement > 0 )
+		{
+
+			amt = displacement * _swayForce;
+			if( amt > _swayForceLimit ) 
+				amt = _swayForceLimit;
+
+			// force down
+			wheelBody = _wheels.at( i )->getBody();
+			wheelBody->addForce( -axis * amt );
+
+			// force up
+			wheelBody = _wheels.at( i^1 )->getBody();
+			wheelBody->addForce( axis * amt );
+		}
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::update(Real time)
+{
+	std::vector<Vehicle::Wheel*>::iterator b = _wheels.begin();
+	std::vector<Vehicle::Wheel*>::iterator e = _wheels.end();
+
+	Real rpm = FLT_MIN;
+
+	for (std::vector<Vehicle::Wheel*>::iterator i = b;i != e;i++)
+	{
+		rpm = std::max(rpm,(*i)->getRPM());
+	}
+
+	_engine->update(time);
+	Real power = _engine->getPowerAtRPM(rpm);
+	Real desired_rpm = _engine->getDesiredRPM();
+	Real brake = _engine->getBrakeForce();
+
+	for (std::vector<Vehicle::Wheel*>::iterator i = b;i != e;i++)
+	{
+		(*i)->update(power,desired_rpm,brake);
+	}
+	
+	if (_antisway)
+	{
+		_swayLastUpdate += time;
+		if  (_swayLastUpdate > _swayRate)
+		{
+			applyAntiSwayBarForces ();
+			_swayLastUpdate =Ogre::Real(0.0);
+		}
+	}
+}
+//------------------------------------------------------------------------------------------------
+Vehicle::Wheel* Vehicle::findWheel(Geometry* geometry)
+{
+	for (std::vector<Vehicle::Wheel*>::iterator i = _wheels.begin();i != _wheels.end();i++)
+	{
+		if ((*i)->getGeometry() == geometry)
+			return (*i);
+	}
+	return 0;
+}
+//------------------------------------------------------------------------------------------------
+Vehicle::~Vehicle()
+{
+	// _world->unregisterVehicle(_name);
+
+	for (std::vector<Vehicle::Wheel*>::iterator i = _wheels.begin();i != _wheels.end();i++) 
+		delete (*i);
+
+	delete _body;
+	delete _geometry;
+	delete _transform;
+	delete _space;
+	delete _engine;
+
+	_node->removeAndDestroyChild(_trans_node->getName());
+	_world->getSceneManager()->getRootSceneNode()->removeAndDestroyChild(_node->getName());
+	_world->getSceneManager()->destroyEntity(_entity->getName());
+}
+//------------------------------------------------------------------------------------------------
+Vehicle::Engine::Engine()  :
+	_torque_curve(0),
+	_curve_length (0)
+{
+	setInputs(false,false);
+	setRevLimit(40.0);
+	setTorque(0.5,5.0);
+	setBrakeForce(500.0);
+}
+//------------------------------------------------------------------------------------------------
+Real Vehicle::Engine::getPowerAtRPM(Real rpm)
+{
+	_wheel_rpm = rpm;
+
+	const Ogre::Real pos = getRevFactor() * (_curve_length - 1);
+	const unsigned int i = (unsigned int)pos;
+	const Ogre::Real dx = pos - ((Real)i);
+
+	assert (i < _curve_length);
+	return _torque_curve[i] + (dx * (_torque_curve[i+1] - _torque_curve[i]));
+}
+//------------------------------------------------------------------------------------------------
+Real Vehicle::Engine::getBrakeForce()
+{
+	return _brake_force * _brake_position;
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::setInputs(Real throttle_position,Real brake_position)
+{
+	_throttle_position = throttle_position;
+	_brake_position = _brake_position;
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::setInputs(Real throttle_brake)
+{
+	_throttle_position = std::max((Real)0.0,throttle_brake);
+	_brake_position = std::max((Real)0.0,-throttle_brake);
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::setInputs(bool throttle,bool brake)
+{
+	_throttle_position = (throttle)?1.0:0.0;
+	_brake_position = (brake)?1.0:0.0;
+}
+//------------------------------------------------------------------------------------------------
+// Manual gearbox
+void Vehicle::Engine::changeUp()
+{
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::changeDown()
+{
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::setGear(char code)
+{
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::setGear(unsigned int i)
+{
+}
+//------------------------------------------------------------------------------------------------
+// Information functions
+Real Vehicle::Engine::getDesiredRPM()
+{
+	return _rev_limit * _throttle_position;
+}
+//------------------------------------------------------------------------------------------------
+Real Vehicle::Engine::getRevFactor()
+{
+	return _wheel_rpm * _inv_rev_limit;
+}
+//------------------------------------------------------------------------------------------------
+char Vehicle::Engine::getGearCode()
+{
+	return '\0';
+}
+//------------------------------------------------------------------------------------------------
+// Engine parameters
+void Vehicle::Engine::setRevLimit(Real rpm)
+{
+	_rev_limit = rpm;
+	_inv_rev_limit = 1.0 / _rev_limit;
+}
+//------------------------------------------------------------------------------------------------
+// Set a custom torque curve
+void Vehicle::Engine::setTorque(Real* torque,unsigned int samples)
+{
+	assert((samples > 1)&&("Need more than one sample for setTorque"));
+
+	delete[] _torque_curve;
+	_curve_length = samples;
+	_torque_curve = new Ogre::Real[_curve_length + 1];
+
+	for (unsigned int i = 0;i < samples;i++) 
+		_torque_curve[i] = torque[i];
+	_torque_curve[_curve_length] = torque[samples - 1];
+}
+//------------------------------------------------------------------------------------------------
+// Set a linear torque curve, minimum should be greater than zero, 
+// or the vehicle won't go anywhere!
+void Vehicle::Engine::setTorque(Real minimum,Ogre::Real maximum)
+{
+	Real curve[] = {minimum,maximum};
+	setTorque(curve, 2);
+}
+//------------------------------------------------------------------------------------------------
+// Set a constant torque "curve"
+void Vehicle::Engine::setTorque(Real constant)
+{
+	setTorque(constant, constant);
+}
+//------------------------------------------------------------------------------------------------
+// Braking parameters
+void Vehicle::Engine::setBrakeForce(Real force)
+{
+	_brake_force = force;
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::update(Real time)
+{
+}
+
+//------------------------------------------------------------------------------------------------
+// Drivetrain parameters
+void Vehicle::Engine::addGear(Real ratio,char code)
+{
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::setFinalDrive(Real ratio)
+{
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::setAutoShiftRevs(Real up,Real down)
+{
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Engine::setAutoBox(bool automatic)
+{
+}
+//------------------------------------------------------------------------------------------------
+Vehicle::Engine::~Engine()
+{
+	delete[] _torque_curve;
+}
+//------------------------------------------------------------------------------------------------
+void Vehicle::Wheel::setupTyreContact(OgreOde::Contact* contact)
+{
+	Quaternion vehicle_orient = _owner->getBody()->getOrientation();
+
+	Vector3 wheel_up = vehicle_orient * Ogre::Vector3::UNIT_Y;
+	Quaternion wheel_rot(Radian(getSteer()), (Vector3) wheel_up);
+	Vector3 wheel_forward = wheel_rot * (vehicle_orient * Ogre::Vector3::UNIT_Z);
+	Vector3 wheel_velocity = _body->getLinearVelocity();
+
+	contact->setFrictionMode(Contact::Flag_BothFrictionPyramids);
+	contact->setBouncyness(_bouncyness);
+	contact->setCoulombFriction(_friction);
+	contact->setFirstFrictionDirection(wheel_forward);
+	contact->setAdditionalFDS(wheel_velocity.length() * _fds);
+}
+//------------------------------------------------------------------------------------------------
+bool Vehicle::handleTyreCollision(OgreOde::Contact* contact)
+{
+	Geometry *geom = contact->getFirstGeometry();
+
+	Object* pObject = (Object*) geom->getUserObject();
+	if (pObject && 
+		(pObject->getObjectType() == OgreOde_Prefab::ObjectType_Wheel))
+	{
+		((OgreOde_Prefab::Vehicle::Wheel*)(pObject))->setupTyreContact(contact);
+		return true;
+	}
+	else
+	{
+		geom = contact->getSecondGeometry();
+		pObject = (Object*) geom->getUserObject();
+		if (pObject && (pObject->getObjectType() == OgreOde_Prefab::ObjectType_Wheel))
+		{
+			((OgreOde_Prefab::Vehicle::Wheel*)pObject)->setupTyreContact(contact);
+			return true;
+		}
+	}
+	return false;
+}
Index: /ogreode/premake/OgreOde_Core.lua
===================================================================
--- /ogreode/premake/OgreOde_Core.lua	(revision 21)
+++ /ogreode/premake/OgreOde_Core.lua	(revision 21)
@@ -0,0 +1,49 @@
+package.name = "OgreOde_Core"
+
+--------------------------
+-- Package Build Settings
+  package.language = "c++"
+  package.kind = "dll"    
+  
+    package.config["Debug"].target = "lib/debug/"
+    package.config["Release"].target = "lib/release/"
+    
+    
+  setdefines()
+  setbuildoptions()
+    
+--------------------------
+-- Libraries
+  package.libpaths = {  }
+  setODElibpath()
+  setOGRElibpath()
+    
+    
+  package.links = {  }
+  package.config["Debug"].links = 
+  { 
+      "oded", 
+      "OgreMain" 
+      
+  }
+  package.config["Release"].links = 
+  { 
+      "ode", 
+      "OgreMain" 
+  }
+--------------------------
+-- Includes
+  package.includepaths =
+  {
+    "../../ode/include",
+    "../../include"
+  }
+    
+--------------------------
+-- Files
+
+  --
+  
+  
+  package.path = "../" .. getsubScriptFolder()
+  setfiles("../../")
Index: /ogreode/premake/OgreOde_Demos.lua
===================================================================
--- /ogreode/premake/OgreOde_Demos.lua	(revision 21)
+++ /ogreode/premake/OgreOde_Demos.lua	(revision 21)
@@ -0,0 +1,70 @@
+-- Here are the lists of tests to build. Add/remove new
+-- tests here and everything else should just work
+
+  local Demos =
+  {
+    "GranTurismOgre",
+    "LandScape",
+    "SimpleScenes"
+  }
+
+-- Factory function for test packages
+  function makeDemos(index, name)
+  
+    package = newpackage()    
+    --------------------------
+    -- Package Build Settings
+    package.name = "OgreOde_Demo_" .. name
+    package.language = "c++"
+    package.kind = "exe"
+            
+    package.config["Debug"].target = "Demos/" .. name .. "/bin/debug/"
+    package.config["Release"].target = "Demos/" .. name .. "/bin/release/"
+           
+    setdefines()
+    setbuildoptions()
+  
+    --------------------------
+    -- Libraries
+   --OgreOde_Core && OgreOde_Prefab
+    package.libpaths = 
+    { 
+        "../../../../ode/lib",
+        "../../../../lib",
+        "../../../../prefab/lib"
+    }
+    setODElibpath()
+    setOGRElibpath()
+    
+    package.links = {  }
+    package.config["Debug"].links = 
+    { 
+          "OgreOde_Core_d", 
+          "OgreOde_Prefab_d", 
+          "OgreMain_d"       
+    }           
+    package.config["Release"].links = 
+    { 
+          "OgreOde_Core", 
+          "OgreOde_Prefab", 
+          "OgreMain" 
+    }
+          
+    --------------------------
+    -- Includes
+    package.includepaths = 
+    { 
+        "../../include" ,
+        "../../../../include",
+        "../../../../prefab/include",
+        "../../../../ode/include" 
+    }
+    
+    --------------------------
+    -- Files
+    package.path = "../Demos/" .. name  .. getsubScriptFolder()
+    setfiles("../../")
+  end
+
+table.foreach(Demos, makeDemos)
+
Index: /ogreode/premake/OgreOde_Prefab.lua
===================================================================
--- /ogreode/premake/OgreOde_Prefab.lua	(revision 21)
+++ /ogreode/premake/OgreOde_Prefab.lua	(revision 21)
@@ -0,0 +1,50 @@
+package.name = "OgreOde_Prefab"
+
+--------------------------
+-- Package Build Settings
+  package.language = "c++"
+  package.kind = "dll"    
+    
+    package.config["Debug"].target = "prefab/lib/debug/"
+    package.config["Release"].target = "prefab/lib/release/"
+  
+  setdefines()
+  setbuildoptions()
+  
+--------------------------
+-- Libraries
+   --OgreOde_Core
+    package.libpaths = 
+    { 
+        "../../../../lib" 
+    }
+    setODElibpath()
+    setOGRElibpath()
+    
+  package.links = {  }
+  package.config["Debug"].links = 
+  { 
+      "OgreOde_Core_d", 
+      "oded", 
+      "OgreMain" 
+  }
+  package.config["Release"].links = 
+  { 
+      "OgreOde_Core", 
+      "ode", 
+      "OgreMain" 
+  }
+  
+--------------------------
+-- Includes
+  package.includepaths =
+  {
+    "../../../ode/include",
+    "../../../include",
+    "../../include"
+  }
+  
+--------------------------
+-- Files
+  package.path = "../prefab/" .. getsubScriptFolder()
+  setfiles("../../")
Index: /ogreode/premake/README
===================================================================
--- /ogreode/premake/README	(revision 21)
+++ /ogreode/premake/README	(revision 21)
@@ -0,0 +1,5 @@
+To generate the project files you must download premake 3.1 from:
+http://sourceforge.net/project/showfiles.php?group_id=71616
+and place the executable (premake.exe) in this directory.
+
+After this is done you should run the build.bat.
Index: /ogreode/premake/build.bat
===================================================================
--- /ogreode/premake/build.bat	(revision 21)
+++ /ogreode/premake/build.bat	(revision 21)
@@ -0,0 +1,22 @@
+premake --sdk --clean --target vs2005
+
+exit
+
+premake --sdk --clean --target vs6
+premake --cvs --clean --target vs6
+premake --source  --clean --target vs6
+
+premake --sdk --clean --target vs2002
+premake --cvs --clean --target vs2002
+premake --source  --clean --target vs2002
+
+premake --sdk --clean --target vs2003  
+premake --cvs --clean --target vs2003
+premake --source  --clean --target vs2003
+
+premake --sdk --clean --target vs2005 
+premake --cvs --clean --target vs2005
+premake --source  --clean --target vs2005  
+
+premake --cvs --clean --target gnu
+
Index: /ogreode/premake/functions.lua
===================================================================
--- /ogreode/premake/functions.lua	(revision 21)
+++ /ogreode/premake/functions.lua	(revision 21)
@@ -0,0 +1,94 @@
+--require("functions.lua")
+
+---------------------------------------------------
+function setdefines()
+  if (windows) then
+  
+    -- disable VS2005 CRT security warnings
+    if (options["target"] == "vs2005") then
+        table.insert(package.defines, "_CRT_SECURE_NO_DEPRECATE")
+    end
+    
+    table.insert(package.defines, "WIN32")
+    table.insert(package.links, { "user32"})
+      --table.insert(package.files, "../..src/resources.rc")
+  end
+end  
+---------------------------------------------------
+function setfiles(path) 
+  core_files =
+  {
+      matchfiles(path .. "include/*.h"),
+      matchfiles (path .. "src/*.cpp")
+  }
+  package.files = { core_files }  
+  
+    --package.excludes = {
+    --  "dont_build_this.c"
+    --}    
+end
+---------------------------------------------------
+function setODElibpath()
+    if (windows) then    
+      table.insert(package.libpaths, "../../../ode/lib")
+    end
+end
+---------------------------------------------------
+function setDefaultPack()
+      if (not options["sdk"] and not options["source"] and not options["cvs"]) then
+        options["sdk"] = true
+      end    
+end
+---------------------------------------------------
+function setOGRElibpath()
+    if (windows) then    
+      if (options["sdk"]) then
+        table.insert(package.libpaths, "$(OGRE_HOME)")
+      elseif (options["source"]) then
+        table.insert(package.libpaths, "../../../../../OgreMain/lib")
+      elseif (options["cvs"]) then
+        table.insert(package.libpaths, "../../../../../../OgreHead/OgreMain/lib")
+      end
+    end
+end
+---------------------------------------------------
+function setbuildoptions()      
+  if (linux) then
+    package.buildoptions = { "-Wall" }
+ end
+ 
+  package.config["Debug"].buildflags = 
+  { 
+  
+  }
+  package.config["Release"].buildflags = 
+  { 
+      "optimize-speed", 
+      "no-symbols", 
+      "no-frame-pointer" 
+  }	
+  package.config["Debug"].objdir = "../obj/Debug"
+  package.config["Release"].objdir = "../obj/Release"
+end
+---------------------------------------------------
+function getsubScriptFolder()
+  if (options["target"] == "vs6") then
+    return "/scripts/VC6"
+  end
+  if (options["target"] == "vs2002") then
+    return "/scripts/VC7"
+  end
+  if (options["target"] == "vs2003") then
+    return "/scripts/VC7.1"
+  end
+  if (options["target"] == "vs2005") then
+    return "/scripts/VC8"
+  end 
+  if (options["target"] == "vs2005") then
+    return "/scripts/VC8"
+  end 
+  return ""
+end
+  
+  
+  
Index: /ogreode/premake/premake.lua
===================================================================
--- /ogreode/premake/premake.lua	(revision 21)
+++ /ogreode/premake/premake.lua	(revision 21)
@@ -0,0 +1,31 @@
+require("functions.lua")
+  
+  project.name = "OgreOde"
+
+  project.bindir = "../"  
+  project.libdir = "../"  
+  
+-- Project options
+  addoption("sdk",    "Use SDK folder hierarchy")
+  addoption("cvs",    "Use CVS  folderhierarchy")
+  addoption("Source", "Use Source zip  folder hierarchy")
+  -- make sure at least one is selected.
+  setDefaultPack()
+  
+-- Set the output directories
+  project.path = "../"
+  
+
+-- Build packages
+  dopackage("OgreOde_Core.lua")
+  dopackage("OgreOde_Prefab.lua")
+  dopackage("OgreOde_Demos.lua")
+
+-- Remove all intermediate files
+  function doclean(cmd, arg)  
+    docommand(cmd, arg)    
+    os.rmdir("../lib/")
+    os.rmdir("../obj")
+  end
+
+
Index: /ogreode/scripts/CodeBlocks/OgreOde_Core_SDK.cbp
===================================================================
--- /ogreode/scripts/CodeBlocks/OgreOde_Core_SDK.cbp	(revision 21)
+++ /ogreode/scripts/CodeBlocks/OgreOde_Core_SDK.cbp	(revision 21)
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="5" />
+	<Project>
+		<Option title="OgreOde_Core" />
+		<Option pch_mode="2" />
+		<Option default_target="" />
+		<Option compiler="gcc" />
+		<Option virtualFolders="" />
+		<Build>
+			<Target title="Debug">
+				<Option output="..\..\lib\Debug\OgreOde_Core_d.dll" />
+				<Option object_output="..\..\obj\Debug" />
+				<Option external_deps="..\..\lib\Debug|Win32\libode.a;" />
+				<Option type="3" />
+				<Option compiler="gcc" />
+				<Option createDefFile="1" />
+				<Option createStaticLib="1" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-g" />
+					<Add option="-O0" />
+					<Add option="-D_DEBUG" />
+					<Add option="-D_STLP_DEBUG" />
+					<Add option="-DOGREODE_EXPORTS" />
+					<Add option="-DWIN32" />
+					<Add option="-D_WINDOWS" />
+					<Add option="-D_USRDLL" />
+					<Add directory="$(OGRE_HOME)\stlport\stlport" />
+					<Add directory="..\..\ode\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+				</Compiler>
+				<Linker>
+					<Add library="ode" />
+					<Add library="libode.a" />
+					<Add library="ogremain_d" />
+					<Add library="stlportstlg.5.0" />
+					<Add directory="..\..\ode\lib\Debug" />
+					<Add directory="$(OGRE_HOME)\bin\debug" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="$(OGREODE_HOME)\scripts\codeblocks\copy.bat $(OGREODE_HOME)\lib\Debug\$(APPNAME) $(OGRE_HOME)\bin\debug\$(APPNAME)" />
+				</ExtraCommands>
+				<Environment>
+					<Variable name="APPNAME" value="OgreOde_Core_d.dll" />
+				</Environment>
+			</Target>
+			<Target title="Release">
+				<Option output="..\..\lib\Release\OgreOde_Core.dll" />
+				<Option object_output="..\..\obj\Release" />
+				<Option external_deps="..\..\lib\Release|Win32\libode.a;" />
+				<Option type="3" />
+				<Option compiler="gcc" />
+				<Option createDefFile="1" />
+				<Option createStaticLib="1" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-DWIN32" />
+					<Add option="-DNDEBUG" />
+					<Add option="-D_WINDOWS" />
+					<Add option="-D_USRDLL" />
+					<Add option="-DOGREODE_EXPORTS" />
+					<Add directory="..\..\ode\include" />
+					<Add directory="$(OGRE_HOME)\include" />
+					<Add directory="$(OGRE_HOME)\stlport\stlport" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+					<Add library="ode" />
+					<Add library="libode.a" />
+					<Add library="ogremain" />
+					<Add library="stlport.5.0" />
+					<Add directory="..\..\ode\lib\Release" />
+					<Add directory="$(OGRE_HOME)\bin\release" />
+				</Linker>
+				<ExtraCommands>
+					<Add after="$(OGREODE_HOME)\scripts\codeblocks\copy.bat $(OGREODE_HOME)\lib\Release\$(APPNAME) $(OGRE_HOME)\bin\release\$(APPNAME)" />
+				</ExtraCommands>
+				<Environment>
+					<Variable name="APPNAME" value="OgreOde_Core.dll" />
+				</Environment>
+			</Target>
+			<Environment>
+				<Variable name="OGREODE_HOME" value="$(OGRE_HOME)" />
+			</Environment>
+		</Build>
+		<Compiler>
+			<Add option="-mthreads" />
+			<Add option="-fmessage-length=0" />
+			<Add option="-fexceptions" />
+			<Add option="-fident" />
+		</Compiler>
+		<Linker>
+			<Add option="-Wl,--enable-runtime-pseudo-reloc" />
+			<Add option="-Wl,--enable-auto-image-base" />
+			<Add option="-Wl,--add-stdcall-alias" />
+		</Linker>
+		<Unit filename="..\..\include\OgreOdeBody.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeCollision.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeDebugObject.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeEigenSolver.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeEntityInformer.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeGeometry.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeJoint.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeMaintainedList.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeMass.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdePreReqs.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeSpace.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeStepper.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeUtility.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOdeWorld.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\include\OgreOde_Core.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeBody.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeCollision.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeDebugObject.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeEigenSolver.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeEntityInformer.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeGeometry.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeJoint.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeMass.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeSpace.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeStepper.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeUtility.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Unit filename="..\..\src\OgreOdeWorld.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Debug" />
+			<Option target="Release" />
+		</Unit>
+		<Extensions />
+	</Project>
+</CodeBlocks_project_file>
Index: /ogreode/scripts/CodeBlocks/OgreOde_SDK.workspace
===================================================================
--- /ogreode/scripts/CodeBlocks/OgreOde_SDK.workspace	(revision 21)
+++ /ogreode/scripts/CodeBlocks/OgreOde_SDK.workspace	(revision 21)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_workspace_file>
+	<Workspace title="OgreOde_SDK workspace">
+		<Project filename="OgreOde_Core_SDK.cbp" active="1">
+			<Depends filename="..\..\ode\build\codeblocks\ode_SDK.cbp" />
+		</Project>
+		<Project filename="..\..\demos\SimpleScenes\scripts\codeblocks\Demo_SimpleScenes_SDK.cbp">
+			<Depends filename="..\..\prefab\scripts\codeblocks\OgreOde_Prefab_SDK.cbp" />
+			<Depends filename="OgreOde_Core_SDK.cbp" />
+		</Project>
+		<Project filename="..\..\demos\Landscape\scripts\codeblocks\Demo_Landscape_SDK.cbp">
+			<Depends filename="..\..\prefab\scripts\codeblocks\OgreOde_Prefab_SDK.cbp" />
+			<Depends filename="OgreOde_Core_SDK.cbp" />
+		</Project>
+		<Project filename="..\..\prefab\scripts\codeblocks\OgreOde_Prefab_SDK.cbp">
+			<Depends filename="..\..\tinyxml\tinyxml_lib_codeblocks_SDK.cbp" />
+			<Depends filename="OgreOde_Core_SDK.cbp" />
+		</Project>
+		<Project filename="..\..\demos\GranTurismOgre\scripts\codeblocks\Demo_GranTurismOgre_SDK.cbp">
+			<Depends filename="..\..\prefab\scripts\codeblocks\OgreOde_Prefab_SDK.cbp" />
+			<Depends filename="OgreOde_Core_SDK.cbp" />
+		</Project>
+		<Project filename="..\..\tinyxml\tinyxml_lib_SDK.cbp" />
+		<Project filename="..\..\ode\build\codeblocks\ode_SDK.cbp" />
+	</Workspace>
+</CodeBlocks_workspace_file>
Index: /ogreode/scripts/CodeBlocks/copy.bat
===================================================================
--- /ogreode/scripts/CodeBlocks/copy.bat	(revision 21)
+++ /ogreode/scripts/CodeBlocks/copy.bat	(revision 21)
@@ -0,0 +1,2 @@
+del %2
+copy %1 %2
Index: /ogreode/scripts/Linux/README
===================================================================
--- /ogreode/scripts/Linux/README	(revision 21)
+++ /ogreode/scripts/Linux/README	(revision 21)
@@ -0,0 +1,27 @@
+How to compile ogreode on linux
+---------------------------------------
+
+1. download ogre3d (www.ogre3d.org)
+Unpack it (A directory called ogrenew will be created)
+Compile (./configure, make, make install)
+
+2. Download ode (opende.sf.net), preferably from svn/cvs
+Unpack, compile (./configure, make, make install)
+
+3. Download ois (http://sourceforge.net/projects/wgois)
+Unpack, compile (./configure, make, make install)
+
+3. download ogreode (http://tuan.kuranes.free.fr/Ogre.html#OgreOde or get from cvs)
+(you have already done so)
+Unpack the file in a directory called ogreode, inside ogrenew. For example:
+wget http://tuan.kuranes.free.fr/OgreOde.zip
+cd ogrenew
+mkdir ogreode
+cd ogreode
+unzip ../../OgreOde.zip
+sh autogen.sh
+./configure
+make
+make install
+
+All examples will be installed inside ogre examples' dir (ogrenew/Samples/Common/bin/)
Index: /ogreode/scripts/Linux/keep.me
===================================================================
--- /ogreode/scripts/Linux/keep.me	(revision 21)
+++ /ogreode/scripts/Linux/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/scripts/Linux/ogreode.sh
===================================================================
--- /ogreode/scripts/Linux/ogreode.sh	(revision 21)
+++ /ogreode/scripts/Linux/ogreode.sh	(revision 21)
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo See README for installing instructions
Index: /ogreode/scripts/Mac/keep.me
===================================================================
--- /ogreode/scripts/Mac/keep.me	(revision 21)
+++ /ogreode/scripts/Mac/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/scripts/VC6/keep.me
===================================================================
--- /ogreode/scripts/VC6/keep.me	(revision 21)
+++ /ogreode/scripts/VC6/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/scripts/VC7.1/OgreOde.sln
===================================================================
--- /ogreode/scripts/VC7.1/OgreOde.sln	(revision 21)
+++ /ogreode/scripts/VC7.1/OgreOde.sln	(revision 21)
@@ -0,0 +1,138 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Core", "OgreOde_Core.vcproj", "{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	ProjectSection(ProjectDependencies) = postProject
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC} = {FB603612-D49E-0B48-B1BC-5B7D627796DC}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_SimpleScenes", "..\..\demos\SimpleScenes\scripts\VC7.1\Demo_SimpleScenes.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_Landscape", "..\..\demos\Landscape\scripts\VC7.1\Demo_Landscape.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Prefab", "..\..\prefab\scripts\VC7.1\OgreOde_Prefab.vcproj", "{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	ProjectSection(ProjectDependencies) = postProject
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF} = {D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_GranTurismOgre", "..\..\demos\GranTurismOgre\scripts\VC7.1\Demo_GranTurismOgre.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tiny XML", "..\..\tinyxml\tinyxml_lib.vcproj", "{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ode", "..\..\ode\build\vs2003\ode.vcproj", "{FB603612-D49E-0B48-B1BC-5B7D627796DC}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		DebugDLL = DebugDLL
+		DebugLib = DebugLib
+		Release = Release
+		ReleaseDLL = ReleaseDLL
+		ReleaseLib = ReleaseLib
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugDLL.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugDLL.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugLib.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugLib.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release.Build.0 = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseDLL.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseDLL.Build.0 = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseLib.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseLib.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugDLL.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugDLL.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugLib.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugLib.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseDLL.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseDLL.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseLib.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseLib.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.Build.0 = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.Debug.ActiveCfg = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.Debug.Build.0 = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.DebugDLL.ActiveCfg = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.DebugDLL.Build.0 = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.DebugLib.ActiveCfg = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.DebugLib.Build.0 = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.Release.ActiveCfg = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.Release.Build.0 = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.ReleaseDLL.ActiveCfg = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.ReleaseDLL.Build.0 = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.ReleaseLib.ActiveCfg = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.ReleaseLib.Build.0 = Release|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.Debug.ActiveCfg = DebugLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.Debug.Build.0 = DebugLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.DebugDLL.ActiveCfg = DebugDLL|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.DebugDLL.Build.0 = DebugDLL|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.DebugLib.ActiveCfg = DebugLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.DebugLib.Build.0 = DebugLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.Release.ActiveCfg = ReleaseLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.Release.Build.0 = ReleaseLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.ReleaseDLL.Build.0 = ReleaseDLL|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.ReleaseLib.ActiveCfg = ReleaseLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.ReleaseLib.Build.0 = ReleaseLib|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: /ogreode/scripts/VC7.1/OgreOde.vcproj
===================================================================
--- /ogreode/scripts/VC7.1/OgreOde.vcproj	(revision 21)
+++ /ogreode/scripts/VC7.1/OgreOde.vcproj	(revision 21)
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="OgreOde"
+	ProjectGUID="{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode-0.5\include;..\..\..\OgreMain\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain_d.lib ode.lib OPCODE_D.lib"
+				OutputFile="$(OutDir)/OgreOde_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\ode-0.5\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_d.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				EnableFiberSafeOptimizations="TRUE"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode-0.5\include;..\..\..\OgreMain\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain.lib ode.lib OPCODE.lib"
+				OutputFile="$(OutDir)/OgreOde.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\ode-0.5\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				StackReserveSize="8000000"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\OgreOdeBody.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeCollision.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugObject.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeGeometry.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeJoint.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMaintainedList.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMass.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMeshInformer.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeSpace.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeStepper.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeUtility.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeVehicle.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeWorld.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\OgreOde.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeBody.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeCollision.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugObject.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeGeometry.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeJoint.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMaintainedList.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMass.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMeshInformer.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePreReqs.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeSpace.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeStepper.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeUtility.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeVehicle.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeWorld.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+		<Global
+			Name="DevPartner_IsInstrumented"
+			Value="0"/>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/scripts/VC7.1/OgreOde_Core.vcproj
===================================================================
--- /ogreode/scripts/VC7.1/OgreOde_Core.vcproj	(revision 21)
+++ /ogreode/scripts/VC7.1/OgreOde_Core.vcproj	(revision 21)
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="OgreOde_Core"
+	ProjectGUID="{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode\include;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="ode.lib OgreMain_d.lib"
+				OutputFile="$(OutDir)/OgreOde_Core_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="..\..\ode\lib\debuglib;&quot;$(OGRE_HOME)\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Core_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core_d.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				EnableFiberSafeOptimizations="TRUE"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\ode\include;&quot;$(OGRE_HOME)\include&quot;;..\..\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="ode.lib OgreMain.lib"
+				OutputFile="$(OutDir)/OgreOde_Core.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="..\..\ode\lib\releaselib;&quot;$(OGRE_HOME)\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				StackReserveSize="8000000"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\OgreOdeBody.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeCollision.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugObject.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEigenSolver.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEntityInformer.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeGeometry.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeJoint.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMaintainedList.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMass.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeSpace.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeStepper.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeUtility.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeWorld.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\OgreOde_Core.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeBody.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeCollision.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugObject.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEigenSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEntityInformer.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeGeometry.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeJoint.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMaintainedList.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMass.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePreReqs.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeSpace.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeStepper.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeUtility.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeWorld.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+		<Global
+			Name="DevPartner_IsInstrumented"
+			Value="0"/>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/scripts/VC7.1/OgreOde_Core_Source.vcproj
===================================================================
--- /ogreode/scripts/VC7.1/OgreOde_Core_Source.vcproj	(revision 21)
+++ /ogreode/scripts/VC7.1/OgreOde_Core_Source.vcproj	(revision 21)
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="OgreOde_Core_Source"
+	ProjectGUID="{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode\include;..\..\..\ogrenew\OgreMain\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="ode.lib OgreMain_d.lib"
+				OutputFile="$(OutDir)/OgreOde_Core_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="..\..\ode\lib\debuglib;&quot;..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Core_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core_d.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				EnableFiberSafeOptimizations="TRUE"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode\include;..\..\..\ogrenew\OgreMain\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="ode.lib OgreMain.lib"
+				OutputFile="$(OutDir)/OgreOde_Core.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="..\..\ode\lib\releaselib;&quot;..\..\..\ogrenew\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				StackReserveSize="8000000"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\ogrenew\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\OgreOdeBody.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeCollision.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugObject.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEigenSolver.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEntityInformer.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeGeometry.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeJoint.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMaintainedList.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMass.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeSpace.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeStepper.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeUtility.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeWorld.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\OgreOde_Core.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeBody.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeCollision.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugObject.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEigenSolver.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEntityInformer.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeGeometry.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeJoint.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMaintainedList.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMass.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePreReqs.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeSpace.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeStepper.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeUtility.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeWorld.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+		<Global
+			Name="DevPartner_IsInstrumented"
+			Value="0"/>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/scripts/VC7.1/OgreOde_Source.sln
===================================================================
--- /ogreode/scripts/VC7.1/OgreOde_Source.sln	(revision 21)
+++ /ogreode/scripts/VC7.1/OgreOde_Source.sln	(revision 21)
@@ -0,0 +1,139 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tiny XML", "..\..\tinyxml\tinyxml_lib.vcproj", "{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ode", "..\..\ode\build\vs2003\ode.vcproj", "{FB603612-D49E-0B48-B1BC-5B7D627796DC}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_GranTurismOgre_Source", "..\..\demos\GranTurismOgre\scripts\VC7.1\Demo_GranTurismOgre_Source.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_Landscape_Source", "..\..\demos\Landscape\scripts\VC7.1\Demo_Landscape_Source.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_SimpleScenes_Source", "..\..\demos\SimpleScenes\scripts\VC7.1\Demo_SimpleScenes_Source.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Prefab_Source", "..\..\prefab\scripts\VC7.1\OgreOde_Prefab_Source.vcproj", "{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	ProjectSection(ProjectDependencies) = postProject
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC} = {FB603612-D49E-0B48-B1BC-5B7D627796DC}
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF} = {D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Core_Source", "OgreOde_Core_Source.vcproj", "{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	ProjectSection(ProjectDependencies) = postProject
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC} = {FB603612-D49E-0B48-B1BC-5B7D627796DC}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		DebugDLL = DebugDLL
+		DebugLib = DebugLib
+		Release = Release
+		ReleaseDLL = ReleaseDLL
+		ReleaseLib = ReleaseLib
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.Debug.ActiveCfg = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.Debug.Build.0 = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.DebugDLL.ActiveCfg = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.DebugDLL.Build.0 = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.DebugLib.ActiveCfg = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.DebugLib.Build.0 = Debug|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.Release.ActiveCfg = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.Release.Build.0 = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.ReleaseDLL.ActiveCfg = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.ReleaseDLL.Build.0 = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.ReleaseLib.ActiveCfg = Release|Win32
+		{D77FB6F1-2D33-497E-A1AC-A05FEEF362DF}.ReleaseLib.Build.0 = Release|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.Debug.ActiveCfg = DebugLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.Debug.Build.0 = DebugLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.DebugDLL.ActiveCfg = DebugDLL|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.DebugDLL.Build.0 = DebugDLL|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.DebugLib.ActiveCfg = DebugLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.DebugLib.Build.0 = DebugLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.Release.ActiveCfg = ReleaseLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.Release.Build.0 = ReleaseLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.ReleaseDLL.Build.0 = ReleaseDLL|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.ReleaseLib.ActiveCfg = ReleaseLib|Win32
+		{FB603612-D49E-0B48-B1BC-5B7D627796DC}.ReleaseLib.Build.0 = ReleaseLib|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugLib.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseLib.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugDLL.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugDLL.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugLib.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugLib.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseDLL.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseDLL.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseLib.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseLib.Build.0 = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugDLL.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugDLL.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugLib.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugLib.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release.Build.0 = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseDLL.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseDLL.Build.0 = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseLib.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseLib.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: /ogreode/scripts/VC7.1/keep.me
===================================================================
--- /ogreode/scripts/VC7.1/keep.me	(revision 21)
+++ /ogreode/scripts/VC7.1/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/scripts/VC7/OgreOde.sln
===================================================================
--- /ogreode/scripts/VC7/OgreOde.sln	(revision 21)
+++ /ogreode/scripts/VC7/OgreOde.sln	(revision 21)
@@ -0,0 +1,21 @@
+Microsoft Visual Studio Solution File, Format Version 7.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde", "OgreOde.vcproj", "{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		ConfigName.0 = Debug
+		ConfigName.1 = Release
+	EndGlobalSection
+	GlobalSection(ProjectDependencies) = postSolution
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
Index: /ogreode/scripts/VC7/OgreOde.vcproj
===================================================================
--- /ogreode/scripts/VC7/OgreOde.vcproj	(revision 21)
+++ /ogreode/scripts/VC7/OgreOde.vcproj	(revision 21)
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="OgreOde"
+	ProjectGUID="{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode-0.5\include;..\..\..\OgreMain\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain_d.lib ode.lib OPCODE_D.lib"
+				OutputFile="$(OutDir)/OgreOde_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\ode-0.5\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_d.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				EnableFiberSafeOptimizations="TRUE"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode-0.5\include;..\..\..\OgreMain\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain.lib ode.lib OPCODE.lib"
+				OutputFile="$(OutDir)/OgreOde.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\ode-0.5\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				StackReserveSize="8000000"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\OgreOdeBody.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeCollision.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugObject.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeGeometry.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeJoint.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMaintainedList.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMass.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMeshInformer.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeSpace.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeStepper.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeUtility.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeVehicle.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeWorld.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\OgreOde.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeBody.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeCollision.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugObject.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeGeometry.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeJoint.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMaintainedList.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMass.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMeshInformer.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePreReqs.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeSpace.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeStepper.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeUtility.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeVehicle.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeWorld.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+		<Global
+			Name="DevPartner_IsInstrumented"
+			Value="0"/>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/scripts/VC7/keep.me
===================================================================
--- /ogreode/scripts/VC7/keep.me	(revision 21)
+++ /ogreode/scripts/VC7/keep.me	(revision 21)
@@ -0,0 +1,2 @@
+Keep this directory, even if it's empty.
+
Index: /ogreode/scripts/VC8/OgreOde_CVS.sln
===================================================================
--- /ogreode/scripts/VC8/OgreOde_CVS.sln	(revision 21)
+++ /ogreode/scripts/VC8/OgreOde_CVS.sln	(revision 21)
@@ -0,0 +1,84 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Core", "OgreOde_Core_CVS.vcproj", "{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_SimpleScenes", "..\..\demos\SimpleScenes\scripts\VC8\Demo_SimpleScenes_CVS.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{396CBDBA-F19B-403E-BD66-5C037E6AC13E} = {396CBDBA-F19B-403E-BD66-5C037E6AC13E}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_Landscape", "..\..\demos\Landscape\scripts\VC8\Demo_Landscape_CVS.vcproj", "{938CDDEB-72ED-4902-B936-003D4D9F3EB7}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{396CBDBA-F19B-403E-BD66-5C037E6AC13E} = {396CBDBA-F19B-403E-BD66-5C037E6AC13E}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Prefab", "..\..\prefab\scripts\VC8\OgreOde_Prefab_CVS.vcproj", "{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	ProjectSection(ProjectDependencies) = postProject
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_GranTurismOgre", "..\..\demos\GranTurismOgre\scripts\VC8\Demo_GranTurismOgre_CVS.vcproj", "{292C4A04-E960-44A3-A6EA-83881C176135}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{396CBDBA-F19B-403E-BD66-5C037E6AC13E} = {396CBDBA-F19B-403E-BD66-5C037E6AC13E}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml", "..\..\tinyxml\tinyxml_lib_vc8_CVS.vcproj", "{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Loader", "..\..\loader\scripts\VC8\OgreOde_Loader_CVS.vcproj", "{396CBDBA-F19B-403E-BD66-5C037E6AC13E}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug|Win32.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release|Win32.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release|Win32.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug|Win32.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release|Win32.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release|Win32.Build.0 = Release|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Debug|Win32.ActiveCfg = Debug|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Debug|Win32.Build.0 = Debug|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Release|Win32.ActiveCfg = Release|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Release|Win32.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug|Win32.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug|Win32.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release|Win32.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release|Win32.Build.0 = Release|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Debug|Win32.ActiveCfg = Debug|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Debug|Win32.Build.0 = Debug|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Release|Win32.ActiveCfg = Release|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Release|Win32.Build.0 = Release|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Debug|Win32.Build.0 = Debug|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Release|Win32.ActiveCfg = Release|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Release|Win32.Build.0 = Release|Win32
+		{396CBDBA-F19B-403E-BD66-5C037E6AC13E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{396CBDBA-F19B-403E-BD66-5C037E6AC13E}.Debug|Win32.Build.0 = Debug|Win32
+		{396CBDBA-F19B-403E-BD66-5C037E6AC13E}.Release|Win32.ActiveCfg = Release|Win32
+		{396CBDBA-F19B-403E-BD66-5C037E6AC13E}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		AMDCaProjectFile = E:\lib\cvs\OgreStable\ogreaddons\ogreode\scripts\VC8\CodeAnalyst\OgreOde_CVS.caw
+	EndGlobalSection
+EndGlobal
Index: /ogreode/scripts/VC8/OgreOde_CVS.vcproj
===================================================================
--- /ogreode/scripts/VC8/OgreOde_CVS.vcproj	(revision 21)
+++ /ogreode/scripts/VC8/OgreOde_CVS.vcproj	(revision 21)
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="OgreOde"
+	ProjectGUID="{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode-0.5\include;..\..\..\OgreMain\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS;_STLP_DEBUG;OGREODE_TERRAINGEOMETRY"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain_d.lib oded.lib OPCODE_D.lib"
+				OutputFile="$(OutDir)/OgreOde_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\ode-0.5\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_d.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="1"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="TRUE"
+				EnableFiberSafeOptimizations="TRUE"
+				OptimizeForProcessor="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode-0.5\include;..\..\..\OgreMain\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS;OGREODE_TERRAINGEOMETRY"
+				StringPooling="FALSE"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="FALSE"
+				EnableEnhancedInstructionSet="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="TRUE"
+				AdditionalDependencies="OgreMain.lib ode.lib OPCODE.lib"
+				OutputFile="$(OutDir)/OgreOde.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="&quot;..\..\..\OgreMain\lib\$(ConfigurationName)&quot;;&quot;..\..\ode-0.5\lib&quot;"
+				GenerateDebugInformation="TRUE"
+				SubSystem="2"
+				StackReserveSize="8000000"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\src\OgreOdeBody.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeCollision.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugObject.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeGeometry.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeJoint.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMaintainedList.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMass.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMeshInformer.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeSpace.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeStepper.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeUtility.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeVehicle.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeWorld.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\include\OgreOde.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeBody.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeCollision.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugObject.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeGeometry.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeJoint.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMaintainedList.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMass.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMeshInformer.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePreReqs.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeSpace.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeStepper.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeUtility.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeVehicle.h">
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeWorld.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+		<Global
+			Name="DevPartner_IsInstrumented"
+			Value="0"/>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/scripts/VC8/OgreOde_Core_CVS.vcproj
===================================================================
--- /ogreode/scripts/VC8/OgreOde_Core_CVS.vcproj	(revision 21)
+++ /ogreode/scripts/VC8/OgreOde_Core_CVS.vcproj	(revision 21)
@@ -0,0 +1,380 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Core"
+	ProjectGUID="{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	RootNamespace="OgreOde_Core"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/Zm113"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;&quot;$(ODE_HOME)\include&quot;;..\..\..\..\Ogrenew\OgreMain\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS;ODE_LIB;_PRECOMP"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderThrough="OgreOdePrecompiledHeaders.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="ode.lib ogremain_d.lib"
+				OutputFile="$(OutDir)/OgreOde_Core_d.dll"
+				Version="1.2"
+				LinkIncremental="0"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="$(ODE_HOME)\lib\debuglib\;..\..\..\..\Ogrenew\lib"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Core_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core_d.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="-Zm110"
+				InlineFunctionExpansion="1"
+				FavorSizeOrSpeed="1"
+				EnableFiberSafeOptimizations="false"
+				AdditionalIncludeDirectories="..\..\include;&quot;$(ODE_HOME)\include&quot;;..\..\..\..\Ogrenew\OgreMain\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS;_PRECOMP"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="false"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderThrough="OgreOdePrecompiledHeaders.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="ode.lib ogremain.lib"
+				OutputFile="$(OutDir)/OgreOde_Core.dll"
+				Version="1.2"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="$(ODE_HOME)\lib\releaselib\;..\..\..\..\Ogrenew\lib"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				StackReserveSize="8000000"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\..\Ogrenew\Samples\Common\bin\$(ConfigurationName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdeBody.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeCollision.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEigenSolver.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEntityInformer.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeGeometry.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeJoint.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMass.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdePrecompiledHeaders.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeSpace.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeStepper.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeUtility.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeWorld.cpp"
+				>
+			</File>
+			<Filter
+				Name="Debug"
+				>
+				<File
+					RelativePath="..\..\src\OgreOdeDebugContact.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\..\src\OgreOdeDebugObject.cpp"
+					>
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_Core.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeBody.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeCollision.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEigenSolver.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEntityInformer.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeGeometry.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeJoint.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMaintainedList.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMass.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePrecompiledHeaders.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePreReqs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeSpace.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeStepper.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeUtility.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeWorld.h"
+				>
+			</File>
+			<Filter
+				Name="Debug"
+				>
+				<File
+					RelativePath="..\..\include\OgreOdeDebugContact.h"
+					>
+				</File>
+				<File
+					RelativePath="..\..\include\OgreOdeDebugObject.h"
+					>
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+		<Global
+			Name="DevPartner_IsInstrumented"
+			Value="1"
+		/>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/scripts/VC8/OgreOde_Core_SDK.vcproj
===================================================================
--- /ogreode/scripts/VC8/OgreOde_Core_SDK.vcproj	(revision 21)
+++ /ogreode/scripts/VC8/OgreOde_Core_SDK.vcproj	(revision 21)
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Core"
+	ProjectGUID="{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	RootNamespace="OgreOde_Core"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="-Zm120"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS;_PRECOMP"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderThrough="OgreOdePrecompiledHeaders.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="ode.lib ogremain_d.lib"
+				OutputFile="$(OutDir)/OgreOde_Core_d.dll"
+				Version="1.2"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="$(ODE_HOME)\lib\debuglib\;&quot;$(OGRE_HOME)\lib\&quot;"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Core_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core_d.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="-Zm110"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				EnableFiberSafeOptimizations="false"
+				AdditionalIncludeDirectories="..\..\include;&quot;$(ODE_HOME)\include&quot;;&quot;$(OGRE_HOME)\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS;_PRECOMP"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="false"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderThrough="OgreOdePrecompiledHeaders.h"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="ode.lib ogremain.lib"
+				OutputFile="$(OutDir)/OgreOde_Core.dll"
+				Version="1.2"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="$(ODE_HOME)\lib\releaselib\;&quot;$(OGRE_HOME)\lib\&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				StackReserveSize="8000000"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(TargetPath)&quot; &quot;$(OGRE_HOME)\bin\$(ConfigurationName)&quot;"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdeBody.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeCollision.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugContact.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugObject.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEigenSolver.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEntityInformer.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeGeometry.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeJoint.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMass.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdePrecompiledHeaders.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+						PrecompiledHeaderThrough="OgreOdePrecompiledHeaders.h"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						UsePrecompiledHeader="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeSpace.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeStepper.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeUtility.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeWorld.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_Core.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeBody.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeCollision.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugContact.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugObject.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEigenSolver.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEntityInformer.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeGeometry.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeJoint.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMaintainedList.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMass.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePrecompiledHeaders.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePreReqs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeSpace.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeStepper.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeUtility.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeWorld.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+		<Global
+			Name="DevPartner_IsInstrumented"
+			Value="1"
+		/>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/scripts/VC8/OgreOde_Core_Source.vcproj
===================================================================
--- /ogreode/scripts/VC8/OgreOde_Core_Source.vcproj	(revision 21)
+++ /ogreode/scripts/VC8/OgreOde_Core_Source.vcproj	(revision 21)
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="OgreOde_Core"
+	ProjectGUID="{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	RootNamespace="OgreOde_Core"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode\include;..\..\..\OgreMain\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="true"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="ode.lib ogremain_d.lib"
+				OutputFile="$(OutDir)/OgreOde_Core_d.dll"
+				Version="0.1"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="..\..\ode\lib\releasedll\;..\..\..\OgreMain\lib\$(ConfigurationName)"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/OgreOde_Core_d.pdb"
+				SubSystem="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core_d.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)\$(TargetFileName)"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\..\lib\$(ConfigurationName)"
+			IntermediateDirectory="..\..\obj\$(ConfigurationName)"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				EnableFiberSafeOptimizations="false"
+				AdditionalIncludeDirectories="..\..\include;..\..\ode\include;..\..\..\OgreMain\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;OGREODE_EXPORTS"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="false"
+				EnableFunctionLevelLinking="false"
+				FloatingPointModel="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				IgnoreImportLibrary="true"
+				AdditionalDependencies="ode.lib OgreMain.lib"
+				OutputFile="$(OutDir)/OgreOde_Core.dll"
+				Version="0.1"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				AdditionalLibraryDirectories="..\..\ode\lib\releasedll\;&quot;..\..\..\OgreMain\lib\$(ConfigurationName)&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				StackReserveSize="8000000"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				ImportLibrary="$(OutDir)/OgreOde_Core.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\Samples\Common\bin\$(ConfigurationName)\$(TargetFileName)"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\src\OgreOdeBody.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeCollision.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugContact.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeDebugObject.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEigenSolver.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeEntityInformer.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeGeometry.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeJoint.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMaintainedList.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeMass.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeSpace.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeStepper.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeUtility.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\OgreOdeWorld.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\include\OgreOde_Core.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeBody.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeCollision.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugContact.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeDebugObject.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEigenSolver.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeEntityInformer.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeGeometry.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeJoint.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMaintainedList.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeMass.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdePreReqs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeSpace.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeStepper.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeUtility.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\OgreOdeWorld.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+		<Global
+			Name="DevPartner_IsInstrumented"
+			Value="1"
+		/>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/scripts/VC8/OgreOde_SDK.sln
===================================================================
--- /ogreode/scripts/VC8/OgreOde_SDK.sln	(revision 21)
+++ /ogreode/scripts/VC8/OgreOde_SDK.sln	(revision 21)
@@ -0,0 +1,83 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Core", "OgreOde_Core_SDK.vcproj", "{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_SimpleScenes", "..\..\demos\SimpleScenes\scripts\VC8\Demo_SimpleScenes_SDK.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F89C700A-E965-46D2-A90F-7B2497947AB9} = {F89C700A-E965-46D2-A90F-7B2497947AB9}
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_Landscape", "..\..\demos\Landscape\scripts\VC8\Demo_Landscape_SDK.vcproj", "{938CDDEB-72ED-4902-B936-003D4D9F3EB7}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F89C700A-E965-46D2-A90F-7B2497947AB9} = {F89C700A-E965-46D2-A90F-7B2497947AB9}
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Prefab", "..\..\prefab\scripts\VC8\OgreOde_Prefab_SDK.vcproj", "{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	ProjectSection(ProjectDependencies) = postProject
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_GranTurismOgre", "..\..\demos\GranTurismOgre\scripts\VC8\Demo_GranTurismOgre_SDK.vcproj", "{292C4A04-E960-44A3-A6EA-83881C176135}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F89C700A-E965-46D2-A90F-7B2497947AB9} = {F89C700A-E965-46D2-A90F-7B2497947AB9}
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml", "..\..\tinyxml\tinyxml_lib_vc8_SDK.vcproj", "{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Loader", "..\..\loader\scripts\VC8\OgreOde_Loader_SDK.vcproj", "{F89C700A-E965-46D2-A90F-7B2497947AB9}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug|Win32.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release|Win32.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release|Win32.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug|Win32.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release|Win32.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release|Win32.Build.0 = Release|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Debug|Win32.ActiveCfg = Debug|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Debug|Win32.Build.0 = Debug|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Release|Win32.ActiveCfg = Release|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Release|Win32.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug|Win32.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug|Win32.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release|Win32.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release|Win32.Build.0 = Release|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Debug|Win32.ActiveCfg = Debug|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Debug|Win32.Build.0 = Debug|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Release|Win32.ActiveCfg = Release|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Release|Win32.Build.0 = Release|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Debug|Win32.Build.0 = Debug|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Release|Win32.ActiveCfg = Release|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Release|Win32.Build.0 = Release|Win32
+		{F89C700A-E965-46D2-A90F-7B2497947AB9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F89C700A-E965-46D2-A90F-7B2497947AB9}.Debug|Win32.Build.0 = Debug|Win32
+		{F89C700A-E965-46D2-A90F-7B2497947AB9}.Release|Win32.ActiveCfg = Release|Win32
+		{F89C700A-E965-46D2-A90F-7B2497947AB9}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		AMDCaProjectFile = E:\lib\Ogre\OgreOdeOrig\scripts\VC8\CodeAnalyst\OgreOde_SDK.caw
+	EndGlobalSection
+EndGlobal
Index: /ogreode/scripts/VC8/OgreOde_Source.sln
===================================================================
--- /ogreode/scripts/VC8/OgreOde_Source.sln	(revision 21)
+++ /ogreode/scripts/VC8/OgreOde_Source.sln	(revision 21)
@@ -0,0 +1,132 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_GranTurismOgre", "..\..\demos\GranTurismOgre\scripts\VC8\Demo_GranTurismOgre_Source.vcproj", "{292C4A04-E960-44A3-A6EA-83881C176135}"
+	ProjectSection(ProjectDependencies) = postProject
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07} = {EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{7E7608D8-7A7D-478B-A794-57A048438DE6} = {7E7608D8-7A7D-478B-A794-57A048438DE6}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_Landscape", "..\..\demos\Landscape\scripts\VC8\Demo_Landscape_Source.vcproj", "{938CDDEB-72ED-4902-B936-003D4D9F3EB7}"
+	ProjectSection(ProjectDependencies) = postProject
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07} = {EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{7E7608D8-7A7D-478B-A794-57A048438DE6} = {7E7608D8-7A7D-478B-A794-57A048438DE6}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_SimpleScenes", "..\..\demos\SimpleScenes\scripts\VC8\Demo_SimpleScenes_Source.vcproj", "{F3DE570A-4FA1-44AB-8C12-4369126F2C95}"
+	ProjectSection(ProjectDependencies) = postProject
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07} = {EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{7E7608D8-7A7D-478B-A794-57A048438DE6} = {7E7608D8-7A7D-478B-A794-57A048438DE6}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Core", "OgreOde_Core_Source.vcproj", "{DF22C2FB-C678-4378-8475-9CCE0A906756}"
+	ProjectSection(ProjectDependencies) = postProject
+		{7E7608D8-7A7D-478B-A794-57A048438DE6} = {7E7608D8-7A7D-478B-A794-57A048438DE6}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Prefab", "..\..\prefab\scripts\VC8\OgreOde_Prefab_Source.vcproj", "{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ode", "..\..\ode\build\vs2005\ode_Source.vcproj", "{7E7608D8-7A7D-478B-A794-57A048438DE6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml", "..\..\tinyxml\tinyxml_lib_vc8_Source.vcproj", "{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OgreOde_Loader", "..\..\loader\scripts\VC8\OgreOde_Loader_Source.vcproj", "{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}"
+	ProjectSection(ProjectDependencies) = postProject
+		{DF22C2FB-C678-4378-8475-9CCE0A906756} = {DF22C2FB-C678-4378-8475-9CCE0A906756}
+		{7E7608D8-7A7D-478B-A794-57A048438DE6} = {7E7608D8-7A7D-478B-A794-57A048438DE6}
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297} = {BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D} = {0FDE607E-F0BA-4BD6-822D-FBDB8738630D}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		DebugDLL|Win32 = DebugDLL|Win32
+		Release|Win32 = Release|Win32
+		ReleaseDLL|Win32 = ReleaseDLL|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Debug|Win32.ActiveCfg = Debug|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Debug|Win32.Build.0 = Debug|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.DebugDLL|Win32.ActiveCfg = Debug|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.DebugDLL|Win32.Build.0 = Debug|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Release|Win32.ActiveCfg = Release|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.Release|Win32.Build.0 = Release|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.ReleaseDLL|Win32.ActiveCfg = Release|Win32
+		{292C4A04-E960-44A3-A6EA-83881C176135}.ReleaseDLL|Win32.Build.0 = Release|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Debug|Win32.ActiveCfg = Debug|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Debug|Win32.Build.0 = Debug|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.DebugDLL|Win32.ActiveCfg = Debug|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.DebugDLL|Win32.Build.0 = Debug|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Release|Win32.ActiveCfg = Release|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.Release|Win32.Build.0 = Release|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.ReleaseDLL|Win32.ActiveCfg = Release|Win32
+		{938CDDEB-72ED-4902-B936-003D4D9F3EB7}.ReleaseDLL|Win32.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Debug|Win32.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL|Win32.ActiveCfg = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.DebugDLL|Win32.Build.0 = Debug|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release|Win32.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.Release|Win32.Build.0 = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL|Win32.ActiveCfg = Release|Win32
+		{F3DE570A-4FA1-44AB-8C12-4369126F2C95}.ReleaseDLL|Win32.Build.0 = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Debug|Win32.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugDLL|Win32.ActiveCfg = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.DebugDLL|Win32.Build.0 = Debug|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release|Win32.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.Release|Win32.Build.0 = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseDLL|Win32.ActiveCfg = Release|Win32
+		{DF22C2FB-C678-4378-8475-9CCE0A906756}.ReleaseDLL|Win32.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug|Win32.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Debug|Win32.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugDLL|Win32.ActiveCfg = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.DebugDLL|Win32.Build.0 = Debug|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release|Win32.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.Release|Win32.Build.0 = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseDLL|Win32.ActiveCfg = Release|Win32
+		{BF6E2AC5-1B24-4728-B4E4-8E2D20DDB297}.ReleaseDLL|Win32.Build.0 = Release|Win32
+		{7E7608D8-7A7D-478B-A794-57A048438DE6}.Debug|Win32.ActiveCfg = DebugLib|Win32
+		{7E7608D8-7A7D-478B-A794-57A048438DE6}.Debug|Win32.Build.0 = DebugLib|Win32
+		{7E7608D8-7A7D-478B-A794-57A048438DE6}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32
+		{7E7608D8-7A7D-478B-A794-57A048438DE6}.DebugDLL|Win32.Build.0 = DebugDLL|Win32
+		{7E7608D8-7A7D-478B-A794-57A048438DE6}.Release|Win32.ActiveCfg = ReleaseLib|Win32
+		{7E7608D8-7A7D-478B-A794-57A048438DE6}.Release|Win32.Build.0 = ReleaseLib|Win32
+		{7E7608D8-7A7D-478B-A794-57A048438DE6}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32
+		{7E7608D8-7A7D-478B-A794-57A048438DE6}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Debug|Win32.Build.0 = Debug|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.DebugDLL|Win32.ActiveCfg = Debug|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.DebugDLL|Win32.Build.0 = Debug|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Release|Win32.ActiveCfg = Release|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.Release|Win32.Build.0 = Release|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.ReleaseDLL|Win32.ActiveCfg = Release|Win32
+		{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}.ReleaseDLL|Win32.Build.0 = Release|Win32
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}.Debug|Win32.Build.0 = Debug|Win32
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}.DebugDLL|Win32.ActiveCfg = Debug|Win32
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}.DebugDLL|Win32.Build.0 = Debug|Win32
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}.Release|Win32.ActiveCfg = Release|Win32
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}.Release|Win32.Build.0 = Release|Win32
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}.ReleaseDLL|Win32.ActiveCfg = Release|Win32
+		{EAC33AEC-9B1F-4727-B3E2-B40BF64BAE07}.ReleaseDLL|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		AMDCaProjectFile = E:\lib\OgreOde\scripts\VC8\CodeAnalyst\OgreOde.caw
+	EndGlobalSection
+EndGlobal
Index: /ogreode/src/Makefile.am
===================================================================
--- /ogreode/src/Makefile.am	(revision 21)
+++ /ogreode/src/Makefile.am	(revision 21)
@@ -0,0 +1,29 @@
+INCLUDES = \
+	$(STLPORT_CFLAGS) \
+	${OGRE_CFLAGS} \
+	-I$(top_srcdir)/include
+#	-I$(top_srcdir)/ode/include 
+
+
+lib_LTLIBRARIES = libOgreOde_Core.la
+
+
+libOgreOde_Core_la_SOURCES = \
+	OgreOdeBody.cpp \
+	OgreOdeCollision.cpp \
+	OgreOdeDebugObject.cpp \
+	OgreOdeDebugContact.cpp \
+	OgreOdeEigenSolver.cpp \
+	OgreOdeEntityInformer.cpp \
+	OgreOdeGeometry.cpp \
+	OgreOdeJoint.cpp \
+	OgreOdeMaintainedList.cpp \
+	OgreOdeMass.cpp \
+	OgreOdeSpace.cpp \
+	OgreOdeStepper.cpp \
+	OgreOdeUtility.cpp \
+	OgreOdeWorld.cpp
+
+libOgreOde_Core_la_LIBADD = \
+	$(OGRE_LIBS) -lode
+
Index: /ogreode/src/OgreOdeBody.cpp
===================================================================
--- /ogreode/src/OgreOdeBody.cpp	(revision 21)
+++ /ogreode/src/OgreOdeBody.cpp	(revision 21)
@@ -0,0 +1,856 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeWorld.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeMass.h"
+#include "OgreOdeDebugObject.h"
+#include "OgreOdeGeometry.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+
+//-----------------------------------------------------------------------
+BodyState::BodyState(const Ogre::Vector3	&position,
+                     const Ogre::Quaternion &orientation)
+{
+    _position = position;
+    _orientation = orientation;	
+}
+//-----------------------------------------------------------------------
+void BodyState::operator=(const BodyState &other)
+{
+    _position = other._position;
+    _orientation = other._orientation;
+}
+//-----------------------------------------------------------------------
+bool BodyState::operator==(const BodyState &other) const
+{
+    return _position == other._position && 
+        _orientation == other._orientation;			
+}
+//-----------------------------------------------------------------------
+bool BodyState::operator!=(const BodyState &other) const
+{
+    return _position != other._position || 
+        _orientation != other._orientation;
+} 
+//-----------------------------------------------------------------------
+/// compare with another physics state for "significant" differences.
+/// used for detecting position or orientation snaps which need smoothing.
+bool BodyState::isDifferent(const BodyState &other, const Ogre::Real threshold) const
+{
+    return (other._position-_position).squaredLength() > threshold || 
+        (other._orientation-_orientation).normalise() > threshold;
+}
+
+//-----------------------------------------------------------------------
+void BodyState::interpolate(const BodyState * const _previous_state, 
+                                   const BodyState * const _current_state, 
+                                   const Ogre::Real alpha)
+{
+    const Ogre::Real timeDiffuseless = Ogre::Real(0.0001);
+    if (alpha - timeDiffuseless < 0) // alpha <= 0
+    {	
+        _position = _current_state->_position;
+        _orientation = _current_state->_orientation;			
+    }
+    else if (alpha - 1 - timeDiffuseless > 0) // alpha >= 1
+    {	
+        _position = _previous_state->_position;
+        _orientation = _previous_state->_orientation;	
+    }
+    else
+#if _DEBUG 
+    if (_previous_state->isDifferent(*_current_state, Ogre::Real(0.01)))
+    {        
+        _position = _current_state->_position*alpha + _previous_state->_position * (1.0f - alpha);
+        _orientation = Ogre::Quaternion::Slerp(alpha, _previous_state->_orientation, _current_state->_orientation, true); //shortest path ?				
+    }
+    else
+    {
+        _position = _previous_state->_position;
+        _orientation = _previous_state->_orientation;
+    }
+#else
+    {
+        _position = _current_state->_position*alpha + _previous_state->_position * (1.0f - alpha);
+        _orientation = Ogre::Quaternion::Slerp(alpha, _previous_state->_orientation, _current_state->_orientation, true); //shortest path ?				
+    }
+#endif
+}
+
+//-----------------------------------------------------------------------
+int Body::_body_count = 0;
+//-----------------------------------------------------------------------
+const Ogre::String Body::MovableType = "OgreOde::Body";
+//-----------------------------------------------------------------------
+Body::Body(World *world, const Ogre::String& name):
+    MovableObject(),
+    //UserDefinedObject(),
+    _name(name), 
+    _world(world),
+	_modify_parent_orientation(true)
+{ 
+	_body_count++;
+	_body = dBodyCreate(_world->getWorldID()); 
+	
+	_debug_node = 0;
+	_mass = new Mass(); 
+
+	dBodySetData(_body,(void*)this);
+	_world->getBodyList().registerItem(this);
+
+	if (_name.empty())
+		_name = MovableType + Ogre::StringConverter::toString(_body_count);
+
+	setDamping (_world->_linear_damping, 
+				_world->_angular_damping);
+	_user_data = 0;
+	
+	_isEnabled = true;
+    _historyResize(_world->getHistorySize());
+    // Tie the physical body to the movable
+    // used when getting physical out of Movables. 
+    this->setUserObject (this);
+
+}
+//-----------------------------------------------------------------------
+void Body::_historyResize(const size_t size)
+{
+	_state_history.resize (size);
+	for (size_t i = 0; i < size; i++)
+	{
+		_state_history.add(new BodyState (_draw_state));
+	}
+}
+//-----------------------------------------------------------------------
+void Body::_notifyAttached(Node* parent,bool isTagPoint)
+{
+    MovableObject::_notifyAttached(parent,isTagPoint);
+    if (parent)
+    {
+        Body* other_body = _world->findBody(static_cast<SceneNode*>(parent));
+        if ((other_body) && (other_body != this))
+        {
+            static_cast<SceneNode*>(parent)->detachObject(other_body);
+
+        }
+
+        setPosition(parent->getPosition());
+        setOrientation(parent->getOrientation());
+    } 
+}
+//-----------------------------------------------------------------------
+void Body::destroyDebugNode()
+{
+	if (_debug_node)
+	{
+		_world->notifyGeometry(this);
+
+        SceneNode* sn = static_cast<SceneNode*>(_debug_node);
+        sn->removeAndDestroyAllChildren ();
+        sn = static_cast<SceneNode*>(_debug_node->getParent());
+        sn->removeAndDestroyChild(_debug_node->getName());
+		_debug_node = 0;
+	}
+}
+
+//-----------------------------------------------------------------------
+void Body::addDebugNode(Node* node)
+{
+	if (!_debug_node)
+	{
+		_debug_node = _world->_manager->getRootSceneNode()->createChild(_name + Ogre::String("_DebugBody"));
+	}
+   
+    _debug_node->addChild(node);
+   
+}
+
+//-----------------------------------------------------------------------
+void Body::setModifyParentOrientation(bool bModify)
+{
+	_modify_parent_orientation = bModify;
+} 
+//-----------------------------------------------------------------------
+void Body::setPosition(const Ogre::Vector3& position)
+{
+	dBodySetPosition(_body,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+
+	_draw_state._position = position;
+	for (size_t i = 0; i < _state_history.size (); i++)
+	{
+		_state_history[i]->_position = position;
+	}
+
+	if (mParentNode) 
+        mParentNode->setPosition(position);
+}
+
+//-----------------------------------------------------------------------
+void Body::setOrientation(const Ogre::Quaternion& orientation)
+{
+	dQuaternion q; 
+	q[0] = (dReal)orientation.w;
+	q[1] = (dReal)orientation.x;
+	q[2] = (dReal)orientation.y;
+	q[3] = (dReal)orientation.z;
+	dBodySetQuaternion(_body,q); 
+
+	_draw_state._orientation = orientation;
+	for (size_t i = 0; i < _state_history.size (); i++)
+	{
+		_state_history[i]->_orientation = orientation;
+	}
+
+	if (mParentNode && _modify_parent_orientation) 
+        mParentNode->setOrientation(orientation);
+}
+
+//-----------------------------------------------------------------------
+void Body::setLinearVelocity(const Ogre::Vector3& linear_velocity)
+{
+	dBodySetLinearVel(_body,(dReal)linear_velocity.x,(dReal)linear_velocity.y,(dReal)linear_velocity.z); 
+}
+
+//-----------------------------------------------------------------------
+void Body::setAngularVelocity(const Ogre::Vector3& angular_velocity)
+{
+	dBodySetAngularVel(_body,(dReal)angular_velocity.x,(dReal)angular_velocity.y,(dReal)angular_velocity.z); 
+}
+
+
+//-----------------------------------------------------------------------
+const Ogre::Vector3& Body::getLinearVelocity()
+{
+	const dReal* linear_velocity = dBodyGetLinearVel(_body); 
+	_linear_vel.x = (Real)linear_velocity[0];
+	_linear_vel.y = (Real)linear_velocity[1];
+	_linear_vel.z = (Real)linear_velocity[2];
+
+	return _linear_vel;
+}
+
+//-----------------------------------------------------------------------
+const Ogre::Vector3& Body::getAngularVelocity()
+{
+	const dReal* angular_velocity = dBodyGetAngularVel(_body); 
+	_angular_vel.x = (Real)angular_velocity[0];
+	_angular_vel.y = (Real)angular_velocity[1];
+	_angular_vel.z = (Real)angular_velocity[2];
+
+	return _angular_vel;
+}
+
+//-----------------------------------------------------------------------
+const Ogre::String& Body::getMovableType() const
+{
+	return MovableType;
+}
+
+//-----------------------------------------------------------------------
+void Body::_notifyCurrentCamera(Camera* camera)
+{
+}
+
+//-----------------------------------------------------------------------
+const AxisAlignedBox& Body::getBoundingBox(void) const
+{
+	return _bounding_box;
+}
+
+//-----------------------------------------------------------------------
+Real Body::getBoundingRadius(void) const
+{
+	return Ogre::Real(0.0);
+}
+//-----------------------------------------------------------------------
+void Body::_updateRenderQueue(RenderQueue* queue)
+{
+}
+//-----------------------------------------------------------------------
+void Body::setMass(const Mass& mass)
+{
+	dBodySetMass(_body,mass.getMassPtr());
+}
+
+//-----------------------------------------------------------------------
+const Mass& Body::getMass()
+{
+	dMass mass;
+	dBodyGetMass(_body,&mass); 
+	*_mass = &mass;
+	return *_mass;
+}
+
+//-----------------------------------------------------------------------
+void Body::addForce(const Ogre::Vector3& force)
+{
+	dBodyAddForce(_body,(dReal)force.x,(dReal)force.y,(dReal)force.z);
+}
+
+//-----------------------------------------------------------------------
+void Body::addTorque(const Ogre::Vector3& torque)
+{
+	dBodyAddTorque(_body,(dReal)torque.x,(dReal)torque.y,(dReal)torque.z);
+}
+
+//-----------------------------------------------------------------------
+void Body::addRelativeForce(const Ogre::Vector3& force)
+{
+	dBodyAddRelForce(_body,(dReal)force.x,(dReal)force.y,(dReal)force.z);
+}
+
+//-----------------------------------------------------------------------
+void Body::addRelativeTorque(const Ogre::Vector3& torque)
+{
+	dBodyAddRelTorque(_body,(dReal)torque.x,(dReal)torque.y,(dReal)torque.z);
+}
+
+//-----------------------------------------------------------------------
+void Body::addForceAt(const Ogre::Vector3& force,const Ogre::Vector3& position)
+{
+	dBodyAddForceAtPos(_body,(dReal)force.x,(dReal)force.y,(dReal)force.z,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+}
+
+//-----------------------------------------------------------------------
+void Body::addForceAtRelative(const Ogre::Vector3& force,const Ogre::Vector3& position)
+{
+	dBodyAddForceAtRelPos(_body,(dReal)force.x,(dReal)force.y,(dReal)force.z,(dReal)position.x,(dReal)position.y,(dReal)position.z);
+}
+//-----------------------------------------------------------------------
+void Body::addRelativeForceAt(const Ogre::Vector3& force,const Ogre::Vector3& position)
+{
+    dBodyAddRelForceAtPos(_body,(dReal)force.x,(dReal)force.y,(dReal)force.z,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+}
+//-----------------------------------------------------------------------
+void Body::addRelativeForceAtRelative(const Ogre::Vector3& force,const Ogre::Vector3& position)
+{
+	dBodyAddRelForceAtRelPos(_body,(dReal)force.x,(dReal)force.y,(dReal)force.z,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+}
+//-----------------------------------------------------------------------
+const Ogre::Vector3& Body::getForce()
+{
+	const dReal* force = dBodyGetForce(_body); 
+	_force.x = force[0];
+	_force.y = force[1];
+	_force.z = force[2];
+
+	return _force;
+}
+//-----------------------------------------------------------------------
+const Ogre::Vector3& Body::getTorque()
+{
+	const dReal* torque = dBodyGetTorque(_body); 
+	_torque.x = torque[0];
+	_torque.y = torque[1];
+	_torque.z = torque[2];
+
+	return _torque;
+}
+//-----------------------------------------------------------------------
+void Body::setForce(const Ogre::Vector3& force)
+{
+    dBodySetForce(_body, (dReal) force.x, (dReal)force.y, (dReal)force.z);
+}
+//-----------------------------------------------------------------------
+void Body::setTorque(const Ogre::Vector3& torque)
+{
+    dBodySetTorque(_body, (dReal) torque.x, (dReal)torque.y, (dReal)torque.z);
+}
+//-----------------------------------------------------------------------
+/*
+Given a point on a body, get that point's position in the world
+*/
+Vector3 Body::getPointWorldPosition(const Ogre::Vector3& position)
+{
+	dVector3 result;
+	dBodyGetRelPointPos(_body,(dReal)position.x,(dReal)position.y,(dReal)position.z,result);
+
+	return Ogre::Vector3(result[0],result[1],result[2]);
+}
+//-----------------------------------------------------------------------
+/*
+Given a point on a body, get that point's velocity in the world
+*/
+Vector3 Body::getPointWorldVelocity(const Ogre::Vector3& position)
+{
+	dVector3 result;
+	dBodyGetRelPointVel(_body,(dReal)position.x,(dReal)position.y,(dReal)position.z,result);
+
+	return Ogre::Vector3(result[0],result[1],result[2]);
+}
+//-----------------------------------------------------------------------
+/*
+Given a point (in the world), get that point's velocity in the world with respect to the body
+i.e. convert the global point to a relative point on the body and compute the velocity of that
+point on the body
+*/
+Vector3 Body::getPointVelocity(const Ogre::Vector3& position)
+{
+	dVector3 result;
+	dBodyGetPointVel(_body,(dReal)position.x,(dReal)position.y,(dReal)position.z,result); 
+
+	return Ogre::Vector3(result[0],result[1],result[2]);
+}
+//-----------------------------------------------------------------------
+Vector3 Body::getPointBodyPosition(const Ogre::Vector3& position)
+{
+	dVector3 result;
+	dBodyGetPosRelPoint(_body,(dReal)position.x,(dReal)position.y,(dReal)position.z,result); 
+
+	return Ogre::Vector3(result[0],result[1],result[2]);
+}
+//-----------------------------------------------------------------------
+Vector3 Body::getVectorToWorld(const Ogre::Vector3& vector)
+{
+	dVector3 result;
+	dBodyVectorToWorld(_body,(dReal)vector.x,(dReal)vector.y,(dReal)vector.z,result);
+
+	return Ogre::Vector3(result[0],result[1],result[2]);
+}
+//-----------------------------------------------------------------------
+Vector3 Body::getVectorFromWorld(const Ogre::Vector3& vector)
+{
+	dVector3 result;
+	dBodyVectorFromWorld(_body,(dReal)vector.x,(dReal)vector.y,(dReal)vector.z,result); 
+
+	return Ogre::Vector3(result[0],result[1],result[2]);
+}
+//-----------------------------------------------------------------------
+void Body::wake()
+{
+	dBodyEnable(_body); 
+	_isEnabled = true;
+}
+//-----------------------------------------------------------------------
+void Body::sleep()
+{
+	dBodyDisable(_body); 
+	_isEnabled = false;
+}
+//-----------------------------------------------------------------------
+void Body::setAutoSleep(bool auto_disable)
+{
+	dBodySetAutoDisableFlag(_body,((auto_disable)?1:0)); 
+}
+//-----------------------------------------------------------------------
+bool Body::getAutoSleep()
+{
+	return ((dBodyGetAutoDisableFlag(_body))?true:false); 
+}
+//-----------------------------------------------------------------------
+void Body::setAutoSleepLinearThreshold(Real linear_threshold)
+{
+	dBodySetAutoDisableLinearThreshold(_body,(dReal)linear_threshold); 
+}
+//-----------------------------------------------------------------------
+Real Body::getAutoSleepLinearThreshold()
+{
+	return (Real)dBodyGetAutoDisableLinearThreshold(_body); 
+}
+//-----------------------------------------------------------------------
+void Body::setAutoSleepAngularThreshold(Real angular_threshold)
+{
+	dBodySetAutoDisableAngularThreshold(_body,(dReal)angular_threshold); 
+}
+//-----------------------------------------------------------------------
+Real Body::getAutoSleepAngularThreshold()
+{
+	return (Real)dBodyGetAutoDisableAngularThreshold(_body); 
+}
+//-----------------------------------------------------------------------
+void Body::setAutoSleepSteps(int steps)
+{
+	dBodySetAutoDisableSteps(_body,steps); 
+}
+//-----------------------------------------------------------------------
+int Body::getAutoSleepSteps()
+{
+	return dBodyGetAutoDisableSteps(_body); 
+}
+//-----------------------------------------------------------------------
+void Body::setAutoSleepTime(Real time)
+{
+	dBodySetAutoDisableTime(_body,(dReal)time); 
+}
+//-----------------------------------------------------------------------
+Real Body::getAutoSleepTime()
+{
+	return (Real)dBodyGetAutoDisableTime(_body); 
+}
+//-----------------------------------------------------------------------
+void Body::setAutoSleepDefaults()
+{
+	dBodySetAutoDisableDefaults(_body);
+}
+//-----------------------------------------------------------------------
+void Body::setFiniteRotationMode(bool on)
+{
+	dBodySetFiniteRotationMode(_body,((on)?1:0)); 
+}
+//-----------------------------------------------------------------------
+bool Body::getFiniteRotationMode()
+{
+	return ((dBodyGetFiniteRotationMode(_body))?true:false); 
+}
+//-----------------------------------------------------------------------
+void Body::setFiniteRotationAxis(const Ogre::Vector3& axis)
+{
+	dBodySetFiniteRotationAxis(_body,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z); 
+}
+//-----------------------------------------------------------------------
+const Ogre::Vector3& Body::getFiniteRotationAxis()
+{
+	dVector3 result;
+	dBodyGetFiniteRotationAxis(_body,result); 
+	_finite_axis.x = result[0];
+	_finite_axis.y = result[1];
+	_finite_axis.z = result[2];
+
+	return _finite_axis;
+}
+//-----------------------------------------------------------------------
+int Body::getJointCount()
+{
+	return dBodyGetNumJoints(_body); 
+}
+//-----------------------------------------------------------------------
+Joint* Body::getJoint(int index)
+{
+	return (Joint*)_world->getJointList().findItem((long unsigned int)dBodyGetJoint(_body,index)); 
+}
+//-----------------------------------------------------------------------
+size_t Body::getGeometryCount()
+{
+    return _geometries.size();
+// 	int rc = 0;
+// 	Geometry* g= 0;
+// 	MaintainedItemIterator<Geometry> it = _world->_geometry_list.getIterator();
+// 	while(!it.end ())
+// 	{
+// 		g = (Geometry*) (it.getNext ());	
+// 		if (this == g->getBody()) 
+//             ++rc;
+// 	}
+// 
+// 	return rc;
+}
+//-----------------------------------------------------------------------
+Geometry* Body::getGeometry(int index)
+{
+    return _geometries[index];
+
+// 	Geometry* rc = 0;
+// 	int idx = 0;
+// 	Geometry* g = 0;
+// 	MaintainedItemIterator<Geometry> it = _world->_geometry_list.getIterator();
+// 	while(!it.end ())
+// 	{
+// 		g = (Geometry*) (it.getNext ());	
+// 		if (this == g->getBody())
+// 		{
+// 			rc = g;
+// 			++idx;
+// 
+// 			if (idx > index) 
+// 				break;
+// 		}
+// 	}
+// 
+// 	return rc;
+}
+GeometryArray* Body::getGeometries()
+{
+    return &_geometries;
+}
+
+//-----------------------------------------------------------------------
+void Body::addGeometry(Geometry *g) 
+{
+    _geometries.push_back(g);
+}
+//-----------------------------------------------------------------------
+void Body::removeGeometry(Geometry *g) 
+{
+    ;
+    for (GeometryArray::iterator it = _geometries.begin ();
+        it != _geometries.end ();
+        ++it)
+    {
+        if (*it = g)
+        {
+            _geometries.erase (it);
+            return;
+        }
+    }
+}
+//-----------------------------------------------------------------------
+void Body::setAffectedByGravity(bool on)
+{
+	dBodySetGravityMode(_body,((on)?1:0)); 
+}
+//-----------------------------------------------------------------------
+bool Body::getAffectedByGravity()
+{
+	return ((dBodyGetGravityMode(_body))?true:false); 
+}
+//-----------------------------------------------------------------------
+dBodyID Body::getBodyID() const
+{
+	return _body;
+}
+//-----------------------------------------------------------------------
+const Ogre::String& Body::getName(void) const
+{
+	return _name;
+}
+
+//-----------------------------------------------------------------------
+void Body::deriveLocation()
+{
+	if (mParentNode)
+	{
+		setPosition(mParentNode->getPosition());
+		setOrientation(mParentNode->getOrientation());
+	}
+}
+
+//-----------------------------------------------------------------------
+void Body::recursiveSetMode(SceneNode* node)
+{
+	for(unsigned short i = 0;i < node->numChildren();i++)
+	{
+		recursiveSetMode(static_cast<SceneNode*>(node->getChild(i)));		
+	}
+
+	if (_debug_node)
+	{
+		for(unsigned short j = 0;j < node->numAttachedObjects();j++)
+		{
+			static_cast<DebugObject*>(node->getAttachedObject(j))->setMode(
+				(dBodyIsEnabled(_body))?
+				DebugObject::Mode_Enabled
+				:
+				DebugObject::Mode_Disabled);
+		}
+	}
+}
+//-----------------------------------------------------------------------
+void Body::setDamping(Real linear_damping,Real angular_damping)
+{
+	_linear_damping = -(dReal)linear_damping;
+	_is_linear_damped = (_linear_damping < 0.0);
+	_angular_damping = -(dReal)angular_damping;
+	_is_angular_damped = (_angular_damping < 0.0);
+
+	_is_damped = _linear_damping || _is_angular_damped;
+}
+//-----------------------------------------------------------------------
+void Body::setLinearDamping(Real linear_damping)
+{
+	_linear_damping = -(dReal)linear_damping;
+	_is_linear_damped = (_linear_damping < 0.0);
+
+	_is_damped = _linear_damping || _is_angular_damped;
+}
+//-----------------------------------------------------------------------
+void Body::setAngularDamping(Real angular_damping)
+{
+	_angular_damping = -(dReal)angular_damping;
+	_is_angular_damped = (_angular_damping < 0.0);
+
+	_is_damped = _linear_damping || _is_angular_damped;
+}
+//-----------------------------------------------------------------------
+Real Body::getLinearDamping()
+{
+	return -(Real)_linear_damping;
+}
+//-----------------------------------------------------------------------
+Real Body::getAngularDamping()
+{
+	return -(Real)_angular_damping;
+}
+//-----------------------------------------------------------------------
+void Body::applyDamping()
+{
+	assert (_isEnabled && _is_damped);
+	
+	if (_linear_damping)
+	{
+		const dReal * const v = dBodyGetLinearVel(_body);
+		dBodyAddForce(_body, v[0] * _linear_damping, v[1] * _linear_damping, v[2] * _linear_damping);
+	}
+
+	if (_is_angular_damped)
+	{
+		const dReal * const v = dBodyGetAngularVel(_body);
+		dBodyAddTorque(_body, v[0] * _angular_damping, v[1] * _angular_damping, v[2] * _angular_damping);
+	}	
+}
+//-----------------------------------------------------------------------
+void Body::setDebug(const bool debug)
+{
+	destroyDebugNode();
+}
+//-----------------------------------------------------------------------
+void Body::setUserData(unsigned long user_data)
+{
+	_user_data = user_data;
+}
+//-----------------------------------------------------------------------
+unsigned long Body::getUserData()
+{
+	return _user_data;
+}
+//-----------------------------------------------------------------------
+unsigned long Body::getID()
+{
+	return (unsigned long)_body;
+}
+//-----------------------------------------------------------------------
+Body::~Body()
+{
+	destroyDebugNode();
+	delete _mass;
+
+	_world->getBodyList().unregisterItem((long unsigned int)_body);
+	dBodyDestroy(_body);
+}
+
+//-----------------------------------------------------------------------
+bool Body::collide(void* data, Geometry *otherGeometry)
+{
+    bool collided = false;
+    dContactGeom contactGeom;
+    Geometry *o1;
+    GeometryArray::const_iterator proxy1, proxy1end;
+    proxy1end = _geometries.end();
+
+    //dContact contact;
+    //Real bounce, velThresh, softness;
+
+    //CollisionInfo collInfo;
+
+    // @@TODO : HAS TO HANDLE TransFormedGeometry and GoemtryOffset
+    for (proxy1 = _geometries.begin(); proxy1 != proxy1end; ++proxy1)
+    {
+        o1 = *proxy1;
+        const int numc = dCollide(o1->getGeometryID(), otherGeometry->getGeometryID(), 0, &contactGeom, sizeof(dContactGeom));
+        if (numc)
+        {
+            // Create contact joints if either object is dynamics simulated
+            // If one is not, then sim will not affect it anyway, it will be fixed
+            // However if one is enabled, we need the contact joint
+            if (this->isAwake())
+            {
+                  _world->collisionCallback(data, o1->getGeometryID(), otherGeometry->getGeometryID());
+            }
+
+            // set return 
+            collided = true;
+            
+        }
+    }
+    return collided;
+}
+//-----------------------------------------------------------------------
+bool Body::collide(void* data, Body *otherBody)
+{
+    bool collided = false;
+    dContactGeom contactGeom;
+    Geometry *o1, *o2;
+    GeometryArray::const_iterator proxy1, proxy2, proxy1end, proxy2end;
+    proxy1end = _geometries.end();
+    proxy2end = otherBody->getGeometries()->end();
+
+    //dContact contact;
+    //Real bounce, velThresh, softness;
+
+    //CollisionInfo collInfo;
+
+    // @@TODO : HAS TO HANDLE TransFormedGeometry and GoemtryOffset
+    for (proxy1 = _geometries.begin(); proxy1 != proxy1end; ++proxy1)
+    {
+        for (proxy2 = otherBody->getGeometries()->begin(); proxy2 != proxy2end; ++proxy2)
+        {
+            o1 = *proxy1;
+            o2 = *proxy2;
+            const int numc = dCollide(o1->getGeometryID(), o2->getGeometryID(), 0, &contactGeom, sizeof(dContactGeom));
+            if (numc)
+            {
+                // Create contact joints if either object is dynamics simulated
+                // If one is not, then sim will not affect it anyway, it will be fixed
+                // However if one is enabled, we need the contact joint
+                if (this->isAwake() || otherBody->isAwake())
+                {
+
+                    _world->collisionCallback(data, o1->getGeometryID(), o2->getGeometryID());
+
+                }
+                // set return 
+                collided = true;
+            }
+        }
+    }
+    return collided;
+}
+//-------------------------------------------------------------------------
+bool Body::collidePlaneBounds(void* data, Ogre::SceneQuery::WorldFragment *wf)
+{
+    bool collided = false;
+    dContactGeom contactGeom;
+    Geometry *geom;
+    GeometryArray::const_iterator proxy, proxyend;
+    proxyend = _geometries.end();
+
+    std::list<Ogre::Plane>::const_iterator pi, piend;
+    piend = wf->planes->end();
+
+    //CollisionInfo collInfo;
+
+    // @@TODO : HAS TO HANDLE TransFormedGeometry and GoemtryOffset
+    for (proxy = _geometries.begin(); proxy != proxyend; ++proxy)
+    {
+        // Hack, simply collide against planes which is facing towards center
+        // We can't do this properly without mesh collision
+        geom = *proxy;
+        Ogre::Real maxdist = -1.0f;
+        const Ogre::Plane* bestPlane = 0;
+        for (pi = wf->planes->begin(); pi != piend; ++pi)
+        {
+            const Ogre::Plane * const boundPlane = &(*pi);
+            const Ogre::Real dist = boundPlane->getDistance (this->getPosition());
+            if (dist >= 0.0f)
+            {
+
+                //@@@@ TODO reuse a static InfinitePlaneGeometry ?
+                InfinitePlaneGeometry *sliding_plane = new InfinitePlaneGeometry(*boundPlane, 0);
+
+
+                int numc = dCollide(geom->getGeometryID(), 
+                                    sliding_plane->getGeometryID(), 
+                                    0, 
+                                    &contactGeom, 
+                                    sizeof(dContactGeom));
+                if (numc)
+                {
+                    // Create contact joints if object is dynamics simulated
+                    if (this->isAwake())
+                    {
+                        _world->collisionCallback(data, geom->getGeometryID(), sliding_plane->getGeometryID());
+
+                    }
+                    // set return 
+                    collided = true;
+                }
+            }
+        } 
+
+    }
+    return collided;
+}
+
Index: /ogreode/src/OgreOdeCollision.cpp
===================================================================
--- /ogreode/src/OgreOdeCollision.cpp	(revision 21)
+++ /ogreode/src/OgreOdeCollision.cpp	(revision 21)
@@ -0,0 +1,323 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeCollision.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeGeometry.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+//------------------------------------------------------------------------------------------------
+CollisionListener::CollisionListener()
+{
+}
+//------------------------------------------------------------------------------------------------
+CollisionListener::~CollisionListener()
+{
+}
+
+//------------------------------------------------------------------------------------------------
+CollisionCallback::CollisionCallback()
+{
+}
+
+//------------------------------------------------------------------------------------------------
+CollisionCallback::~CollisionCallback()
+{
+}
+
+//-----------------------------------------------------------------------
+void CollisionCallback::collisionCallback(Space* spaceFirst, Space* spaceSecond)
+{
+	spaceFirst->collide(static_cast<CollisionCallback*>(this), spaceSecond);
+}
+	
+//-----------------------------------------------------------------------
+void CollisionCallback::collisionCallback(Space* space, Geometry* geometry)
+{
+	space->collide(static_cast<CollisionCallback*>(this), geometry);
+}
+	
+//-----------------------------------------------------------------------
+void CollisionCallback::collisionCallback(Space* space)
+{
+	space->collide(static_cast<CollisionCallback*>(this));
+}
+	
+//-----------------------------------------------------------------------
+void CollisionCallback::collisionCallback(Geometry* geometryFirst, Geometry* geometrySecond)
+{
+	geometryFirst->collide(geometrySecond, static_cast<CollisionListener*>(this));
+}
+
+//-----------------------------------------------------------------------
+void CollisionCallback::collisionCallback(void *data, dGeomID geom_a, dGeomID geom_b)
+{
+	CollisionCallback* colCallback = (CollisionCallback*) data;
+
+	const bool a_space = (dGeomIsSpace(geom_a))?true:false;
+	const bool b_space = (dGeomIsSpace(geom_b))?true:false;
+	
+	void* const ptr_a = dGeomGetData(geom_a);
+	void* const ptr_b = dGeomGetData(geom_b);
+
+	if(a_space  || b_space )
+	{
+		// Collide a space with a space
+		if(a_space && b_space) 
+			colCallback->collisionCallback(static_cast<Space*>(ptr_a), static_cast<Space*>(ptr_b));
+			//static_cast<Space*>(ptr_a)->collide(static_cast<Space*>(ptr_b), colCallback);
+		else if(a_space) 
+			colCallback->collisionCallback(static_cast<Space*>(ptr_a), static_cast<Geometry*>(ptr_b));
+			//static_cast<Space*>(ptr_a)->collide(static_cast<Geometry*>(ptr_b), colCallback);
+		else 
+			colCallback->collisionCallback(static_cast<Space*>(ptr_b), static_cast<Geometry*>(ptr_a));
+			//static_cast<Space*>(ptr_b)->collide(static_cast<Geometry*>(ptr_a), colCallback);
+
+		// Collide geometries internal to the spaces
+		if(a_space) 
+            static_cast<Space*>(ptr_a)->collide(colCallback);
+
+		if(b_space) 
+            static_cast<Space*>(ptr_b)->collide(colCallback);
+	}
+    else
+	{
+		// Collide a geom with a geom, i.e. generate contacts
+		colCallback->collisionCallback(static_cast<Geometry*>(ptr_a), static_cast<Geometry*>(ptr_b));
+		//static_cast<Geometry*>(ptr_a)->collide(static_cast<Geometry*>(ptr_b), static_cast<CollisionListener*>(colCallback));
+	}
+}
+
+
+//------------------------------------------------------------------------------------------------
+Contact::Contact()
+{
+}
+//------------------------------------------------------------------------------------------------
+Contact::~Contact()
+{
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& Contact::getPosition()
+{
+	_position.x = (Real)(_contact->geom.pos[0]);
+	_position.y = (Real)(_contact->geom.pos[1]);
+	_position.z = (Real)(_contact->geom.pos[2]);
+	return _position;
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& Contact::getNormal()
+{
+	_normal.x = (Real)(_contact->geom.normal[0]);
+	_normal.y = (Real)(_contact->geom.normal[1]);
+	_normal.z = (Real)(_contact->geom.normal[2]);
+	return _normal;
+}
+//------------------------------------------------------------------------------------------------
+Real Contact::getPenetrationDepth()
+{
+	return (Real)(_contact->geom.depth);
+}
+//------------------------------------------------------------------------------------------------
+Geometry* Contact::getFirstGeometry()
+{
+	dGeomID g = _contact->geom.g1;
+	if(!g) return 0;
+
+	return (Geometry*)dGeomGetData(g);
+}
+//------------------------------------------------------------------------------------------------
+Geometry* Contact::getSecondGeometry()
+{
+	dGeomID g = _contact->geom.g2;
+	if(!g) return 0;
+
+	return (Geometry*)dGeomGetData(g);
+}
+//------------------------------------------------------------------------------------------------
+int Contact::getFirstSide()
+{
+   return _contact->geom.side1;
+}
+//------------------------------------------------------------------------------------------------
+int Contact::getSecondSide()
+{
+   return _contact->geom.side2;
+} 
+//------------------------------------------------------------------------------------------------
+void Contact::setFirstFrictionDirection(const Ogre::Vector3& vector)
+{
+	_contact->fdir1[0] = (dReal)vector.x;
+	_contact->fdir1[1] = (dReal)vector.y;
+	_contact->fdir1[2] = (dReal)vector.z;
+
+	_contact->surface.mode |= (int)Flag_UseFirstFrictionDirection;
+}
+//------------------------------------------------------------------------------------------------
+void Contact::setCoulombFriction(Real mu,Real additional_mu)
+{
+	_contact->surface.mu = mu;
+	
+	if(additional_mu >= 0.0)
+	{
+		_contact->surface.mu2 = additional_mu;
+		_contact->surface.mode |= (int)Flag_UseAdditionalFriction;
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Contact::setBouncyness(Real bouncyness,Real velocity_threshold)
+{
+	_contact->surface.bounce = bouncyness;
+	if(velocity_threshold >= 0.0)
+	{
+		_contact->surface.bounce_vel = velocity_threshold;
+	}
+	_contact->surface.mode |= (int)Flag_SurfaceIsBouncy;
+}
+//------------------------------------------------------------------------------------------------
+void Contact::setSoftness(Real ERP,Real CFM)
+{
+	_contact->surface.soft_erp = ERP;
+	_contact->surface.soft_cfm = CFM;
+
+	_contact->surface.mode |= (int)Flag_UseERP;
+	_contact->surface.mode |= (int)Flag_UseCFM;
+}
+//------------------------------------------------------------------------------------------------
+void Contact::setIndependentMotion(Real velocity,Real additional_velocity)
+{
+	_contact->surface.motion1 = velocity;
+	_contact->surface.mode |= (int)Flag_IndependentMotion; 
+
+	if(additional_velocity >= 0.0)
+	{
+		_contact->surface.motion2 = additional_velocity;
+		_contact->surface.mode |= (int)Flag_AdditionalIndependentMotion;
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Contact::setForceDependentSlip(Real FDS)
+{
+	_contact->surface.slip1 = FDS;
+	_contact->surface.mode |= (int)Flag_UseFDS;
+}
+//------------------------------------------------------------------------------------------------
+void Contact::setAdditionalFDS(Real FDS)
+{
+	_contact->surface.slip2 = FDS;
+	_contact->surface.mode |= (int)Flag_UseAdditionalFDS;
+}
+//------------------------------------------------------------------------------------------------
+void Contact::setFrictionMode(Contact::Flag flag)
+{
+	assert((flag == Flag_FrictionPyramid)||(flag == Flag_BothFrictionPyramids)||(flag == Flag_AdditionalFrictionPyramid));
+	_contact->surface.mode |= (int)flag;			
+}
+//------------------------------------------------------------------------------------------------
+ContactMapCollisionListener::ContactMapCollisionListener()
+{
+}
+//------------------------------------------------------------------------------------------------
+bool ContactMapCollisionListener::collision(Contact* contact)
+{
+	return false;
+	/*
+	unsigned long mt1 = contact->getFirstGeometry()->getMaterialType();
+	if(!mt1) return false;
+	
+	unsigned long mt2 = contact->getSecondGeometry()->getMaterialType();
+	if(!mt2) return false;
+
+	Contact *c = getContactPtr(mt1,mt2);
+	if(!c) return false;
+
+	contact->_contact->fdir1[0] = c->_contact->fdir1[0];
+	contact->_contact->fdir1[1] = c->_contact->fdir1[1];
+	contact->_contact->fdir1[2] = c->_contact->fdir1[2];
+
+	contact->_contact->surface.mu = c->_contact->surface.mu;
+	contact->_contact->surface.mu2 = c->_contact->surface.mu2;
+
+	contact->_contact->surface.bounce = c->_contact->surface.bounce;
+	contact->_contact->surface.bounce_vel = c->_contact->surface.bounce_vel;
+
+	contact->_contact->surface.soft_erp = c->_contact->surface.soft_erp;
+	contact->_contact->surface.soft_cfm = c->_contact->surface.soft_cfm;
+
+	contact->_contact->surface.motion1 = c->_contact->surface.motion1;
+	contact->_contact->surface.motion2 = c->_contact->surface.motion2;
+
+	contact->_contact->surface.slip1 = c->_contact->surface.slip1;
+	contact->_contact->surface.slip2 = c->_contact->surface.slip2;
+
+	contact->_contact->surface.mode = c->_contact->surface.mode;
+
+	return true;
+	*/
+}
+//------------------------------------------------------------------------------------------------
+void ContactMapCollisionListener::createContact(MaterialID materialA,MaterialID materialB)
+{
+	std::map<MaterialID,MaterialMap* >::iterator i = _map.find(materialA);
+	if(i == _map.end())
+	{
+		_map.insert(MaterialMapPair(materialA,new MaterialMap()));
+		i = _map.find(materialA);
+	}
+
+	MaterialMap::iterator j = i->second->find(materialB);
+	if(j == i->second->end())
+	{
+		Contact *c = new Contact();
+		memset(c->_contact,0,sizeof(dContact));
+
+		i->second->insert(std::pair<MaterialID,Contact*>(materialB,c));
+	}
+}
+//------------------------------------------------------------------------------------------------
+Contact *ContactMapCollisionListener::getContactPtr(MaterialID materialA,MaterialID materialB)
+{
+	Contact *c = 0;
+	MaterialID A = materialA;
+	MaterialID B = materialB;
+
+	std::map<MaterialID,MaterialMap* >::iterator i = _map.find(A);
+	if(i == _map.end())
+	{
+		B = materialA;
+		A = materialB;
+
+		i = _map.find(A);
+	}
+
+	if(i != _map.end())
+	{
+		MaterialMap::iterator j = i->second->find(B);
+		if(j != i->second->end())
+		{
+			c = j->second;
+		}
+	}
+
+	return c;
+}
+//------------------------------------------------------------------------------------------------
+ContactMapCollisionListener::~ContactMapCollisionListener()
+{
+	std::map<MaterialID,MaterialMap* >::iterator i = _map.begin();
+	std::map<MaterialID,MaterialMap* >::iterator i_end = _map.end();
+
+	for(;i != i_end;++i)
+	{
+		MaterialMap::iterator j = i->second->begin();
+		MaterialMap::iterator j_end = i->second->end();
+
+		for(;j != j_end;++j) 
+			delete j->second;
+
+		delete i->second;
+	}
+}
+//------------------------------------------------------------------------------------------------
Index: /ogreode/src/OgreOdeDebugContact.cpp
===================================================================
--- /ogreode/src/OgreOdeDebugContact.cpp	(revision 21)
+++ /ogreode/src/OgreOdeDebugContact.cpp	(revision 21)
@@ -0,0 +1,623 @@
+/**
+* File: OgreOdeDebugContact.cpp
+*
+* description: This create create a billboarding object that display a text.
+*  From MovableText
+* @author  2003 by cTh see gavocanov@rambler.ru
+* @update  2006 by barraq see nospam@barraquand.com
+*/
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "Ogre.h"
+#include "OgreFontManager.h"
+
+#include "OgreOdeDebugContact.h"
+#include "OgreOdeCollision.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeWorld.h"
+
+using namespace Ogre;
+
+#define POS_TEX_BINDING    0
+#define COLOUR_BINDING     1
+
+namespace OgreOde
+{
+    //------------------------------------------------------------------------------------------------
+    DebugContact::DebugContact(const String &name, World *world) : 
+        _name(name), 
+        _world(world),
+        _enabled(false)
+    {
+        // scene node 
+        _node = _world->getSceneManager()->getRootSceneNode ()->createChildSceneNode ();
+
+        // sphere attach to contact point
+        _point = _world->getSceneManager()->createEntity(name + String("_debug_point"), "sphere.mesh");
+        _point_node = _node->createChildSceneNode ();
+        _point_node->attachObject (_point);
+        _point_node->setScale(0.001, 0.001, 0.001);
+
+        // normal direction debug
+         _normal = new DebugNormal();
+         _node->attachObject (_normal);
+
+         // text info on contact
+        _text = new DebugContactText(name + String("_debug_text"), _node->createChildSceneNode ());
+        _text->setPosition (Vector3(0,5,0));
+        _text->setCaption ("-");
+        _text->setVisible (false);
+
+        _node->setVisible (false);
+    }
+     //------------------------------------------------------------------------------------------------
+    DebugContact::~DebugContact()
+    {
+        delete _text;
+
+        _point_node->detachObject (_point->getName ());
+        _node->detachObject (_normal->getName ());
+
+        _world->getSceneManager()->destroyEntity (_point->getName ());
+
+        _node->detachAllObjects ();
+        _node->removeAndDestroyAllChildren ();
+
+        delete _normal;
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContact::update(Contact * const contact)
+    {
+        _node->setPosition (contact->getPosition ());
+
+        _point_node->setPosition (contact->getPenetrationDepth () * contact->getNormal());
+
+        //String contactLabel("p: ");
+        //contactLabel = contactLabel + StringConverter::toString(contact->getPosition());
+        //contactLabel = contactLabel + ", n: ";
+        //contactLabel = contactLabel + StringConverter::toString(contact->getNormal());
+        //_text->setCaption (contactLabel);
+        //_text->setVisible (false);
+
+        //_text->setPosition (contact->getPosition () + Vector3(0,5,0));
+        
+        _normal->update (contact);
+    }
+    //------------------------------------------------------------------------------------------------
+    bool DebugContact::isEnabled () const 
+    {
+        return _enabled;
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContact::setEnabled (bool enable)
+    {
+        _enabled = enable;
+        _node->setVisible (_enabled);
+    };
+    //------------------------------------------------------------------------------------------------
+    void DebugNormal::update(Contact * const contact)
+    {
+       DebugLines::clear ();
+       // set normal following contact normal
+       //contact->_normal 
+       //contact->_position
+       DebugLines::addLine (Vector3::ZERO, 
+                            5*contact->getNormal ());
+        DebugLines::draw ();
+    }
+    //------------------------------------------------------------------------------------------------
+    DebugContactText::DebugContactText(const String &name, 
+                                SceneNode *node,
+                                const String &caption, 
+                                const String &fontName, 
+                                int charHeight, 
+                                const ColourValue &color)
+        : mpCam(NULL)
+        , mpWin(NULL)
+        , mpFont(NULL)
+        , mName(name)
+        , mCaption(caption)
+        , mFontName(fontName)
+        , mCharHeight(charHeight)
+        , mColor(color)
+        , mType("DebugContact")
+        , mTimeUntilNextToggle(0)
+        , mSpaceWidth(0)
+        , mUpdateColors(true)
+        , mOnTop(false)
+        , mHorizontalAlignment(H_LEFT)
+        , mVerticalAlignment(V_BELOW)
+        , mAdditionalHeight(0.0)
+        , mNode(node)
+
+    {
+        if (name.empty())
+            Exception(Exception::ERR_INVALIDPARAMS, "Trying to create DebugContact without name", "DebugContact::DebugContact");
+// 
+//         if (caption.empty())
+//            Exception(Exception::ERR_INVALIDPARAMS, "Trying to create DebugContact without caption", "DebugContact::DebugContact");
+
+        mRenderOp.vertexData = NULL;
+        this->setFontName(mFontName);
+        //this->_setupGeometry();
+        mNode->attachObject(this);
+    }
+    //------------------------------------------------------------------------------------------------
+    DebugContactText::~DebugContactText()
+    {
+        mNode->detachObject(this->getName());
+        if (mRenderOp.vertexData)
+            delete mRenderOp.vertexData;
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::setPosition(const Vector3 &pos)
+    {
+        mNode->setPosition (pos);
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::setFontName(const String &fontName)
+    {
+        if((Ogre::MaterialManager::getSingletonPtr()->resourceExists(mName + "Material"))) 
+        { 
+            Ogre::MaterialManager::getSingleton().remove(mName + "Material"); 
+        }
+
+        if (mFontName != fontName || mpMaterial.isNull() || !mpFont)
+        {
+            mFontName = fontName;
+            mpFont = (Font *)FontManager::getSingleton().getByName(mFontName).getPointer();
+            if (!mpFont)
+                Exception(Exception::ERR_ITEM_NOT_FOUND, "Could not find font " + fontName, "DebugContact::setFontName");
+
+            mpFont->load();
+            if (!mpMaterial.isNull())
+            {
+                MaterialManager::getSingletonPtr()->remove(mpMaterial->getName());
+                mpMaterial.setNull();
+            }
+
+            mpMaterial = mpFont->getMaterial()->clone(mName + "Material");
+            if (!mpMaterial->isLoaded())
+                mpMaterial->load();
+
+            mpMaterial->setDepthCheckEnabled(!mOnTop);
+            mpMaterial->setDepthBias(0,!mOnTop);
+            mpMaterial->setDepthWriteEnabled(mOnTop);
+            mpMaterial->setLightingEnabled(false);
+            mNeedUpdate = true;
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::setCaption(const String &caption)
+    {
+        if (caption != mCaption)
+        {
+            mCaption = caption;
+            mNeedUpdate = true;
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::setColor(const ColourValue &color)
+    {
+        if (color != mColor)
+        {
+            mColor = color;
+            mUpdateColors = true;
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::setCharacterHeight(unsigned int height)
+    {
+        if (height != mCharHeight)
+        {
+            mCharHeight = height;
+            mNeedUpdate = true;
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::setSpaceWidth(unsigned int width)
+    {
+        if (width != mSpaceWidth)
+        {
+            mSpaceWidth = width;
+            mNeedUpdate = true;
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::setTextAlignment(const HorizontalAlignment& horizontalAlignment, const VerticalAlignment& verticalAlignment)
+    {
+        if(mHorizontalAlignment != horizontalAlignment)
+        {
+            mHorizontalAlignment = horizontalAlignment;
+            mNeedUpdate = true;
+        }
+        if(mVerticalAlignment != verticalAlignment)
+        {
+            mVerticalAlignment = verticalAlignment;
+            mNeedUpdate = true;
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::setAdditionalHeight( Real height )
+    {
+        if( mAdditionalHeight != height )
+        {
+            mAdditionalHeight = height;
+            mNeedUpdate = true;
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::showOnTop(bool show)
+    {
+        if( mOnTop != show && !mpMaterial.isNull() )
+        {
+            mOnTop = show;
+            mpMaterial->setDepthBias(0,!mOnTop);
+            mpMaterial->setDepthCheckEnabled(!mOnTop);
+            mpMaterial->setDepthWriteEnabled(mOnTop);
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::_setupGeometry()
+    {
+        assert(mpFont);
+        assert(!mpMaterial.isNull());
+
+        unsigned int vertexCount = static_cast<unsigned int>(mCaption.size() * 6);
+
+        if (mRenderOp.vertexData)
+        {
+            // Removed this test as it causes problems when replacing a caption
+            // of the same size: replacing "Hello" with "hello"
+            // as well as when changing the text alignment
+            //if (mRenderOp.vertexData->vertexCount != vertexCount)
+            {
+                delete mRenderOp.vertexData;
+                mRenderOp.vertexData = NULL;
+                mUpdateColors = true;
+            }
+        }
+
+        if (!mRenderOp.vertexData)
+            mRenderOp.vertexData = new VertexData();
+
+        mRenderOp.indexData = 0;
+        mRenderOp.vertexData->vertexStart = 0;
+        mRenderOp.vertexData->vertexCount = vertexCount;
+        mRenderOp.operationType = RenderOperation::OT_TRIANGLE_LIST; 
+        mRenderOp.useIndexes = false; 
+
+        VertexDeclaration  *decl = mRenderOp.vertexData->vertexDeclaration;
+        VertexBufferBinding   *bind = mRenderOp.vertexData->vertexBufferBinding;
+        size_t offset = 0;
+
+        // create/bind positions/tex.ccord. buffer
+        if (!decl->findElementBySemantic(VES_POSITION))
+            decl->addElement(POS_TEX_BINDING, offset, VET_FLOAT3, VES_POSITION);
+
+        offset += VertexElement::getTypeSize(VET_FLOAT3);
+
+        if (!decl->findElementBySemantic(VES_TEXTURE_COORDINATES))
+            decl->addElement(POS_TEX_BINDING, offset, Ogre::VET_FLOAT2, Ogre::VES_TEXTURE_COORDINATES, 0);
+
+        HardwareVertexBufferSharedPtr ptbuf = HardwareBufferManager::getSingleton().createVertexBuffer(decl->getVertexSize(POS_TEX_BINDING),
+            mRenderOp.vertexData->vertexCount,
+            HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY);
+        bind->setBinding(POS_TEX_BINDING, ptbuf);
+
+        // Colours - store these in a separate buffer because they change less often
+        if (!decl->findElementBySemantic(VES_DIFFUSE))
+            decl->addElement(COLOUR_BINDING, 0, VET_COLOUR, VES_DIFFUSE);
+
+        HardwareVertexBufferSharedPtr cbuf = HardwareBufferManager::getSingleton().createVertexBuffer(decl->getVertexSize(COLOUR_BINDING),
+            mRenderOp.vertexData->vertexCount,
+            HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY);
+        bind->setBinding(COLOUR_BINDING, cbuf);
+
+        size_t charlen = mCaption.size();
+        Real *pPCBuff = static_cast<Real*>(ptbuf->lock(HardwareBuffer::HBL_DISCARD));
+
+        float largestWidth = 0;
+        float left = 0 * 2.0 - 1.0;
+        float top = -((0 * 2.0) - 1.0);
+
+        // Derive space width from a capital A
+        if (mSpaceWidth == 0)
+            mSpaceWidth = mpFont->getGlyphAspectRatio('A') * mCharHeight * 2.0;
+
+        // for calculation of AABB
+        Ogre::Vector3 min, max, currPos;
+        Ogre::Real maxSquaredRadius;
+        bool first = true;
+
+        // Use iterator
+        String::iterator i, iend;
+        iend = mCaption.end();
+        bool newLine = true;
+        Real len = 0.0f;
+
+        if(mVerticalAlignment == DebugContactText::V_ABOVE)
+        {
+            // Raise the first line of the caption
+            top += mCharHeight;
+            for (i = mCaption.begin(); i != iend; ++i)
+            {
+                if (*i == '\n')
+                    top += mCharHeight * 2.0;
+            }
+        }
+
+        for (i = mCaption.begin(); i != iend; ++i)
+        {
+            if (newLine)
+            {
+                len = 0.0f;
+                for (String::iterator j = i; j != iend && *j != '\n'; j++)
+                {
+                    if (*j == ' ')
+                        len += mSpaceWidth;
+                    else 
+                        len += mpFont->getGlyphAspectRatio(*j) * mCharHeight * 2.0;
+                }
+                newLine = false;
+            }
+
+            if (*i == '\n')
+            {
+                left = 0 * 2.0 - 1.0;
+                top -= mCharHeight * 2.0;
+                newLine = true;
+                continue;
+            }
+
+            if (*i == ' ')
+            {
+                // Just leave a gap, no tris
+                left += mSpaceWidth;
+                // Also reduce tri count
+                mRenderOp.vertexData->vertexCount -= 6;
+                continue;
+            }
+
+            Real horiz_height = mpFont->getGlyphAspectRatio(*i);
+            const Font::UVRect &uvRect = mpFont->getGlyphTexCoords(*i);
+            const Real u1 = uvRect.left; 
+            const Real u2 = uvRect.right; 
+            const Real v1 = uvRect.top; 
+            const Real v2 = uvRect.bottom; 
+
+            // each vert is (x, y, z, u, v)
+            //-------------------------------------------------------------------------------------
+            // First tri
+            //
+            // Upper left
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                *pPCBuff++ = left;
+            else
+                *pPCBuff++ = left - (len / 2);
+            *pPCBuff++ = top;
+            *pPCBuff++ = -1.0;
+            *pPCBuff++ = u1;
+            *pPCBuff++ = v1;
+
+            // Deal with bounds
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                currPos = Ogre::Vector3(left, top, -1.0);
+            else
+                currPos = Ogre::Vector3(left - (len / 2), top, -1.0);
+            if (first)
+            {
+                min = max = currPos;
+                maxSquaredRadius = currPos.squaredLength();
+                first = false;
+            }
+            else
+            {
+                min.makeFloor(currPos);
+                max.makeCeil(currPos);
+                maxSquaredRadius = std::max(maxSquaredRadius, currPos.squaredLength());
+            }
+
+            top -= mCharHeight * 2.0;
+
+            // Bottom left
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                *pPCBuff++ = left;
+            else
+                *pPCBuff++ = left - (len / 2);
+            *pPCBuff++ = top;
+            *pPCBuff++ = -1.0;
+            *pPCBuff++ = u1;
+            *pPCBuff++ = v2;
+
+            // Deal with bounds
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                currPos = Ogre::Vector3(left, top, -1.0);
+            else
+                currPos = Ogre::Vector3(left - (len / 2), top, -1.0);
+            min.makeFloor(currPos);
+            max.makeCeil(currPos);
+            maxSquaredRadius = std::max(maxSquaredRadius, currPos.squaredLength());
+
+            top += mCharHeight * 2.0;
+            left += horiz_height * mCharHeight * 2.0;
+
+            // Top right
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                *pPCBuff++ = left;
+            else
+                *pPCBuff++ = left - (len / 2);
+            *pPCBuff++ = top;
+            *pPCBuff++ = -1.0;
+            *pPCBuff++ = u2;
+            *pPCBuff++ = v1;
+            //-------------------------------------------------------------------------------------
+
+            // Deal with bounds
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                currPos = Ogre::Vector3(left, top, -1.0);
+            else
+                currPos = Ogre::Vector3(left - (len / 2), top, -1.0);
+            min.makeFloor(currPos);
+            max.makeCeil(currPos);
+            maxSquaredRadius = std::max(maxSquaredRadius, currPos.squaredLength());
+
+            //-------------------------------------------------------------------------------------
+            // Second tri
+            //
+            // Top right (again)
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                *pPCBuff++ = left;
+            else
+                *pPCBuff++ = left - (len / 2);
+            *pPCBuff++ = top;
+            *pPCBuff++ = -1.0;
+            *pPCBuff++ = u2;
+            *pPCBuff++ = v1;
+
+            currPos = Ogre::Vector3(left, top, -1.0);
+            min.makeFloor(currPos);
+            max.makeCeil(currPos);
+            maxSquaredRadius = std::max(maxSquaredRadius, currPos.squaredLength());
+
+            top -= mCharHeight * 2.0;
+            left -= horiz_height  * mCharHeight * 2.0;
+
+            // Bottom left (again)
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                *pPCBuff++ = left;
+            else
+                *pPCBuff++ = left - (len / 2);
+            *pPCBuff++ = top;
+            *pPCBuff++ = -1.0;
+            *pPCBuff++ = u1;
+            *pPCBuff++ = v2;
+
+            currPos = Ogre::Vector3(left, top, -1.0);
+            min.makeFloor(currPos);
+            max.makeCeil(currPos);
+            maxSquaredRadius = std::max(maxSquaredRadius, currPos.squaredLength());
+
+            left += horiz_height  * mCharHeight * 2.0;
+
+            // Bottom right
+            if(mHorizontalAlignment == DebugContactText::H_LEFT)
+                *pPCBuff++ = left;
+            else
+                *pPCBuff++ = left - (len / 2);
+            *pPCBuff++ = top;
+            *pPCBuff++ = -1.0;
+            *pPCBuff++ = u2;
+            *pPCBuff++ = v2;
+            //-------------------------------------------------------------------------------------
+
+            currPos = Ogre::Vector3(left, top, -1.0);
+            min.makeFloor(currPos);
+            max.makeCeil(currPos);
+            maxSquaredRadius = std::max(maxSquaredRadius, currPos.squaredLength());
+
+            // Go back up with top
+            top += mCharHeight * 2.0;
+
+            float currentWidth = (left + 1)/2 - 0;
+            if (currentWidth > largestWidth)
+                largestWidth = currentWidth;
+        }
+
+        // Unlock vertex buffer
+        ptbuf->unlock();
+
+        // update AABB/Sphere radius
+        mAABB = Ogre::AxisAlignedBox(min, max);
+        mRadius = Ogre::Math::Sqrt(maxSquaredRadius);
+
+        if (mUpdateColors)
+            this->_updateColors();
+
+        mNeedUpdate = false;
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::_updateColors(void)
+    {
+        assert(mpFont);
+        assert(!mpMaterial.isNull());
+
+        // Convert to system-specific
+        RGBA color;
+        Root::getSingleton().convertColourValue(mColor, &color);
+        HardwareVertexBufferSharedPtr vbuf = mRenderOp.vertexData->vertexBufferBinding->getBuffer(COLOUR_BINDING);
+        RGBA *pDest = static_cast<RGBA*>(vbuf->lock(HardwareBuffer::HBL_DISCARD));
+        for (unsigned int i = 0; i < mRenderOp.vertexData->vertexCount; ++i)
+            *pDest++ = color;
+        vbuf->unlock();
+        mUpdateColors = false;
+    }
+    //------------------------------------------------------------------------------------------------
+    const Quaternion& DebugContactText::getWorldOrientation(void) const
+    {
+        assert(mpCam);
+        return const_cast<Quaternion&>(mpCam->getDerivedOrientation());
+    }
+    //------------------------------------------------------------------------------------------------
+    const Vector3& DebugContactText::getWorldPosition(void) const
+    {
+        assert(mParentNode);
+        return mParentNode->_getDerivedPosition();
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::getWorldTransforms(Matrix4 *xform) const 
+    {
+        if (this->isVisible() && mpCam)
+        {
+            Matrix3 rot3x3, scale3x3 = Matrix3::IDENTITY;
+
+            // store rotation in a matrix
+            mpCam->getDerivedOrientation().ToRotationMatrix(rot3x3);
+
+            // parent node position
+            Vector3 ppos = mParentNode->_getDerivedPosition() + Vector3::UNIT_Y*mAdditionalHeight;
+
+            // apply scale
+            scale3x3[0][0] = mParentNode->_getDerivedScale().x / 2;
+            scale3x3[1][1] = mParentNode->_getDerivedScale().y / 2;
+            scale3x3[2][2] = mParentNode->_getDerivedScale().z / 2;
+
+            // apply all transforms to xform       
+            *xform = (rot3x3 * scale3x3);
+            xform->setTrans(ppos);
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::getRenderOperation(RenderOperation &op)
+    {
+        if (this->isVisible())
+        {
+            if (mNeedUpdate)
+                this->_setupGeometry();
+            if (mUpdateColors)
+                this->_updateColors();
+            op = mRenderOp;
+        }
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::_notifyCurrentCamera(Camera *cam)
+    {
+        mpCam = cam;
+    }
+    //------------------------------------------------------------------------------------------------
+    void DebugContactText::_updateRenderQueue(RenderQueue* queue)
+    {
+        if (this->isVisible())
+        {
+            if (mNeedUpdate)
+                this->_setupGeometry();
+            if (mUpdateColors)
+                this->_updateColors();
+
+            queue->addRenderable(this, mRenderQueueID, OGRE_RENDERABLE_DEFAULT_PRIORITY);
+            //      queue->addRenderable(this, mRenderQueueID, RENDER_QUEUE_SKIES_LATE);
+        }
+    }
+}
Index: /ogreode/src/OgreOdeDebugObject.cpp
===================================================================
--- /ogreode/src/OgreOdeDebugObject.cpp	(revision 21)
+++ /ogreode/src/OgreOdeDebugObject.cpp	(revision 21)
@@ -0,0 +1,772 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeDebugObject.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+//------------------------------------------------------------------------------------------------
+bool DebugLines::_materials_created = false;
+//------------------------------------------------------------------------------------------------
+DebugLines::DebugLines() : SimpleRenderable()
+{
+	mRenderOp.vertexData = new Ogre::VertexData();
+   _drawn = false;
+
+	if (!_materials_created)
+	{
+		MaterialPtr red = MaterialManager::getSingleton().create("OgreOdeDebugLines/Disabled","OgreOde");
+		MaterialPtr green = MaterialManager::getSingleton().create("OgreOdeDebugLines/Enabled","OgreOde");
+		MaterialPtr blue = MaterialManager::getSingleton().create("OgreOdeDebugLines/Static","OgreOde");
+
+        red->setReceiveShadows(false);
+		red->getTechnique(0)->setLightingEnabled(true);
+		red->getTechnique(0)->getPass(0)->setSelfIllumination(1,0,0);
+
+        green->setReceiveShadows(false);
+		green->getTechnique(0)->setLightingEnabled(true);
+		green->getTechnique(0)->getPass(0)->setSelfIllumination(0,1,0);
+
+        blue->setReceiveShadows(false);
+		blue->getTechnique(0)->setLightingEnabled(true);
+		blue->getTechnique(0)->getPass(0)->setSelfIllumination(0,0,1);
+
+		_materials_created = true;
+	}
+    setCastShadows (false);
+	this->setMaterial("OgreOdeDebugLines/Enabled");
+}
+
+
+//------------------------------------------------------------------------------------------------
+void DebugLines::clear()
+{
+	if (_drawn)
+	{
+		_drawn = false;
+		_points.clear();
+		delete mRenderOp.vertexData;
+
+		mRenderOp.vertexData = new Ogre::VertexData();
+	}
+}
+//------------------------------------------------------------------------------------------------
+DebugLines::~DebugLines(void)
+{
+   clear();
+
+   delete mRenderOp.vertexData;
+}
+//------------------------------------------------------------------------------------------------
+void DebugLines::draw()
+{
+   if (_drawn) 
+       return;
+   else 
+       _drawn = true;
+
+   // Initialization stuff
+   mRenderOp.indexData = 0;
+   mRenderOp.vertexData->vertexCount = _points.size();
+   mRenderOp.vertexData->vertexStart = 0;
+   mRenderOp.operationType = RenderOperation::OT_LINE_LIST;
+   mRenderOp.useIndexes = false;
+
+   Ogre::VertexDeclaration *decl = mRenderOp.vertexData->vertexDeclaration;
+   Ogre::VertexBufferBinding *bind = mRenderOp.vertexData->vertexBufferBinding;
+
+   decl->addElement(0, 0, VET_FLOAT3, VES_POSITION);
+
+   HardwareVertexBufferSharedPtr vbuf =
+	   HardwareBufferManager::getSingleton().createVertexBuffer(
+         decl->getVertexSize(0),
+         mRenderOp.vertexData->vertexCount,
+		 HardwareBuffer::HBU_STATIC_WRITE_ONLY);
+
+   bind->setBinding(0, vbuf);
+
+   // Drawing stuff
+   unsigned int size = (unsigned int)_points.size();
+   Ogre::Vector3 vaabMin = _points[0];
+   Ogre::Vector3 vaabMax = _points[0];
+
+   float *prPos = static_cast<float*>(vbuf->lock(HardwareBuffer::HBL_DISCARD));
+
+   for(unsigned int i = 0; i < size; i++)
+   {
+      *prPos++ = _points[i].x;
+      *prPos++ = _points[i].y;
+      *prPos++ = _points[i].z;
+
+      if (_points[i].x < vaabMin.x)
+         vaabMin.x = _points[i].x;
+      if (_points[i].y < vaabMin.y)
+         vaabMin.y = _points[i].y;
+      if (_points[i].z < vaabMin.z)
+         vaabMin.z = _points[i].z;
+
+      if (_points[i].x > vaabMax.x)
+         vaabMax.x = _points[i].x;
+      if (_points[i].y > vaabMax.y)
+         vaabMax.y = _points[i].y;
+      if (_points[i].z > vaabMax.z)
+         vaabMax.z = _points[i].z;
+   }
+
+   vbuf->unlock();
+
+   mBox.setExtents(vaabMin, vaabMax);
+}
+//------------------------------------------------------------------------------------------------
+Real DebugLines::getSquaredViewDepth(const Camera *cam) const
+{
+	Vector3 vMin, vMax, vMid, vDist;
+	vMin = mBox.getMinimum();
+	vMax = mBox.getMaximum();
+	vMid = ((vMin - vMax) * 0.5) + vMin;
+	vDist = cam->getDerivedPosition() - vMid;
+
+	return vDist.squaredLength();
+}
+//------------------------------------------------------------------------------------------------
+Real DebugLines::getBoundingRadius() const
+{
+	return Math::Sqrt(std::max(mBox.getMaximum().squaredLength(), mBox.getMinimum().squaredLength()));
+}
+//------------------------------------------------------------------------------------------------
+DebugObject::DebugObject(DebugObject::Mode mode) 
+{
+	_mode = DebugObject::Mode_Unknown;
+	setMode(mode);
+}
+//------------------------------------------------------------------------------------------------
+void DebugObject::setMode(DebugObject::Mode mode)
+{
+	if (mode != _mode)
+	{
+		_mode = mode;
+		switch(_mode)
+		{
+			case DebugObject::Mode_Enabled:
+				setMaterial("OgreOdeDebugLines/Enabled");
+			break;
+
+			case DebugObject::Mode_Disabled:
+				setMaterial("OgreOdeDebugLines/Disabled");
+
+			break;
+
+			case DebugObject::Mode_Static:
+				setMaterial("OgreOdeDebugLines/Static");
+			break;
+		}
+	}
+}
+//------------------------------------------------------------------------------------------------
+DebugObject::~DebugObject() 
+{
+}
+//------------------------------------------------------------------------------------------------
+BoxDebugObject::BoxDebugObject(const Ogre::Vector3& size):DebugObject()
+{
+	AxisAlignedBox aabb(-size.x * 0.5,-size.y * 0.5,-size.z * 0.5,
+						size.x * 0.5,size.y * 0.5,size.z * 0.5);
+
+	Vector3 vmax = aabb.getMaximum();
+	Vector3 vmin = aabb.getMinimum();
+
+	addLine(vmin.x,vmin.y,vmin.z,vmax.x,vmin.y,vmin.z);
+	addLine(vmin.x,vmin.y,vmin.z,vmin.x,vmin.y,vmax.z);
+	addLine(vmin.x,vmin.y,vmin.z,vmin.x,vmax.y,vmin.z);
+	addLine(vmin.x,vmax.y,vmin.z,vmin.x,vmax.y,vmax.z);
+	addLine(vmin.x,vmax.y,vmin.z,vmax.x,vmax.y,vmin.z);
+	addLine(vmax.x,vmin.y,vmin.z,vmax.x,vmin.y,vmax.z);
+	addLine(vmax.x,vmin.y,vmin.z,vmax.x,vmax.y,vmin.z);
+	addLine(vmin.x,vmax.y,vmax.z,vmax.x,vmax.y,vmax.z);
+	addLine(vmin.x,vmax.y,vmax.z,vmin.x,vmin.y,vmax.z);
+	addLine(vmax.x,vmax.y,vmin.z,vmax.x,vmax.y,vmax.z);
+	addLine(vmax.x,vmin.y,vmax.z,vmax.x,vmax.y,vmax.z);
+	addLine(vmin.x,vmin.y,vmax.z,vmax.x,vmin.y,vmax.z);
+
+	draw();
+}
+//------------------------------------------------------------------------------------------------
+BoxDebugObject::~BoxDebugObject()
+{
+}
+//------------------------------------------------------------------------------------------------
+SphereDebugObject::SphereDebugObject(Real radius):DebugObject()
+{
+	// X/Y axis
+
+	// NW quadrant
+	addLine(-radius,			0.0,				0.0,
+	-0.866 * radius,	0.5 * radius,		0.0);
+
+	addLine(-0.866 * radius,	0.5 * radius,		0.0,
+	-0.5 * radius,	0.866 * radius,	0.0);
+
+	addLine(-0.5 * radius,	0.866 * radius,	0.0,
+	0.0,				radius,			0.0);
+
+	// NE quadrant
+	addLine(0.0,				radius,			0.0,
+	0.5 * radius,		0.866 * radius,	0.0);
+
+	addLine(0.5 * radius,		0.866 * radius,	0.0,
+	0.866 * radius,	0.5 * radius,		0.0);
+
+	addLine(0.866 * radius,	0.5 * radius,		0.0,
+	radius,			0.0,				0.0);
+
+	// SW quadrant
+	addLine(-radius,			0.0,				0.0,
+	-0.866 * radius,	-0.5 * radius,	0.0);
+
+	addLine(-0.866 * radius,	-0.5 * radius,	0.0,
+	-0.5 * radius,	-0.866 * radius,	0.0);
+
+	addLine(-0.5 * radius,	-0.866 * radius,	0.0,
+	0.0,				-radius,			0.0);
+
+	// SE quadrant
+	addLine(0.0,				-radius,			0.0,
+	0.5 * radius,		-0.866 * radius,	0.0);
+
+	addLine(0.5 * radius,		-0.866 * radius,	0.0,
+	0.866 * radius,	-0.5 * radius,	0.0);
+
+	addLine(0.866 * radius,	-0.5 * radius,	0.0,
+	radius,			0.0,				0.0);
+
+	// X/Z axis
+
+	// NW quadrant
+	addLine(-radius,			0.0,	0.0,	
+	-0.866 * radius,	0.0,	0.5 * radius);
+
+	addLine(-0.866 * radius,	0.0,	0.5 * radius,
+	-0.5 * radius,	0.0,	0.866 * radius);
+
+	addLine(-0.5 * radius,	0.0,	0.866 * radius,
+	0.0,				0.0,	radius);
+
+	// NE quadrant
+	addLine(0.0,				0.0,	radius,
+	0.5 * radius,		0.0,	0.866 * radius);
+
+	addLine(0.5 * radius,		0.0,	0.866 * radius,
+	0.866 * radius,	0.0,	0.5 * radius);
+
+	addLine(0.866 * radius,	0.0,	0.5 * radius,
+	radius,			0.0,	0.0);
+
+	// SW quadrant
+	addLine(-radius,			0.0,	0.0,	
+	-0.866 * radius,	0.0,	-0.5 * radius);
+
+	addLine(-0.866 * radius,	0.0,	-0.5 * radius,
+	-0.5 * radius,	0.0,	-0.866 * radius);
+
+	addLine(-0.5 * radius,	0.0,	-0.866 * radius,
+	0.0,				0.0,	-radius);
+
+	// SE quadrant
+	addLine(0.0,				0.0,	-radius,
+	0.5 * radius,		0.0,	-0.866 * radius);
+
+	addLine(0.5 * radius,		0.0,	-0.866 * radius,
+	0.866 * radius,	0.0,	-0.5 * radius);
+
+	addLine(0.866 * radius,	0.0,	-0.5 * radius,
+	radius,			0.0,	0.0);
+
+	// Y/Z axis
+
+	// NW quadrant
+	addLine(0.0,	-radius,			0.0,	
+	0.0,	-0.866 * radius,	0.5 * radius);
+
+	addLine(0.0,	-0.866 * radius,	0.5 * radius,
+	0.0,	-0.5 * radius,	0.866 * radius);
+
+	addLine(0.0,	-0.5 * radius,	0.866 * radius,
+	0.0,	0.0,				radius);
+
+	// NE quadrant
+	addLine(0.0,	0.0,				radius,
+	0.0,	0.5 * radius,		0.866 * radius);
+
+	addLine(0.0,	0.5 * radius,		0.866 * radius,
+	0.0,	0.866 * radius,	0.5 * radius);
+
+	addLine(0.0,	0.866 * radius,	0.5 * radius,
+	0.0,	radius,			0.0);
+
+	// SW quadrant
+	addLine(0.0,	-radius,			0.0,	
+	0.0,	-0.866 * radius,	-0.5 * radius);
+
+	addLine(0.0,	-0.866 * radius,	-0.5 * radius,
+	0.0,	-0.5 * radius,	-0.866 * radius);
+
+	addLine(0.0,	-0.5 * radius,	-0.866 * radius,
+	0.0,	0.0,				-radius);
+
+	// SE quadrant
+	addLine(0.0,	0.0,				-radius,
+	0.0,	0.5 * radius,		-0.866 * radius);
+
+	addLine(0.0,	0.5 * radius,		-0.866 * radius,
+	0.0,	0.866 * radius,	-0.5 * radius);
+
+	addLine(0.0,	0.866 * radius,	-0.5 * radius,
+	0.0,	radius,			0.0);
+
+	draw();
+}
+//------------------------------------------------------------------------------------------------
+SphereDebugObject::~SphereDebugObject()
+{
+}
+//------------------------------------------------------------------------------------------------
+CapsuleDebugObject::CapsuleDebugObject(Real radius,Real length):DebugObject()
+{
+	Real halflen = length * 0.5;
+	AxisAlignedBox aabb(-radius,-radius,-(halflen + radius),radius,radius,halflen + radius);
+
+	// X/Y axis - Near
+
+	// NW quadrant
+	addLine(-radius,			0.0,				halflen,
+	-0.866 * radius,	0.5 * radius,		halflen);
+
+	addLine(-0.866 * radius,	0.5 * radius,		halflen,
+		-0.5 * radius,	0.866 * radius,	halflen);
+
+	addLine(-0.5 * radius,	0.866 * radius,	halflen,
+	0.0,				radius,			halflen);
+
+	// NE quadrant
+	addLine(0.0,				radius,			halflen,
+		0.5 * radius,		0.866 * radius,	halflen);
+
+	addLine(0.5 * radius,		0.866 * radius,	halflen,
+	0.866 * radius,	0.5 * radius,		halflen);
+
+	addLine(0.866 * radius,	0.5 * radius,		halflen,
+	radius,			0.0,				halflen);
+
+	// SW quadrant
+	addLine(-radius,			0.0,				halflen,
+	-0.866 * radius,	-0.5 * radius,	halflen);
+
+	addLine(-0.866 * radius,	-0.5 * radius,	halflen,
+	-0.5 * radius,	-0.866 * radius,	halflen);
+
+	addLine(-0.5 * radius,	-0.866 * radius,	halflen,
+	0.0,				-radius,			halflen);
+
+	// SE quadrant
+	addLine(0.0,				-radius,			halflen,
+	0.5 * radius,		-0.866 * radius,	halflen);
+
+	addLine(0.5 * radius,		-0.866 * radius,	halflen,
+	0.866 * radius,	-0.5 * radius,	halflen);
+
+	addLine(0.866 * radius,	-0.5 * radius,	halflen,
+	radius,			0.0,				halflen);
+	
+	// X/Y axis - Far
+
+	// NW quadrant
+	addLine(-radius,			0.0,				-halflen,
+	-0.866 * radius,	0.5 * radius,		-halflen);
+
+	addLine(-0.866 * radius,	0.5 * radius,		-halflen,
+	-0.5 * radius,	0.866 * radius,	-halflen);
+
+	addLine(-0.5 * radius,	0.866 * radius,	-halflen,
+	0.0,				radius,			-halflen);
+
+	// NE quadrant
+	addLine(0.0,				radius,			-halflen,
+	0.5 * radius,		0.866 * radius,	-halflen);
+
+	addLine(0.5 * radius,		0.866 * radius,	-halflen,
+	0.866 * radius,	0.5 * radius,		-halflen);
+
+	addLine(0.866 * radius,	0.5 * radius,		-halflen,
+	radius,			0.0,				-halflen);
+
+	// SW quadrant
+	addLine(-radius,			0.0,				-halflen,
+	-0.866 * radius,	-0.5 * radius,	-halflen);
+
+	addLine(-0.866 * radius,	-0.5 * radius,	-halflen,
+	-0.5 * radius,	-0.866 * radius,	-halflen);
+
+	addLine(-0.5 * radius,	-0.866 * radius,	-halflen,
+	0.0,				-radius,			-halflen);
+
+	// SE quadrant
+	addLine(0.0,				-radius,			-halflen,
+	0.5 * radius,		-0.866 * radius,	-halflen);
+
+	addLine(0.5 * radius,		-0.866 * radius,	-halflen,
+	0.866 * radius,	-0.5 * radius,	-halflen);
+
+	addLine(0.866 * radius,	-0.5 * radius,	-halflen,
+	radius,			0.0,				-halflen);
+
+	// X/Z axis
+
+	// NW quadrant
+	addLine(-radius,			0.0,	halflen,	
+	-0.866 * radius,	0.0,	(0.5 * radius) + halflen);
+
+	addLine(-0.866 * radius,	0.0,	(0.5 * radius) + halflen,
+	-0.5 * radius,	0.0,	(0.866 * radius) + halflen);
+
+	addLine(-0.5 * radius,	0.0,	(0.866 * radius) + halflen,
+	0.0,				0.0,	radius + halflen);
+
+	// NE quadrant
+	addLine(0.0,				0.0,	radius + halflen,
+	0.5 * radius,		0.0,	(0.866 * radius) + halflen);
+
+	addLine(0.5 * radius,		0.0,	(0.866 * radius) + halflen,
+	0.866 * radius,	0.0,	(0.5 * radius) + halflen);
+
+	addLine(0.866 * radius,	0.0,	(0.5 * radius) + halflen,
+	radius,			0.0,	halflen);
+
+	// SW quadrant
+	addLine(-radius,			0.0,	-halflen,	
+	-0.866 * radius,	0.0,	(-0.5 * radius) - halflen);
+
+	addLine(-0.866 * radius,	0.0,	(-0.5 * radius) - halflen,
+	-0.5 * radius,	0.0,	(-0.866 * radius) - halflen);
+
+	addLine(-0.5 * radius,	0.0,	(-0.866 * radius) - halflen,
+	0.0,				0.0,	-radius - halflen);
+
+	// SE quadrant
+	addLine(0.0,				0.0,	-radius - halflen,
+	0.5 * radius,		0.0,	(-0.866 * radius) - halflen);
+
+	addLine(0.5 * radius,		0.0,	(-0.866 * radius) - halflen,
+	0.866 * radius,	0.0,	(-0.5 * radius) - halflen);
+
+	addLine(0.866 * radius,	0.0,	(-0.5 * radius) - halflen,
+	radius,			0.0,	- halflen);
+
+	// Y/Z axis
+
+	// NW quadrant
+	addLine(0.0,	-radius,			halflen,	
+	0.0,	-0.866 * radius,	(0.5 * radius) + halflen);
+
+	addLine(0.0,	-0.866 * radius,	(0.5 * radius) + halflen,
+	0.0,	-0.5 * radius,	(0.866 * radius) + halflen);
+
+	addLine(0.0,	-0.5 * radius,	(0.866 * radius) + halflen,
+	0.0,	0.0,				radius + halflen);
+
+	// NE quadrant
+	addLine(0.0,	0.0,				radius + halflen,
+	0.0,	0.5 * radius,		(0.866 * radius) + halflen);
+
+	addLine(0.0,	0.5 * radius,		(0.866 * radius) + halflen,
+	0.0,	0.866 * radius,	(0.5 * radius) + halflen);
+
+	addLine(0.0,	0.866 * radius,	(0.5 * radius) + halflen,
+	0.0,	radius,			halflen);
+
+	// SW quadrant
+	addLine(0.0,	-radius,			-halflen,	
+	0.0,	-0.866 * radius,	(-0.5 * radius) - halflen);
+
+	addLine(0.0,	-0.866 * radius,	(-0.5 * radius) - halflen,
+	0.0,	-0.5 * radius,	(-0.866 * radius) - halflen);
+
+	addLine(0.0,	-0.5 * radius,	(-0.866 * radius) - halflen,
+	0.0,	0.0,				-radius - halflen);
+
+	// SE quadrant
+	addLine(0.0,	0.0,				-radius - halflen,
+	0.0,	0.5 * radius,		(-0.866 * radius) - halflen);
+
+	addLine(0.0,	0.5 * radius,		(-0.866 * radius) - halflen,
+	0.0,	0.866 * radius,	(-0.5 * radius) - halflen);
+
+	addLine(0.0,	0.866 * radius,	(-0.5 * radius) - halflen,
+	0.0,	radius,			-halflen);
+
+	// Side lines
+	addLine(-radius,	0.0,		-halflen,
+	-radius,	0.0,		halflen);
+
+	addLine(radius,	0.0,		-halflen,
+	radius,	0.0,		halflen);
+
+	addLine(0.0,		radius,	-halflen,
+	0.0,		radius,	halflen);
+
+	addLine(0.0,		-radius,	-halflen,
+	0.0,		-radius,	halflen);
+
+	draw();
+}
+//------------------------------------------------------------------------------------------------
+CapsuleDebugObject::~CapsuleDebugObject()
+{
+}
+//------------------------------------------------------------------------------------------------
+CylinderDebugObject::CylinderDebugObject(Real radius,Real length):DebugObject()
+{
+	Real halflen = length * 0.5;
+	AxisAlignedBox aabb(-radius,-radius,-(halflen + radius),radius,radius,halflen + radius);
+
+	// X/Y axis - Near
+
+	// NW quadrant
+	addLine(-radius,			0.0,				halflen,
+		-0.866 * radius,	0.5 * radius,		halflen);
+
+	addLine(-0.866 * radius,	0.5 * radius,		halflen,
+		-0.5 * radius,	0.866 * radius,	halflen);
+
+	addLine(-0.5 * radius,	0.866 * radius,	halflen,
+		0.0,				radius,			halflen);
+
+	// NE quadrant
+	addLine(0.0,				radius,			halflen,
+		0.5 * radius,		0.866 * radius,	halflen);
+
+	addLine(0.5 * radius,		0.866 * radius,	halflen,
+		0.866 * radius,	0.5 * radius,		halflen);
+
+	addLine(0.866 * radius,	0.5 * radius,		halflen,
+		radius,			0.0,				halflen);
+
+	// SW quadrant
+	addLine(-radius,			0.0,				halflen,
+		-0.866 * radius,	-0.5 * radius,	halflen);
+
+	addLine(-0.866 * radius,	-0.5 * radius,	halflen,
+		-0.5 * radius,	-0.866 * radius,	halflen);
+
+	addLine(-0.5 * radius,	-0.866 * radius,	halflen,
+		0.0,				-radius,			halflen);
+
+	// SE quadrant
+	addLine(0.0,				-radius,			halflen,
+		0.5 * radius,		-0.866 * radius,	halflen);
+
+	addLine(0.5 * radius,		-0.866 * radius,	halflen,
+		0.866 * radius,	-0.5 * radius,	halflen);
+
+	addLine(0.866 * radius,	-0.5 * radius,	halflen,
+		radius,			0.0,				halflen);
+
+	// X/Y axis - Far
+
+	// NW quadrant
+	addLine(-radius,			0.0,				-halflen,
+		-0.866 * radius,	0.5 * radius,		-halflen);
+
+	addLine(-0.866 * radius,	0.5 * radius,		-halflen,
+		-0.5 * radius,	0.866 * radius,	-halflen);
+
+	addLine(-0.5 * radius,	0.866 * radius,	-halflen,
+		0.0,				radius,			-halflen);
+
+	// NE quadrant
+	addLine(0.0,				radius,			-halflen,
+		0.5 * radius,		0.866 * radius,	-halflen);
+
+	addLine(0.5 * radius,		0.866 * radius,	-halflen,
+		0.866 * radius,	0.5 * radius,		-halflen);
+
+	addLine(0.866 * radius,	0.5 * radius,		-halflen,
+		radius,			0.0,				-halflen);
+
+	// SW quadrant
+	addLine(-radius,			0.0,				-halflen,
+		-0.866 * radius,	-0.5 * radius,	-halflen);
+
+	addLine(-0.866 * radius,	-0.5 * radius,	-halflen,
+		-0.5 * radius,	-0.866 * radius,	-halflen);
+
+	addLine(-0.5 * radius,	-0.866 * radius,	-halflen,
+		0.0,				-radius,			-halflen);
+
+	// SE quadrant
+	addLine(0.0,				-radius,			-halflen,
+		0.5 * radius,		-0.866 * radius,	-halflen);
+
+	addLine(0.5 * radius,		-0.866 * radius,	-halflen,
+		0.866 * radius,	-0.5 * radius,	-halflen);
+
+	addLine(0.866 * radius,	-0.5 * radius,	-halflen,
+		radius,			0.0,				-halflen);
+
+	// X/Z axis
+
+	// NW quadrant
+	addLine(-radius,			0.0,	halflen,	
+		-0.866 * radius,	0.0,	(0.5 * radius) + halflen);
+
+	addLine(-0.866 * radius,	0.0,	(0.5 * radius) + halflen,
+		-0.5 * radius,	0.0,	(0.866 * radius) + halflen);
+
+	addLine(-0.5 * radius,	0.0,	(0.866 * radius) + halflen,
+		0.0,				0.0,	radius + halflen);
+
+	// NE quadrant
+	addLine(0.0,				0.0,	radius + halflen,
+		0.5 * radius,		0.0,	(0.866 * radius) + halflen);
+
+	addLine(0.5 * radius,		0.0,	(0.866 * radius) + halflen,
+		0.866 * radius,	0.0,	(0.5 * radius) + halflen);
+
+	addLine(0.866 * radius,	0.0,	(0.5 * radius) + halflen,
+		radius,			0.0,	halflen);
+
+	// SW quadrant
+	addLine(-radius,			0.0,	-halflen,	
+		-0.866 * radius,	0.0,	(-0.5 * radius) - halflen);
+
+	addLine(-0.866 * radius,	0.0,	(-0.5 * radius) - halflen,
+		-0.5 * radius,	0.0,	(-0.866 * radius) - halflen);
+
+	addLine(-0.5 * radius,	0.0,	(-0.866 * radius) - halflen,
+		0.0,				0.0,	-radius - halflen);
+
+	// SE quadrant
+	addLine(0.0,				0.0,	-radius - halflen,
+		0.5 * radius,		0.0,	(-0.866 * radius) - halflen);
+
+	addLine(0.5 * radius,		0.0,	(-0.866 * radius) - halflen,
+		0.866 * radius,	0.0,	(-0.5 * radius) - halflen);
+
+	addLine(0.866 * radius,	0.0,	(-0.5 * radius) - halflen,
+		radius,			0.0,	- halflen);
+
+	// Y/Z axis
+
+	// NW quadrant
+	addLine(0.0,	-radius,			halflen,	
+		0.0,	-0.866 * radius,	(0.5 * radius) + halflen);
+
+	addLine(0.0,	-0.866 * radius,	(0.5 * radius) + halflen,
+		0.0,	-0.5 * radius,	(0.866 * radius) + halflen);
+
+	addLine(0.0,	-0.5 * radius,	(0.866 * radius) + halflen,
+		0.0,	0.0,				radius + halflen);
+
+	// NE quadrant
+	addLine(0.0,	0.0,				radius + halflen,
+		0.0,	0.5 * radius,		(0.866 * radius) + halflen);
+
+	addLine(0.0,	0.5 * radius,		(0.866 * radius) + halflen,
+		0.0,	0.866 * radius,	(0.5 * radius) + halflen);
+
+	addLine(0.0,	0.866 * radius,	(0.5 * radius) + halflen,
+		0.0,	radius,			halflen);
+
+	// SW quadrant
+	addLine(0.0,	-radius,			-halflen,	
+		0.0,	-0.866 * radius,	(-0.5 * radius) - halflen);
+
+	addLine(0.0,	-0.866 * radius,	(-0.5 * radius) - halflen,
+		0.0,	-0.5 * radius,	(-0.866 * radius) - halflen);
+
+	addLine(0.0,	-0.5 * radius,	(-0.866 * radius) - halflen,
+		0.0,	0.0,				-radius - halflen);
+
+	// SE quadrant
+	addLine(0.0,	0.0,				-radius - halflen,
+		0.0,	0.5 * radius,		(-0.866 * radius) - halflen);
+
+	addLine(0.0,	0.5 * radius,		(-0.866 * radius) - halflen,
+		0.0,	0.866 * radius,	(-0.5 * radius) - halflen);
+
+	addLine(0.0,	0.866 * radius,	(-0.5 * radius) - halflen,
+		0.0,	radius,			-halflen);
+
+	// Side lines
+	addLine(-radius,	0.0,		-halflen,
+		-radius,	0.0,		halflen);
+
+	addLine(radius,	0.0,		-halflen,
+		radius,	0.0,		halflen);
+
+	addLine(0.0,		radius,	-halflen,
+		0.0,		radius,	halflen);
+
+	addLine(0.0,		-radius,	-halflen,
+		0.0,		-radius,	halflen);
+
+	draw();
+}
+//------------------------------------------------------------------------------------------------
+CylinderDebugObject::~CylinderDebugObject()
+{
+}
+//------------------------------------------------------------------------------------------------
+TriangleMeshDebugObject::TriangleMeshDebugObject(int vertex_count):DebugObject()
+{
+    _points.reserve(vertex_count); 
+    _points.resize(vertex_count); 
+}
+//------------------------------------------------------------------------------------------------
+void TriangleMeshDebugObject::beginDefinition()
+{
+}
+//------------------------------------------------------------------------------------------------
+void TriangleMeshDebugObject::setVertex(int index,const Ogre::Vector3& vertex)
+{
+    assert ((unsigned int)index < _points.size());
+	_points[index] = vertex;
+}
+//------------------------------------------------------------------------------------------------
+void TriangleMeshDebugObject::endDefinition()
+{
+	draw();
+}
+//------------------------------------------------------------------------------------------------
+TriangleMeshDebugObject::~TriangleMeshDebugObject()
+{
+}
+//------------------------------------------------------------------------------------------------
+RayDebugObject::RayDebugObject(const Ogre::Vector3& start, 
+							   const Ogre::Vector3& direction, 
+							   const Ogre::Real length):
+				DebugObject()
+{
+	const Ogre::Vector3 end (start + (direction.normalisedCopy() * length));
+	addLine(start, end);
+
+	draw();
+}
+//------------------------------------------------------------------------------------------------
+void RayDebugObject::setDefinition(const Ogre::Vector3& start,
+							const Ogre::Vector3& direction, 
+							const Ogre::Real length)
+{
+	clear();
+
+	const Ogre::Vector3 end (start + (direction.normalisedCopy() * length));
+	addLine(start, end);
+
+	draw();
+}
+//------------------------------------------------------------------------------------------------
+RayDebugObject::~RayDebugObject()
+{
+}
+//------------------------------------------------------------------------------------------------
+
Index: /ogreode/src/OgreOdeEigenSolver.cpp
===================================================================
--- /ogreode/src/OgreOdeEigenSolver.cpp	(revision 21)
+++ /ogreode/src/OgreOdeEigenSolver.cpp	(revision 21)
@@ -0,0 +1,400 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeEigenSolver.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+void EigenSolver::DecrSortEigenStuff3 ()
+{
+	Tridiagonal3();
+	QLAlgorithm();
+	DecreasingSort();
+	GuaranteeRotation();
+}
+
+void EigenSolver::Tridiagonal3 ()
+{
+	const Ogre::Real fM00 = m_kMat[0][0];
+   Ogre::Real fM01 = m_kMat[0][1];
+	Real fM02 = m_kMat[0][2];
+	const Ogre::Real fM11 = m_kMat[1][1];
+	const Ogre::Real fM12 = m_kMat[1][2];
+	const Ogre::Real fM22 = m_kMat[2][2];
+
+	m_afDiag[0] = fM00;
+	m_afSubd[2] = (Real)0.0;
+	if ( fM02 != (Real)0.0 )
+	{
+		const Ogre::Real fLength = sqrtf(fM01*fM01+fM02*fM02);
+		const Ogre::Real fInvLength = ((Real)1.0)/fLength;
+		fM01 *= fInvLength;
+		fM02 *= fInvLength;
+		const Ogre::Real fQ = ((Real)2.0)*fM01*fM12+fM02*(fM22-fM11);
+		m_afDiag[1] = fM11+fM02*fQ;
+		m_afDiag[2] = fM22-fM02*fQ;
+		m_afSubd[0] = fLength;
+		m_afSubd[1] = fM12-fM01*fQ;
+		m_kMat[0][0] = (Real)1.0;
+		m_kMat[0][1] = (Real)0.0;
+		m_kMat[0][2] = (Real)0.0;
+		m_kMat[1][0] = (Real)0.0;
+		m_kMat[1][1] = fM01;
+		m_kMat[1][2] = fM02;
+		m_kMat[2][0] = (Real)0.0;
+		m_kMat[2][1] = fM02;
+		m_kMat[2][2] = -fM01;
+	}
+	else
+	{
+		m_afDiag[1] = fM11;
+		m_afDiag[2] = fM22;
+		m_afSubd[0] = fM01;
+		m_afSubd[1] = fM12;
+		m_kMat[0][0] = (Real)1.0;
+		m_kMat[0][1] = (Real)0.0;
+		m_kMat[0][2] = (Real)0.0;
+		m_kMat[1][0] = (Real)0.0;
+		m_kMat[1][1] = (Real)1.0;
+		m_kMat[1][2] = (Real)0.0;
+		m_kMat[2][0] = (Real)0.0;
+		m_kMat[2][1] = (Real)0.0;
+		m_kMat[2][2] = (Real)1.0;
+	}
+}
+
+bool EigenSolver::QLAlgorithm ()
+{
+	const int iMaxIter = 32;
+
+	for (int i0 = 0; i0 < m_iSize; i0++)
+	{
+		int i1;
+		for (i1 = 0; i1 < iMaxIter; i1++)
+		{
+			int i2;
+			for (i2 = i0; i2 <= m_iSize-2; i2++)
+			{
+				Real fTmp = fabs(m_afDiag[i2]) + fabs(m_afDiag[i2+1]);
+				if ( fabs(m_afSubd[i2]) + fTmp == fTmp ) break;
+			}
+			if ( i2 == i0 ) break;
+
+			Real fG = (m_afDiag[i0+1] - m_afDiag[i0])/(((Real)2.0) * m_afSubd[i0]);
+			Real fR = sqrtf(fG*fG+(Real)1.0);
+			if ( fG < (Real)0.0 ) fG = m_afDiag[i2]-m_afDiag[i0]+m_afSubd[i0]/(fG-fR);
+			else fG = m_afDiag[i2]-m_afDiag[i0]+m_afSubd[i0]/(fG+fR);
+			Real fSin = (Real)1.0, fCos = (Real)1.0, fP = (Real)0.0;
+			for (int i3 = i2-1; i3 >= i0; i3--)
+			{
+				Real fF = fSin*m_afSubd[i3];
+               Ogre::Real fB = fCos*m_afSubd[i3];
+	            if ( fabs(fF) >= fabs(fG) )
+		        {
+			        fCos = fG/fF;
+				    fR = sqrtf(fCos*fCos+(Real)1.0);
+					m_afSubd[i3+1] = fF*fR;
+                    fSin = ((Real)1.0)/fR;
+	                fCos *= fSin;
+		        }
+			    else
+				{
+					fSin = fF/fG;
+					fR = sqrtf(fSin*fSin+(Real)1.0);
+					m_afSubd[i3+1] = fG*fR;
+					fCos = ((Real)1.0)/fR;
+					fSin *= fCos;
+				}
+				fG = m_afDiag[i3+1]-fP;
+                fR = (m_afDiag[i3]-fG)*fSin+((Real)2.0)*fB*fCos;
+	            fP = fSin*fR;
+		        m_afDiag[i3+1] = fG+fP;
+			    fG = fCos*fR-fB;
+
+				for (int i4 = 0; i4 < m_iSize; i4++)
+				{
+					fF = m_kMat[i4][i3+1];
+                    m_kMat[i4][i3+1] = fSin*m_kMat[i4][i3]+fCos*fF;
+	                m_kMat[i4][i3] = fCos*m_kMat[i4][i3]-fSin*fF;
+		        }
+			}
+			m_afDiag[i0] -= fP;
+			m_afSubd[i0] = fG;
+			m_afSubd[i2] = (Real)0.0;
+		}
+		if ( i1 == iMaxIter ) return false;
+	}
+	return true;
+}
+
+void EigenSolver::DecreasingSort ()
+{
+	// sort eigenvalues in decreasing order, e[0] >= ... >= e[iSize-1]
+	for (int i0 = 0, i1; i0 <= m_iSize-2; i0++)
+	{
+		// locate maximum eigenvalue
+		i1 = i0;
+		Real fMax = m_afDiag[i1];
+		int i2;
+		for (i2 = i0+1; i2 < m_iSize; i2++)
+		{
+			if ( m_afDiag[i2] > fMax )
+			{
+				i1 = i2;
+				fMax = m_afDiag[i1];
+			}
+		}
+
+		if ( i1 != i0 )
+		{
+			// swap eigenvalues
+			m_afDiag[i1] = m_afDiag[i0];
+			m_afDiag[i0] = fMax;
+
+			// swap eigenvectors
+			for (i2 = 0; i2 < m_iSize; i2++)
+			{
+				Real fTmp = m_kMat[i2][i0];
+				m_kMat[i2][i0] = m_kMat[i2][i1];
+				m_kMat[i2][i1] = fTmp;
+				m_bIsRotation = !m_bIsRotation;
+			}
+		}
+	}
+}
+
+void EigenSolver::GuaranteeRotation ()
+{
+	if ( !m_bIsRotation )
+	{
+		// change sign on the first column
+		for (int iRow = 0; iRow < m_iSize; iRow++) 
+            m_kMat[iRow][0] = -m_kMat[iRow][0];
+	}
+}
+
+void EigenSolver::orthogonalLineFit(unsigned int vertex_count, const Ogre::Vector3* vertices,Vector3& origin,Vector3& direction)
+{
+	unsigned int i;
+
+    // compute average of points
+	origin = vertices[0];
+    for(i = 1; i < vertex_count; ++i) 
+        origin += vertices[i];
+
+	const Ogre::Real fInvQuantity = 1.0 / vertex_count;
+	origin *= fInvQuantity;
+
+	// compute sums of products
+	Real fSumXX = 0.0, fSumXY = 0.0, fSumXZ = 0.0;
+   Ogre::Real fSumYY = 0.0, fSumYZ = 0.0, fSumZZ = 0.0;
+	for (i = 0; i < vertex_count; i++) 
+	{
+		const Ogre::Vector3 kDiff (vertices[i] - origin);
+	    fSumXX += kDiff.x*kDiff.x;
+        fSumXY += kDiff.x*kDiff.y;
+		fSumXZ += kDiff.x*kDiff.z;
+	    fSumYY += kDiff.y*kDiff.y;
+        fSumYZ += kDiff.y*kDiff.z;
+		fSumZZ += kDiff.z*kDiff.z;
+	}
+	fSumXX *= fInvQuantity;
+	fSumXY *= fInvQuantity;
+	fSumXZ *= fInvQuantity;
+	fSumYY *= fInvQuantity;
+	fSumYZ *= fInvQuantity;
+	fSumZZ *= fInvQuantity;
+
+	// setup the eigensolver
+	EigenSolver kES(3);
+	kES(0,0) = fSumYY+fSumZZ;
+	kES(0,1) = -fSumXY;
+	kES(0,2) = -fSumXZ;
+	kES(1,0) = kES(0,1);
+	kES(1,1) = fSumXX+fSumZZ;
+	kES(1,2) = -fSumYZ;
+	kES(2,0) = kES(0,2);
+	kES(2,1) = kES(1,2);
+    kES(2,2) = fSumXX+fSumYY;
+
+	// compute eigenstuff, smallest eigenvalue is in last position
+	kES.DecrSortEigenStuff3();
+
+    // unit-length direction for best-fit line
+	kES.GetEigenvector(2,direction);
+}
+
+Real EigenSolver::SqrDistance(const Ogre::Vector3& rkPoint,const Ogre::Vector3& origin,const Ogre::Vector3& direction)
+{
+	Vector3 kDiff(rkPoint - origin);
+    const Ogre::Real fSqrLen = direction.squaredLength();
+	const Ogre::Real fT = kDiff.dotProduct(direction) / fSqrLen;
+
+    kDiff -= fT*direction;
+
+	return kDiff.squaredLength();
+}
+
+void EigenSolver::GenerateOrthonormalBasis (Vector3& rkU, Ogre::Vector3& rkV, Ogre::Vector3& rkW, bool bUnitLengthW)
+{
+	if ( !bUnitLengthW ) rkW.normalise();
+
+	Real fInvLength;
+
+	if ( fabs(rkW[0]) >= fabs(rkW[1]) )
+	{
+		// W.x or W.z is the largest magnitude component, swap them
+		fInvLength = 1.0 / sqrtf(rkW[0]*rkW[0] + rkW[2]*rkW[2]);
+
+	    rkU[0] = -rkW[2]*fInvLength;
+        rkU[1] = (Real)0.0;
+		rkU[2] = +rkW[0]*fInvLength;
+	}
+    else
+	{
+        // W.y or W.z is the largest magnitude component, swap them
+		fInvLength = 1.0 / sqrtf(rkW[1]*rkW[1] + rkW[2]*rkW[2]);
+
+	    rkU[0] = (Real)0.0;
+        rkU[1] = +rkW[2]*fInvLength;
+		rkU[2] = -rkW[1]*fInvLength;
+	}
+
+	rkV = rkW.crossProduct(rkU);
+}
+
+EigenSolver::EigenSolver(int iSize)
+{
+	assert( iSize >= 2 );
+    m_iSize = iSize;
+	m_afDiag = new Ogre::Real[m_iSize];
+    m_afSubd = new Ogre::Real[m_iSize];
+
+	// set according to the parity of the number of Householder reflections
+	m_bIsRotation = ((iSize % 2) == 0);
+}
+
+Ogre::Real& EigenSolver::operator() (int iRow, int iCol)
+{
+	return m_kMat[iRow][iCol];
+}
+
+EigenSolver::~EigenSolver()
+{
+    delete[] m_afSubd;
+	delete[] m_afDiag;
+}
+
+void EigenSolver::GetEigenvector (int i, Ogre::Vector3& rkV) const
+{
+	assert( m_iSize == 3 );
+	if ( m_iSize == 3 )
+	{
+		for (int iRow = 0; iRow < m_iSize; iRow++) 
+            rkV[iRow] = m_kMat[iRow][i];
+	}
+	else
+	{
+	    rkV = Ogre::Vector3::ZERO;
+    }
+}
+
+void EigenSolver::GaussPointsFit(unsigned int iQuantity,const Ogre::Vector3* akPoint,Vector3 &rkCenter,Vector3 akAxis[3],Real afExtent[3])
+{
+    // compute mean of points
+    rkCenter = akPoint[0];
+    unsigned int i;
+    for (i = 1; i < iQuantity; i++)
+        rkCenter += akPoint[i];
+    const Ogre::Real fInvQuantity = ((Real)1.0)/iQuantity;
+    rkCenter *= fInvQuantity;
+
+    // compute covariances of points
+   Ogre::Real fSumXX = (Real)0.0, fSumXY = (Real)0.0, fSumXZ = (Real)0.0;
+   Ogre::Real fSumYY = (Real)0.0, fSumYZ = (Real)0.0, fSumZZ = (Real)0.0;
+    for (i = 0; i < iQuantity; i++)
+    {
+        const Ogre::Vector3 kDiff (akPoint[i] - rkCenter);
+        fSumXX += kDiff.x*kDiff.x;
+        fSumXY += kDiff.x*kDiff.y;
+        fSumXZ += kDiff.x*kDiff.z;
+        fSumYY += kDiff.y*kDiff.y;
+        fSumYZ += kDiff.y*kDiff.z;
+        fSumZZ += kDiff.z*kDiff.z;
+    }
+    fSumXX *= fInvQuantity;
+    fSumXY *= fInvQuantity;
+    fSumXZ *= fInvQuantity;
+    fSumYY *= fInvQuantity;
+    fSumYZ *= fInvQuantity;
+    fSumZZ *= fInvQuantity;
+
+    // compute eigenvectors for covariance matrix
+    EigenSolver kES(3);
+    kES(0,0) = fSumXX;
+    kES(0,1) = fSumXY;
+    kES(0,2) = fSumXZ;
+    kES(1,0) = fSumXY;
+    kES(1,1) = fSumYY;
+    kES(1,2) = fSumYZ;
+    kES(2,0) = fSumXZ;
+    kES(2,1) = fSumYZ;
+    kES(2,2) = fSumZZ;
+    kES.IncrSortEigenStuff3();
+
+    for (i = 0; i < 3; i++)
+    {
+        afExtent[i] = kES.GetEigenvalue(i);
+        kES.GetEigenvector(i,akAxis[i]);
+    }
+}
+
+Real EigenSolver::GetEigenvalue (int i) const
+{
+    return m_afDiag[i];
+}
+
+void EigenSolver::IncrSortEigenStuff3 ()
+{
+    Tridiagonal3();
+    QLAlgorithm();
+    IncreasingSort();
+    GuaranteeRotation();
+}
+
+void EigenSolver::IncreasingSort ()
+{
+    // sort eigenvalues in increasing order, e[0] <= ... <= e[iSize-1]
+    for (int i0 = 0, i1; i0 <= m_iSize-2; i0++)
+    {
+        // locate minimum eigenvalue
+        i1 = i0;
+       Ogre::Real fMin = m_afDiag[i1];
+        int i2;
+        for (i2 = i0+1; i2 < m_iSize; i2++)
+        {
+            if ( m_afDiag[i2] < fMin )
+            {
+                i1 = i2;
+                fMin = m_afDiag[i1];
+            }
+        }
+
+        if ( i1 != i0 )
+        {
+            // swap eigenvalues
+            m_afDiag[i1] = m_afDiag[i0];
+            m_afDiag[i0] = fMin;
+
+            // swap eigenvectors
+            for (i2 = 0; i2 < m_iSize; i2++)
+            {
+               Ogre::Real fTmp = m_kMat[i2][i0];
+                m_kMat[i2][i0] = m_kMat[i2][i1];
+                m_kMat[i2][i1] = fTmp;
+                m_bIsRotation = !m_bIsRotation;
+            }
+        }
+    }
+}
Index: /ogreode/src/OgreOdeEntityInformer.cpp
===================================================================
--- /ogreode/src/OgreOdeEntityInformer.cpp	(revision 21)
+++ /ogreode/src/OgreOdeEntityInformer.cpp	(revision 21)
@@ -0,0 +1,613 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeEntityInformer.h"
+#include "OgreOdeMaintainedList.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeMass.h"
+#include "OgreOdeEigenSolver.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+//------------------------------------------------------------------------------------------------
+void EntityInformer::addVertexData(const VertexData *vertex_data,
+                                   const VertexData *blended_data,
+                                   const Mesh::IndexMap *indexMap)
+{
+	if (!vertex_data) 
+        return;
+
+	const VertexData *data = (blended_data) ? blended_data: vertex_data;
+
+	const unsigned int prev_size = _vertex_count;
+    _vertex_count += (unsigned int)data->vertexCount;
+
+    Ogre::Vector3* tmp_vert = new Ogre::Vector3[_vertex_count];
+	if (_vertices)
+	{
+		memcpy(tmp_vert,_vertices,sizeof(Vector3) * prev_size);
+		delete[] _vertices;
+	}
+	_vertices = tmp_vert;
+
+	// Get the positional buffer element
+    {	
+        const Ogre::VertexElement* posElem = data->vertexDeclaration->findElementBySemantic(Ogre::VES_POSITION);			
+        Ogre::HardwareVertexBufferSharedPtr vbuf = data->vertexBufferBinding->getBuffer(posElem->getSource());
+        const unsigned int vSize = (unsigned int)vbuf->getVertexSize();
+
+	    unsigned char* vertex = static_cast<unsigned char*>(vbuf->lock(Ogre::HardwareBuffer::HBL_READ_ONLY));
+	    float* pReal;
+        Ogre::Vector3 * curVertices = &_vertices[prev_size];
+        const unsigned int vertexCount = (unsigned int)data->vertexCount;
+	    for(unsigned int j = 0; j < vertexCount; ++j)
+	    {
+		    posElem->baseVertexPointerToElement(vertex, &pReal);
+            vertex += vSize;
+
+		    curVertices->x = (*pReal++);
+		    curVertices->y = (*pReal++);
+		    curVertices->z = (*pReal++);
+
+		    *curVertices = _transform * (*curVertices);
+            
+            curVertices++;
+        }
+	    vbuf->unlock();
+    }
+
+	// Get the bone index element
+	if (_entity->hasSkeleton())
+	{
+
+        Ogre::MeshPtr mesh = _entity->getMesh ();
+
+		const Ogre::VertexElement* bneElem = vertex_data->vertexDeclaration->findElementBySemantic(Ogre::VES_BLEND_INDICES);
+		assert (bneElem);
+		{
+            Ogre::HardwareVertexBufferSharedPtr vbuf = vertex_data->vertexBufferBinding->getBuffer(bneElem->getSource());
+            const unsigned int vSize = (unsigned int)vbuf->getVertexSize();
+			unsigned char* vertex = static_cast<unsigned char*>(vbuf->lock(Ogre::HardwareBuffer::HBL_READ_ONLY));
+
+			unsigned char* pBone;
+
+            if (!_bone_mapping)
+                _bone_mapping = new BoneMapping();	
+            BoneMapping::iterator i;
+
+            Ogre::Vector3 * curVertices = &_vertices[prev_size];
+            
+            const unsigned int vertexCount = (unsigned int)vertex_data->vertexCount;
+			for(unsigned int j = 0; j < vertexCount; ++j)
+			{
+				bneElem->baseVertexPointerToElement(vertex, &pBone);
+                vertex += vSize;
+               
+                const unsigned char currBone = (indexMap) ? (*indexMap)[*pBone] : *pBone;
+				i = _bone_mapping->find (currBone);
+				Vector3Array* l = 0;
+				if (i == _bone_mapping->end())
+				{
+					l = new Vector3Array;
+					_bone_mapping->insert(BoneMappingKey(currBone, l));
+				}						
+				else 
+                {
+                    l = i->second;
+                }
+
+				l->push_back(*curVertices);
+
+                curVertices++;
+			}
+			vbuf->unlock();
+		}
+	}
+}
+
+
+//------------------------------------------------------------------------------------------------
+void EntityInformer::addIndexData(IndexData *data, const unsigned int offset)
+{
+    const unsigned int prev_size = _index_count;
+    _index_count += (unsigned int)data->indexCount;
+
+	unsigned int* tmp_ind = new unsigned int[_index_count];
+	if (_indices)
+	{
+		memcpy (tmp_ind, _indices, sizeof(unsigned int) * prev_size);
+		delete[] _indices;
+	}
+	_indices = tmp_ind;
+
+	const unsigned int numTris = (unsigned int) data->indexCount / 3;
+	HardwareIndexBufferSharedPtr ibuf = data->indexBuffer;	
+	const bool use32bitindexes = (ibuf->getType() == HardwareIndexBuffer::IT_32BIT);
+    unsigned int index_offset = prev_size;
+
+	if (use32bitindexes) 
+    {
+        const unsigned int* pInt = static_cast<unsigned int*>(ibuf->lock(HardwareBuffer::HBL_READ_ONLY));
+        for(unsigned int k = 0; k < numTris; ++k)
+        {
+            _indices[index_offset ++] = offset + *pInt++;
+            _indices[index_offset ++] = offset + *pInt++;
+            _indices[index_offset ++] = offset + *pInt++;
+        }
+        ibuf->unlock();
+    }
+	else 
+    {
+        const unsigned short* pShort = static_cast<unsigned short*>(ibuf->lock(HardwareBuffer::HBL_READ_ONLY));
+		for(unsigned int k = 0; k < numTris; ++k)
+        {
+            _indices[index_offset ++] = offset + static_cast<unsigned int> (*pShort++);
+            _indices[index_offset ++] = offset + static_cast<unsigned int> (*pShort++);
+            _indices[index_offset ++] = offset + static_cast<unsigned int> (*pShort++);
+        }
+        ibuf->unlock();
+    }
+
+}
+//------------------------------------------------------------------------------------------------
+void EntityInformer::addEntity(Entity *entity,const Matrix4 &transform)
+{
+	// Each entity added need to reset size and radius
+	// next time getRadius and getSize are asked, they're computed.
+	_size  = Ogre::Vector3(-1,-1,-1);
+	_radius = -1;
+
+	_entity = entity;
+	_node = (SceneNode*)(_entity->getParentNode());
+	_transform = transform;
+
+	const bool isSkeletonAnimated = _entity->hasSkeleton();
+	//const bool isHWanimated = isSkeletonAnimated && entity->isHardwareAnimationEnabled();
+	if (isSkeletonAnimated)
+	{
+		_entity->addSoftwareAnimationRequest(false);
+		_entity->_updateAnimation();
+	}
+
+
+	if (_entity->getMesh()->sharedVertexData)
+	{
+		if (!isSkeletonAnimated)
+			addVertexData (_entity->getMesh()->sharedVertexData);
+		else
+			addVertexData (_entity->getMesh()->sharedVertexData, 
+			_entity->_getSkelAnimVertexData(),
+			&_entity->getMesh()->sharedBlendIndexToBoneIndexMap); 
+	}
+
+	for(unsigned int i = 0;i < _entity->getNumSubEntities();++i)
+	{
+		SubMesh *sub_mesh = _entity->getSubEntity(i)->getSubMesh();
+
+		if (!sub_mesh->useSharedVertices)
+		{
+			addIndexData(sub_mesh->indexData,_vertex_count);
+
+			if (!isSkeletonAnimated)
+				addVertexData (sub_mesh->vertexData);
+			else
+				addVertexData (sub_mesh->vertexData, 
+				_entity->getSubEntity(i)->_getSkelAnimVertexData(),
+				&sub_mesh->blendIndexToBoneIndexMap); 
+		}
+		else 
+		{
+			addIndexData (sub_mesh->indexData);
+		}
+
+	}
+
+	if (isSkeletonAnimated) 
+		_entity->removeSoftwareAnimationRequest(false);
+}
+//------------------------------------------------------------------------------------------------
+void EntityInformer::addMesh(const MeshPtr &mesh, const Matrix4 &transform)
+{
+	// Each entity added need to reset size and radius
+	// next time getRadius and getSize are asked, they're computed.
+	_size  = Ogre::Vector3(-1,-1,-1);
+	_radius = -1;
+
+	//_entity = entity;
+	//_node = (SceneNode*)(_entity->getParentNode());
+	_transform = transform;
+
+	if (mesh->hasSkeleton ())
+		Ogre::LogManager::getSingleton().logMessage("EntityInformer::addMesh : Mesh " + mesh->getName () + " as skeleton but added to trimesh non animated");
+// 		OGRE_EXCEPT(1, "Mesh " + mesh->getName () + " as skeleton but added to trimesh non animated", 
+// 					"EntityInformer::addMesh");
+
+	if (mesh->sharedVertexData)
+	{
+		addVertexData (mesh->sharedVertexData);
+	}
+
+	for(unsigned int i = 0;i < mesh->getNumSubMeshes();++i)
+	{
+		SubMesh *sub_mesh = mesh->getSubMesh(i);
+
+		if (!sub_mesh->useSharedVertices)
+		{
+			addIndexData(sub_mesh->indexData, _vertex_count);
+			addVertexData (sub_mesh->vertexData);
+		}
+		else 
+		{
+			addIndexData (sub_mesh->indexData);
+		}
+
+	}
+}
+//------------------------------------------------------------------------------------------------
+EntityInformer::EntityInformer(Entity *entity,const Matrix4 &transform) :
+	_vertices (0),
+	_indices (0),
+	_vertex_count (0),
+	_index_count (0),
+	_size (Vector3(-1,-1,-1)),
+	_radius (-1),
+	_bone_mapping (0)
+{
+	addEntity(entity, transform);	
+}
+//------------------------------------------------------------------------------------------------
+EntityInformer::EntityInformer() :
+		_vertices (0),
+		_indices (0),
+		_vertex_count (0),
+		_index_count (0),
+		_size (Vector3(-1,-1,-1)),
+		_radius (-1),
+        _bone_mapping (0)
+{
+	
+}
+//------------------------------------------------------------------------------------------------
+Real EntityInformer::getRadius()
+{
+	if (_radius == (-1))
+	{
+		getSize();
+		_radius = (std::max(_size.x,std::max(_size.y,_size.z)) * 0.5);
+	}
+	return _radius;
+}
+//------------------------------------------------------------------------------------------------
+Vector3 EntityInformer::getSize()
+{
+    const unsigned int vCount = getVertexCount();
+	if (_size == Ogre::Vector3(-1,-1,-1) && vCount > 0)
+	{
+
+		const Ogre::Vector3 * const v = getVertices();
+
+        Ogre::Vector3 vmin(v[0]);
+        Ogre::Vector3 vmax(v[0]);
+
+		for(unsigned int j = 1; j < vCount; j++)
+		{
+			vmin.x = std::min(vmin.x, v[j].x);
+			vmin.y = std::min(vmin.y, v[j].y);
+			vmin.z = std::min(vmin.z, v[j].z);
+
+			vmax.x = std::max(vmax.x, v[j].x);
+			vmax.y = std::max(vmax.y, v[j].y);
+			vmax.z = std::max(vmax.z, v[j].z);
+		}
+
+		_size.x = vmax.x - vmin.x;
+		_size.y = vmax.y - vmin.y;
+		_size.z = vmax.z - vmin.z;
+	}
+
+	return _size;
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3* EntityInformer::getVertices()
+{
+	return _vertices;
+}
+//------------------------------------------------------------------------------------------------
+unsigned int EntityInformer::getVertexCount()
+{
+	return _vertex_count;
+}
+//------------------------------------------------------------------------------------------------
+const unsigned int* EntityInformer::getIndices()
+{
+	return _indices;
+}
+//------------------------------------------------------------------------------------------------
+unsigned int EntityInformer::getIndexCount()
+{
+	return _index_count;
+}
+//------------------------------------------------------------------------------------------------
+Body* EntityInformer::createSingleDynamicSphere(Real mass, World *world, Space* space)
+{
+	const Ogre::Real rad = getRadius();
+
+	assert((rad > 0.0) && 
+        ("Sphere radius must be greater than zero"));
+
+	Body* body = new Body(world, "OgreOde::Body_" + _entity->getName());
+	body->setMass(SphereMass(mass, rad));
+
+	SphereGeometry* geom = new SphereGeometry(rad, world, space);
+	geom->setBody(body);
+
+	body->setPosition(_node->getPosition());
+	body->setOrientation(_node->getOrientation());
+
+	_node->attachObject(body);
+
+	return body;
+}
+//------------------------------------------------------------------------------------------------
+Body* EntityInformer::createSingleDynamicBox(Real mass, World *world, Space* space)
+{
+	const Ogre::Vector3 sz = getSize();
+
+	assert((sz.x > 0.0) && (sz.y > 0.0) && (sz.y > 0.0) && 
+        ("Size of box must be greater than zero on all axes"));
+
+	Body* body = new Body(world, "OgreOde::Body_" + _node->getName());
+	body->setMass(BoxMass(mass,sz));
+
+	BoxGeometry* geom = new BoxGeometry(sz, world, space);
+	geom->setBody(body);
+
+	body->setPosition(_node->getPosition());
+	body->setOrientation(_node->getOrientation());
+
+	_node->attachObject(body);
+
+	return body;
+}
+//------------------------------------------------------------------------------------------------
+TriangleMeshGeometry* EntityInformer::createStaticTriangleMesh(World *world, Space* space)
+{
+	assert(_vertex_count && (_index_count >= 6) && 
+        ("Mesh must have some vertices and at least 6 indices (2 triangles)"));
+
+	return new TriangleMeshGeometry(_vertices, _vertex_count,_indices, _index_count, world, space);
+}
+//------------------------------------------------------------------------------------------------
+BoxGeometry* EntityInformer::createSingleStaticBox(World *world, Space* space)
+{
+	BoxGeometry* geom = new BoxGeometry(getSize(), world, space);
+
+	geom->setPosition(_node->getPosition());
+	geom->setOrientation(_node->getOrientation());
+
+	return geom;
+}
+//------------------------------------------------------------------------------------------------
+bool EntityInformer::getBoneVertices(unsigned char bone, unsigned int &vertex_count, Ogre::Vector3* &vertices)
+{
+	BoneMapping::iterator i = _bone_mapping->find(bone);
+	
+    if (i == _bone_mapping->end()) 
+        return false;
+
+	if (i->second->empty()) 
+        return false;
+
+    vertex_count = (unsigned int) i->second->size() + 1;
+
+	vertices = new Ogre::Vector3[vertex_count];
+	vertices[0] = _entity->_getParentNodeFullTransform() * 
+            _entity->getSkeleton()->getBone(bone)->_getDerivedPosition();
+
+	unsigned int o = 1;
+	for(Vector3Array::iterator j = i->second->begin();
+        j != i->second->end(); ++j,++o) 
+    {
+        vertices[o] = (*j);
+    }       
+	return true;
+}
+//------------------------------------------------------------------------------------------------
+BoxGeometry* EntityInformer::createAlignedBox(unsigned char bone, World *world, Space* space)
+{
+	unsigned int vertex_count;
+	Vector3* vertices;
+	if (!getBoneVertices(bone, vertex_count, vertices)) 
+        return 0;
+
+	Vector3 min_vec(vertices[0]);
+	Vector3 max_vec(vertices[0]);
+
+	for(unsigned int j = 1; j < vertex_count ;j++)
+	{
+		min_vec.x = std::min(min_vec.x,vertices[j].x);
+		min_vec.y = std::min(min_vec.y,vertices[j].y);
+		min_vec.z = std::min(min_vec.z,vertices[j].z);
+
+		max_vec.x = std::max(max_vec.x,vertices[j].x);
+		max_vec.y = std::max(max_vec.y,vertices[j].y);
+		max_vec.z = std::max(max_vec.z,vertices[j].z);
+	}
+    const Ogre::Vector3 maxMinusMin(max_vec - min_vec);
+    BoxGeometry* box = new BoxGeometry(maxMinusMin, world, space);
+
+    const Ogre::Vector3 pos(min_vec.x + (maxMinusMin.x * 0.5),
+                      min_vec.y + (maxMinusMin.y * 0.5),
+                      min_vec.z + (maxMinusMin.z * 0.5));
+
+	box->setPosition(pos);
+
+	delete[] vertices;
+
+	return box;
+}
+//------------------------------------------------------------------------------------------------
+BoxGeometry* EntityInformer::createOrientedBox(unsigned char bone, World *world, Space* space)
+{
+	unsigned int vertex_count;
+	Vector3* vertices;
+	if (!getBoneVertices(bone, vertex_count, vertices)) 
+        return 0;
+
+	Vector3 box_kCenter;
+    Ogre::Vector3 box_akAxis[3];
+   Ogre::Real box_afExtent[3];
+
+	EigenSolver::GaussPointsFit (vertex_count, vertices, box_kCenter, box_akAxis, box_afExtent);
+
+    // Let C be the box center and let U0, U1, and U2 be the box axes.  Each
+    // input point is of the form X = C + y0*U0 + y1*U1 + y2*U2.  The
+    // following code computes min(y0), max(y0), min(y1), max(y1), min(y2),
+    // and max(y2).  The box center is then adjusted to be
+    //   C' = C + 0.5*(min(y0)+max(y0))*U0 + 0.5*(min(y1)+max(y1))*U1 +
+    //        0.5*(min(y2)+max(y2))*U2
+
+    Ogre::Vector3 kDiff (vertices[0] - box_kCenter);
+   Ogre::Real fY0Min = kDiff.dotProduct(box_akAxis[0]), fY0Max = fY0Min;
+   Ogre::Real fY1Min = kDiff.dotProduct(box_akAxis[1]), fY1Max = fY1Min;
+   Ogre::Real fY2Min = kDiff.dotProduct(box_akAxis[2]), fY2Max = fY2Min;
+
+    for (unsigned int i = 1; i < vertex_count; i++)
+    {
+        kDiff = vertices[i] - box_kCenter;
+
+        const Ogre::Real fY0 = kDiff.dotProduct(box_akAxis[0]);
+        if ( fY0 < fY0Min )
+            fY0Min = fY0;
+        else if ( fY0 > fY0Max )
+            fY0Max = fY0;
+
+        const Ogre::Real fY1 = kDiff.dotProduct(box_akAxis[1]);
+        if ( fY1 < fY1Min )
+            fY1Min = fY1;
+        else if ( fY1 > fY1Max )
+            fY1Max = fY1;
+
+        const Ogre::Real fY2 = kDiff.dotProduct(box_akAxis[2]);
+        if ( fY2 < fY2Min )
+            fY2Min = fY2;
+        else if ( fY2 > fY2Max )
+            fY2Max = fY2;
+    }
+
+    box_afExtent[0] = ((Real)0.5)*(fY0Max - fY0Min);
+    box_afExtent[1] = ((Real)0.5)*(fY1Max - fY1Min);
+    box_afExtent[2] = ((Real)0.5)*(fY2Max - fY2Min);
+
+    box_kCenter += (box_afExtent[0])*box_akAxis[0] +
+                   (box_afExtent[1])*box_akAxis[1] +
+                   (box_afExtent[2])*box_akAxis[2];
+
+	BoxGeometry *geom = new BoxGeometry(Vector3(box_afExtent[0] * 2.0,
+                                                box_afExtent[1] * 2.0,
+                                                box_afExtent[2] * 2.0),
+                                        world, space);
+	geom->setOrientation(Quaternion(box_akAxis[0],box_akAxis[1],box_akAxis[2]));
+	geom->setPosition(box_kCenter);
+	return geom;
+}
+//------------------------------------------------------------------------------------------------
+CapsuleGeometry* EntityInformer::createOrientedCapsule(unsigned char bone, World *world, Space* space)
+{
+	unsigned int vertex_count;
+	Vector3* vertices;
+
+	if (!getBoneVertices(bone,vertex_count,vertices)) 
+        return 0;
+
+	Vector3 cap_orig;
+	Vector3 cap_dir;
+	Real cap_rad;
+
+	Vector3 line_orig;
+	Vector3 line_dir;
+
+	EigenSolver::orthogonalLineFit (vertex_count, vertices, line_orig, line_dir);
+
+   Ogre::Real fMaxRadiusSqr = (Real) 0.0;
+    unsigned int c;
+    for (c = 0; c < vertex_count; c++)
+    {
+		const Ogre::Real fRadiusSqr = EigenSolver::SqrDistance(vertices[c], line_orig, line_dir);
+        if ( fRadiusSqr > fMaxRadiusSqr ) 
+            fMaxRadiusSqr = fRadiusSqr;
+    }
+
+    Ogre::Vector3 kU, kV, kW = line_dir;
+	EigenSolver::GenerateOrthonormalBasis (kU, kV, kW, true);
+
+   Ogre::Real fMin = FLT_MAX, fMax = -fMin;
+    for (c = 0; c < vertex_count; c++)
+    {
+        const  Ogre::Vector3 kDiff (vertices[c] - line_orig);
+        const Ogre::Real fU = kU.dotProduct (kDiff);
+        const Ogre::Real fV = kV.dotProduct (kDiff);
+        const Ogre::Real fW = kW.dotProduct (kDiff);
+        const Ogre::Real fDiscr = fMaxRadiusSqr - (fU*fU + fV*fV);
+        const Ogre::Real fRadical = sqrtf(fabs(fDiscr));
+
+        fMin = std::min(fW + fRadical, fMin);
+        fMax = std::max(fW - fRadical, fMax);
+    }
+
+    if ( fMin < fMax )
+    {
+        cap_orig = line_orig + fMin*line_dir;
+        cap_dir = (fMax-fMin)*line_dir;
+    }
+    else
+    {
+        // enclosing capsule is really a sphere
+        cap_orig = line_orig + (((Real)0.5)*(fMin+fMax))*line_dir;
+        //----------------------------
+        cap_dir = Ogre::Vector3::ZERO;
+        //cap_dir = (fMax-fMin)*line_dir;
+    }
+
+    cap_rad = sqrtf(fMaxRadiusSqr);
+
+
+    CapsuleGeometry* geom = 0;
+    const Ogre::Real cap_dirLength = cap_dir.length();
+    if (cap_rad > 0 && cap_dirLength > 0)
+    {
+        const Ogre::Vector3 orig_axis (Vector3::UNIT_Z);
+        const Ogre::Vector3 reqd_axis (cap_dir.normalisedCopy());
+        const Ogre::Vector3 rot_axis (orig_axis.crossProduct(reqd_axis));
+        const Ogre::Real cos_ang = orig_axis.dotProduct(reqd_axis);
+       Ogre::Real ang = acos(cos_ang);
+        if (cos_ang < 0.0) 
+            ang -= M_PI;
+
+        const Ogre::Quaternion orient = Ogre::Quaternion(Radian(ang),rot_axis);
+
+        geom = new CapsuleGeometry(cap_rad, cap_dirLength, world, space);
+        geom->setOrientation(orient);
+        geom->setPosition(cap_orig + (reqd_axis * (cap_dirLength * 0.5)));
+    }
+	return geom;
+}
+//------------------------------------------------------------------------------------------------
+EntityInformer::~EntityInformer()
+{
+	delete[] _vertices;
+	delete[] _indices;
+
+	if (_bone_mapping)
+	{
+		for(BoneMapping::iterator i = _bone_mapping->begin();
+            i != _bone_mapping->end();
+            ++i)
+		{
+			delete i->second;
+		}
+		delete _bone_mapping;
+	}
+}
Index: /ogreode/src/OgreOdeGeometry.cpp
===================================================================
--- /ogreode/src/OgreOdeGeometry.cpp	(revision 21)
+++ /ogreode/src/OgreOdeGeometry.cpp	(revision 21)
@@ -0,0 +1,1283 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeGeometry.h"
+#include "OgreOdeWorld.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeCollision.h"
+#include "OgreOdeDebugObject.h"
+#include "OgreOdeDebugContact.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+//------------------------------------------------------------------------------------------------
+int Geometry::_geometry_count = 0;
+
+//------------------------------------------------------------------------------------------------
+Geometry::Geometry(World *world, Space* space):
+    UserDefinedObject(),
+	_contact_high_water_mark (0),
+    _last_contact_num(0),
+	_max_contacts (32),
+    _debug_contacts (0),
+	_contacts (0),
+	_encapsulator (0),
+	_debug_obj (0),
+	_debug_node (0),
+	_user_data (0),
+	_user_object (0),
+	_geom (0),
+    _world(world)
+{
+	
+}
+//------------------------------------------------------------------------------------------------
+Geometry::~Geometry()
+{
+    destroyDebugObject();
+
+    delete[] _contacts;
+    if (_debug_contacts)
+    {         
+        for (unsigned int i = 0; i < _max_contacts; i++)
+            delete _debug_contacts[i];
+        delete [] _debug_contacts;
+    }
+    if (_geom)
+    {
+        _world->getGeometryList().unregisterItem((unsigned long)_geom);
+        dGeomDestroy(_geom); 
+    }
+}
+//------------------------------------------------------------------------------------------------
+dGeomID Geometry::getGeometryID() const
+{
+	return _geom;
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::setEncapsulator(Geometry* encapsulator)
+{
+	_encapsulator = encapsulator;
+
+	if (_world->getShowDebugGeometries())
+	{
+		reparentDebugObject(encapsulator->_debug_node);
+	}
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::reparentDebugObject(Ogre::Node* node)
+{
+	if ((node)&&(_debug_node)&&(_debug_node->getParent() != node))
+	{
+		Ogre::SceneNode* parent = static_cast<Ogre::SceneNode*>(_debug_node->getParent());
+		parent->removeChild(_debug_node->getName());
+		node->addChild(_debug_node);
+
+		_debug_node->setPosition(getPosition());
+		_debug_node->setOrientation(getOrientation());
+	}
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::createDebugObject()
+{
+	if (!_debug_node)
+	{
+		Ogre::SceneNode* parent = _world->_manager->getRootSceneNode();
+		_debug_node = static_cast<Ogre::Node*>(parent->createChildSceneNode(Ogre::String("OgreOde::Geometry_") + Ogre::StringConverter::toString(_geometry_count) + Ogre::String("_Debug"))); 
+
+        if (_debug_obj)
+        {
+            static_cast<Ogre::SceneNode*>(_debug_node)->attachObject(_debug_obj);
+        }
+
+        if (getBody())
+        {
+            static_cast<Ogre::SceneNode*>(_debug_node->getParent())->removeChild(_debug_node->getName());
+            getBody()->addDebugNode(_debug_node);
+            if (_debug_obj) 
+                _debug_obj->setMode(DebugObject::Mode_Enabled);
+        }
+		else if (_encapsulator)
+		{
+			reparentDebugObject(_encapsulator->_debug_node);
+		}
+		else
+		{
+			if (_debug_obj) 
+                _debug_obj->setMode(DebugObject::Mode_Static);
+			
+			_debug_node->setPosition(getPosition());
+			_debug_node->setOrientation(getOrientation());
+		}
+		_geometry_count++;
+	}
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::destroyDebugObject()
+{
+	if (_debug_node)
+    {
+
+        Ogre::SceneNode* sn = static_cast<Ogre::SceneNode*>(_debug_node);
+        sn->removeAndDestroyAllChildren ();
+        sn = static_cast<Ogre::SceneNode*>(_debug_node->getParent());
+        sn->removeAndDestroyChild(_debug_node->getName());
+		_debug_node = 0;
+	}
+
+	if (_debug_obj)
+	{
+		delete _debug_obj;
+		_debug_obj = 0;
+	}
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::registerGeometry()
+{
+	dGeomSetData(_geom, (void*)this);
+    _world->getGeometryList().registerItem(this);
+
+    if (_world->getShowDebugGeometries()) 
+        createDebugObject();
+
+    setMaxContacts (_max_contacts);
+}
+//------------------------------------------------------------------------------------------------
+dSpaceID Geometry::getSpaceID(Space* space) const
+{
+	if (!space) return 0;
+	return space->getSpaceID();
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::setBody(Body* body)
+{
+	destroyDebugObject();
+    if (body)
+    {
+        body->addGeometry (this);
+        dGeomSetBody(_geom, body->getBodyID()); 
+    }
+    else
+    {
+        dGeomSetBody(_geom, 0); 
+    }
+	if (_world->getShowDebugGeometries()) 
+        createDebugObject();
+}
+
+//------------------------------------------------------------------------------------------------
+Body* Geometry::getBody()
+{
+	const dBodyID body = dGeomGetBody(_geom);
+	if (!body) return 0;
+	else return (Body*)dBodyGetData(body); 
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::notify(Body* body)
+{
+	if (getBody() == body)
+	{
+		destroyDebugObject();
+	}
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::setDebug(const bool debug)
+{
+    destroyDebugObject();
+    if (debug) 
+        createDebugObject();    
+}
+//------------------------------------------------------------------------------------------------
+void Geometry::setDebugContact(const bool debug)
+{    
+    if (_debug_contacts)
+    {
+        for (unsigned int i = 0; i < _max_contacts; i++)
+            delete _debug_contacts[i];
+        delete [] _debug_contacts;
+        _debug_contacts = 0;
+    }
+    if (debug) 
+    {
+        _debug_contacts = new DebugContact*[_max_contacts];
+        for (unsigned int i = 0; i < _max_contacts; i++)
+            _debug_contacts[i] = new DebugContact(Ogre::StringConverter::toString(_geom) + 
+                                                    "_Contact_" + 
+                                                    Ogre::StringConverter::toString(i),
+                                                    _world);
+    }
+}
+//------------------------------------------------------------------------------------------------
+void Geometry::setPosition(const Ogre::Vector3& position)
+{
+    dGeomSetPosition(_geom,(dReal)position.x,(dReal)position.y,(dReal)position.z);
+
+    if ((_debug_node)&& ((!getBody()) || (_encapsulator)))
+        _debug_node->setPosition(position);
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::setOrientation(const Ogre::Quaternion& orientation)
+{
+	dQuaternion q;
+	q[0] = (dReal)orientation.w;
+	q[1] = (dReal)orientation.x;
+	q[2] = (dReal)orientation.y;
+	q[3] = (dReal)orientation.z;
+	dGeomSetQuaternion(_geom,q); 
+
+	if ((_debug_node)&& ((!getBody()) || (_encapsulator))) _debug_node->setOrientation(orientation);
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& Geometry::getPosition()
+{
+	const dReal* position = dGeomGetPosition(_geom);
+	_position.x = (Ogre::Real)position[0];
+	_position.y = (Ogre::Real)position[1];
+	_position.z = (Ogre::Real)position[2];
+	return _position;
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Quaternion& Geometry::getOrientation()
+{
+	dQuaternion orientation;
+	dGeomGetQuaternion(_geom,orientation); 
+	_orientation.w = (Real)orientation[0];
+	_orientation.x = (Real)orientation[1];
+	_orientation.y = (Real)orientation[2];
+	_orientation.z = (Real)orientation[3];
+	return _orientation;
+}
+
+//------------------------------------------------------------------------------------------------
+const AxisAlignedBox& Geometry::getAxisAlignedBox()
+{
+	dReal aabb[6];
+	dGeomGetAABB(_geom,aabb);
+	_bounding_box.setExtents((Real)aabb[0],(Real)aabb[2],(Real)aabb[4],(Real)aabb[1],(Real)aabb[3],(Real)aabb[5]);
+	return _bounding_box;
+}
+
+//------------------------------------------------------------------------------------------------
+Space* Geometry::getSpace()
+{
+	return (Space*)_world->getSpaceList().findItem((long unsigned int)dGeomGetSpace(_geom));
+}
+
+
+//------------------------------------------------------------------------------------------------
+void Geometry::enable()
+{
+	dGeomEnable(_geom);
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::disable()
+{
+	dGeomDisable(_geom); 
+}
+
+//------------------------------------------------------------------------------------------------
+bool Geometry::isEnabled()
+{
+	return dGeomIsEnabled(_geom); 
+}
+
+//------------------------------------------------------------------------------------------------
+Geometry::Class Geometry::getClass() const
+{
+	return (Geometry::Class)dGeomGetClass(_geom);
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::setCategoryBitfield(unsigned long bits)
+{
+	dGeomSetCategoryBits(_geom,bits); 
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::setCollisionBitfield(unsigned long bits)
+{
+	dGeomSetCollideBits(_geom,bits); 
+}
+
+//------------------------------------------------------------------------------------------------
+unsigned long Geometry::getCategoryBitfield()
+{
+	return dGeomGetCategoryBits(_geom); 
+}
+
+//------------------------------------------------------------------------------------------------
+unsigned long Geometry::getCollisionBitfield()
+{
+	return dGeomGetCollideBits(_geom); 
+}
+
+//------------------------------------------------------------------------------------------------
+int Geometry::collide(Geometry* geometry,CollisionListener* listener)
+{
+	const unsigned int num_contacts = (unsigned int) dCollide(_geom,
+										geometry->getGeometryID(),
+										_max_contacts,
+										&(_contacts[0].geom),
+										sizeof(dContact));
+	if (num_contacts)
+	{
+		_contact_high_water_mark = std::max(_contact_high_water_mark,num_contacts);
+
+		Contact contact;
+		
+		const dWorldID wid = _world->getWorldID();
+		const dJointGroupID cid = _world->getContactGroupID();
+		const dBodyID b1 = dGeomGetBody(_geom);
+		const dBodyID b2 = dGeomGetBody(geometry->getGeometryID());
+
+		if (listener)
+		{
+			for(unsigned int i = 0;i < num_contacts;i++)
+			{
+				contact.setContact (&_contacts[i]);
+
+				if (listener->collision(&contact))
+				{
+					dJointAttach(dJointCreateContact(wid,cid,&_contacts[i]),b1,b2);
+                } 
+			}
+		}
+		else
+		{
+			for(unsigned int i = 0;i < num_contacts;i++)
+			{
+				contact.setContact (&_contacts[i]);
+   
+				dJointAttach(dJointCreateContact(wid,cid,&_contacts[i]), b1, b2);
+			}
+		} 
+    }
+    _last_contact_num = num_contacts;
+	return num_contacts;
+}
+//------------------------------------------------------------------------------------------------
+void Geometry::updateDebugContact()
+{
+    assert (_world->getShowDebugContact ());
+    assert (_debug_contacts);
+    {
+        unsigned int k = 0;
+        while (k < _max_contacts)
+        {
+            _debug_contacts[k++]->setEnabled(false);
+        }
+
+        if (_last_contact_num)
+        {
+            Contact contact;
+            for(unsigned int i = 0;i < _last_contact_num;i++)
+            {
+                k = 0;
+                while (k < _max_contacts)
+                {
+                    if (_debug_contacts[k]->isEnabled() == false)
+                        break;
+                    k++;
+                }
+                assert (k < _max_contacts);
+
+                _debug_contacts[k]->setEnabled(true);
+                contact.setContact (&_contacts[i]);
+                _debug_contacts[k]->update (&contact);
+            }
+        }
+    }
+    _last_contact_num = 0;
+ }
+//------------------------------------------------------------------------------------------------
+unsigned int Geometry::getMaxContacts() const
+{
+	return _max_contacts;
+}
+
+//------------------------------------------------------------------------------------------------
+void Geometry::setMaxContacts(unsigned int max_contacts)
+{
+	delete[] _contacts;
+	_contacts = new dContact[max_contacts];
+
+    if (_world->getShowDebugContact ())
+    {
+        if (_debug_contacts)
+        {         
+            for (unsigned int i = 0; i < _max_contacts; i++)
+                delete _debug_contacts[i];
+            delete [] _debug_contacts;
+        }
+        _debug_contacts = new DebugContact*[max_contacts];
+        for (unsigned int i = 0; i < max_contacts; i++)
+            _debug_contacts[i] = new DebugContact(Ogre::StringConverter::toString(_geom) +  + "_Contact_" + Ogre::StringConverter::toString(i),
+            _world);
+    }
+    _max_contacts = max_contacts;
+}
+
+//------------------------------------------------------------------------------------------------
+unsigned int Geometry::getContactHighWaterMark() const
+{
+	return _contact_high_water_mark;
+}
+
+//------------------------------------------------------------------------------------------------
+unsigned long Geometry::getID() const
+{
+	return (unsigned long)_geom;
+}
+//------------------------------------------------------------------------------------------------
+void Geometry::clearOffset()
+{
+	dGeomClearOffset(_geom);
+}
+//------------------------------------------------------------------------------------------------
+int Geometry::isOffset()
+{
+	return dGeomIsOffset(_geom);
+}
+//------------------------------------------------------------------------------------------------
+void Geometry::setOffsetPosition (const Ogre::Vector3 &pos)
+{
+	dGeomSetOffsetPosition (_geom, pos.x, pos.y, pos.z);
+}
+//------------------------------------------------------------------------------------------------
+void Geometry::setOffsetQuaternion(const Ogre::Quaternion &quat) 
+{
+	dQuaternion q;
+	q[0] = quat.x; 
+	q[1] = quat.y; 
+	q[2] = quat.z; 
+	q[3] = quat.w;
+	dGeomSetOffsetQuaternion (_geom, q);
+}
+//------------------------------------------------------------------------------------------------
+void Geometry::setOffsetWorldPosition(const Ogre::Vector3 &pos) 
+{
+	dGeomSetOffsetWorldPosition(_geom, pos.x, pos.y, pos.z);
+}
+//------------------------------------------------------------------------------------------------
+void Geometry::setOffsetWorldQuaternion(const Ogre::Quaternion &quat) 
+{
+	dQuaternion q;
+	q[0] = quat.x; 
+	q[1] = quat.y; 
+	q[2] = quat.z; 
+	q[3] = quat.w;
+	dGeomSetOffsetWorldQuaternion (_geom, q);
+}
+//------------------------------------------------------------------------------------------------
+Vector3 Geometry::getOffsetPosition() 
+{
+	const dReal *p =  dGeomGetOffsetPosition (_geom);
+	return Ogre::Vector3(p[0], p[1], p[2]);
+}
+//------------------------------------------------------------------------------------------------
+Quaternion Geometry::getOffsetQuaternion() 
+{
+	dQuaternion q;
+	dGeomGetOffsetQuaternion (_geom, q);
+	return Ogre::Quaternion(q[0], q[1], q[2], q[3]);
+}
+//------------------------------------------------------------------------------------------------
+SphereGeometry::SphereGeometry(Real radius, World *world, Space* space):Geometry(world, space)
+{
+	_geom = dCreateSphere(getSpaceID(space),(dReal)radius); 
+	registerGeometry();
+}
+
+//------------------------------------------------------------------------------------------------
+void SphereGeometry::setRadius(Real radius)
+{
+	dGeomSphereSetRadius(_geom,(dReal)radius);
+}
+
+//------------------------------------------------------------------------------------------------
+Real SphereGeometry::getRadius()
+{
+	return (Real)dGeomSphereGetRadius(_geom); 
+}
+
+//------------------------------------------------------------------------------------------------
+Real SphereGeometry::getPointDepth(const Ogre::Vector3& point)
+{
+	return (Real)dGeomSpherePointDepth(_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z); 
+}
+
+//------------------------------------------------------------------------------------------------
+void SphereGeometry::createDebugObject()
+{
+	_debug_obj = new SphereDebugObject(getRadius());
+	Geometry::createDebugObject();
+}
+
+//------------------------------------------------------------------------------------------------
+SphereGeometry::~SphereGeometry()
+{
+}
+
+//------------------------------------------------------------------------------------------------
+BoxGeometry::BoxGeometry(const Ogre::Vector3& size, World *world, Space* space):Geometry(world, space)
+{
+	_geom = dCreateBox(getSpaceID(space),(dReal)size.x,(dReal)size.y,(dReal)size.z); 
+	registerGeometry();
+}
+
+//------------------------------------------------------------------------------------------------
+void BoxGeometry::setSize(const Ogre::Vector3& size)
+{
+	dGeomBoxSetLengths(_geom,(dReal)size.x,(dReal)size.y,(dReal)size.z); 
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& BoxGeometry::getSize()
+{
+	dVector3 result;
+	dGeomBoxGetLengths(_geom,result); 
+	_size.x = (Real)result[0];
+	_size.y = (Real)result[1];
+	_size.z = (Real)result[2];
+	return _size;
+}
+
+//------------------------------------------------------------------------------------------------
+Real BoxGeometry::getPointDepth(const Ogre::Vector3& point)
+{
+	return (Real)dGeomBoxPointDepth(_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z); 
+}
+
+//------------------------------------------------------------------------------------------------
+void BoxGeometry::createDebugObject()
+{
+	_debug_obj = new BoxDebugObject(getSize());
+	Geometry::createDebugObject();	
+}
+
+//------------------------------------------------------------------------------------------------
+BoxGeometry::~BoxGeometry()
+{
+}
+
+//------------------------------------------------------------------------------------------------
+InfinitePlaneGeometry::InfinitePlaneGeometry(const Plane& plane,World *world, Space* space):Geometry(world, space)
+{
+	_geom = dCreatePlane(getSpaceID(space),(dReal)plane.normal.x,(dReal)plane.normal.y,(dReal)plane.normal.z,(dReal)-plane.d); 
+	registerGeometry();
+}
+
+//------------------------------------------------------------------------------------------------
+void InfinitePlaneGeometry::setDefinition(const Plane& plane)
+{
+	dGeomPlaneSetParams(_geom,(dReal)plane.normal.x,(dReal)plane.normal.y,(dReal)plane.normal.z,(dReal)-plane.d); 
+}
+
+//------------------------------------------------------------------------------------------------
+const Plane& InfinitePlaneGeometry::getDefinition()
+{
+	dVector4 result;
+	dGeomPlaneGetParams(_geom,result); 
+	_plane.normal.x = result[0];
+	_plane.normal.y = result[1];
+	_plane.normal.z = result[2];
+	_plane.d = -result[3];
+	return _plane;
+}
+
+//------------------------------------------------------------------------------------------------
+Real InfinitePlaneGeometry::getPointDepth(const Ogre::Vector3& point)
+{
+	return (Real)dGeomPlanePointDepth(_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z); 
+}
+
+//------------------------------------------------------------------------------------------------
+void InfinitePlaneGeometry::setPosition(const Ogre::Vector3& position)
+{
+}
+
+//------------------------------------------------------------------------------------------------
+void InfinitePlaneGeometry::setOrientation(const Ogre::Quaternion& orientation)
+{
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& InfinitePlaneGeometry::getPosition()
+{
+	return Ogre::Vector3::ZERO;
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Quaternion& InfinitePlaneGeometry::getOrientation()
+{
+	return Ogre::Quaternion::ZERO;
+}
+
+//------------------------------------------------------------------------------------------------
+const AxisAlignedBox& InfinitePlaneGeometry::getAxisAlignedBox()
+{
+	return _bounding_box;
+}
+
+//------------------------------------------------------------------------------------------------
+InfinitePlaneGeometry::~InfinitePlaneGeometry()
+{
+}
+
+//------------------------------------------------------------------------------------------------
+CapsuleGeometry::CapsuleGeometry(Real radius,Real length,World *world, Space* space):Geometry(world, space)
+{
+	_geom = dCreateCapsule(getSpaceID(space),(dReal)radius,(dReal)length);
+	registerGeometry();
+}
+
+//------------------------------------------------------------------------------------------------
+void CapsuleGeometry::setDefinition(Real radius,Real length)
+{
+	dGeomCapsuleSetParams(_geom,(dReal)radius,(dReal)length);
+}
+
+//------------------------------------------------------------------------------------------------
+Real CapsuleGeometry::getRadius()
+{
+	dReal radius,length;
+	dGeomCapsuleGetParams(_geom,&radius,&length); 
+	return radius;
+}
+
+//------------------------------------------------------------------------------------------------
+Real CapsuleGeometry::getLength()
+{
+	dReal radius,length;
+	dGeomCapsuleGetParams(_geom,&radius,&length); 
+	return length;
+}
+
+//------------------------------------------------------------------------------------------------
+Real CapsuleGeometry::getPointDepth(const Ogre::Vector3& point)
+{
+	return (Real)dGeomCapsulePointDepth(_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z); 
+}
+
+//------------------------------------------------------------------------------------------------
+void CapsuleGeometry::createDebugObject()
+{
+	_debug_obj = new CapsuleDebugObject(getRadius(),getLength());
+	Geometry::createDebugObject();
+}
+
+//------------------------------------------------------------------------------------------------
+CapsuleGeometry::~CapsuleGeometry()
+{
+}
+
+//------------------------------------------------------------------------------------------------
+CylinderGeometry::CylinderGeometry(Real radius,Real length,World *world, Space* space):Geometry(world, space)
+{
+	_geom = dCreateCCylinder(getSpaceID(space),(dReal)radius,(dReal)length);
+	registerGeometry();
+}
+
+//------------------------------------------------------------------------------------------------
+void CylinderGeometry::setDefinition(Real radius,Real length)
+{
+	dGeomCCylinderSetParams(_geom,(dReal)radius,(dReal)length);
+}
+
+//------------------------------------------------------------------------------------------------
+Real CylinderGeometry::getRadius()
+{
+	dReal radius,length;
+	dGeomCCylinderGetParams(_geom,&radius,&length); 
+	return radius;
+}
+
+//------------------------------------------------------------------------------------------------
+Real CylinderGeometry::getLength()
+{
+	dReal radius,length;
+	dGeomCCylinderGetParams(_geom,&radius,&length); 
+	return length;
+}
+
+//------------------------------------------------------------------------------------------------
+Real CylinderGeometry::getPointDepth(const Ogre::Vector3& point)
+{
+	return (Real)dGeomCCylinderPointDepth(_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z); 
+}
+
+//------------------------------------------------------------------------------------------------
+void CylinderGeometry::createDebugObject()
+{
+	_debug_obj = new CylinderDebugObject(getRadius(),getLength());
+	Geometry::createDebugObject();
+}
+
+//------------------------------------------------------------------------------------------------
+CylinderGeometry::~CylinderGeometry()
+{
+}
+//------------------------------------------------------------------------------------------------
+RayGeometry::RayGeometry(Real length,World *world, Space* space) : Geometry(world, space)
+{
+	_geom = dCreateRay(getSpaceID(space),(dReal)length);
+	registerGeometry();
+}
+
+//------------------------------------------------------------------------------------------------
+void RayGeometry::createDebugObject()
+{
+	_debug_obj = new RayDebugObject(getStart(),getDirection(),getLength());
+	Geometry::createDebugObject();
+	if (_debug_node)
+	{
+		_debug_node->setPosition(Vector3::ZERO);
+		_debug_node->setOrientation(Quaternion::IDENTITY);
+	}
+}
+
+//------------------------------------------------------------------------------------------------
+void RayGeometry::setLength(Real length)
+{
+	dGeomRaySetLength(_geom,(dReal)length); 
+}
+
+//------------------------------------------------------------------------------------------------
+Real RayGeometry::getLength()
+{
+	return (Real)dGeomRayGetLength(_geom); 
+}
+
+//------------------------------------------------------------------------------------------------
+void RayGeometry::setDefinition(const Ogre::Vector3& start,const Ogre::Vector3& direction)
+{
+	dGeomRaySet(_geom,
+					(dReal)start.x,(dReal)start.y,(dReal)start.z,
+					(dReal)direction.x,(dReal)direction.y,(dReal)direction.z);
+
+	if ((_debug_node)&& ((!getBody()) || (_encapsulator))) 
+		(static_cast<RayDebugObject *>(_debug_obj))->setDefinition(start, direction, (Real)dGeomRayGetLength(_geom));
+
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& RayGeometry::getStart()
+{
+	dVector3 start,direction;
+	dGeomRayGet(_geom,start,direction); 
+	_start.x = (Real)start[0];
+	_start.y = (Real)start[1];
+	_start.z = (Real)start[2];
+	return _start;
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& RayGeometry::getDirection()
+{
+	dVector3 start,direction;
+	dGeomRayGet(_geom,start,direction); 
+	_direction.x = (Real)direction[0];
+	_direction.y = (Real)direction[1];
+	_direction.z = (Real)direction[2];
+	return _direction;
+}
+
+//------------------------------------------------------------------------------------------------
+RayGeometry::~RayGeometry()
+{
+}
+
+//------------------------------------------------------------------------------------------------
+TransformGeometry::TransformGeometry(World *world, Space* space) : Geometry(world, space)
+{
+	_geom = dCreateGeomTransform(getSpaceID(space)); 
+	dGeomTransformSetCleanup(_geom,0);
+	dGeomTransformSetInfo(_geom,1);
+	registerGeometry();
+}
+
+//------------------------------------------------------------------------------------------------
+void TransformGeometry::setEncapsulatedGeometry(Geometry* geometry)
+{
+	dGeomTransformSetGeom(_geom,geometry->getGeometryID()); 
+	destroyDebugObject();
+	if (_world->getShowDebugGeometries()) 
+		createDebugObject();	
+
+	geometry->setEncapsulator(this);
+}
+
+//------------------------------------------------------------------------------------------------
+void TransformGeometry::createDebugObject()
+{
+	Geometry::createDebugObject();
+	if (getEncapsulatedGeometry())
+	{
+		getEncapsulatedGeometry()->destroyDebugObject();
+		getEncapsulatedGeometry()->createDebugObject();
+	}
+}
+
+//------------------------------------------------------------------------------------------------
+void TransformGeometry::destroyDebugObject()
+{
+	if (getEncapsulatedGeometry()) getEncapsulatedGeometry()->destroyDebugObject();
+	Geometry::destroyDebugObject();
+}
+
+//------------------------------------------------------------------------------------------------
+Geometry* TransformGeometry::getEncapsulatedGeometry() const
+{
+	dGeomID id = dGeomTransformGetGeom(_geom);
+	if (id == 0) return 0;
+	else return (Geometry*)dGeomGetData(id); 
+}
+
+//------------------------------------------------------------------------------------------------
+TransformGeometry::~TransformGeometry()
+{
+}
+
+
+//------------------------------------------------------------------------------------------------
+TriangleMeshGeometry::TriangleMeshGeometry(const Ogre::Vector3* vertices,
+                                           unsigned int vertex_count,
+                                           const unsigned int* indices,
+                                           unsigned int index_count,
+                                           World *world, Space* space) : 
+    Geometry(world, space),
+    _vertex_count (vertex_count),
+    _index_count (index_count)
+{
+	_vertex_count = vertex_count;
+	_index_count = index_count;
+	_vertices = new dVector3[vertex_count];
+	_indices = new unsigned int[index_count];
+
+	for(unsigned int i = 0;i < vertex_count;i++)
+	{
+		_vertices[i][0] = (dReal)vertices[i].x;
+		_vertices[i][1] = (dReal)vertices[i].y;
+		_vertices[i][2] = (dReal)vertices[i].z;
+	}
+
+	memcpy(_indices,indices,sizeof(unsigned int) * index_count);
+
+	_data = dGeomTriMeshDataCreate(); 
+	dGeomTriMeshDataBuildSimple(_data,(const dReal*)_vertices, (int)vertex_count, (int*)_indices, (int)index_count); 
+	_geom = dCreateTriMesh(getSpaceID(space),_data,0,0,0);
+	registerGeometry();
+
+	_collision_listener = 0;
+}
+
+//------------------------------------------------------------------------------------------------
+Vector3 TriangleMeshGeometry::getPoint(unsigned int index,const Ogre::Vector3& uv)
+{
+	dVector3 out;
+	dGeomTriMeshGetPoint(_geom, (int) index, (dReal)uv.x, (dReal)uv.y, out); 
+	return Ogre::Vector3((Real)out[0],(Real)out[1],(Real)out[2]);
+}
+
+//------------------------------------------------------------------------------------------------
+TriangleMeshTriangle TriangleMeshGeometry::getTriangle(int index)
+{
+	dVector3 v0,v1,v2;
+	dGeomTriMeshGetTriangle(_geom,(int)index, &v0, &v1, &v2); 
+	
+	TriangleMeshTriangle tri;
+
+	tri.v0.x = v0[0]; tri.v0.y = v0[1]; tri.v0.z = v0[2];
+	tri.v1.x = v1[0]; tri.v1.y = v1[1]; tri.v1.z = v1[2];
+	tri.v2.x = v2[0]; tri.v2.y = v2[1]; tri.v2.z = v2[2];
+	
+	return tri;
+}
+
+//------------------------------------------------------------------------------------------------
+void TriangleMeshGeometry::clearTemporalCoherenceCache()
+{
+	dGeomTriMeshClearTCCache(_geom); 
+}
+
+//------------------------------------------------------------------------------------------------
+void TriangleMeshGeometry::enableTemporalCoherence(Geometry::Class geometry_class, bool enable)
+{
+	assert((geometry_class == Geometry::Class_Sphere)||(geometry_class == Geometry::Class_Box));
+	dGeomTriMeshEnableTC(_geom,(int)geometry_class,(enable)?1:0); 
+}
+
+//------------------------------------------------------------------------------------------------
+bool TriangleMeshGeometry::isTemporalCoherenceEnabled(Geometry::Class geometry_class)
+{
+	return ((dGeomTriMeshIsTCEnabled(_geom,(int)geometry_class))?true:false);
+}
+
+//------------------------------------------------------------------------------------------------
+int TriangleMeshGeometry::_collisionCallback(dGeomID mesh,dGeomID object,int triangle)
+{
+	TriangleMeshGeometry* trimesh = (TriangleMeshGeometry*)dGeomGetData(mesh);
+	if (trimesh->_collision_listener)
+	{
+		Geometry* geometry = (object)?((Geometry*)dGeomGetData(object)):0;
+		return ((trimesh->_collision_listener->collide(trimesh,geometry,triangle))?1:0);
+	}
+	return 1;
+}
+
+//------------------------------------------------------------------------------------------------
+void TriangleMeshGeometry::setCollisionListener(TriangleMeshCollisionListener* collision_listener)
+{
+	_collision_listener = collision_listener;
+	dGeomTriMeshSetCallback(_geom,(_collision_listener)?TriangleMeshGeometry::_collisionCallback:0); 
+}
+
+//------------------------------------------------------------------------------------------------
+void TriangleMeshGeometry::_intersectionCallback(dGeomID mesh,dGeomID object,const int* triangles,int triangle_count)
+{
+	TriangleMeshGeometry* trimesh = (TriangleMeshGeometry*)dGeomGetData(mesh);
+	if (trimesh->_intersection_listener)
+	{
+		Geometry* geometry = (object)?((Geometry*)dGeomGetData(object)):0;
+		trimesh->_intersection_listener->intersect(trimesh,geometry,triangles,triangle_count);
+	}
+}
+
+//------------------------------------------------------------------------------------------------
+void TriangleMeshGeometry::setIntersectionListener(TriangleMeshIntersectionListener* intersection_listener)
+{
+	_intersection_listener = intersection_listener;
+	dGeomTriMeshSetArrayCallback(_geom,(_intersection_listener)?TriangleMeshGeometry::_intersectionCallback:0); 
+}
+
+//------------------------------------------------------------------------------------------------
+int TriangleMeshGeometry::_rayCallback(dGeomID mesh,dGeomID ray,int triangle,dReal u,dReal v)
+{
+	TriangleMeshGeometry* trimesh = (TriangleMeshGeometry*)dGeomGetData(mesh);
+	if (trimesh->_ray_listener)
+	{
+		RayGeometry* ray_geometry = (ray)?((RayGeometry*)dGeomGetData(ray)):0;
+		return ((trimesh->_ray_listener->collide(trimesh,ray_geometry,triangle,Vector3((Real)u,(Real)v,0.0)))?1:0);
+	}
+	return 1;
+}
+
+//------------------------------------------------------------------------------------------------
+void TriangleMeshGeometry::setRayListener(TriangleMeshRayListener* ray_listener)
+{
+	_ray_listener = ray_listener;
+	dGeomTriMeshSetRayCallback(_geom,(_ray_listener)?TriangleMeshGeometry::_rayCallback:0); 
+}
+
+//------------------------------------------------------------------------------------------------
+void TriangleMeshGeometry::createDebugObject()
+{
+	_debug_obj = new TriangleMeshDebugObject((_index_count / 3) * 6);
+	TriangleMeshDebugObject* obj = static_cast<TriangleMeshDebugObject*>(_debug_obj);
+
+	obj->beginDefinition();
+	for(unsigned int i = 0,j = 0;i < _index_count;i+=3,j+=6)
+	{
+		obj->setVertex(j,Vector3((Real)_vertices[_indices[i]][0],(Real)_vertices[_indices[i]][1],(Real)_vertices[_indices[i]][2]));
+		obj->setVertex(j+1,Vector3((Real)_vertices[_indices[i+1]][0],(Real)_vertices[_indices[i+1]][1],(Real)_vertices[_indices[i+1]][2]));
+
+		obj->setVertex(j+2,Vector3((Real)_vertices[_indices[i+1]][0],(Real)_vertices[_indices[i+1]][1],(Real)_vertices[_indices[i+1]][2]));
+		obj->setVertex(j+3,Vector3((Real)_vertices[_indices[i+2]][0],(Real)_vertices[_indices[i+2]][1],(Real)_vertices[_indices[i+2]][2]));
+
+		obj->setVertex(j+4,Vector3((Real)_vertices[_indices[i+2]][0],(Real)_vertices[_indices[i+2]][1],(Real)_vertices[_indices[i+2]][2]));
+		obj->setVertex(j+5,Vector3((Real)_vertices[_indices[i]][0],(Real)_vertices[_indices[i]][1],(Real)_vertices[_indices[i]][2]));
+	}
+	obj->endDefinition();
+
+	Geometry::createDebugObject();
+}
+
+//------------------------------------------------------------------------------------------------
+TriangleMeshGeometry::~TriangleMeshGeometry()
+{
+	dGeomTriMeshDataDestroy(_data); 
+	delete[] _vertices;
+	delete[] _indices;
+}
+
+
+//------------------------------------------------------------------------------------------------
+ConvexGeometry::ConvexGeometry(const Ogre::Vector3* vertices,
+							   unsigned int vertex_count,
+							   const unsigned int* indices,
+							   unsigned int index_count,
+                               World *world, Space* space) : 
+    Geometry(world, space),
+    _vertex_count (vertex_count),
+    _index_count (index_count)
+{
+	_vertices = new dReal[vertex_count*3];
+	_indices = new unsigned int[index_count];
+
+	for(unsigned int i = 0;i < vertex_count;i++)
+	{
+		_vertices[i*3 + 0] = (dReal)vertices[i].x;
+		_vertices[i*3 + 1] = (dReal)vertices[i].y;
+		_vertices[i*3 + 2] = (dReal)vertices[i].z;
+	}
+
+	memcpy(_indices,indices,sizeof(unsigned int) * index_count);
+
+
+	_geom = dCreateConvex (getSpaceID(space),
+		0,//dReal *_planes,
+		0,//unsigned int _planecount,
+		_vertices,
+		vertex_count,
+		0);//unsigned int *_polygons)
+
+	// 	dGeomSetConvex (dGeomID g,
+	// 		dReal *_planes,
+	// 		unsigned int _count,
+	// 		dReal *_points,
+	// 		unsigned int _pointcount,unsigned int *_polygons);
+
+	registerGeometry();
+}
+//------------------------------------------------------------------------------------------------
+void ConvexGeometry::createDebugObject()
+{
+	_debug_obj = new TriangleMeshDebugObject((_index_count / 3) * 6);
+	TriangleMeshDebugObject* obj = static_cast<TriangleMeshDebugObject*>(_debug_obj);
+
+	obj->beginDefinition();
+	for(unsigned int i = 0,j = 0;i < _index_count;i+=3,j+=6)
+	{
+		obj->setVertex(j,Vector3((Real)_vertices[_indices[i]*3 + 0],(Real)_vertices[_indices[i]*3 + 1],(Real)_vertices[_indices[i]*3 + 2]));
+		obj->setVertex(j+1,Vector3((Real)_vertices[_indices[i+1]*3 + 0],(Real)_vertices[_indices[i+1]*3 + 1],(Real)_vertices[_indices[i+1]*3 + 2]));
+
+		obj->setVertex(j+2,Vector3((Real)_vertices[_indices[i+1]*3 + 0],(Real)_vertices[_indices[i+1]*3 + 1],(Real)_vertices[_indices[i+1]*3 + 2]));
+		obj->setVertex(j+3,Vector3((Real)_vertices[_indices[i+2]*3 + 0],(Real)_vertices[_indices[i+2]*3 + 1],(Real)_vertices[_indices[i+2]*3 + 2]));
+
+		obj->setVertex(j+4,Vector3((Real)_vertices[_indices[i+2]*3 + 0],(Real)_vertices[_indices[i+2]*3 + 1],(Real)_vertices[_indices[i+2]*3 + 2]));
+		obj->setVertex(j+5,Vector3((Real)_vertices[_indices[i]*3 + 0],(Real)_vertices[_indices[i]*3 + 1],(Real)_vertices[_indices[i]*3 + 2]));
+	}
+	obj->endDefinition();
+
+	Geometry::createDebugObject();
+}
+//------------------------------------------------------------------------------------------------
+ConvexGeometry::~ConvexGeometry()
+{
+	delete[] _vertices;
+	delete[] _indices;
+}
+
+//------------------------------------------------------------------------------------------------
+TerrainGeometry::TerrainGeometry(World *world, Space* space,
+								const Ogre::Vector3 &scale,
+                                int nodes_per_sideX,
+                                int nodes_per_sideY,
+                                Ogre::Real worldSizeX,
+                                Ogre::Real worldSizeZ,
+								bool centered,
+                                Ogre::Real thickness) :
+                        Geometry(world, space),
+                        _sample_width(scale.x),
+                        _sample_height(scale.z),
+                        _max_height (scale.y),
+                        _halfWorldSizeX(worldSizeX * 0.5),
+                        _halfWorldSizeZ(worldSizeZ * 0.5),
+                        _centered(centered)
+{
+	dHeightfieldDataID heightid = dGeomHeightfieldDataCreate();
+	dGeomHeightfieldDataBuildCallback(	heightid, //getSpaceID(space), 
+										this, // pUserData ?
+										TerrainGeometry::_heightCallback, 
+										(dReal) (worldSizeX), //X
+										(dReal) (worldSizeZ), //Z
+										nodes_per_sideX, // w // Vertex count along edge >= 2
+										nodes_per_sideY, // h // Vertex count along edge >= 2
+										REAL( 1.0 ),     //scale
+										REAL( 0.0 ),	// vOffset
+										thickness,	// vThickness
+										 0); // nWrapMode
+
+
+	// Give some very bounds which, while conservative,
+	// makes AABB computation more accurate than +/-INF.
+	dGeomHeightfieldDataSetBounds( heightid, REAL( 0.0 ),  _max_height );
+	_geom = dCreateHeightfield( getSpaceID(space), heightid, 1 );
+
+	_listener = 0;
+	_ray = Ogre::Ray (Ogre::Vector3::ZERO, Ogre::Vector3::NEGATIVE_UNIT_Y);
+	_ray_query = _world->getSceneManager()->createRayQuery(_ray);
+
+	_ray_query->setQueryTypeMask(Ogre::SceneManager::WORLD_GEOMETRY_TYPE_MASK );
+	_ray_query->setWorldFragmentType(Ogre::SceneQuery::WFT_SINGLE_INTERSECTION); 
+
+	registerGeometry();
+
+	if (_centered)
+	{
+		// PLSM2 is centered by default.	
+        //setPosition (Ogre::Vector3::ZERO);
+        ;
+	}
+	else
+	{
+        // TSM is not centered by default.	
+		setPosition (Ogre::Vector3(_halfWorldSizeX, 
+                                    0, 
+                                    _halfWorldSizeZ));
+	}
+	setOrientation(Ogre::Quaternion::ZERO);
+}
+
+//------------------------------------------------------------------------------------------------
+dReal TerrainGeometry::_heightCallback(void* data,int x,int z)
+{
+	TerrainGeometry * const terrain = (TerrainGeometry*)data;    
+	if (terrain->_listener)
+	{
+		return static_cast <dReal> (terrain->_listener->heightAt(Vector3((Ogre::Real)x,
+                                                                terrain->_max_height,
+                                                                (Ogre::Real)z)));
+	}
+    else
+    {
+        return static_cast <dReal> (terrain->getHeightAt(Vector3((Ogre::Real)x, 
+                                                        terrain->_max_height, 
+                                                        (Ogre::Real)z)));
+    }
+}
+
+//------------------------------------------------------------------------------------------------
+Ogre::Real TerrainGeometry::getPointDepth(const Ogre::Vector3& point)
+{
+	//return (Real)dGeomTerrainCallbackPointDepth(_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z); 
+	//return (Real) dGeomHeightfieldPointDepth (_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z);
+	//dGetDepthFn(_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z);
+	return (Real) 0.0;
+}
+
+//------------------------------------------------------------------------------------------------
+void TerrainGeometry::setHeightListener(TerrainGeometryHeightListener* listener)
+{
+	_listener = listener;
+}
+//------------------------------------------------------------------------------------------------
+bool TerrainGeometry::queryResult(Ogre::MovableObject *obj, Ogre::Real distance)
+{
+	return false;
+}
+
+//------------------------------------------------------------------------------------------------
+bool TerrainGeometry::queryResult(Ogre::SceneQuery::WorldFragment *fragment,Ogre::Real distance)
+{
+	_distance_to_terrain = distance;
+	return false;
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& TerrainGeometry::getPosition()
+{
+	return Ogre::Vector3::ZERO;
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Quaternion& TerrainGeometry::getOrientation()
+{
+	return Ogre::Quaternion::ZERO;
+}
+
+//------------------------------------------------------------------------------------------------
+TerrainGeometry::~TerrainGeometry()
+{
+	_world->getSceneManager()->destroyQuery(_ray_query);
+}
+
+//------------------------------------------------------------------------------------------------
+std::list<Ogre::Plane>* PlaneBoundedRegionGeometry::_planeCallback(void* data,int x,int z)
+{
+    PlaneBoundedRegionGeometry* terrain = (PlaneBoundedRegionGeometry*)data;
+
+    if (terrain->_listener)
+    {
+        return terrain->_listener->planesAt(Vector3((Ogre::Real)x,
+            terrain->_max_height,
+            (Ogre::Real)z));
+    }
+    else
+    {
+        return  terrain->planesAt(Vector3((Ogre::Real)x, 
+                terrain->_max_height, 
+                (Ogre::Real)z));
+    }
+    return 0;
+}
+//------------------------------------------------------------------------------------------------
+PlaneBoundedRegionGeometry::PlaneBoundedRegionGeometry (World *world, Space* space,
+                                                        const Ogre::AxisAlignedBox &Size) : 
+    Geometry(world,space)
+{
+
+    _ray = Ogre::Ray (Ogre::Vector3::ZERO, Ogre::Vector3::NEGATIVE_UNIT_Y);
+    _ray_query = _world->getSceneManager()->createRayQuery(_ray);
+
+    _ray_query->setQueryTypeMask(Ogre::SceneManager::WORLD_GEOMETRY_TYPE_MASK );
+    _ray_query->setWorldFragmentType(Ogre::SceneQuery::WFT_SINGLE_INTERSECTION); 
+
+}
+
+//------------------------------------------------------------------------------------------------
+Ogre::Real PlaneBoundedRegionGeometry::getPointDepth(const Ogre::Vector3& point)
+{
+    //dGetDepthFn(_geom,(dReal)point.x,(dReal)point.y,(dReal)point.z);
+    return (Real) 0.0;
+}
+
+//------------------------------------------------------------------------------------------------
+void PlaneBoundedRegionGeometry::setPlaneListener(PlaneBoundedRegionGeometryPlaneListener* listener)
+{
+    _listener = listener;
+}
+//------------------------------------------------------------------------------------------------
+bool PlaneBoundedRegionGeometry::queryResult(Ogre::MovableObject *obj, Ogre::Real distance)
+{
+    return false;
+}
+
+//------------------------------------------------------------------------------------------------
+bool PlaneBoundedRegionGeometry::queryResult(Ogre::SceneQuery::WorldFragment *fragment,Ogre::Real distance)
+{
+    _distance_to_terrain = distance;
+    return false;
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& PlaneBoundedRegionGeometry::getPosition()
+{
+    return Ogre::Vector3::ZERO;
+}
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Quaternion& PlaneBoundedRegionGeometry::getOrientation()
+{
+    return Ogre::Quaternion::ZERO;
+}
+
+//------------------------------------------------------------------------------------------------
+PlaneBoundedRegionGeometry::~PlaneBoundedRegionGeometry()
+{
+    _world->getSceneManager()->destroyQuery(_ray_query);
+}
+
+
Index: /ogreode/src/OgreOdeJoint.cpp
===================================================================
--- /ogreode/src/OgreOdeJoint.cpp	(revision 21)
+++ /ogreode/src/OgreOdeJoint.cpp	(revision 21)
@@ -0,0 +1,810 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeGeometry.h"
+#include "OgreOdeWorld.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeJoint.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+//------------------------------------------------------------------------------------------------
+JointGroup::JointGroup(World *world):
+_world(world)
+{
+	_joint_group = dJointGroupCreate(0); 
+	_world->getJointGroupList().registerItem(this);
+}
+//------------------------------------------------------------------------------------------------
+dJointGroupID JointGroup::getJointGroupID() const
+{
+	return _joint_group;
+}
+
+unsigned long JointGroup::getID()
+{
+	return (long unsigned long)_joint_group;
+}
+
+void JointGroup::empty()
+{
+	dJointGroupEmpty(_joint_group); 
+}
+
+JointGroup::~JointGroup()
+{
+	_world->getJointGroupList().unregisterItem((long unsigned int)_joint_group);
+	dJointGroupDestroy(_joint_group); 
+}
+
+Joint::Joint(World *world, const JointGroup* group):
+    _world(world)
+{
+}
+
+void Joint::registerJoint()
+{
+	_world->getJointList().registerItem(this);
+}
+
+void Joint::setAnchor(const Ogre::Vector3& position)
+{
+}
+
+void Joint::addTorque(Real torque,Real torque2,Real torque3)
+{
+}
+
+void Joint::addForce(Real force,Real force2,Real force3)
+{
+}
+
+const Ogre::Vector3& Joint::getAnchor()
+{
+	return Ogre::Vector3::ZERO;
+}
+
+const Ogre::Vector3& Joint::getAnchorError()
+{
+	return Ogre::Vector3::ZERO;
+}
+
+void Joint::setAxis(const Ogre::Vector3& axis)
+{
+}
+
+const Ogre::Vector3& Joint::getAxis()
+{
+	return Ogre::Vector3::ZERO;
+}
+
+void Joint::setAdditionalAxis(const Ogre::Vector3& axis)
+{
+}
+
+const Ogre::Vector3& Joint::getAdditionalAxis()
+{
+	return Ogre::Vector3::ZERO;
+}
+
+Real Joint::getAngle()
+{
+	return 0.0;
+}
+
+Real Joint::getAngleRate()
+{
+	return 0.0;
+}
+
+Real Joint::getPosition()
+{
+	return 0.0;
+}
+
+Real Joint::getPositionRate()
+{
+	return 0.0;
+}
+
+unsigned long Joint::getID()
+{
+	return (unsigned long)_joint;
+}
+
+Joint::~Joint()
+{
+	_world->getJointList().unregisterItem((unsigned long)_joint);
+	dJointDestroy(_joint); 
+}
+
+dWorldID Joint::getWorldID()
+{
+	return _world->getWorldID();
+}
+
+dJointGroupID Joint::getJointGroupID(const JointGroup* group) const
+{
+	return ((group)?group->getJointGroupID():0);
+}
+
+dJointID Joint::getJointID()
+{
+	return _joint;
+}
+
+Joint::Type Joint::getType()
+{
+	return (Joint::Type)(dJointGetType(_joint));
+}
+
+Body* Joint::getFirstBody()
+{
+	dBodyID b = dJointGetBody(_joint, 0); 
+	return ((Body*)dBodyGetData(b));
+}
+
+Body* Joint::getSecondBody()
+{
+	dBodyID b = dJointGetBody(_joint,1);
+	return b ? ((Body*)dBodyGetData(b)) : 0; 
+}
+
+bool Joint::areConnected(const Body* body_a,const Body* body_b)
+{
+	return (dAreConnected(body_a->getBodyID(),body_b->getBodyID()))?true:false; 
+}
+
+bool Joint::areConnectedExcluding(const Body* body_a,const Body* body_b,Joint::Type joint_type)
+{
+	return (dAreConnectedExcluding(body_a->getBodyID(),body_b->getBodyID(),(int)joint_type))?true:false; 
+}
+
+void Joint::enableFeedback()
+{
+	dJointSetFeedback(_joint,&_feedback); 
+}
+
+void Joint::disableFeedback()
+{
+	dJointSetFeedback(_joint,0); 
+}
+
+void Joint::detach()
+{
+	dJointAttach(_joint,0,0); 
+}
+
+void Joint::attach(const Body* body)
+{
+	dJointAttach(_joint,body->getBodyID(),0); 
+}
+
+void Joint::attach(const Body* body_a,const Body* body_b)
+{
+	dJointAttach(_joint,body_a->getBodyID(),body_b->getBodyID()); 
+}
+
+const Ogre::Vector3& Joint::getFirstForce()
+{
+	assert(dJointGetFeedback(_joint) == &_feedback);
+
+	_first_force.x = _feedback.f1[0];
+	_first_force.y = _feedback.f1[1];
+	_first_force.z = _feedback.f1[2];
+	return _first_force;
+}
+
+const Ogre::Vector3& Joint::getFirstTorque()
+{
+	assert(dJointGetFeedback(_joint) == &_feedback);
+
+	_first_torque.x = _feedback.t1[0];
+	_first_torque.y = _feedback.t1[1];
+	_first_torque.z = _feedback.t1[2];
+	return _first_torque;
+}
+
+const Ogre::Vector3& Joint::getSecondForce()
+{
+	assert(dJointGetFeedback(_joint) == &_feedback);
+
+	_second_force.x = _feedback.f2[0];
+	_second_force.y = _feedback.f2[1];
+	_second_force.z = _feedback.f2[2];
+	return _second_force;
+}
+
+const Ogre::Vector3& Joint::getSecondTorque()
+{
+	assert(dJointGetFeedback(_joint) == &_feedback);
+
+	_second_torque.x = _feedback.t2[0];
+	_second_torque.y = _feedback.t2[1];
+	_second_torque.z = _feedback.t2[2];
+	return _second_torque;
+}
+
+void Joint::setParameter(Joint::Parameter parameter,Real value,int axis)
+{
+}
+
+Real Joint::getParameter(Joint::Parameter parameter,int axis)
+{
+	return 0.0;
+}
+
+BallJoint::BallJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreateBall(getWorldID(),getJointGroupID(group));
+	registerJoint();
+}
+
+void BallJoint::setAnchor(const Ogre::Vector3& position)
+{
+	dJointSetBallAnchor(_joint,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+}
+
+const Ogre::Vector3& BallJoint::getAnchor()
+{
+	dVector3 result;
+	dJointGetBallAnchor(_joint,result); 
+	_anchor.x = (Real)result[0];
+	_anchor.y = (Real)result[1];
+	_anchor.z = (Real)result[2];
+	return _anchor;
+}
+
+const Ogre::Vector3& BallJoint::getAnchorError()
+{
+	dVector3 result1,result2;
+	dJointGetBallAnchor(_joint,result1); 
+	dJointGetBallAnchor2(_joint,result2); 
+	_anchor_error.x = (Real)(result1[0] - result2[2]);
+	_anchor_error.y = (Real)(result1[1] - result2[2]);
+	_anchor_error.z = (Real)(result1[2] - result2[2]);
+	return _anchor_error;
+}
+
+void BallJoint::setParameter(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetBallParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value);  
+}
+
+Real BallJoint::getParameter(Joint::Parameter parameter,int axis)
+{
+	return (Real)dJointGetBallParam(_joint,((int)parameter) + dParamGroup * (axis - 1));
+}
+
+
+BallJoint::~BallJoint()
+{
+}
+
+HingeJoint::HingeJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreateHinge(getWorldID(),getJointGroupID(group)); 
+	registerJoint();
+}
+
+void HingeJoint::setAnchor(const Ogre::Vector3& position)
+{
+	dJointSetHingeAnchor(_joint,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+}
+
+void HingeJoint::addTorque(Real torque,Real torque2,Real torque3)
+{
+	dJointAddHingeTorque(_joint,(dReal)torque);
+}
+
+const Ogre::Vector3& HingeJoint::getAnchor()
+{
+	dVector3 result;
+	dJointGetHingeAnchor(_joint,result); 
+	_anchor.x = (Real)result[0];
+	_anchor.y = (Real)result[1];
+	_anchor.z = (Real)result[2];
+	return _anchor;
+}
+
+const Ogre::Vector3& HingeJoint::getAnchorError()
+{
+	dVector3 result1,result2;
+	dJointGetHingeAnchor(_joint,result1); 
+	dJointGetHingeAnchor2(_joint,result2); 
+	_anchor_error.x = (Real)(result1[0] - result2[2]);
+	_anchor_error.y = (Real)(result1[1] - result2[2]);
+	_anchor_error.z = (Real)(result1[2] - result2[2]);
+	return _anchor_error;
+}
+
+void HingeJoint::setAxis(const Ogre::Vector3& axis)
+{
+	dJointSetHingeAxis(_joint,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z);
+}
+
+const Ogre::Vector3& HingeJoint::getAxis()
+{
+	dVector3 result;
+	dJointGetHingeAxis(_joint,result); 
+	_axis.x = (Real)result[0];
+	_axis.y = (Real)result[1];
+	_axis.z = (Real)result[2];
+	return _axis;
+}
+
+Real HingeJoint::getAngle()
+{
+	return (Real)dJointGetHingeAngle(_joint); 
+}
+
+Real HingeJoint::getAngleRate()
+{
+	return (Real)dJointGetHingeAngleRate(_joint); 
+}
+
+void HingeJoint::setParameter(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetHingeParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value); 
+}
+
+Real HingeJoint::getParameter(Joint::Parameter parameter,int axis)
+{
+	return (Real)dJointGetHingeParam(_joint,((int)parameter) + dParamGroup * (axis - 1));
+}
+
+HingeJoint::~HingeJoint()
+{
+}
+
+SliderJoint::SliderJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreateSlider(getWorldID(),getJointGroupID(group)); 
+	registerJoint();
+}
+
+void SliderJoint::setAxis(const Ogre::Vector3& axis)
+{
+	dJointSetSliderAxis(_joint,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z);
+}
+
+const Ogre::Vector3& SliderJoint::getAxis()
+{
+	dVector3 result;
+	dJointGetSliderAxis(_joint,result); 
+	_axis.x = (Real)result[0];
+	_axis.y = (Real)result[1];
+	_axis.z = (Real)result[2];
+	return _axis;
+}
+
+void SliderJoint::addForce(Real force,Real force2,Real force3)
+{
+	dJointAddSliderForce(_joint,(dReal)force);
+}
+
+Real SliderJoint::getPosition()
+{
+	return (Real)dJointGetSliderPosition(_joint); 
+}
+
+Real SliderJoint::getPositionRate()
+{
+	return (Real)dJointGetSliderPositionRate(_joint); 
+}
+
+void SliderJoint::setParameter(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetSliderParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value); 
+}
+
+Real SliderJoint::getParameter(Joint::Parameter parameter,int axis)
+{
+	return (Real)dJointGetSliderParam(_joint,((int)parameter) + dParamGroup * (axis - 1));
+}
+
+SliderJoint::~SliderJoint()
+{
+}
+
+UniversalJoint::UniversalJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreateUniversal(getWorldID(),getJointGroupID(group)); 
+	registerJoint();
+}
+
+void UniversalJoint::setAnchor(const Ogre::Vector3& position)
+{
+	dJointSetUniversalAnchor(_joint,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+}
+
+void UniversalJoint::addTorque(Real torque,Real torque2,Real torque3)
+{
+	dJointAddUniversalTorques(_joint,(dReal)torque,(dReal)torque2);
+}
+
+const Ogre::Vector3& UniversalJoint::getAnchor()
+{
+	dVector3 result;
+	dJointGetUniversalAnchor(_joint,result); 
+	_anchor.x = (Real)result[0];
+	_anchor.y = (Real)result[1];
+	_anchor.z = (Real)result[2];
+	return _anchor;
+}
+
+const Ogre::Vector3& UniversalJoint::getAnchorError()
+{
+	dVector3 result1,result2;
+	dJointGetUniversalAnchor(_joint,result1); 
+	dJointGetUniversalAnchor2(_joint,result2); 
+	_anchor_error.x = (Real)(result1[0] - result2[2]);
+	_anchor_error.y = (Real)(result1[1] - result2[2]);
+	_anchor_error.z = (Real)(result1[2] - result2[2]);
+	return _anchor_error;
+}
+
+void UniversalJoint::setAxis(const Ogre::Vector3& axis)
+{
+	dJointSetUniversalAxis1(_joint,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z);
+}
+
+const Ogre::Vector3& UniversalJoint::getAxis()
+{
+	dVector3 result;
+	dJointGetUniversalAxis1(_joint,result); 
+	_axis.x = (Real)result[0];
+	_axis.y = (Real)result[1];
+	_axis.z = (Real)result[2];
+	return _axis;
+}
+
+void UniversalJoint::setAdditionalAxis(const Ogre::Vector3& axis)
+{
+	dJointSetUniversalAxis2(_joint,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z);
+}
+
+const Ogre::Vector3& UniversalJoint::getAdditionalAxis()
+{
+	dVector3 result;
+	dJointGetUniversalAxis2(_joint,result); 
+	_additional_axis.x = (Real)result[0];
+	_additional_axis.y = (Real)result[1];
+	_additional_axis.z = (Real)result[2];
+	return _additional_axis;
+}
+
+void UniversalJoint::setParameter(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetUniversalParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value); 
+}
+
+Real UniversalJoint::getParameter(Joint::Parameter parameter,int axis)
+{
+	return (Real)dJointGetUniversalParam(_joint,((int)parameter) + dParamGroup * (axis - 1));
+}
+
+UniversalJoint::~UniversalJoint()
+{
+}
+
+FixedJoint::FixedJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreateFixed(getWorldID(),getJointGroupID(group)); 
+	registerJoint();
+}
+
+void FixedJoint::attach(const Body* body)
+{
+	Joint::attach(body);
+	dJointSetFixed(_joint); 
+}
+
+void FixedJoint::attach(const Body* body_a,const Body* body_b)
+{
+	Joint::attach(body_a,body_b);
+	dJointSetFixed(_joint); 
+}
+
+FixedJoint::~FixedJoint()
+{
+}
+
+SuspensionJoint::SuspensionJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreateHinge2(getWorldID(),getJointGroupID(group)); 
+	registerJoint();
+}
+
+void SuspensionJoint::setAnchor(const Ogre::Vector3& position)
+{
+	dJointSetHinge2Anchor(_joint,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+}
+
+
+void SuspensionJoint::addTorque(Real torque,Real torque2,Real torque3)
+{
+	dJointAddHinge2Torques(_joint,(dReal)torque,(dReal)torque2);
+}
+
+const Ogre::Vector3& SuspensionJoint::getAnchor()
+{
+	dVector3 result;
+	dJointGetHinge2Anchor(_joint,result); 
+	_anchor.x = (Real)result[0];
+	_anchor.y = (Real)result[1];
+	_anchor.z = (Real)result[2];
+	return _anchor;
+}
+
+const Ogre::Vector3& SuspensionJoint::getAdditionalAnchor()
+{
+	dVector3 result;
+	dJointGetHinge2Anchor2(_joint,result);
+	_anchor2.x = (Real)result[0];
+	_anchor2.y = (Real)result[1];
+	_anchor2.z = (Real)result[2];
+	return _anchor2;
+}
+
+const Ogre::Vector3& SuspensionJoint::getAnchorError()
+{
+	dVector3 result1,result2;
+	dJointGetHinge2Anchor(_joint,result1); 
+	dJointGetHinge2Anchor2(_joint,result2); 
+	_anchor_error.x = (Real)(result1[0] - result2[2]);
+	_anchor_error.y = (Real)(result1[1] - result2[2]);
+	_anchor_error.z = (Real)(result1[2] - result2[2]);
+	return _anchor_error;
+}
+
+void SuspensionJoint::setAxis(const Ogre::Vector3& axis)
+{
+	dJointSetHinge2Axis1(_joint,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z);
+}
+
+const Ogre::Vector3& SuspensionJoint::getAxis()
+{
+	dVector3 result;
+	dJointGetHinge2Axis1(_joint,result); 
+	_axis.x = (Real)result[0];
+	_axis.y = (Real)result[1];
+	_axis.z = (Real)result[2];
+	return _axis;
+}
+
+void SuspensionJoint::setAdditionalAxis(const Ogre::Vector3& axis)
+{
+	dJointSetHinge2Axis2(_joint,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z);
+}
+
+const Ogre::Vector3& SuspensionJoint::getAdditionalAxis()
+{
+	dVector3 result;
+	dJointGetHinge2Axis2(_joint,result); 
+	_additional_axis.x = (Real)result[0];
+	_additional_axis.y = (Real)result[1];
+	_additional_axis.z = (Real)result[2];
+	return _additional_axis;
+}
+
+Real SuspensionJoint::getAngle()
+{
+	return (Real)dJointGetHinge2Angle1(_joint); 
+}
+
+Real SuspensionJoint::getAngleRate()
+{
+	return (Real)dJointGetHinge2Angle1Rate(_joint); 
+}
+
+Real SuspensionJoint::getPositionRate()
+{
+	return (Real)dJointGetHinge2Angle2Rate(_joint); 
+}
+
+void SuspensionJoint::setParameter(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetHinge2Param(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value); 
+}
+
+Real SuspensionJoint::getParameter(Joint::Parameter parameter,int axis)
+{
+	return (Real)dJointGetHinge2Param(_joint,((int)parameter) + dParamGroup * (axis - 1));
+}
+
+SuspensionJoint::~SuspensionJoint()
+{
+}
+
+AngularMotorJoint::AngularMotorJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreateAMotor(getWorldID(),getJointGroupID(group)); 
+	registerJoint();
+}
+
+void AngularMotorJoint::setMode(AngularMotorJoint::Mode mode)
+{
+	dJointSetAMotorMode(_joint,(int)mode); 
+}
+
+AngularMotorJoint::Mode AngularMotorJoint::getMode()
+{
+	return (AngularMotorJoint::Mode)dJointGetAMotorMode(_joint); 
+}
+
+void AngularMotorJoint::addTorque(Real torque,Real torque2,Real torque3)
+{
+	dJointAddAMotorTorques(_joint,(dReal)torque,(dReal)torque2,(dReal)torque3);
+}
+
+void AngularMotorJoint::setAxisCount(int axes)
+{
+	assert((axes >= 0) && (axes <= 3));
+	dJointSetAMotorNumAxes(_joint,axes); 
+}
+
+int AngularMotorJoint::getAxisCount()
+{
+	return dJointGetAMotorNumAxes(_joint); 
+}
+
+void AngularMotorJoint::setAxis(int axis_number,AngularMotorJoint::RelativeOrientation orientation,const Ogre::Vector3& axis)
+{
+	dJointSetAMotorAxis(_joint,axis_number,(int)orientation,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z); 
+}
+
+const Ogre::Vector3& AngularMotorJoint::getAxis(int axis_number)
+{
+	dVector3 result;
+	dJointGetAMotorAxis(_joint,axis_number,result); 
+	_axis.x = (Real)result[0];
+	_axis.y = (Real)result[1];
+	_axis.z = (Real)result[2];
+	return _axis;
+}
+
+AngularMotorJoint::RelativeOrientation AngularMotorJoint::getAxisRelativeOrientation(int axis_number)
+{
+	return (AngularMotorJoint::RelativeOrientation)dJointGetAMotorAxisRel(_joint,axis_number); 
+}
+
+void AngularMotorJoint::setAngle(int axis,Real angle)
+{
+	dJointSetAMotorAngle(_joint,axis,(dReal)angle); 
+}
+
+Real AngularMotorJoint::getAngle(int axis)
+{
+	return (Real)dJointGetAMotorAngle(_joint,axis); 
+}
+
+Real AngularMotorJoint::getAngleRate(int axis)
+{
+	return (Real)dJointGetAMotorAngleRate(_joint,axis); 
+}
+
+void AngularMotorJoint::setParameter(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetAMotorParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value); 
+}
+
+Real AngularMotorJoint::getParameter(Joint::Parameter parameter,int axis)
+{
+	return (Real)dJointGetAMotorParam(_joint,((int)parameter) + dParamGroup * (axis - 1));
+}
+
+AngularMotorJoint::~AngularMotorJoint()
+{
+}
+
+PlanarJoint::PlanarJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreatePlane2D(getWorldID(),getJointGroupID(group)); 
+	registerJoint();
+}
+
+void PlanarJoint::setParameterX(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetPlane2DXParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value);
+}
+
+void PlanarJoint::setParameterY(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetPlane2DYParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value);
+}
+
+void PlanarJoint::setParameterAngle(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetPlane2DAngleParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value);
+}
+
+PlanarJoint::~PlanarJoint()
+{
+}
+
+
+
+SliderHingeJoint::SliderHingeJoint(World *world, const JointGroup* group) : Joint(world, group)
+{
+	_joint = dJointCreatePR(getWorldID(),getJointGroupID(group)); 
+	registerJoint();
+}
+
+SliderHingeJoint::~SliderHingeJoint()
+{
+}
+
+void SliderHingeJoint::setAnchor(const Ogre::Vector3& position)
+{
+	dJointSetPRAnchor(_joint,(dReal)position.x,(dReal)position.y,(dReal)position.z); 
+}
+
+const Ogre::Vector3& SliderHingeJoint::getAnchor()
+{
+	dVector3 result;
+	dJointGetPRAnchor(_joint,result); 
+	_anchor.x = (Real)result[0];
+	_anchor.y = (Real)result[1];
+	_anchor.z = (Real)result[2];
+	return _anchor;
+}
+
+
+Real SliderHingeJoint::getPosition()
+{
+	return (Real)dJointGetPRPosition(_joint); 
+}
+
+Real SliderHingeJoint::getPositionRate()
+{
+	return (Real)dJointGetPRPositionRate(_joint); 
+}
+
+void SliderHingeJoint::setAxis(const Ogre::Vector3& axis)
+{
+	dJointSetPRAxis1(_joint,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z);
+}
+
+const Ogre::Vector3& SliderHingeJoint::getAxis()
+{
+	dVector3 result;
+	dJointGetPRAxis1(_joint,result); 
+	_axis.x = (Real)result[0];
+	_axis.y = (Real)result[1];
+	_axis.z = (Real)result[2];
+	return _axis;
+}
+
+void SliderHingeJoint::setAdditionalAxis(const Ogre::Vector3& axis)
+{
+	dJointSetPRAxis2(_joint,(dReal)axis.x,(dReal)axis.y,(dReal)axis.z);
+}
+
+const Ogre::Vector3& SliderHingeJoint::getAdditionalAxis()
+{
+	dVector3 result;
+	dJointGetPRAxis2(_joint,result); 
+	_additional_axis.x = (Real)result[0];
+	_additional_axis.y = (Real)result[1];
+	_additional_axis.z = (Real)result[2];
+	return _additional_axis;
+}
+
+void SliderHingeJoint::setParameter(Joint::Parameter parameter,Real value,int axis)
+{
+	dJointSetPRParam(_joint,((int)parameter) + dParamGroup * (axis - 1),(dReal)value); 
+}
+
+Real SliderHingeJoint::getParameter(Joint::Parameter parameter,int axis)
+{
+	return (Real)dJointGetPRParam(_joint,((int)parameter) + dParamGroup * (axis - 1));
+}
+
+
+void SliderHingeJoint::addTorque(Real torque,Real torque2,Real torque3)
+{
+	dJointAddPRTorque(_joint, (dReal)torque);
+}
Index: /ogreode/src/OgreOdeMaintainedList.cpp
===================================================================
--- /ogreode/src/OgreOdeMaintainedList.cpp	(revision 21)
+++ /ogreode/src/OgreOdeMaintainedList.cpp	(revision 21)
@@ -0,0 +1,4 @@
+#include "OgreOdeMaintainedList.h"
+
+using namespace OgreOde;
+
Index: /ogreode/src/OgreOdeMass.cpp
===================================================================
--- /ogreode/src/OgreOdeMass.cpp	(revision 21)
+++ /ogreode/src/OgreOdeMass.cpp	(revision 21)
@@ -0,0 +1,160 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdePreReqs.h"
+#include "OgreOdeMass.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+Mass::Mass()
+{
+	dMassSetZero(&_mass); 
+}
+
+Mass::Mass(Real mass,const Ogre::Vector3& center_of_gravity,const Matrix3& intertia_matrix)
+{
+	dMassSetParameters
+	(
+		&_mass,
+		(dReal)mass,
+		(dReal)center_of_gravity.x,(dReal)center_of_gravity.y,(dReal)center_of_gravity.z,
+		(dReal)intertia_matrix[0][0],(dReal)intertia_matrix[1][1],(dReal)intertia_matrix[2][2],
+		(dReal)intertia_matrix[0][1],(dReal)intertia_matrix[0][2],(dReal)intertia_matrix[1][2]
+	); 
+}
+
+Mass::~Mass()
+{
+}
+
+void Mass::adjust(Real mass)
+{
+	dMassAdjust(&_mass,(dReal)mass); 
+}
+
+void Mass::translate(const Ogre::Vector3& offset)
+{
+	dMassTranslate(&_mass,offset.x,offset.y,offset.z); 
+}
+
+void Mass::rotate(const Ogre::Quaternion& orientation)
+{
+	Matrix3 m;
+	orientation.ToRotationMatrix(m);
+	dMatrix3 r;
+
+	r[0] = m[0][0];
+	r[1] = m[0][1];
+	r[2] = m[0][2];
+
+	r[3] = m[1][0];
+	r[4] = m[1][1];
+	r[5] = m[1][2];
+
+	r[6] = m[2][0];
+	r[7] = m[2][1];
+	r[8] = m[2][2];
+
+	r[9] = 0.0;
+	r[10] = 0.0;
+	r[11] = 0.0;
+
+	dMassRotate(&_mass,r); 
+}
+
+Ogre::Matrix3 Mass::getLocalInertiaTensor() const
+{
+	return Ogre::Matrix3(   _mass.I[0], _mass.I[1], _mass.I[2],
+		_mass.I[4], _mass.I[5], _mass.I[6],
+		_mass.I[8], _mass.I[9], _mass.I[10]);
+}
+void Mass::add(const Mass& other)
+{
+	dMassAdd(&_mass,&(other._mass)); 
+}
+
+const dMass* Mass::getMassPtr() const
+{
+	return &_mass;
+}
+
+SphereMass::SphereMass():Mass()
+{
+}
+
+SphereMass::SphereMass(Real mass,Real radius)
+{
+	dMassSetSphereTotal(&_mass,(dReal)mass,(dReal)radius); 
+}
+
+SphereMass::~SphereMass()
+{
+}
+
+void SphereMass::setDensity(Real density,Real radius)
+{
+	dMassSetSphere(&_mass,(dReal)density,(dReal)radius); 
+}
+
+CapsuleMass::CapsuleMass():Mass()
+{
+}
+
+CapsuleMass::CapsuleMass(Real mass,Real radius,const Ogre::Vector3& direction,Real length)
+{
+	int dir = (direction == Ogre::Vector3::UNIT_X)?1:(direction == Ogre::Vector3::UNIT_Y)?2:(direction == Ogre::Vector3::UNIT_Z)?3:0;
+	assert(dir);
+	dMassSetCappedCylinderTotal(&_mass,(dReal)mass,dir,(dReal)radius,(dReal)length); 
+}
+
+CapsuleMass::~CapsuleMass()
+{
+}
+
+void CapsuleMass::setDensity(Real density,Real radius,const Ogre::Vector3& direction,Real length)
+{
+	int dir = (direction == Ogre::Vector3::UNIT_X)?1:(direction == Ogre::Vector3::UNIT_Y)?2:(direction == Ogre::Vector3::UNIT_Z)?3:0;
+	assert(dir && "Invalid direction specified for CapsuleMass");
+	dMassSetCappedCylinder(&_mass,(dReal)density,dir,(dReal)radius,(dReal)length); 
+}
+
+CylinderMass::CylinderMass():Mass()
+{
+}
+
+CylinderMass::CylinderMass(Real mass,const Ogre::Vector3& direction,Real radius,Real length)
+{
+	int dir = (direction == Ogre::Vector3::UNIT_X)?1:(direction == Ogre::Vector3::UNIT_Y)?2:(direction == Ogre::Vector3::UNIT_Z)?3:0;
+	assert(dir);
+	dMassSetCylinderTotal(&_mass,(dReal)mass,dir,(dReal)radius,(dReal)length); 
+}
+
+CylinderMass::~CylinderMass()
+{
+}
+
+void CylinderMass::setDensity(Real density,const Ogre::Vector3& direction,Real radius,Real length)
+{
+	int dir = (direction == Ogre::Vector3::UNIT_X)?1:(direction == Ogre::Vector3::UNIT_Y)?2:(direction == Ogre::Vector3::UNIT_Z)?3:0;
+	assert(dir);
+	dMassSetCylinder(&_mass,(dReal)density,dir,(dReal)radius,(dReal)length); 
+}
+
+BoxMass::BoxMass():Mass()
+{
+}
+
+BoxMass::BoxMass(Real mass,const Ogre::Vector3& size)
+{
+	dMassSetBoxTotal(&_mass,(dReal)mass,(dReal)size.x,(dReal)size.y,(dReal)size.z);
+}
+
+BoxMass::~BoxMass()
+{
+}
+
+void BoxMass::setDensity(Real density,const Ogre::Vector3& size)
+{
+	dMassSetBox(&_mass,(dReal)density,(dReal)size.x,(dReal)size.y,(dReal)size.z); 
+}
Index: /ogreode/src/OgreOdePrecompiledHeaders.cpp
===================================================================
--- /ogreode/src/OgreOdePrecompiledHeaders.cpp	(revision 21)
+++ /ogreode/src/OgreOdePrecompiledHeaders.cpp	(revision 21)
@@ -0,0 +1,1 @@
+#include "OgreOdePrecompiledHeaders.h"
Index: /ogreode/src/OgreOdeSpace.cpp
===================================================================
--- /ogreode/src/OgreOdeSpace.cpp	(revision 21)
+++ /ogreode/src/OgreOdeSpace.cpp	(revision 21)
@@ -0,0 +1,353 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeBody.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeWorld.h"
+
+#include "OgreOdeCollision.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+//------------------------------------------------------------------------------------------------
+Space::Space(World *world, const Space* space) :
+    _world(world),
+    _internal_collisions (true)
+{
+}
+//------------------------------------------------------------------------------------------------
+dSpaceID Space::getSpaceID() const
+{
+	return _space;
+}
+//------------------------------------------------------------------------------------------------
+dSpaceID Space::getSpaceID(const Space* space) const
+{
+	if(space) 
+        return space->getSpaceID();
+	return 0;
+}
+//------------------------------------------------------------------------------------------------
+void Space::setAutoCleanup(bool on)
+{
+	dSpaceSetCleanup(_space,(on)?1:0);
+}
+//------------------------------------------------------------------------------------------------
+bool Space::getAutoCleanup()
+{
+	return ((dSpaceGetCleanup(_space))?true:false); 
+}
+//------------------------------------------------------------------------------------------------
+void Space::addGeometry(const Geometry& geometry)
+{
+	dSpaceAdd(_space,geometry.getGeometryID()); 
+}
+//------------------------------------------------------------------------------------------------
+void Space::removeGeometry(const Geometry& geometry)
+{
+	dSpaceRemove(_space,geometry.getGeometryID()); 
+}
+//------------------------------------------------------------------------------------------------
+bool Space::containsGeometry(const Geometry& geometry)
+{
+	return ((dSpaceQuery(_space,geometry.getGeometryID()))?true:false); 
+}
+//------------------------------------------------------------------------------------------------
+int Space::getGeometryCount()
+{
+	return dSpaceGetNumGeoms(_space); 
+}
+//------------------------------------------------------------------------------------------------
+Geometry* Space::getGeometry(int index)
+{
+	return (Geometry*) _world->getGeometryList().findItem((long unsigned int)dSpaceGetGeom(_space,index)); 
+}
+//------------------------------------------------------------------------------------------------
+void Space::registerSpace()
+{
+	_world->getSpaceList().registerItem(this);
+	dGeomSetData((dGeomID)_space,(void*)this);
+}
+//------------------------------------------------------------------------------------------------
+void Space::collide(void* data)
+{
+	if(_internal_collisions)
+	{
+		dSpaceCollide(_space,data,World::collisionCallback);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Space::collide(Space* space,void* data)
+{
+	dSpaceCollide2((dGeomID)_space,(dGeomID)(space->getSpaceID()),data,World::collisionCallback);
+}
+//------------------------------------------------------------------------------------------------
+void Space::collide(Geometry* geometry,void* data)
+{
+	dSpaceCollide2((dGeomID)_space,geometry->getGeometryID(),data,World::collisionCallback);
+}
+
+//------------------------------------------------------------------------------------------------
+void Space::collide(CollisionCallback* colCallback)
+{
+	if(_internal_collisions)
+	{
+		void* data = colCallback;	
+		dSpaceCollide(_space,data, CollisionCallback::collisionCallback);
+	}
+}
+//------------------------------------------------------------------------------------------------
+void Space::collide(CollisionCallback* colCallback, Space* space)
+{
+	void* data = colCallback;	
+	dSpaceCollide2((dGeomID)_space,(dGeomID)(space->getSpaceID()),data, CollisionCallback::collisionCallback);
+}
+//------------------------------------------------------------------------------------------------
+void Space::collide(CollisionCallback* colCallback, Geometry* geometry)
+{
+	void* data = colCallback;	
+	dSpaceCollide2((dGeomID)_space, geometry->getGeometryID(), data, CollisionCallback::collisionCallback);
+}
+
+//------------------------------------------------------------------------------------------------
+void Space::setInternalCollisions(bool collide)
+{
+	_internal_collisions = collide;
+}
+//------------------------------------------------------------------------------------------------
+bool Space::getInternalCollisions()
+{
+	return _internal_collisions;
+}
+//------------------------------------------------------------------------------------------------
+const AxisAlignedBox& Space::getAxisAlignedBox()
+{
+	dReal aabb[6];
+	dGeomGetAABB((dGeomID)_space,aabb);
+	_bounding_box.setExtents((Real)aabb[0],(Real)aabb[2],(Real)aabb[4],(Real)aabb[1],(Real)aabb[3],(Real)aabb[5]);
+	return _bounding_box;
+}
+//------------------------------------------------------------------------------------------------
+unsigned long Space::getID()
+{
+	return (unsigned long)_space;
+}
+//------------------------------------------------------------------------------------------------
+Space::~Space()
+{
+	_world->getSpaceList().unregisterItem((unsigned long)_space);
+	dSpaceDestroy(_space); 
+}
+//------------------------------------------------------------------------------------------------
+SimpleSpace::SimpleSpace(World *world, const Space* space) : Space (world, space)
+{
+	_space = dSimpleSpaceCreate(getSpaceID(space)); 
+	registerSpace();
+}
+//------------------------------------------------------------------------------------------------
+SimpleSpace::~SimpleSpace()
+{
+}
+//------------------------------------------------------------------------------------------------
+HashTableSpace::HashTableSpace(World *world, const Space* space) : Space (world, space)
+{
+	_space = dHashSpaceCreate(getSpaceID(space)); 
+	registerSpace();
+}
+//------------------------------------------------------------------------------------------------
+void HashTableSpace::setLevels(int min_level,int max_level)
+{
+	dHashSpaceSetLevels(_space,min_level,max_level); 
+}
+//------------------------------------------------------------------------------------------------
+int HashTableSpace::getMinimumLevel()
+{
+	int min_level,max_level;
+	dHashSpaceGetLevels(_space,&min_level,&max_level);
+	return min_level;
+}
+//------------------------------------------------------------------------------------------------
+int HashTableSpace::getMaximumLevel()
+{
+	int min_level,max_level;
+	dHashSpaceGetLevels(_space,&min_level,&max_level);
+	return max_level;
+}
+//------------------------------------------------------------------------------------------------
+HashTableSpace::~HashTableSpace()
+{
+}
+//------------------------------------------------------------------------------------------------
+QuadTreeSpace::QuadTreeSpace(const Ogre::Vector3& center,const Ogre::Vector3& extents,int depth,World *world, const Space* space) : Space (world, space)
+{
+	dVector3 c,e;
+	
+	c[0] = (dReal)center.x;
+	c[1] = (dReal)center.y;
+	c[2] = (dReal)center.z;
+
+	e[0] = (dReal)extents.x;
+	e[1] = (dReal)extents.y;
+	e[2] = (dReal)extents.z;
+
+	_space = dQuadTreeSpaceCreate(getSpaceID(space),c,e,depth); 
+	registerSpace();
+}
+//------------------------------------------------------------------------------------------------
+QuadTreeSpace::~QuadTreeSpace()
+{
+}
+//------------------------------------------------------------------------------------------------
+OgreSceneManagerSpace::OgreSceneManagerSpace(const Ogre::Vector3& center,
+                                             const Ogre::Vector3& extents,
+                                             int depth,
+                                             Ogre::SceneManager *_scn_mgr,
+                                             World *world, const Space* space) : 
+        Space (world, space),
+        _scn_mgr(_scn_mgr)
+{
+    _intersection_query = _scn_mgr->createIntersectionQuery();
+
+    const std::set<Ogre::SceneQuery::WorldFragmentType> *supportedQueryTypes = _intersection_query->getSupportedWorldFragmentTypes();
+    std::set<Ogre::SceneQuery::WorldFragmentType>::const_iterator it = 
+        supportedQueryTypes->find (Ogre::SceneQuery::WFT_PLANE_BOUNDED_REGION);
+    if (it != supportedQueryTypes->end())
+    {
+        _intersection_query->setWorldFragmentType(Ogre::SceneQuery::WFT_PLANE_BOUNDED_REGION);
+        _scene_geometry = true;
+    }
+    else
+    {
+        _intersection_query->setWorldFragmentType(Ogre::SceneQuery::WFT_NONE);
+        _scene_geometry = false;
+    }
+
+    // for now register a dummy space in ode.
+    // perhaps this step can be avoided.dVector3 c,e;
+
+    dVector3 c;
+    c[0] = (dReal)center.x;
+    c[1] = (dReal)center.y;
+    c[2] = (dReal)center.z;
+
+    dVector3 e;
+    e[0] = (dReal)extents.x;
+    e[1] = (dReal)extents.y;
+    e[2] = (dReal)extents.z;
+
+    _space = dQuadTreeSpaceCreate(getSpaceID(space), c, e,depth); 
+    registerSpace();
+}
+//------------------------------------------------------------------------------------------------
+OgreSceneManagerSpace::~OgreSceneManagerSpace()
+{
+    delete _intersection_query;
+}
+//------------------------------------------------------------------------------------------------
+void OgreSceneManagerSpace::collide(void* data)
+{
+    if(_internal_collisions)
+    {
+        // Collision detection
+        Ogre::IntersectionSceneQueryResult& results = _intersection_query->execute();
+
+        Body *body1, *body2;
+        Geometry *geom;
+        Ogre::UserDefinedObject *uo1, *uo2;
+
+        // Movables to Movables
+        Ogre::SceneQueryMovableIntersectionList::iterator it, itend;
+        itend = results.movables2movables.end();
+        for (it = results.movables2movables.begin(); it != itend; ++it)
+        {
+            /* debugging
+            MovableObject *mo1, *mo2;
+            mo1 = it->first;
+            mo2 = it->second;
+            */
+
+            // Get user defined objects (generic in OGRE)
+            uo1 = it->first->getUserObject();
+            uo2 = it->second->getUserObject();
+
+            // Only perform collision if we have UserDefinedObject links
+            if (uo1 && uo2)
+            {
+                bool isBody1 = false;
+                if (uo1->getTypeName () == "Body")
+                    isBody1 = true;
+
+                bool isBody2 = false;
+                if (uo2->getTypeName () == "Body")
+                    isBody2 = true;
+                if (isBody1 || isBody2)
+                {
+                    if (isBody2 && isBody1)
+                    {
+                        // Both are dynamic object
+                       body1 = static_cast<Body*>(uo1);
+                       body2 = static_cast<Body*>(uo2);
+
+                        // Do detailed collision test
+                        body1->collide (data, body2);
+                    }
+                    else
+                    {
+                        // Both are dynamic object
+                        if (isBody1)
+                        {
+                            body1 = static_cast<Body*>     (uo1);
+                            geom  = static_cast<Geometry*> (uo2);
+                        }
+                        else
+                        {
+                            geom  = static_cast<Geometry*> (uo1);
+                            body1 = static_cast<Body*>     (uo2);
+                        }
+
+                        // Do detailed collision test
+                        body1->collide(data, geom);
+                    }
+                }
+            }
+        }
+
+        // Movables to World
+        if (_scene_geometry)
+        {
+            Ogre::MovableObject *mo;
+            Ogre::SceneQuery::WorldFragment *wf;
+
+            Ogre::SceneQueryMovableWorldFragmentIntersectionList::iterator wit, witend;
+            witend = results.movables2world.end();
+            for (wit = results.movables2world.begin(); wit != witend; ++wit)
+            {
+                mo = wit->first;
+                wf = wit->second;
+
+                // Get user defined objects (generic in OGRE)
+                uo1 = mo->getUserObject();
+                // Only perform collision if we have UserDefinedObject link
+                // otherwise ...
+                if (uo1)
+                {
+                    // Cast to ApplicationObject
+                    if (uo1->getTypeName () == "Body")
+                    {
+                        body1 = static_cast<Body*>(uo1);
+                        body1->collidePlaneBounds(data, wf);
+                    }
+//                     else // static objects don't collide against Scene Geometry
+//                     {
+//                         geom = static_cast<Geometry*>(uo);
+//                         // Do detailed collision test
+//                     }
+                }
+            }
+        }
+        // no need to use that one.
+        // dSpaceCollide(_space,data, World::collisionCallback);
+    }
+}
Index: /ogreode/src/OgreOdeStepper.cpp
===================================================================
--- /ogreode/src/OgreOdeStepper.cpp	(revision 21)
+++ /ogreode/src/OgreOdeStepper.cpp	(revision 21)
@@ -0,0 +1,376 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeGeometry.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeWorld.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeStepper.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+//------------------------------------------------------------------------------------------------
+const Ogre::Real cEpsilon = std::numeric_limits<Real>::epsilon();
+//------------------------------------------------------------------------------------------------
+StepHandler::StepHandler(World *world, 
+                 StepModeType stepModeType,
+                 const Ogre::Real step_size, 
+                 const Ogre::Real max_interval, 
+                 const Ogre::Real time_scale) :
+    _world  (world),
+    _paused (false),
+    _listener (0),
+    _auto_pre (false),
+    _auto_post (false), 
+    _root  (0),
+    _step_size (step_size),
+    _total_time (Ogre::Real(0.0)),
+    _max_interval (max_interval),
+    _time_scale (time_scale)
+{
+    switch (stepModeType)
+    {
+        case BasicStep:
+            _current_stepper = new BasicStepMode(world);
+            break;
+        case QuickStep:
+            _current_stepper = new QuickStepMode(world);
+            break;
+        case FastStep:
+            _current_stepper = new FastStepMode(world);
+            break;
+        case StepModeTypeCount:
+        default:
+            assert(0);
+    }
+    assert((step_size > 0)&&("Step size must be greater than zero"));
+    assert((max_interval > 0)&&("max interval must be greater than zero"));
+}
+//------------------------------------------------------------------------------------------------
+void StepHandler::pause(bool pause)
+{
+	_paused = pause;
+}
+//------------------------------------------------------------------------------------------------
+void StepHandler::setStepListener(StepListener* listener)
+{
+	_listener = listener;
+}
+//------------------------------------------------------------------------------------------------
+bool StepHandler::isPaused()
+{
+	return _paused;
+}
+//------------------------------------------------------------------------------------------------
+void StepHandler::setAutomatic(StepHandler::AutoMode mode, Root* root)
+{
+	if ((_root)&&((_auto_pre)||(_auto_post))) 
+        _root->removeFrameListener(this);
+
+	_auto_pre = (mode == AutoMode_PreFrame)?true:false;
+	_auto_post = (mode == AutoMode_PostFrame)?true:false;
+
+	if ((root)&&((_auto_pre)||(_auto_post)))
+	{
+		_root = root;
+		_root->addFrameListener(this);
+	}
+}
+//------------------------------------------------------------------------------------------------
+bool StepHandler::frameStarted(const FrameEvent& evt)
+{
+	if (_auto_pre)
+	{
+		if (step (evt.timeSinceLastFrame)) 
+			_world->synchronise();
+	}
+	return true;
+}
+//------------------------------------------------------------------------------------------------
+bool StepHandler::frameEnded(const FrameEvent& evt)
+{
+	if (_auto_post)
+	{
+		if (step (evt.timeSinceLastFrame))
+			_world->synchronise();
+	}
+	return true;
+}
+//------------------------------------------------------------------------------------------------
+StepHandler::~StepHandler()
+{
+	setAutomatic(AutoMode_NotAutomatic);
+}
+//------------------------------------------------------------------------------------------------
+bool StepHandler::basicStep(const Ogre::Real time)
+{
+    if (_listener && !_listener->preStep(time))
+        return false;
+
+    _world->getDefaultSpace()->collide();
+
+    if (_listener && !_listener->middleStep(time))
+        return false;
+
+    _current_stepper->step(time);
+
+
+	_world->clearContacts();
+
+    if (_listener && !_listener->postStep(time))
+        return false;
+
+	return true;
+}
+//------------------------------------------------------------------------------------------------
+bool StepHandler::isRunning(const Ogre::Real time)
+{
+    if (!_paused)
+    {
+       return true;
+    }
+    return false;
+}
+//------------------------------------------------------------------------------------------------
+bool StepHandler::prepareSteppingTime(const Ogre::Real time)
+{
+    // make sure time is not too high (alt-tab, debug)
+	if (_max_interval - time < cEpsilon
+		)
+	{
+		_total_time += _max_interval * _time_scale;
+	}
+	else
+	{
+		_total_time += time * _time_scale;
+	}
+	return (_total_time - cEpsilon > 0);
+}
+//------------------------------------------------------------------------------------------------
+bool StepHandler::step(const Ogre::Real time)
+{
+	if (isRunning(time) && prepareSteppingTime(time))
+	{ 
+		if (basicStep(_total_time))
+		{
+			_world->updateDrawState ();
+            _total_time = Ogre::Real(0);
+		}
+		return true;
+	}
+	return false;
+}
+//------------------------------------------------------------------------------------------------
+ExactVariableStepHandler::ExactVariableStepHandler(World *world, 
+                                                   StepModeType stepModeType,
+                                                   const Ogre::Real step_size, 
+                                                   const Ogre::Real max_interval, 
+                                                   const Ogre::Real time_scale):
+    StepHandler(world, stepModeType, step_size,  max_interval, time_scale)
+{
+}
+//------------------------------------------------------------------------------------------------
+bool ExactVariableStepHandler::step(const Ogre::Real time)
+{
+    if (isRunning(time) && prepareSteppingTime(time))
+    {
+        // Steps in fixed time slices first...
+        bool did_run = false;
+
+        while (_total_time - _step_size > cEpsilon)
+        {
+            if (StepHandler::basicStep(_step_size))
+            {
+                did_run = true;
+                _total_time -= _step_size;
+            }
+            else 
+            {
+                break;
+            }
+        } 
+
+        // Then do a little clean-up step
+        if (_total_time > cEpsilon)
+        {
+            if (StepHandler::basicStep(_total_time))
+            {
+                did_run = true;
+                _total_time = Ogre::Real(0);
+            }
+        }
+
+        if (did_run)
+        {
+            _world->updateDrawState ();
+        }
+        return did_run;
+    }
+    return false;
+}
+//------------------------------------------------------------------------------------------------
+ExactVariableStepHandler::~ExactVariableStepHandler()
+{
+}
+//------------------------------------------------------------------------------------------------
+ForwardFixedStepHandler::ForwardFixedStepHandler(World *world, 
+    StepModeType stepModeType,
+    const Ogre::Real step_size, 
+    const Ogre::Real max_interval, 
+    const Ogre::Real time_scale):
+    StepHandler(world, stepModeType, step_size, max_interval, time_scale)
+{
+}
+//------------------------------------------------------------------------------------------------
+bool ForwardFixedStepHandler::step(const Ogre::Real time)
+{
+	if (isRunning(time) && prepareSteppingTime(time))
+	{
+		// Slightly different type of ODE stepper, always makes sure
+		// the ODE world is at least level with real-time, and possibly
+		// up to one step ahead, seems to make things a bit smoother (?)
+		bool did_run = false;
+
+        while (_total_time  > cEpsilon)
+        {
+            if (StepHandler::basicStep(_step_size))
+            {
+                did_run = true;
+                _total_time -= _step_size;
+            }
+            else 
+            {
+                break;
+            }
+        } 
+
+
+		if (did_run)
+			_world->updateDrawState ();
+
+		return did_run;
+	}
+	return false;
+}
+//------------------------------------------------------------------------------------------------
+ForwardFixedStepHandler::~ForwardFixedStepHandler()
+{
+}
+//------------------------------------------------------------------------------------------------
+ForwardFixedInterpolatedStepHandler::ForwardFixedInterpolatedStepHandler(World *world, 
+    StepModeType stepModeType,
+    const Ogre::Real step_size, 
+    const Ogre::Real frame_rate, 
+    const Ogre::Real max_interval, 
+    const Ogre::Real time_scale):
+        StepHandler(world, stepModeType, step_size, max_interval, time_scale),
+        _dbl_step_size(step_size * 2),
+        _frame_rate (frame_rate),
+        _inv_step_size(1.0 / frame_rate)
+{
+    if (frame_rate == Ogre::Real(0))
+    {
+        _fixed_frame_rate = false;
+        _next_frame_step_count = 1;
+    }
+    else
+    {
+        _fixed_frame_rate = true;
+        _next_frame_step_count = _frame_rate / (_step_size * _time_scale);
+        if (_next_frame_step_count == 0)
+            _next_frame_step_count = 1;
+    }
+    // compute here the frame_rate adapted to step_size
+    _next_total_time = _next_frame_step_count * _step_size;
+    _inv_next_total_time = 1 / _next_total_time;
+
+	// Need at least _previous and _current position
+	if (_world->getHistorySize() < 2)
+		_world->setHistorySize (2);
+}
+//------------------------------------------------------------------------------------------------
+bool ForwardFixedInterpolatedStepHandler::step(const Ogre::Real time)
+{
+    if (isRunning(time))
+	{	
+		bool did_run = false;
+
+        // if some time did elapse
+        bool should_run = prepareSteppingTime(time);
+        // if fixed frame rate.
+        // make sure we're waiting until next fixed frame rate stepping.
+        if (_fixed_frame_rate && _total_time - _next_total_time < cEpsilon)
+            should_run = false;
+
+        if (should_run)
+        {
+#ifdef _one_step_forward
+            // normal steps, without storing results in history
+            while (_total_time - _step_size > cEpsilon)
+            {
+                if (StepHandler::basicStep(_step_size))
+                {
+                    did_run = true;
+                    _total_time -= _step_size;
+                }
+                else 
+                {
+                    break;
+                }
+            }
+            if (did_run)
+            {
+                // last Special Single Step is specific as we save last state prior stepping.
+                _world->updatePreviousState ();
+                // compute next Frame physic state
+                StepHandler::basicStep(_step_size);
+                _world->updateCurrentState ();	
+            }
+
+#else// _OLD
+
+            // last Special Step is specific as we save last state prior stepping.
+            _world->updatePreviousState ();
+
+            // normal steps, without storing results in history
+            unsigned int next_frame_step_count = _next_frame_step_count;
+            while (next_frame_step_count--)
+            {
+                if (StepHandler::basicStep(_step_size))
+                {
+                    did_run = true;
+                }
+                else 
+                {
+                    break;
+                }
+            }
+
+            if (did_run)
+                _world->updateCurrentState ();	
+
+            _total_time = std::max(_total_time - _next_total_time, Ogre::Real(0.0));
+
+#endif// _OLD
+    		
+        }
+	    // even if no new physic step happened
+        // interpolation may changed its value if time changed...	
+
+	    // interpolate between previousState and currentState;
+        // currentState*interpolationTime + previousState * (1.0f - interpolationTime)
+        // interpolate 
+	    _world->interpolateDrawState(
+            Ogre::Real(1.0) -  (_next_total_time - _total_time) * _inv_next_total_time
+            //(_total_time - _next_total_time) * _inv_next_total_time
+            );
+		return true;
+	}
+	return false;
+}
+//------------------------------------------------------------------------------------------------
+ForwardFixedInterpolatedStepHandler::~ForwardFixedInterpolatedStepHandler()
+{
+}
+
Index: /ogreode/src/OgreOdeUtility.cpp
===================================================================
--- /ogreode/src/OgreOdeUtility.cpp	(revision 21)
+++ /ogreode/src/OgreOdeUtility.cpp	(revision 21)
@@ -0,0 +1,49 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeUtility.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+const Ogre::Real Utility::Infinity = dInfinity;
+
+Real Utility::randomReal()
+{
+	return (Real)dRandReal();
+}
+
+/**
+According to the ODE docs;
+	
+By adjusting the values of ERP and CFM, you can achieve various effects. 
+For example you can simulate springy constraints, where the two bodies oscillate 
+as though connected by springs. Or you can simulate more spongy constraints, without 
+the oscillation. In fact, ERP and CFM can be selected to have the same effect as any 
+desired spring and damper constants. If you have a spring constant kp and damping constant kd, 
+then the corresponding ODE constants are:
+	
+ERP = h kp / (h kp + kd)
+CFM = 1 / (h kp + kd)
+	
+where h is the stepsize. These values will give the same effect as a spring-and-damper 
+system simulated with implicit first order integration.
+*/
+//-----------------------------------------------------------------------
+Real Utility::getCFM(Real spring, Real dampening, Real timeStep)
+{
+	return 1 / ((timeStep * spring) + dampening);
+}
+
+//-----------------------------------------------------------------------
+Real Utility::getERP(Real spring, Real dampening, Real timeStep)
+{
+	return  (timeStep * spring) / ((timeStep * spring) + dampening);
+}
+	
+//-----------------------------------------------------------------------
+void Utility::getSpringConstants(Real CFM, Real ERP, Real timeStep, Real &spring, Real &dampening)
+{
+	spring = (ERP / CFM) / timeStep;
+	dampening = (1 / CFM) - timeStep * spring;
+}
Index: /ogreode/src/OgreOdeWorld.cpp
===================================================================
--- /ogreode/src/OgreOdeWorld.cpp	(revision 21)
+++ /ogreode/src/OgreOdeWorld.cpp	(revision 21)
@@ -0,0 +1,279 @@
+
+#include "OgreOdePrecompiledHeaders.h"
+
+#include "OgreOdeWorld.h"
+#include "OgreOdeBody.h"
+#include "OgreOdeJoint.h"
+#include "OgreOdeGeometry.h"
+#include "OgreOdeSpace.h"
+#include "OgreOdeDebugObject.h"
+
+using namespace OgreOde;
+using namespace Ogre;
+
+CollisionListener* World::_collision_listener = 0;
+//------------------------------------------------------------------------------------------------
+void World::setCollisionListener(CollisionListener* collision_listener)
+{
+	_collision_listener = collision_listener;
+}
+//------------------------------------------------------------------------------------------------
+CollisionListener* World::getCollisionListener()
+{
+	return _collision_listener;
+}
+//------------------------------------------------------------------------------------------------
+World::World(SceneManager* manager) :
+    _show_debug_geoms (false),
+    _show_debug_contact (false),
+    _manager (manager)
+{
+	_world = dWorldCreate();
+	_contacts = dJointGroupCreate(0);
+
+	_default_space = new HashTableSpace(this);
+	_default_space->setAutoCleanup(false);
+	_default_space->setInternalCollisions(true);
+
+	setDamping(0.0,0.0);
+	setHistorySize (1);
+}
+//------------------------------------------------------------------------------------------------
+void World::setHistorySize(size_t historySize)
+{
+	_history_size = historySize;
+
+	MaintainedItemIterator<Body> it = _body_list.getIterator();
+	while(!it.end ())
+	{
+		Body * const b = (Body *) (it.getNext ());
+		b->_historyResize(historySize);
+	}
+}
+//------------------------------------------------------------------------------------------------
+size_t World::getHistorySize() const 
+{
+	return _history_size;
+}
+//------------------------------------------------------------------------------------------------
+void World::setGravity(const Ogre::Vector3& gravity)
+{
+	dWorldSetGravity(_world,(dReal)gravity.x,(dReal)gravity.y,(dReal)gravity.z);
+}
+//------------------------------------------------------------------------------------------------
+const Ogre::Vector3& World::getGravity()
+{
+	dVector3 g;
+	dWorldGetGravity(_world,g);
+	_gravity.x = (Real)g[0];
+	_gravity.y = (Real)g[1];
+	_gravity.z = (Real)g[2];
+	return _gravity;
+}
+//------------------------------------------------------------------------------------------------
+void World::setERP(Real erp)
+{
+	dWorldSetERP(_world,(dReal)erp);
+}
+//------------------------------------------------------------------------------------------------
+Real World::getERP()
+{
+	return (Real)dWorldGetERP(_world);
+}
+//------------------------------------------------------------------------------------------------
+void World::setCFM(Real cfm)
+{
+	dWorldSetCFM(_world,(dReal)cfm);
+}
+//------------------------------------------------------------------------------------------------
+Real World::getCFM()
+{
+	return (Real)dWorldGetCFM(_world);
+}
+//------------------------------------------------------------------------------------------------
+void World::setAutoSleep(bool auto_sleep)
+{
+	dWorldSetAutoDisableFlag(_world,(auto_sleep)?1:0);
+}
+//------------------------------------------------------------------------------------------------
+bool World::getAutoSleep()
+{
+	return (dWorldGetAutoDisableFlag(_world))?true:false;
+}
+//------------------------------------------------------------------------------------------------
+void World::setAutoSleepLinearThreshold(Real linear_threshold)
+{
+	dWorldSetAutoDisableLinearThreshold(_world,(dReal)linear_threshold);
+}
+//------------------------------------------------------------------------------------------------
+Real World::getAutoSleepLinearThreshold()
+{
+	return (Real)dWorldGetAutoDisableLinearThreshold(_world);
+}
+//------------------------------------------------------------------------------------------------
+void World::setAutoSleepAngularThreshold(Real angular_threshold)
+{
+	dWorldSetAutoDisableAngularThreshold(_world,(dReal)angular_threshold);
+}
+//------------------------------------------------------------------------------------------------
+Real World::getAutoSleepAngularThreshold()
+{
+	return (Real)dWorldGetAutoDisableAngularThreshold(_world);
+}
+//------------------------------------------------------------------------------------------------
+void World::setAutoSleepSteps(int steps)
+{
+	dWorldSetAutoDisableSteps(_world,steps);
+}
+//------------------------------------------------------------------------------------------------
+int World::getAutoSleepSteps()
+{
+	return dWorldGetAutoDisableSteps(_world);
+}
+//------------------------------------------------------------------------------------------------
+void World::setAutoSleepTime(Real time)
+{
+	dWorldSetAutoDisableTime(_world,(dReal)time);
+}
+//------------------------------------------------------------------------------------------------
+Real World::getAutoSleepTime()
+{
+	return (Real)dWorldGetAutoDisableTime(_world);
+}
+//------------------------------------------------------------------------------------------------
+void World::setAutoSleepAverageSamplesCount(size_t time)
+{
+    dWorldSetAutoDisableAverageSamplesCount(_world, time);
+}
+//------------------------------------------------------------------------------------------------
+size_t World::getAutoSleepAverageSamplesCount()
+{
+    return (Real)dWorldGetAutoDisableAverageSamplesCount(_world);
+}
+//------------------------------------------------------------------------------------------------
+void World::setContactCorrectionVelocity(Real velocity)
+{
+	dWorldSetContactMaxCorrectingVel(_world,(dReal)velocity);
+}
+//------------------------------------------------------------------------------------------------
+void World::setContactSurfaceLayer(Real layer)
+{
+	dWorldSetContactSurfaceLayer(_world,(dReal)layer);
+}
+
+//------------------------------------------------------------------------------------------------
+void World::collisionCallback(void *data,dGeomID geom_a,dGeomID geom_b)
+{
+	const bool a_space = (dGeomIsSpace(geom_a))?true:false;
+	const bool b_space = (dGeomIsSpace(geom_b))?true:false;
+	
+	void* const ptr_a = dGeomGetData(geom_a);
+	void* const ptr_b = dGeomGetData(geom_b);
+
+	if(a_space  || b_space )
+	{
+		// Collide a space with a space
+		if(a_space && b_space) 
+			static_cast<Space*>(ptr_a)->collide(static_cast<Space*>(ptr_b),data);
+		else if(a_space) 
+			static_cast<Space*>(ptr_a)->collide(static_cast<Geometry*>(ptr_b),data);
+		else 
+			static_cast<Space*>(ptr_b)->collide(static_cast<Geometry*>(ptr_a),data);
+
+		// Collide geometries internal to the spaces
+		if(a_space) 
+            static_cast<Space*>(ptr_a)->collide(data);
+
+		if(b_space) 
+            static_cast<Space*>(ptr_b)->collide(data);
+	}
+    else
+	{
+		// Collide a geom with a geom, i.e. generate contacts
+		static_cast<Geometry*>(ptr_a)->collide(static_cast<Geometry*>(ptr_b),_collision_listener);
+	}
+}
+//------------------------------------------------------------------------------------------------
+Body* World::findBody(SceneNode* node)
+{
+	Body* body = 0;
+	for(int i = 0;i < node->numAttachedObjects();i++)
+	{
+		MovableObject* obj = node->getAttachedObject(i);
+		if(obj)
+		{
+			if(obj->getMovableType() == Ogre::String("OgreOde::Body"))
+			{
+				body = static_cast<Body*>(obj);
+				break;
+			}
+		}
+	}
+	return body;
+}
+//------------------------------------------------------------------------------------------------
+Body* World::findBody(const Ogre::String& name)
+{
+	Body *b = 0;
+	MaintainedItemIterator<Body> it = _body_list.getIterator();
+	while(!it.end ())
+	{
+		b = (Body*) (it.getNext ());
+		if(b->getName() == name) 
+			return b;
+	}
+	return 0;
+}
+//------------------------------------------------------------------------------------------------
+void World::setDefaultSpace(Space* space)
+{
+	delete _default_space;
+	_default_space = space;
+}
+//------------------------------------------------------------------------------------------------
+void World::setQuickStepIterations(int iterations)
+{
+	dWorldSetQuickStepNumIterations(_world,iterations);
+}
+//------------------------------------------------------------------------------------------------
+int World::getQuickStepIterations()
+{
+	return dWorldGetQuickStepNumIterations(_world);
+}
+//------------------------------------------------------------------------------------------------
+void World::setShowDebugGeometries(bool show)
+{
+	_body_list.setDebug(show);
+	_geometry_list.setDebug(show);
+	_show_debug_geoms = show;
+}
+//------------------------------------------------------------------------------------------------
+void World::setShowDebugContact(bool show)
+{
+    _geometry_list.setDebugContact(show);
+    _show_debug_contact = show;
+}
+//------------------------------------------------------------------------------------------------
+void World::setDamping(Real linear_damping,Real angular_damping)
+{
+	_linear_damping = -(dReal)linear_damping;
+	_angular_damping = -(dReal)angular_damping;
+}
+//------------------------------------------------------------------------------------------------
+Real World::getLinearDamping()
+{
+	return -(Real)_linear_damping;
+}
+//------------------------------------------------------------------------------------------------
+Real World::getAngularDamping()
+{
+	return -(Real)_angular_damping;
+}
+//------------------------------------------------------------------------------------------------
+World::~World()
+{
+	delete _default_space;
+	dJointGroupDestroy(_contacts);
+    dWorldDestroy(_world);
+    dCloseODE();
+}
Index: /ogreode/srclistfileOgreOde.txt
===================================================================
--- /ogreode/srclistfileOgreOde.txt	(revision 21)
+++ /ogreode/srclistfileOgreOde.txt	(revision 21)
@@ -0,0 +1,124 @@
+OgreOde_LGPL.txt
+OgreOde_licence.txt
+OgreOde_readme.txt
+
+Makefile.am
+autogen.sh
+OgreOde_Prefab.pc.in
+OgreOde_Core.pc.in
+configure.ac
+
+include/*
+src/*
+
+scripts/CodeBlocks/*
+scripts/Linux/*
+scripts/Mac/*
+scripts/VC6/*
+scripts/VC7/*
+scripts/VC7.1/*
+scripts/VC8/OgreOde_SDK.sln
+scripts/VC8/OgreOde_Source.sln
+scripts/VC8/OgreOde_CVS.sln
+scripts/VC8/OgreOde_SDK.sln
+scripts/VC8/OgreOde_Core_SDK.vcproj
+scripts/VC8/OgreOde_Core_CVS.vcproj
+scripts/VC8/OgreOde_Core_Source.vcproj
+
+demos/Media/*
+
+demos/SimpleScenes/Makefile.am
+demos/SimpleScenes/include/*
+demos/SimpleScenes/src/*
+demos/SimpleScenes/scripts/CodeBlocks/*
+demos/SimpleScenes/scripts/Linux/*
+demos/SimpleScenes/scripts/Mac/*
+demos/SimpleScenes/scripts/VC6/*
+demos/SimpleScenes/scripts/VC7/*
+demos/SimpleScenes/scripts/VC7.1/*.vcproj
+demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_CVS.vcproj
+demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_SDK.vcproj
+demos/SimpleScenes/scripts/VC8/Demo_SimpleScenes_Source.vcproj
+
+demos/Landscape/Makefile.am
+demos/Landscape/include/*
+demos/Landscape/src/*
+demos/Landscape/scripts/CodeBlocks/*
+demos/Landscape/scripts/Linux/*
+demos/Landscape/scripts/Mac/*
+demos/Landscape/scripts/VC6/*
+demos/Landscape/scripts/VC7/*
+demos/Landscape/scripts/VC7.1/*.vcproj
+demos/Landscape/scripts/VC8/Demo_Landscape_CVS.vcproj
+demos/Landscape/scripts/VC8/Demo_Landscape_SDK.vcproj
+demos/Landscape/scripts/VC8/Demo_Landscape_Source.vcproj
+
+demos/GranTurismOgre/Makefile.am
+demos/GranTurismOgre/include/*
+demos/GranTurismOgre/src/*
+demos/GranTurismOgre/scripts/CodeBlocks/*
+demos/GranTurismOgre/scripts/Linux/*
+demos/GranTurismOgre/scripts/Mac/*
+demos/GranTurismOgre/scripts/VC6/*
+demos/GranTurismOgre/scripts/VC7/*
+demos/GranTurismOgre/scripts/VC7.1/*
+demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_CVS.vcproj
+demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_SDK.vcproj
+demos/GranTurismOgre/scripts/VC8/Demo_GranTurismOgre_Source.vcproj
+
+prefab/Makefile.am
+prefab/include/*
+prefab/src/*
+prefab/scripts/CodeBlocks/*
+prefab/scripts/Linux/*
+prefab/scripts/Mac/*
+prefab/scripts/VC6/*
+prefab/scripts/VC7/*
+prefab/scripts/VC7.1/*
+prefab/scripts/VC8/OgreOde_Prefab_CVS.vcproj
+prefab/scripts/VC8/OgreOde_Prefab_SDK.vcproj
+prefab/scripts/VC8/OgreOde_Prefab_Source.vcproj
+
+loader/Makefile.am
+loader/include/*
+loader/src/*
+loader/scripts/CodeBlocks/*
+loader/scripts/Linux/*
+loader/scripts/Mac/*
+loader/scripts/VC6/*
+loader/scripts/VC7/*
+loader/scripts/VC7.1/*
+loader/scripts/VC8/OgreOde_Loader_CVS.vcproj
+loader/scripts/VC8/OgreOde_Loader_SDK.vcproj
+loader/scripts/VC8/OgreOde_Loader_Source.vcproj
+
+tinyxml/*.h
+tinyxml/*.cpp
+tinyxml/*.txt
+tinyxml/tinyxml_lib_SDK.cbp
+tinyxml/tinyxml_lib.dsp
+tinyxml/tinyxml_lib.vcproj
+tinyxml/tinyxml_lib_vc8_CVS.vcproj
+tinyxml/tinyxml_lib_vc8_SDK.vcproj
+tinyxml/tinyxml_lib_vc8_Source.vcproj
+tinyxml/Makefile
+tinyxml/docs
+
+ode/tests/*
+ode/tools/*
+ode/GIMPACT/*
+ode/OPCODE/*
+ode/ode/*
+ode/include/*
+ode/drawstuff/*
+ode/contrib/*
+ode/build/README.txt
+ode/build/config.in
+ode/build/CodeBlocks/*.
+ode/build/gnu/*
+ode/build/vs6/*
+ode/build/vs2002/*
+ode/build/vs2003/*
+ode/build/vs2005/ode.sln
+ode/build/vs2005/*.vcproj
+
Index: /ogreode/tinyxml/Makefile
===================================================================
--- /ogreode/tinyxml/Makefile	(revision 21)
+++ /ogreode/tinyxml/Makefile	(revision 21)
@@ -0,0 +1,130 @@
+#****************************************************************************
+#
+# Makefile for TinyXml test.
+# Lee Thomason
+# www.grinninglizard.com
+#
+# This is a GNU make (gmake) makefile
+#****************************************************************************
+
+# DEBUG can be set to YES to include debugging info, or NO otherwise
+DEBUG          := YES
+
+# PROFILE can be set to YES to include profiling info, or NO otherwise
+PROFILE        := NO
+
+# TINYXML_USE_STL can be used to turn on STL support. NO, then STL
+# will not be used. YES will include the STL files.
+TINYXML_USE_STL := YES
+
+#****************************************************************************
+
+CC     := gcc
+CXX    := g++
+LD     := g++
+AR     := ar rc
+RANLIB := ranlib
+
+DEBUG_CFLAGS     := -Wall -Wno-format -g -DDEBUG
+RELEASE_CFLAGS   := -Wall -Wno-unknown-pragmas -Wno-format -O3
+
+LIBS		 :=
+
+DEBUG_CXXFLAGS   := ${DEBUG_CFLAGS} 
+RELEASE_CXXFLAGS := ${RELEASE_CFLAGS}
+
+DEBUG_LDFLAGS    := -g
+RELEASE_LDFLAGS  :=
+
+ifeq (YES, ${DEBUG})
+   CFLAGS       := ${DEBUG_CFLAGS}
+   CXXFLAGS     := ${DEBUG_CXXFLAGS}
+   LDFLAGS      := ${DEBUG_LDFLAGS}
+else
+   CFLAGS       := ${RELEASE_CFLAGS}
+   CXXFLAGS     := ${RELEASE_CXXFLAGS}
+   LDFLAGS      := ${RELEASE_LDFLAGS}
+endif
+
+ifeq (YES, ${PROFILE})
+   CFLAGS   := ${CFLAGS} -pg -O3
+   CXXFLAGS := ${CXXFLAGS} -pg -O3
+   LDFLAGS  := ${LDFLAGS} -pg
+endif
+
+#****************************************************************************
+# Preprocessor directives
+#****************************************************************************
+
+ifeq (YES, ${TINYXML_USE_STL})
+  DEFS := -DTIXML_USE_STL
+else
+  DEFS :=
+endif
+
+#****************************************************************************
+# Include paths
+#****************************************************************************
+
+#INCS := -I/usr/include/g++-2 -I/usr/local/include
+INCS :=
+
+
+#****************************************************************************
+# Makefile code common to all platforms
+#****************************************************************************
+
+CFLAGS   := ${CFLAGS}   ${DEFS}
+CXXFLAGS := ${CXXFLAGS} ${DEFS}
+
+#****************************************************************************
+# Targets of the build
+#****************************************************************************
+
+OUTPUT := xmltest
+
+all: ${OUTPUT}
+
+
+#****************************************************************************
+# Source files
+#****************************************************************************
+
+SRCS := tinyxml.cpp tinyxmlparser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp
+
+# Add on the sources for libraries
+SRCS := ${SRCS}
+
+OBJS := $(addsuffix .o,$(basename ${SRCS}))
+
+#****************************************************************************
+# Output
+#****************************************************************************
+
+${OUTPUT}: ${OBJS}
+	${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}
+
+#****************************************************************************
+# common rules
+#****************************************************************************
+
+# Rules for compiling source files to object files
+%.o : %.cpp
+	${CXX} -c ${CXXFLAGS} ${INCS} $< -o $@
+
+%.o : %.c
+	${CC} -c ${CFLAGS} ${INCS} $< -o $@
+
+dist:
+	bash makedistlinux
+
+clean:
+	-rm -f core ${OBJS} ${OUTPUT}
+
+depend:
+	#makedepend ${INCS} ${SRCS}
+
+tinyxml.o: tinyxml.h tinystr.h
+tinyxmlparser.o: tinyxml.h tinystr.h
+xmltest.o: tinyxml.h tinystr.h
+tinyxmlerror.o: tinyxml.h tinystr.h
Index: /ogreode/tinyxml/OgreOde_readme.txt
===================================================================
--- /ogreode/tinyxml/OgreOde_readme.txt	(revision 21)
+++ /ogreode/tinyxml/OgreOde_readme.txt	(revision 21)
@@ -0,0 +1,15 @@
+TinyXml for OgreOde
+===================
+
+To build TinyXml for use with OgreOde you should be able to use the supplied 
+MSVC projects. The only change you need to make is that you must change the Code 
+Generation option to "Multi-threaded DLL" for Release builds, or 
+"Multi-threaded Debug DLL" for Debug builds.
+
+The only project you are required to build is the TinyXml one, the STL version 
+and the test programs are not required. The TinyXml libraries should be placed 
+under the Debug and Release subdirectories of this one, which should be 
+$OGRE_TOP/OgreOde/tinyxml, if you are compiling using an environment other than 
+MSVC then you will need to place the libraries in a place which is accessible to 
+you OgreOde build environment.
+
Index: /ogreode/tinyxml/changes.txt
===================================================================
--- /ogreode/tinyxml/changes.txt	(revision 21)
+++ /ogreode/tinyxml/changes.txt	(revision 21)
@@ -0,0 +1,254 @@
+Changes in version 1.0.1:
+- Fixed comment tags which were outputing as '<?--' instead of 
+  the correct '<!--'.
+- Implemented the Next and Prev methods of the TiXmlAttribute class.
+- Renamed 'LastAttribtute' to 'LastAttribute'
+- Fixed bad pointer to 'isspace' that could occur while parsing text.
+- Errors finding beginning and end of tags no longer throw it into an
+  infinite loop. (Hopefully.)
+
+Changes in version 1.0.2
+- Minor documentation fixes.
+
+Changes in version 1.0.3
+- After nodes are added to a document, they return a pointer
+  to the new node instead of a bool for success.
+- Elements can be constructed with a value, which is the
+  element name. Every element must have a value or it will be
+  invalid, but the code changes to enforce this are not fully
+  in place.
+
+Changes in version 1.1.0
+- Added the	TiXmlAttributeSet class to pull the attributes into
+  a seperate container.
+- Moved the doubly liked list out of XmlBase. Now XmlBase only
+  requires the Print() function and defines some utility functions.
+- Moved errors into a seperate file. (With the idea of internationalization
+  to the other latin-1 languages.)
+- Added the "NodeType"
+- Fixed white space parsing in text to conform with the standard. 
+  Basically, all white space becomes just one space.
+- Added the TiXmlDeclaration class to read xml declarations.
+
+Changes in version 1.2.0
+- Removed the factory. The factory was not really in the spirit 
+  of small and simple, confused the code, and was of limited value.
+- Added FirstChildElement and NextSiblingElement, because they
+  are such common functions.
+- Re-wrote the example to test and demonstrate more functionality.
+
+Changes in version 1.2.1
+- Fixed a bug where comments couldn't be inside elements.
+- Loading now clears out existing XML rather than appending.
+- Added the "Clear" method on a node to delete all its children.
+
+Changes in version 1.2.2
+- Fixed TiXmlAttribute::Previous actually returning "next." Thanks
+  to Rickard Troedsson for the bug fix.
+
+Changes in version 1.2.3
+- Added the TIXML prefix to the error strings to resolve conflicts
+  with #defines in OS headers. Thanks to Steve Lhomme.
+- Fixed a delete buf that should be a delete [] buf. 
+  Thanks to Ephi Sinowitz.
+
+Changes in version 1.2.4
+- ReplaceChild() was almost guarenteed to fail. Should be fixed,
+  thanks to Joe Smith. Joe also pointed out that the Print() functions
+  should take stream references: I agree, and would like to overload
+  the Print() method to take either format, but I don't want to do 
+  this in a dot release.
+- Some compilers seem to need an extra <ctype.h> include. Thanks
+  to Steve Lhomme for that.
+
+Changes in version 2.0.0 BETA
+- Made the ToXXX() casts safe if 'this' is null. 
+  When "LoadFile" is called with a filename, the value will correctly get set.
+  Thanks to Brian Yoder.
+- Fixed bug where isalpha() and isalnum() would get called with a negative value for 
+  high ascii numbers. Thanks to Alesky Aksenov.
+- Fixed some errors codes that were not getting set.
+- Made methods "const" that were not.
+- Added a switch to enable or disable the ignoring of white space. ( TiXmlDocument::SetIgnoreWhiteSpace() )
+- Greater standardization and code re-use in the parser.
+- Added a stream out operator.
+- Added a stream in operator.
+- Entity support, of predefined entites. &#x entities are untouched by input or output.
+- Improved text out formatting.
+- Fixed ReplaceChild bug, thanks to Tao Chen.
+
+Changes in version 2.0.1
+- Fixed hanging on loading a 0 length file. Thanks to Jeff Scozzafava.
+- Fixed crashing on InsertBeforeChild and InsertAfterChild. Also possibility of bad links being
+  created by same function. Thanks to Frank De prins.
+- Added missing licence text. Thanks to Lars Willemsens.
+- Added <ctype.h> include, at the suggestion of Steve Walters.
+
+Changes in version 2.1.0
+- Yves Berquin brings us the STL switch. The forum on SourceForge, and various emails to
+  me, have long debated all out STL vs. no STL at all. And now you can have it both ways.
+  TinyXml will compile either way.
+
+Changes in version 2.1.1
+- Compilation warnings.
+
+Changes in version 2.1.2
+- Uneeded code is not compiled in the STL case.
+- Changed headers so that STL can be turned on or off in tinyxml.h
+
+Changes in version 2.1.3
+- Fixed non-const reference in API; now uses a pointer.
+- Copy constructor of TiXmlString not checking for assignment to self.
+- Nimrod Cohen found a truly evil bug in the STL implementation that occurs
+  when a string is converted to a c_str and then assigned to self. Search for
+  STL_STRING_BUG for a full description. I'm asserting this is a Microsoft STL
+  bug, since &string and string.c_str() should never be the same. Nevertheless,
+  the code works around it.
+- Urivan Saaib pointed out a compiler conflict, where the C headers define
+  the isblank macro, which was wiping out the TiXmlString::isblank() method.
+  The method was unused and has been removed.
+
+Changes in version 2.1.4
+- Reworked the entity code. Entities were not correctly surving round trip input and output.
+  Will now automatically create entities for high ascii in output.
+
+Changes in version 2.1.5
+- Bug fix by kylotan : infinite loop on some input (tinyxmlparser.cpp rev 1.27)
+- Contributed by Ivica Aracic (bytelord) : 1 new VC++ project to compile versions as static libraries (tinyxml_lib.dsp), 
+  and an example usage in xmltest.dsp
+  (Patch request ID 678605)
+- A suggestion by Ronald Fenner Jr (dormlock) to add #include <istream> and <ostream> for Apple's Project Builder 
+  (Patch request ID 697642)
+- A patch from ohommes that allows to parse correctly dots in element names and attribute names
+  (Patch request 602600 and kylotan 701728)
+- A patch from  hermitgeek ( James ) and wasteland for improper error reporting
+- Reviewed by Lee, with the following changes:
+	- Got sick of fighting the STL/non-STL thing in the windows build. Broke
+	  them out as seperate projects.
+	- I have too long not included the dsw. Added.
+	- TinyXmlText had a protected Print. Odd.
+	- Made LinkEndChild public, with docs and appropriate warnings.
+	- Updated the docs.
+
+2.2.0
+- Fixed an uninitialized pointer in the TiXmlAttributes
+- Fixed STL compilation problem in MinGW (and gcc 3?) - thanks Brian Yoder for finding this one
+- Fixed a syntax error in TiXmlDeclaration - thanks Brian Yoder
+- Fletcher Dunn proposed and submitted new error handling that tracked the row and column. Lee
+  modified it to not have performance impact.
+- General cleanup suggestions from Fletcher Dunn.
+- In error handling, general errors will no longer clear the error state of specific ones.
+- Fix error in documentation : comments starting with "<?--" instead of "<!--" (thanks ion_pulse)
+- Added the TiXmlHandle. An easy, safe way to browse XML DOMs with less code.
+- Added QueryAttribute calls which have better error messaging. (Proposed by Fletcher Dunn)
+- Nodes and attributes can now print themselves to strings. (Yves suggestion)
+- Fixed bug where entities with one character would confuse parser. (Thanks Roman)
+
+2.2.1
+- Additional testing (no more bugs found to be fixed in this release)
+- Significant performance improvement to the cursor code.
+
+2.3.0
+- User Data are now defined in TiXmlBase instead of TiXmlNode
+- Character Entities are now UCS-2
+- Character Entities can be decimal or hexadecimal
+- UTF-8 conversion.
+- Fixed many, many bugs.
+
+2.3.1
+- Fixed bug in handling nulls embedded in the input.
+- Make UTF-8 parser tolerant of bad text encoding.
+- Added encoding detection. 
+- Many fixes and input from John-Philip Leonard Johansson (JP) and Ellers, 
+  including UTF-8 feedback, bug reports, and patches. Thanks!
+- Added version # constants - a suggestion from JP and Ellers.
+- [ 979180 ] Missing ; in entity reference, fix from Rob Laveaux.
+- Copy constructors and assignment have been a long time coming. Thanks to
+  Fokke and JP.
+
+2.3.2
+- Made the IsAlpha and IsAlphaNum much more tolerant of non-UTF-8 encodings. Thanks
+  Volker Boerchers for finding the issue.
+- Ran the program though the magnificent Valgrind - http://valgrind.kde.org - to check
+  for memory errors. Fixed some minor issues.
+
+2.3.3
+- Fixed crash when test program was run from incorrect directory.
+- Fixed bug 1070717 - empty document not returned correctly - thanks Katsuhisa Yuasa.
+- Bug 1079301 resolved - deprecated stdlib calls. Thanks Adrian Boeing.
+- Bug 1035218 fixed - documentation errors. Xunji Luo
+- Other bug fixes have accumulated and been fixed on the way as well; my apologies to
+  authors not credited!
+- Big fix / addition is to correctly return const values. TinyXml could basically
+  remove const in a method like this: TiXmlElement* Foo() const, where the returned element
+  was a pointer to internal data. That is now: const TiXmlElement* Foo() const and
+  TiXmlElement* Foo().
+
+2.3.4
+- Fixed additional const errors, thanks Kent Gibson.
+- Correctly re-enable warnings after tinyxml header. Thanks Cory Nelson.
+- Variety of type cleanup and warning fixes. Thanks Warren Stevens.
+- Cleaned up unneeded constructor calls in TinyString - thanks to Geoff Carlton and
+  the discussion group on sourceforge.
+
+2.4.0
+- Improved string class, thanks Tyge Lovset (whose name gets mangled in English - sorry)
+- Type cast compiler warning, thanks Rob van den Bogaard
+- Added GetText() convenience function. Thanks Ilya Parniuk & Andrew Ellers for input.
+- Many thanks to marlonism for finding an infinite loop in bad xml.
+- A patch to cleanup warnings from Robert Gebis.
+- Added ValueStr() to get the value of a node as a string.
+- TiXmlText can now parse and output as CDATA
+- Additional string improvement from James (z2895)
+- Removed extraneous 'const', thanks David Aldrich
+- First pass at switching to the "safe" stdlib functions. Many people have suggested and
+  pushed on this, but Warren Stevens put together the first proposal.
+- TinyXml now will do EOL normalization before parsing, consistent with the W3C XML spec.
+- Documents loaded with the UTF-8 BOM will now save with the UTF-8 BOM. Good suggestion 
+  from 'instructor_'
+- Ellers submitted his very popular tutorials, which have been added to the distribution.
+
+2.4.1
+- Fixed CDATA output formatting
+- Fixed memory allocators in TinyString to work with overloaded new/delete
+
+2.4.2
+- solosnake pointed out that TIXML_LOG causes problems on an XBOX. The definition in the header
+  was superflous and was moved inside of DEBUG_PARSING
+
+2.4.3
+- Fixed a test bug that caused a crash in 'xmltest'. TinyXML was fine, but it isn't good
+  to ship with a broken test suite.
+- Started converting some functions to not cast between std::string and const char* 
+  quite as often.
+- Added FILE* versions of the document loads - good suggestion from Wade Brainerd
+- Empty documents might not always return the errors they should. [1398915] Thanks to igor v.
+- Added some asserts for multiply adding a node, regardng bug [1391937] suggested by Paco Arjonilla.
+
+2.4.4
+- Bug find thanks to andre-gross found a memory leak that occured when a document failed to load.
+- Bug find (and good analysis) by VirtualJim who found a case where attribute parsing 
+  should be throwing an error and wasn't.
+- Steve Hyatt suggested the QueryValueAttribute method, which is now implemented.
+- DavidA identified a chunk of dead code.
+- Andrew Baxter sent in some compiler warnings that were good clean up points.
+
+2.5
+- Added the Visit() API. Many thanks to both Andrew Ellerton and John-Philip for all their
+  work, code, suggestion, and just general pushing that it should be done.
+- Removed existing streaming code and use TiXmlPrinter instead.
+- [ tinyxml-Bugs-1527079 ] Compile error in tinystr.cpp fixed, thanks to Paul Suggs
+- [ tinyxml-Bugs-1522890 ] SaveFile has no error checks fixed, thanks to Ivan Dobrokotov
+- Ivan Dobrokotov also reported redundant memory allocation in the Attribute() method, which
+  upon investigation was a mess. The attribute should now be fixed for both const char* and 
+  std::string, and the return types match the input parameters.
+- Feature [ 1511105 ] Make TiXmlComment constructor accept a string / char*, implemented.
+  Thanks to Karl Itschen for the feedback.
+- [ 1480108 ] Stream parsing fails when CDATA contains tags was found by Tobias Grimm, who also
+  submitted a test case and patch. A significant bug in CDATA streaming (operator>>) has now
+  been fixed.
+
+2.5.2
+- Lieven, and others, pointed out a missing const-cast that upset the Open Watcom compiler.
+  Should now be fixed.
+- ErrorRow and ErrorCol should have been const, and weren't. Fixed thanks to Dmitry Polutov.
Index: /ogreode/tinyxml/readme.txt
===================================================================
--- /ogreode/tinyxml/readme.txt	(revision 21)
+++ /ogreode/tinyxml/readme.txt	(revision 21)
@@ -0,0 +1,530 @@
+/** @mainpage
+
+<h1> TinyXML </h1>
+
+TinyXML is a simple, small, C++ XML parser that can be easily 
+integrated into other programs.
+
+<h2> What it does. </h2>
+	
+In brief, TinyXML parses an XML document, and builds from that a 
+Document Object Model (DOM) that can be read, modified, and saved.
+
+XML stands for "eXtensible Markup Language." It allows you to create 
+your own document markups. Where HTML does a very good job of marking 
+documents for browsers, XML allows you to define any kind of document 
+markup, for example a document that describes a "to do" list for an 
+organizer application. XML is a very structured and convenient format.
+All those random file formats created to store application data can 
+all be replaced with XML. One parser for everything.
+
+The best place for the complete, correct, and quite frankly hard to
+read spec is at <a href="http://www.w3.org/TR/2004/REC-xml-20040204/">
+http://www.w3.org/TR/2004/REC-xml-20040204/</a>. An intro to XML
+(that I really like) can be found at 
+<a href="http://skew.org/xml/tutorial/">http://skew.org/xml/tutorial</a>.
+
+There are different ways to access and interact with XML data.
+TinyXML uses a Document Object Model (DOM), meaning the XML data is parsed
+into a C++ objects that can be browsed and manipulated, and then 
+written to disk or another output stream. You can also construct an XML document 
+from scratch with C++ objects and write this to disk or another output
+stream.
+
+TinyXML is designed to be easy and fast to learn. It is two headers 
+and four cpp files. Simply add these to your project and off you go. 
+There is an example file - xmltest.cpp - to get you started. 
+
+TinyXML is released under the ZLib license, 
+so you can use it in open source or commercial code. The details
+of the license are at the top of every source file.
+
+TinyXML attempts to be a flexible parser, but with truly correct and
+compliant XML output. TinyXML should compile on any reasonably C++
+compliant system. It does not rely on exceptions or RTTI. It can be 
+compiled with or without STL support. TinyXML fully supports
+the UTF-8 encoding, and the first 64k character entities.
+
+
+<h2> What it doesn't do. </h2>
+
+TinyXML doesn't parse or use DTDs (Document Type Definitions) or XSLs
+(eXtensible Stylesheet Language.) There are other parsers out there 
+(check out www.sourceforge.org, search for XML) that are much more fully
+featured. But they are also much bigger, take longer to set up in
+your project, have a higher learning curve, and often have a more
+restrictive license. If you are working with browsers or have more
+complete XML needs, TinyXML is not the parser for you.
+
+The following DTD syntax will not parse at this time in TinyXML:
+
+@verbatim
+	<!DOCTYPE Archiv [
+	 <!ELEMENT Comment (#PCDATA)>
+	]>
+@endverbatim
+
+because TinyXML sees this as a !DOCTYPE node with an illegally 
+embedded !ELEMENT node. This may be addressed in the future.
+
+<h2> Tutorials. </h2>
+
+For the impatient, here is a tutorial to get you going. A great way to get started, 
+but it is worth your time to read this (very short) manual completely.
+
+- @subpage tutorial0
+
+<h2> Code Status.  </h2>
+
+TinyXML is mature, tested code. It is very stable. If you find
+bugs, please file a bug report on the sourceforge web site
+(www.sourceforge.net/projects/tinyxml). We'll get them straightened 
+out as soon as possible.
+
+There are some areas of improvement; please check sourceforge if you are
+interested in working on TinyXML.
+
+<h2> Related Projects </h2>
+
+TinyXML projects you may find useful! (Descriptions provided by the projects.)
+
+<ul>
+<li> <b>TinyXPath</b> (http://tinyxpath.sourceforge.net). TinyXPath is a small footprint 
+     XPath syntax decoder, written in C++.</li>
+<li> <b>TinyXML++</b> (http://code.google.com/p/ticpp/). TinyXML++ is a completely new 
+     interface to TinyXML that uses MANY of the C++ strengths. Templates, 
+	 exceptions, and much better error handling.</li>
+</ul>
+
+<h2> Features </h2>
+
+<h3> Using STL </h3>
+
+TinyXML can be compiled to use or not use STL. When using STL, TinyXML
+uses the std::string class, and fully supports std::istream, std::ostream,
+operator<<, and operator>>. Many API methods have both 'const char*' and
+'const std::string&' forms.
+
+When STL support is compiled out, no STL files are included whatsoever. All
+the string classes are implemented by TinyXML itself. API methods
+all use the 'const char*' form for input.
+
+Use the compile time #define:
+
+	TIXML_USE_STL
+
+to compile one version or the other. This can be passed by the compiler,
+or set as the first line of "tinyxml.h".
+
+Note: If compiling the test code in Linux, setting the environment
+variable TINYXML_USE_STL=YES/NO will control STL compilation. In the
+Windows project file, STL and non STL targets are provided. In your project,
+It's probably easiest to add the line "#define TIXML_USE_STL" as the first
+line of tinyxml.h.
+
+<h3> UTF-8 </h3>
+
+TinyXML supports UTF-8 allowing to manipulate XML files in any language. TinyXML
+also supports "legacy mode" - the encoding used before UTF-8 support and
+probably best described as "extended ascii".
+
+Normally, TinyXML will try to detect the correct encoding and use it. However,
+by setting the value of TIXML_DEFAULT_ENCODING in the header file, TinyXML
+can be forced to always use one encoding.
+
+TinyXML will assume Legacy Mode until one of the following occurs:
+<ol>
+	<li> If the non-standard but common "UTF-8 lead bytes" (0xef 0xbb 0xbf)
+		 begin the file or data stream, TinyXML will read it as UTF-8. </li>
+	<li> If the declaration tag is read, and it has an encoding="UTF-8", then
+		 TinyXML will read it as UTF-8. </li>
+	<li> If the declaration tag is read, and it has no encoding specified, then TinyXML will 
+		 read it as UTF-8. </li>
+	<li> If the declaration tag is read, and it has an encoding="something else", then TinyXML 
+		 will read it as Legacy Mode. In legacy mode, TinyXML will work as it did before. It's 
+		 not clear what that mode does exactly, but old content should keep working.</li>
+	<li> Until one of the above criteria is met, TinyXML runs in Legacy Mode.</li>
+</ol>
+
+What happens if the encoding is incorrectly set or detected? TinyXML will try
+to read and pass through text seen as improperly encoded. You may get some strange results or 
+mangled characters. You may want to force TinyXML to the correct mode.
+
+You may force TinyXML to Legacy Mode by using LoadFile( TIXML_ENCODING_LEGACY ) or
+LoadFile( filename, TIXML_ENCODING_LEGACY ). You may force it to use legacy mode all
+the time by setting TIXML_DEFAULT_ENCODING = TIXML_ENCODING_LEGACY. Likewise, you may 
+force it to TIXML_ENCODING_UTF8 with the same technique.
+
+For English users, using English XML, UTF-8 is the same as low-ASCII. You
+don't need to be aware of UTF-8 or change your code in any way. You can think
+of UTF-8 as a "superset" of ASCII.
+
+UTF-8 is not a double byte format - but it is a standard encoding of Unicode!
+TinyXML does not use or directly support wchar, TCHAR, or Microsoft's _UNICODE at this time. 
+It is common to see the term "Unicode" improperly refer to UTF-16, a wide byte encoding
+of unicode. This is a source of confusion.
+
+For "high-ascii" languages - everything not English, pretty much - TinyXML can
+handle all languages, at the same time, as long as the XML is encoded
+in UTF-8. That can be a little tricky, older programs and operating systems
+tend to use the "default" or "traditional" code page. Many apps (and almost all
+modern ones) can output UTF-8, but older or stubborn (or just broken) ones
+still output text in the default code page. 
+
+For example, Japanese systems traditionally use SHIFT-JIS encoding. 
+Text encoded as SHIFT-JIS can not be read by TinyXML. 
+A good text editor can import SHIFT-JIS and then save as UTF-8.
+
+The <a href="http://skew.org/xml/tutorial/">Skew.org link</a> does a great
+job covering the encoding issue.
+
+The test file "utf8test.xml" is an XML containing English, Spanish, Russian,
+and Simplified Chinese. (Hopefully they are translated correctly). The file
+"utf8test.gif" is a screen capture of the XML file, rendered in IE. Note that
+if you don't have the correct fonts (Simplified Chinese or Russian) on your
+system, you won't see output that matches the GIF file even if you can parse
+it correctly. Also note that (at least on my Windows machine) console output
+is in a Western code page, so that Print() or printf() cannot correctly display
+the file. This is not a bug in TinyXML - just an OS issue. No data is lost or 
+destroyed by TinyXML. The console just doesn't render UTF-8.
+
+
+<h3> Entities </h3>
+TinyXML recognizes the pre-defined "character entities", meaning special
+characters. Namely:
+
+@verbatim
+	&amp;	&
+	&lt;	<
+	&gt;	>
+	&quot;	"
+	&apos;	'
+@endverbatim
+
+These are recognized when the XML document is read, and translated to there
+UTF-8 equivalents. For instance, text with the XML of:
+
+@verbatim
+	Far &amp; Away
+@endverbatim
+
+will have the Value() of "Far & Away" when queried from the TiXmlText object,
+and will be written back to the XML stream/file as an ampersand. Older versions
+of TinyXML "preserved" character entities, but the newer versions will translate
+them into characters.
+
+Additionally, any character can be specified by its Unicode code point:
+The syntax "&#xA0;" or "&#160;" are both to the non-breaking space characher.
+
+<h3> Printing </h3>
+TinyXML can print output in several different ways that all have strengths and limitations.
+
+- Print( FILE* ). Output to a std-C stream, which includes all C files as well as stdout.
+	- "Pretty prints", but you don't have control over printing options.
+	- The output is streamed directly to the FILE object, so there is no memory overhead
+	  in the TinyXML code.
+	- used by Print() and SaveFile()
+
+- operator<<. Output to a c++ stream.
+	- Integrates with standart C++ iostreams.
+	- Outputs in "network printing" mode without line breaks. Good for network transmission
+	  and moving XML between C++ objects, but hard for a human to read.
+
+- TiXmlPrinter. Output to a std::string or memory buffer.
+	- API is less concise
+	- Future printing options will be put here.
+	- Printing may change slightly in future versions as it is refined and expanded.
+
+<h3> Streams </h3>
+With TIXML_USE_STL on TinyXML supports C++ streams (operator <<,>>) streams as well
+as C (FILE*) streams. There are some differences that you may need to be aware of.
+
+C style output:
+	- based on FILE*
+	- the Print() and SaveFile() methods
+
+	Generates formatted output, with plenty of white space, intended to be as 
+	human-readable as possible. They are very fast, and tolerant of ill formed 
+	XML documents. For example, an XML document that contains 2 root elements 
+	and 2 declarations, will still print.
+
+C style input:
+	- based on FILE*
+	- the Parse() and LoadFile() methods
+
+	A fast, tolerant read. Use whenever you don't need the C++ streams.
+
+C++ style output:
+	- based on std::ostream
+	- operator<<
+
+	Generates condensed output, intended for network transmission rather than
+	readability. Depending on your system's implementation of the ostream class,
+	these may be somewhat slower. (Or may not.) Not tolerant of ill formed XML:
+	a document should contain the correct one root element. Additional root level
+	elements will not be streamed out.
+
+C++ style input:
+	- based on std::istream
+	- operator>>
+
+	Reads XML from a stream, making it useful for network transmission. The tricky
+	part is knowing when the XML document is complete, since there will almost
+	certainly be other data in the stream. TinyXML will assume the XML data is
+	complete after it reads the root element. Put another way, documents that
+	are ill-constructed with more than one root element will not read correctly.
+	Also note that operator>> is somewhat slower than Parse, due to both 
+	implementation of the STL and limitations of TinyXML.
+
+<h3> White space </h3>
+The world simply does not agree on whether white space should be kept, or condensed.
+For example, pretend the '_' is a space, and look at "Hello____world". HTML, and 
+at least some XML parsers, will interpret this as "Hello_world". They condense white
+space. Some XML parsers do not, and will leave it as "Hello____world". (Remember
+to keep pretending the _ is a space.) Others suggest that __Hello___world__ should become
+Hello___world.
+
+It's an issue that hasn't been resolved to my satisfaction. TinyXML supports the
+first 2 approaches. Call TiXmlBase::SetCondenseWhiteSpace( bool ) to set the desired behavior.
+The default is to condense white space.
+
+If you change the default, you should call TiXmlBase::SetCondenseWhiteSpace( bool )
+before making any calls to Parse XML data, and I don't recommend changing it after
+it has been set.
+
+
+<h3> Handles </h3>
+
+Where browsing an XML document in a robust way, it is important to check
+for null returns from method calls. An error safe implementation can
+generate a lot of code like:
+
+@verbatim
+TiXmlElement* root = document.FirstChildElement( "Document" );
+if ( root )
+{
+	TiXmlElement* element = root->FirstChildElement( "Element" );
+	if ( element )
+	{
+		TiXmlElement* child = element->FirstChildElement( "Child" );
+		if ( child )
+		{
+			TiXmlElement* child2 = child->NextSiblingElement( "Child" );
+			if ( child2 )
+			{
+				// Finally do something useful.
+@endverbatim
+
+Handles have been introduced to clean this up. Using the TiXmlHandle class,
+the previous code reduces to:
+
+@verbatim
+TiXmlHandle docHandle( &document );
+TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement();
+if ( child2 )
+{
+	// do something useful
+@endverbatim
+
+Which is much easier to deal with. See TiXmlHandle for more information.
+
+
+<h3> Row and Column tracking </h3>
+Being able to track nodes and attributes back to their origin location
+in source files can be very important for some applications. Additionally,
+knowing where parsing errors occured in the original source can be very
+time saving.
+
+TinyXML can tracks the row and column origin of all nodes and attributes
+in a text file. The TiXmlBase::Row() and TiXmlBase::Column() methods return
+the origin of the node in the source text. The correct tabs can be 
+configured in TiXmlDocument::SetTabSize().
+
+
+<h2> Using and Installing </h2>
+
+To Compile and Run xmltest:
+
+A Linux Makefile and a Windows Visual C++ .dsw file is provided. 
+Simply compile and run. It will write the file demotest.xml to your 
+disk and generate output on the screen. It also tests walking the
+DOM by printing out the number of nodes found using different 
+techniques.
+
+The Linux makefile is very generic and runs on many systems - it 
+is currently tested on mingw and
+MacOSX. You do not need to run 'make depend'. The dependecies have been
+hard coded.
+
+<h3>Windows project file for VC6</h3>
+<ul>
+<li>tinyxml:		tinyxml library, non-STL </li>
+<li>tinyxmlSTL:		tinyxml library, STL </li>
+<li>tinyXmlTest:	test app, non-STL </li>
+<li>tinyXmlTestSTL: test app, STL </li>
+</ul>
+
+<h3>Makefile</h3>
+At the top of the makefile you can set:
+
+PROFILE, DEBUG, and TINYXML_USE_STL. Details (such that they are) are in
+the makefile.
+
+In the tinyxml directory, type "make clean" then "make". The executable
+file 'xmltest' will be created.
+
+
+
+<h3>To Use in an Application:</h3>
+
+Add tinyxml.cpp, tinyxml.h, tinyxmlerror.cpp, tinyxmlparser.cpp, tinystr.cpp, and tinystr.h to your
+project or make file. That's it! It should compile on any reasonably
+compliant C++ system. You do not need to enable exceptions or
+RTTI for TinyXML.
+
+
+<h2> How TinyXML works.  </h2>
+
+An example is probably the best way to go. Take:
+@verbatim
+	<?xml version="1.0" standalone=no>
+	<!-- Our to do list data -->
+	<ToDo>
+		<Item priority="1"> Go to the <bold>Toy store!</bold></Item>
+		<Item priority="2"> Do bills</Item>
+	</ToDo>
+@endverbatim
+
+Its not much of a To Do list, but it will do. To read this file 
+(say "demo.xml") you would create a document, and parse it in:
+@verbatim
+	TiXmlDocument doc( "demo.xml" );
+	doc.LoadFile();
+@endverbatim
+
+And its ready to go. Now lets look at some lines and how they 
+relate to the DOM.
+
+@verbatim
+<?xml version="1.0" standalone=no>
+@endverbatim
+
+	The first line is a declaration, and gets turned into the
+	TiXmlDeclaration class. It will be the first child of the
+	document node.
+	
+	This is the only directive/special tag parsed by by TinyXML.
+	Generally directive tags are stored in TiXmlUnknown so the 
+	commands wont be lost when it is saved back to disk.
+
+@verbatim
+<!-- Our to do list data -->
+@endverbatim
+
+	A comment. Will become a TiXmlComment object.
+
+@verbatim
+<ToDo>
+@endverbatim
+
+	The "ToDo" tag defines a TiXmlElement object. This one does not have 
+	any attributes, but does contain 2 other elements.
+
+@verbatim
+<Item priority="1"> 
+@endverbatim
+
+	Creates another TiXmlElement which is a child of the "ToDo" element. 
+	This element has 1 attribute, with the name "priority" and the value 
+	"1".
+
+@verbatim
+Go to the
+@endverbatim 
+
+	A TiXmlText. This is a leaf node and cannot contain other nodes. 
+	It is a child of the "Item" TiXmlElement.
+
+@verbatim
+<bold>
+@endverbatim
+
+	
+	Another TiXmlElement, this one a child of the "Item" element.
+
+Etc.
+
+Looking at the entire object tree, you end up with:
+@verbatim
+TiXmlDocument					"demo.xml"
+	TiXmlDeclaration			"version='1.0'" "standalone=no"
+	TiXmlComment				" Our to do list data"
+	TiXmlElement				"ToDo"
+		TiXmlElement			"Item" Attribtutes: priority = 1
+			TiXmlText			"Go to the "
+			TiXmlElement		"bold"
+				TiXmlText		"Toy store!"
+		TiXmlElement			"Item" Attributes: priority=2
+			TiXmlText			"Do bills"
+@endverbatim
+
+<h2> Documentation </h2>
+
+The documentation is build with Doxygen, using the 'dox' 
+configuration file.
+
+<h2> License </h2>
+
+TinyXML is released under the zlib license:
+
+This software is provided 'as-is', without any express or implied 
+warranty. In no event will the authors be held liable for any 
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any 
+purpose, including commercial applications, and to alter it and 
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must 
+not claim that you wrote the original software. If you use this 
+software in a product, an acknowledgment in the product documentation 
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and 
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source 
+distribution.
+
+<h2> References  </h2>
+
+The World Wide Web Consortium is the definitive standard body for 
+XML, and there web pages contain huge amounts of information. 
+
+The definitive spec: <a href="http://www.w3.org/TR/2004/REC-xml-20040204/">
+http://www.w3.org/TR/2004/REC-xml-20040204/</a>
+
+I also recommend "XML Pocket Reference" by Robert Eckstein and published by 
+OReilly...the book that got the whole thing started.
+
+<h2> Contributors, Contacts, and a Brief History </h2>
+
+Thanks very much to everyone who sends suggestions, bugs, ideas, and 
+encouragement. It all helps, and makes this project fun. A special thanks
+to the contributors on the web pages that keep it lively.
+
+So many people have sent in bugs and ideas, that rather than list here 
+we try to give credit due in the "changes.txt" file.
+
+TinyXML was originally written by Lee Thomason. (Often the "I" still
+in the documentation.) Lee reviews changes and releases new versions,
+with the help of Yves Berquin, Andrew Ellerton, and the tinyXml community.
+
+We appreciate your suggestions, and would love to know if you 
+use TinyXML. Hopefully you will enjoy it and find it useful. 
+Please post questions, comments, file bugs, or contact us at:
+
+www.sourceforge.net/projects/tinyxml
+
+Lee Thomason, Yves Berquin, Andrew Ellerton
+*/
Index: /ogreode/tinyxml/tinystr.cpp
===================================================================
--- /ogreode/tinyxml/tinystr.cpp	(revision 21)
+++ /ogreode/tinyxml/tinystr.cpp	(revision 21)
@@ -0,0 +1,116 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original file by Yves Berquin.
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+/*
+ * THIS FILE WAS ALTERED BY Tyge Løvset, 7. April 2005.
+ */
+
+
+#ifndef TIXML_USE_STL
+
+#include "tinystr.h"
+
+// Error value for find primitive
+const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1);
+
+
+// Null rep.
+TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, '\0' };
+
+
+void TiXmlString::reserve (size_type cap)
+{
+	if (cap > capacity())
+	{
+		TiXmlString tmp;
+		tmp.init(length(), cap);
+		memcpy(tmp.start(), data(), length());
+		swap(tmp);
+	}
+}
+
+
+TiXmlString& TiXmlString::assign(const char* str, size_type len)
+{
+	size_type cap = capacity();
+	if (len > cap || cap > 3*(len + 8))
+	{
+		TiXmlString tmp;
+		tmp.init(len);
+		memcpy(tmp.start(), str, len);
+		swap(tmp);
+	}
+	else
+	{
+		memmove(start(), str, len);
+		set_size(len);
+	}
+	return *this;
+}
+
+
+TiXmlString& TiXmlString::append(const char* str, size_type len)
+{
+	size_type newsize = length() + len;
+	if (newsize > capacity())
+	{
+		reserve (newsize + capacity());
+	}
+	memmove(finish(), str, len);
+	set_size(newsize);
+	return *this;
+}
+
+
+TiXmlString operator + (const TiXmlString & a, const TiXmlString & b)
+{
+	TiXmlString tmp;
+	tmp.reserve(a.length() + b.length());
+	tmp += a;
+	tmp += b;
+	return tmp;
+}
+
+TiXmlString operator + (const TiXmlString & a, const char* b)
+{
+	TiXmlString tmp;
+	TiXmlString::size_type b_len = static_cast<TiXmlString::size_type>( strlen(b) );
+	tmp.reserve(a.length() + b_len);
+	tmp += a;
+	tmp.append(b, b_len);
+	return tmp;
+}
+
+TiXmlString operator + (const char* a, const TiXmlString & b)
+{
+	TiXmlString tmp;
+	TiXmlString::size_type a_len = static_cast<TiXmlString::size_type>( strlen(a) );
+	tmp.reserve(a_len + b.length());
+	tmp.append(a, a_len);
+	tmp += b;
+	return tmp;
+}
+
+
+#endif	// TIXML_USE_STL
Index: /ogreode/tinyxml/tinystr.h
===================================================================
--- /ogreode/tinyxml/tinystr.h	(revision 21)
+++ /ogreode/tinyxml/tinystr.h	(revision 21)
@@ -0,0 +1,319 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original file by Yves Berquin.
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+/*
+ * THIS FILE WAS ALTERED BY Tyge Lovset, 7. April 2005.
+ *
+ * - completely rewritten. compact, clean, and fast implementation.
+ * - sizeof(TiXmlString) = pointer size (4 bytes on 32-bit systems)
+ * - fixed reserve() to work as per specification.
+ * - fixed buggy compares operator==(), operator<(), and operator>()
+ * - fixed operator+=() to take a const ref argument, following spec.
+ * - added "copy" constructor with length, and most compare operators.
+ * - added swap(), clear(), size(), capacity(), operator+().
+ */
+
+#ifndef TIXML_USE_STL
+
+#ifndef TIXML_STRING_INCLUDED
+#define TIXML_STRING_INCLUDED
+
+#include <assert.h>
+#include <string.h>
+
+/*	The support for explicit isn't that universal, and it isn't really
+	required - it is used to check that the TiXmlString class isn't incorrectly
+	used. Be nice to old compilers and macro it here:
+*/
+#if defined(_MSC_VER) && (_MSC_VER >= 1200 )
+	// Microsoft visual studio, version 6 and higher.
+	#define TIXML_EXPLICIT explicit
+#elif defined(__GNUC__) && (__GNUC__ >= 3 )
+	// GCC version 3 and higher.s
+	#define TIXML_EXPLICIT explicit
+#else
+	#define TIXML_EXPLICIT
+#endif
+
+
+/*
+   TiXmlString is an emulation of a subset of the std::string template.
+   Its purpose is to allow compiling TinyXML on compilers with no or poor STL support.
+   Only the member functions relevant to the TinyXML project have been implemented.
+   The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase
+   a string and there's no more room, we allocate a buffer twice as big as we need.
+*/
+class TiXmlString
+{
+  public :
+	// The size type used
+  	typedef size_t size_type;
+
+	// Error value for find primitive
+	static const size_type npos; // = -1;
+
+
+	// TiXmlString empty constructor
+	TiXmlString () : rep_(&nullrep_)
+	{
+	}
+
+	// TiXmlString copy constructor
+	TiXmlString ( const TiXmlString & copy) : rep_(0)
+	{
+		init(copy.length());
+		memcpy(start(), copy.data(), length());
+	}
+
+	// TiXmlString constructor, based on a string
+	TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0)
+	{
+		init( static_cast<size_type>( strlen(copy) ));
+		memcpy(start(), copy, length());
+	}
+
+	// TiXmlString constructor, based on a string
+	TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0)
+	{
+		init(len);
+		memcpy(start(), str, len);
+	}
+
+	// TiXmlString destructor
+	~TiXmlString ()
+	{
+		quit();
+	}
+
+	// = operator
+	TiXmlString& operator = (const char * copy)
+	{
+		return assign( copy, (size_type)strlen(copy));
+	}
+
+	// = operator
+	TiXmlString& operator = (const TiXmlString & copy)
+	{
+		return assign(copy.start(), copy.length());
+	}
+
+
+	// += operator. Maps to append
+	TiXmlString& operator += (const char * suffix)
+	{
+		return append(suffix, static_cast<size_type>( strlen(suffix) ));
+	}
+
+	// += operator. Maps to append
+	TiXmlString& operator += (char single)
+	{
+		return append(&single, 1);
+	}
+
+	// += operator. Maps to append
+	TiXmlString& operator += (const TiXmlString & suffix)
+	{
+		return append(suffix.data(), suffix.length());
+	}
+
+
+	// Convert a TiXmlString into a null-terminated char *
+	const char * c_str () const { return rep_->str; }
+
+	// Convert a TiXmlString into a char * (need not be null terminated).
+	const char * data () const { return rep_->str; }
+
+	// Return the length of a TiXmlString
+	size_type length () const { return rep_->size; }
+
+	// Alias for length()
+	size_type size () const { return rep_->size; }
+
+	// Checks if a TiXmlString is empty
+	bool empty () const { return rep_->size == 0; }
+
+	// Return capacity of string
+	size_type capacity () const { return rep_->capacity; }
+
+
+	// single char extraction
+	const char& at (size_type index) const
+	{
+		assert( index < length() );
+		return rep_->str[ index ];
+	}
+
+	// [] operator
+	char& operator [] (size_type index) const
+	{
+		assert( index < length() );
+		return rep_->str[ index ];
+	}
+
+	// find a char in a string. Return TiXmlString::npos if not found
+	size_type find (char lookup) const
+	{
+		return find(lookup, 0);
+	}
+
+	// find a char in a string from an offset. Return TiXmlString::npos if not found
+	size_type find (char tofind, size_type offset) const
+	{
+		if (offset >= length()) return npos;
+
+		for (const char* p = c_str() + offset; *p != '\0'; ++p)
+		{
+		   if (*p == tofind) return static_cast< size_type >( p - c_str() );
+		}
+		return npos;
+	}
+
+	void clear ()
+	{
+		//Lee:
+		//The original was just too strange, though correct:
+		//	TiXmlString().swap(*this);
+		//Instead use the quit & re-init:
+		quit();
+		init(0,0);
+	}
+
+	/*	Function to reserve a big amount of data when we know we'll need it. Be aware that this
+		function DOES NOT clear the content of the TiXmlString if any exists.
+	*/
+	void reserve (size_type cap);
+
+	TiXmlString& assign (const char* str, size_type len);
+
+	TiXmlString& append (const char* str, size_type len);
+
+	void swap (TiXmlString& other)
+	{
+		Rep* r = rep_;
+		rep_ = other.rep_;
+		other.rep_ = r;
+	}
+
+  private:
+
+	void init(size_type sz) { init(sz, sz); }
+	void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; }
+	char* start() const { return rep_->str; }
+	char* finish() const { return rep_->str + rep_->size; }
+
+	struct Rep
+	{
+		size_type size, capacity;
+		char str[1];
+	};
+
+	void init(size_type sz, size_type cap)
+	{
+		if (cap)
+		{
+			// Lee: the original form:
+			//	rep_ = static_cast<Rep*>(operator new(sizeof(Rep) + cap));
+			// doesn't work in some cases of new being overloaded. Switching
+			// to the normal allocation, although use an 'int' for systems
+			// that are overly picky about structure alignment.
+			const size_type bytesNeeded = sizeof(Rep) + cap;
+			const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int ); 
+			rep_ = reinterpret_cast<Rep*>( new int[ intsNeeded ] );
+
+			rep_->str[ rep_->size = sz ] = '\0';
+			rep_->capacity = cap;
+		}
+		else
+		{
+			rep_ = &nullrep_;
+		}
+	}
+
+	void quit()
+	{
+		if (rep_ != &nullrep_)
+		{
+			// The rep_ is really an array of ints. (see the allocator, above).
+			// Cast it back before delete, so the compiler won't incorrectly call destructors.
+			delete [] ( reinterpret_cast<int*>( rep_ ) );
+		}
+	}
+
+	Rep * rep_;
+	static Rep nullrep_;
+
+} ;
+
+
+inline bool operator == (const TiXmlString & a, const TiXmlString & b)
+{
+	return    ( a.length() == b.length() )				// optimization on some platforms
+	       && ( strcmp(a.c_str(), b.c_str()) == 0 );	// actual compare
+}
+inline bool operator < (const TiXmlString & a, const TiXmlString & b)
+{
+	return strcmp(a.c_str(), b.c_str()) < 0;
+}
+
+inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); }
+inline bool operator >  (const TiXmlString & a, const TiXmlString & b) { return b < a; }
+inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); }
+inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); }
+
+inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; }
+inline bool operator == (const char* a, const TiXmlString & b) { return b == a; }
+inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); }
+inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); }
+
+TiXmlString operator + (const TiXmlString & a, const TiXmlString & b);
+TiXmlString operator + (const TiXmlString & a, const char* b);
+TiXmlString operator + (const char* a, const TiXmlString & b);
+
+
+/*
+   TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString.
+   Only the operators that we need for TinyXML have been developped.
+*/
+class TiXmlOutStream : public TiXmlString
+{
+public :
+
+	// TiXmlOutStream << operator.
+	TiXmlOutStream & operator << (const TiXmlString & in)
+	{
+		*this += in;
+		return *this;
+	}
+
+	// TiXmlOutStream << operator.
+	TiXmlOutStream & operator << (const char * in)
+	{
+		*this += in;
+		return *this;
+	}
+
+} ;
+
+#endif	// TIXML_STRING_INCLUDED
+#endif	// TIXML_USE_STL
Index: /ogreode/tinyxml/tinyxml.cpp
===================================================================
--- /ogreode/tinyxml/tinyxml.cpp	(revision 21)
+++ /ogreode/tinyxml/tinyxml.cpp	(revision 21)
@@ -0,0 +1,1866 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+#include <ctype.h>
+
+#ifdef TIXML_USE_STL
+#include <sstream>
+#include <iostream>
+#endif
+
+#include "tinyxml.h"
+
+
+bool TiXmlBase::condenseWhiteSpace = true;
+
+void TiXmlBase::PutString( const TIXML_STRING& str, TIXML_STRING* outString )
+{
+	int i=0;
+
+	while( i<(int)str.length() )
+	{
+		unsigned char c = (unsigned char) str[i];
+
+		if (    c == '&' 
+		     && i < ( (int)str.length() - 2 )
+			 && str[i+1] == '#'
+			 && str[i+2] == 'x' )
+		{
+			// Hexadecimal character reference.
+			// Pass through unchanged.
+			// &#xA9;	-- copyright symbol, for example.
+			//
+			// The -1 is a bug fix from Rob Laveaux. It keeps
+			// an overflow from happening if there is no ';'.
+			// There are actually 2 ways to exit this loop -
+			// while fails (error case) and break (semicolon found).
+			// However, there is no mechanism (currently) for
+			// this function to return an error.
+			while ( i<(int)str.length()-1 )
+			{
+				outString->append( str.c_str() + i, 1 );
+				++i;
+				if ( str[i] == ';' )
+					break;
+			}
+		}
+		else if ( c == '&' )
+		{
+			outString->append( entity[0].str, entity[0].strLength );
+			++i;
+		}
+		else if ( c == '<' )
+		{
+			outString->append( entity[1].str, entity[1].strLength );
+			++i;
+		}
+		else if ( c == '>' )
+		{
+			outString->append( entity[2].str, entity[2].strLength );
+			++i;
+		}
+		else if ( c == '\"' )
+		{
+			outString->append( entity[3].str, entity[3].strLength );
+			++i;
+		}
+		else if ( c == '\'' )
+		{
+			outString->append( entity[4].str, entity[4].strLength );
+			++i;
+		}
+		else if ( c < 32 )
+		{
+			// Easy pass at non-alpha/numeric/symbol
+			// Below 32 is symbolic.
+			char buf[ 32 ];
+			
+			#if defined(TIXML_SNPRINTF)		
+				TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) );
+			#else
+				sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) );
+			#endif		
+
+			//*ME:	warning C4267: convert 'size_t' to 'int'
+			//*ME:	Int-Cast to make compiler happy ...
+			outString->append( buf, (int)strlen( buf ) );
+			++i;
+		}
+		else
+		{
+			//char realc = (char) c;
+			//outString->append( &realc, 1 );
+			*outString += (char) c;	// somewhat more efficient function call.
+			++i;
+		}
+	}
+}
+
+
+TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase()
+{
+	parent = 0;
+	type = _type;
+	firstChild = 0;
+	lastChild = 0;
+	prev = 0;
+	next = 0;
+}
+
+
+TiXmlNode::~TiXmlNode()
+{
+	TiXmlNode* node = firstChild;
+	TiXmlNode* temp = 0;
+
+	while ( node )
+	{
+		temp = node;
+		node = node->next;
+		delete temp;
+	}	
+}
+
+
+void TiXmlNode::CopyTo( TiXmlNode* target ) const
+{
+	target->SetValue (value.c_str() );
+	target->userData = userData; 
+}
+
+
+void TiXmlNode::Clear()
+{
+	TiXmlNode* node = firstChild;
+	TiXmlNode* temp = 0;
+
+	while ( node )
+	{
+		temp = node;
+		node = node->next;
+		delete temp;
+	}	
+
+	firstChild = 0;
+	lastChild = 0;
+}
+
+
+TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node )
+{
+	assert( node->parent == 0 || node->parent == this );
+	assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() );
+
+	if ( node->Type() == TiXmlNode::DOCUMENT )
+	{
+		delete node;
+		if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	node->parent = this;
+
+	node->prev = lastChild;
+	node->next = 0;
+
+	if ( lastChild )
+		lastChild->next = node;
+	else
+		firstChild = node;			// it was an empty list.
+
+	lastChild = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis )
+{
+	if ( addThis.Type() == TiXmlNode::DOCUMENT )
+	{
+		if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+
+	return LinkEndChild( node );
+}
+
+
+TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis )
+{	
+	if ( !beforeThis || beforeThis->parent != this ) {
+		return 0;
+	}
+	if ( addThis.Type() == TiXmlNode::DOCUMENT )
+	{
+		if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+	node->parent = this;
+
+	node->next = beforeThis;
+	node->prev = beforeThis->prev;
+	if ( beforeThis->prev )
+	{
+		beforeThis->prev->next = node;
+	}
+	else
+	{
+		assert( firstChild == beforeThis );
+		firstChild = node;
+	}
+	beforeThis->prev = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis )
+{
+	if ( !afterThis || afterThis->parent != this ) {
+		return 0;
+	}
+	if ( addThis.Type() == TiXmlNode::DOCUMENT )
+	{
+		if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+	node->parent = this;
+
+	node->prev = afterThis;
+	node->next = afterThis->next;
+	if ( afterThis->next )
+	{
+		afterThis->next->prev = node;
+	}
+	else
+	{
+		assert( lastChild == afterThis );
+		lastChild = node;
+	}
+	afterThis->next = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis )
+{
+	if ( replaceThis->parent != this )
+		return 0;
+
+	TiXmlNode* node = withThis.Clone();
+	if ( !node )
+		return 0;
+
+	node->next = replaceThis->next;
+	node->prev = replaceThis->prev;
+
+	if ( replaceThis->next )
+		replaceThis->next->prev = node;
+	else
+		lastChild = node;
+
+	if ( replaceThis->prev )
+		replaceThis->prev->next = node;
+	else
+		firstChild = node;
+
+	delete replaceThis;
+	node->parent = this;
+	return node;
+}
+
+
+bool TiXmlNode::RemoveChild( TiXmlNode* removeThis )
+{
+	if ( removeThis->parent != this )
+	{	
+		assert( 0 );
+		return false;
+	}
+
+	if ( removeThis->next )
+		removeThis->next->prev = removeThis->prev;
+	else
+		lastChild = removeThis->prev;
+
+	if ( removeThis->prev )
+		removeThis->prev->next = removeThis->next;
+	else
+		firstChild = removeThis->next;
+
+	delete removeThis;
+	return true;
+}
+
+const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const
+{
+	const TiXmlNode* node;
+	for ( node = firstChild; node; node = node->next )
+	{
+		if ( strcmp( node->Value(), _value ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const
+{
+	const TiXmlNode* node;
+	for ( node = lastChild; node; node = node->prev )
+	{
+		if ( strcmp( node->Value(), _value ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const
+{
+	if ( !previous )
+	{
+		return FirstChild();
+	}
+	else
+	{
+		assert( previous->parent == this );
+		return previous->NextSibling();
+	}
+}
+
+
+const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const
+{
+	if ( !previous )
+	{
+		return FirstChild( val );
+	}
+	else
+	{
+		assert( previous->parent == this );
+		return previous->NextSibling( val );
+	}
+}
+
+
+const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const 
+{
+	const TiXmlNode* node;
+	for ( node = next; node; node = node->next )
+	{
+		if ( strcmp( node->Value(), _value ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const
+{
+	const TiXmlNode* node;
+	for ( node = prev; node; node = node->prev )
+	{
+		if ( strcmp( node->Value(), _value ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+void TiXmlElement::RemoveAttribute( const char * name )
+{
+    #ifdef TIXML_USE_STL
+	TIXML_STRING str( name );
+	TiXmlAttribute* node = attributeSet.Find( str );
+	#else
+	TiXmlAttribute* node = attributeSet.Find( name );
+	#endif
+	if ( node )
+	{
+		attributeSet.Remove( node );
+		delete node;
+	}
+}
+
+const TiXmlElement* TiXmlNode::FirstChildElement() const
+{
+	const TiXmlNode* node;
+
+	for (	node = FirstChild();
+			node;
+			node = node->NextSibling() )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const
+{
+	const TiXmlNode* node;
+
+	for (	node = FirstChild( _value );
+			node;
+			node = node->NextSibling( _value ) )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+const TiXmlElement* TiXmlNode::NextSiblingElement() const
+{
+	const TiXmlNode* node;
+
+	for (	node = NextSibling();
+			node;
+			node = node->NextSibling() )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const
+{
+	const TiXmlNode* node;
+
+	for (	node = NextSibling( _value );
+			node;
+			node = node->NextSibling( _value ) )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+const TiXmlDocument* TiXmlNode::GetDocument() const
+{
+	const TiXmlNode* node;
+
+	for( node = this; node; node = node->parent )
+	{
+		if ( node->ToDocument() )
+			return node->ToDocument();
+	}
+	return 0;
+}
+
+
+TiXmlElement::TiXmlElement (const char * _value)
+	: TiXmlNode( TiXmlNode::ELEMENT )
+{
+	firstChild = lastChild = 0;
+	value = _value;
+}
+
+
+#ifdef TIXML_USE_STL
+TiXmlElement::TiXmlElement( const std::string& _value ) 
+	: TiXmlNode( TiXmlNode::ELEMENT )
+{
+	firstChild = lastChild = 0;
+	value = _value;
+}
+#endif
+
+
+TiXmlElement::TiXmlElement( const TiXmlElement& copy)
+	: TiXmlNode( TiXmlNode::ELEMENT )
+{
+	firstChild = lastChild = 0;
+	copy.CopyTo( this );	
+}
+
+
+void TiXmlElement::operator=( const TiXmlElement& base )
+{
+	ClearThis();
+	base.CopyTo( this );
+}
+
+
+TiXmlElement::~TiXmlElement()
+{
+	ClearThis();
+}
+
+
+void TiXmlElement::ClearThis()
+{
+	Clear();
+	while( attributeSet.First() )
+	{
+		TiXmlAttribute* node = attributeSet.First();
+		attributeSet.Remove( node );
+		delete node;
+	}
+}
+
+
+const char* TiXmlElement::Attribute( const char* name ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( node )
+		return node->Value();
+	return 0;
+}
+
+
+#ifdef TIXML_USE_STL
+const std::string* TiXmlElement::Attribute( const std::string& name ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( node )
+		return &node->ValueStr();
+	return 0;
+}
+#endif
+
+
+const char* TiXmlElement::Attribute( const char* name, int* i ) const
+{
+	const char* s = Attribute( name );
+	if ( i )
+	{
+		if ( s ) {
+			*i = atoi( s );
+		}
+		else {
+			*i = 0;
+		}
+	}
+	return s;
+}
+
+
+#ifdef TIXML_USE_STL
+const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const
+{
+	const std::string* s = Attribute( name );
+	if ( i )
+	{
+		if ( s ) {
+			*i = atoi( s->c_str() );
+		}
+		else {
+			*i = 0;
+		}
+	}
+	return s;
+}
+#endif
+
+
+const char* TiXmlElement::Attribute( const char* name, double* d ) const
+{
+	const char* s = Attribute( name );
+	if ( d )
+	{
+		if ( s ) {
+			*d = atof( s );
+		}
+		else {
+			*d = 0;
+		}
+	}
+	return s;
+}
+
+
+#ifdef TIXML_USE_STL
+const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const
+{
+	const std::string* s = Attribute( name );
+	if ( d )
+	{
+		if ( s ) {
+			*d = atof( s->c_str() );
+		}
+		else {
+			*d = 0;
+		}
+	}
+	return s;
+}
+#endif
+
+
+int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( !node )
+		return TIXML_NO_ATTRIBUTE;
+	return node->QueryIntValue( ival );
+}
+
+
+#ifdef TIXML_USE_STL
+int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( !node )
+		return TIXML_NO_ATTRIBUTE;
+	return node->QueryIntValue( ival );
+}
+#endif
+
+
+int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( !node )
+		return TIXML_NO_ATTRIBUTE;
+	return node->QueryDoubleValue( dval );
+}
+
+
+#ifdef TIXML_USE_STL
+int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( !node )
+		return TIXML_NO_ATTRIBUTE;
+	return node->QueryDoubleValue( dval );
+}
+#endif
+
+
+void TiXmlElement::SetAttribute( const char * name, int val )
+{	
+	char buf[64];
+	#if defined(TIXML_SNPRINTF)		
+		TIXML_SNPRINTF( buf, sizeof(buf), "%d", val );
+	#else
+		sprintf( buf, "%d", val );
+	#endif
+	SetAttribute( name, buf );
+}
+
+
+#ifdef TIXML_USE_STL
+void TiXmlElement::SetAttribute( const std::string& name, int val )
+{	
+   std::ostringstream oss;
+   oss << val;
+   SetAttribute( name, oss.str() );
+}
+#endif
+
+
+void TiXmlElement::SetDoubleAttribute( const char * name, double val )
+{	
+	char buf[256];
+	#if defined(TIXML_SNPRINTF)		
+		TIXML_SNPRINTF( buf, sizeof(buf), "%f", val );
+	#else
+		sprintf( buf, "%f", val );
+	#endif
+	SetAttribute( name, buf );
+}
+
+
+void TiXmlElement::SetAttribute( const char * cname, const char * cvalue )
+{
+    #ifdef TIXML_USE_STL
+	TIXML_STRING _name( cname );
+	TIXML_STRING _value( cvalue );
+	#else
+	const char* _name = cname;
+	const char* _value = cvalue;
+	#endif
+
+	TiXmlAttribute* node = attributeSet.Find( _name );
+	if ( node )
+	{
+		node->SetValue( _value );
+		return;
+	}
+
+	TiXmlAttribute* attrib = new TiXmlAttribute( cname, cvalue );
+	if ( attrib )
+	{
+		attributeSet.Add( attrib );
+	}
+	else
+	{
+		TiXmlDocument* document = GetDocument();
+		if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, TIXML_ENCODING_UNKNOWN );
+	}
+}
+
+
+#ifdef TIXML_USE_STL
+void TiXmlElement::SetAttribute( const std::string& name, const std::string& _value )
+{
+	TiXmlAttribute* node = attributeSet.Find( name );
+	if ( node )
+	{
+		node->SetValue( _value );
+		return;
+	}
+
+	TiXmlAttribute* attrib = new TiXmlAttribute( name, _value );
+	if ( attrib )
+	{
+		attributeSet.Add( attrib );
+	}
+	else
+	{
+		TiXmlDocument* document = GetDocument();
+		if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, TIXML_ENCODING_UNKNOWN );
+	}
+}
+#endif
+
+
+void TiXmlElement::Print( FILE* cfile, int depth ) const
+{
+	int i;
+	assert( cfile );
+	for ( i=0; i<depth; i++ ) {
+		fprintf( cfile, "    " );
+	}
+
+	fprintf( cfile, "<%s", value.c_str() );
+
+	const TiXmlAttribute* attrib;
+	for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() )
+	{
+		fprintf( cfile, " " );
+		attrib->Print( cfile, depth );
+	}
+
+	// There are 3 different formatting approaches:
+	// 1) An element without children is printed as a <foo /> node
+	// 2) An element with only a text child is printed as <foo> text </foo>
+	// 3) An element with children is printed on multiple lines.
+	TiXmlNode* node;
+	if ( !firstChild )
+	{
+		fprintf( cfile, " />" );
+	}
+	else if ( firstChild == lastChild && firstChild->ToText() )
+	{
+		fprintf( cfile, ">" );
+		firstChild->Print( cfile, depth + 1 );
+		fprintf( cfile, "</%s>", value.c_str() );
+	}
+	else
+	{
+		fprintf( cfile, ">" );
+
+		for ( node = firstChild; node; node=node->NextSibling() )
+		{
+			if ( !node->ToText() )
+			{
+				fprintf( cfile, "\n" );
+			}
+			node->Print( cfile, depth+1 );
+		}
+		fprintf( cfile, "\n" );
+		for( i=0; i<depth; ++i ) {
+			fprintf( cfile, "    " );
+		}
+		fprintf( cfile, "</%s>", value.c_str() );
+	}
+}
+
+
+void TiXmlElement::CopyTo( TiXmlElement* target ) const
+{
+	// superclass:
+	TiXmlNode::CopyTo( target );
+
+	// Element class: 
+	// Clone the attributes, then clone the children.
+	const TiXmlAttribute* attribute = 0;
+	for(	attribute = attributeSet.First();
+	attribute;
+	attribute = attribute->Next() )
+	{
+		target->SetAttribute( attribute->Name(), attribute->Value() );
+	}
+
+	TiXmlNode* node = 0;
+	for ( node = firstChild; node; node = node->NextSibling() )
+	{
+		target->LinkEndChild( node->Clone() );
+	}
+}
+
+bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const
+{
+	if ( visitor->VisitEnter( *this, attributeSet.First() ) ) 
+	{
+		for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() )
+		{
+			if ( !node->Accept( visitor ) )
+				break;
+		}
+	}
+	return visitor->VisitExit( *this );
+}
+
+
+TiXmlNode* TiXmlElement::Clone() const
+{
+	TiXmlElement* clone = new TiXmlElement( Value() );
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+const char* TiXmlElement::GetText() const
+{
+	const TiXmlNode* child = this->FirstChild();
+	if ( child ) {
+		const TiXmlText* childText = child->ToText();
+		if ( childText ) {
+			return childText->Value();
+		}
+	}
+	return 0;
+}
+
+
+TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::DOCUMENT )
+{
+	tabsize = 4;
+	useMicrosoftBOM = false;
+	ClearError();
+}
+
+TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::DOCUMENT )
+{
+	tabsize = 4;
+	useMicrosoftBOM = false;
+	value = documentName;
+	ClearError();
+}
+
+
+#ifdef TIXML_USE_STL
+TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::DOCUMENT )
+{
+	tabsize = 4;
+	useMicrosoftBOM = false;
+    value = documentName;
+	ClearError();
+}
+#endif
+
+
+TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::DOCUMENT )
+{
+	copy.CopyTo( this );
+}
+
+
+void TiXmlDocument::operator=( const TiXmlDocument& copy )
+{
+	Clear();
+	copy.CopyTo( this );
+}
+
+
+bool TiXmlDocument::LoadFile( TiXmlEncoding encoding )
+{
+	// See STL_STRING_BUG below.
+	//StringToBuffer buf( value );
+
+	return LoadFile( Value(), encoding );
+}
+
+
+bool TiXmlDocument::SaveFile() const
+{
+	// See STL_STRING_BUG below.
+//	StringToBuffer buf( value );
+//
+//	if ( buf.buffer && SaveFile( buf.buffer ) )
+//		return true;
+//
+//	return false;
+	return SaveFile( Value() );
+}
+
+bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding )
+{
+	// There was a really terrifying little bug here. The code:
+	//		value = filename
+	// in the STL case, cause the assignment method of the std::string to
+	// be called. What is strange, is that the std::string had the same
+	// address as it's c_str() method, and so bad things happen. Looks
+	// like a bug in the Microsoft STL implementation.
+	// Add an extra string to avoid the crash.
+	TIXML_STRING filename( _filename );
+	value = filename;
+
+	// reading in binary mode so that tinyxml can normalize the EOL
+	FILE* file = fopen( value.c_str (), "rb" );	
+
+	if ( file )
+	{
+		bool result = LoadFile( file, encoding );
+		fclose( file );
+		return result;
+	}
+	else
+	{
+		SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return false;
+	}
+}
+
+bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding )
+{
+	if ( !file ) 
+	{
+		SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return false;
+	}
+
+	// Delete the existing data:
+	Clear();
+	location.Clear();
+
+	// Get the file size, so we can pre-allocate the string. HUGE speed impact.
+	long length = 0;
+	fseek( file, 0, SEEK_END );
+	length = ftell( file );
+	fseek( file, 0, SEEK_SET );
+
+	// Strange case, but good to handle up front.
+	if ( length == 0 )
+	{
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return false;
+	}
+
+	// If we have a file, assume it is all one big XML file, and read it in.
+	// The document parser may decide the document ends sooner than the entire file, however.
+	TIXML_STRING data;
+	data.reserve( length );
+
+	// Subtle bug here. TinyXml did use fgets. But from the XML spec:
+	// 2.11 End-of-Line Handling
+	// <snip>
+	// <quote>
+	// ...the XML processor MUST behave as if it normalized all line breaks in external 
+	// parsed entities (including the document entity) on input, before parsing, by translating 
+	// both the two-character sequence #xD #xA and any #xD that is not followed by #xA to 
+	// a single #xA character.
+	// </quote>
+	//
+	// It is not clear fgets does that, and certainly isn't clear it works cross platform. 
+	// Generally, you expect fgets to translate from the convention of the OS to the c/unix
+	// convention, and not work generally.
+
+	/*
+	while( fgets( buf, sizeof(buf), file ) )
+	{
+		data += buf;
+	}
+	*/
+
+	char* buf = new char[ length+1 ];
+	buf[0] = 0;
+
+	if ( fread( buf, length, 1, file ) != 1 ) {
+		delete [] buf;
+		SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return false;
+	}
+
+	const char* lastPos = buf;
+	const char* p = buf;
+
+	buf[length] = 0;
+	while( *p ) {
+		assert( p < (buf+length) );
+		if ( *p == 0xa ) {
+			// Newline character. No special rules for this. Append all the characters
+			// since the last string, and include the newline.
+			data.append( lastPos, (p-lastPos+1) );	// append, include the newline
+			++p;									// move past the newline
+			lastPos = p;							// and point to the new buffer (may be 0)
+			assert( p <= (buf+length) );
+		}
+		else if ( *p == 0xd ) {
+			// Carriage return. Append what we have so far, then
+			// handle moving forward in the buffer.
+			if ( (p-lastPos) > 0 ) {
+				data.append( lastPos, p-lastPos );	// do not add the CR
+			}
+			data += (char)0xa;						// a proper newline
+
+			if ( *(p+1) == 0xa ) {
+				// Carriage return - new line sequence
+				p += 2;
+				lastPos = p;
+				assert( p <= (buf+length) );
+			}
+			else {
+				// it was followed by something else...that is presumably characters again.
+				++p;
+				lastPos = p;
+				assert( p <= (buf+length) );
+			}
+		}
+		else {
+			++p;
+		}
+	}
+	// Handle any left over characters.
+	if ( p-lastPos ) {
+		data.append( lastPos, p-lastPos );
+	}		
+	delete [] buf;
+	buf = 0;
+
+	Parse( data.c_str(), 0, encoding );
+
+	if (  Error() )
+        return false;
+    else
+		return true;
+}
+
+
+bool TiXmlDocument::SaveFile( const char * filename ) const
+{
+	// The old c stuff lives on...
+	FILE* fp = fopen( filename, "w" );
+	if ( fp )
+	{
+		bool result = SaveFile( fp );
+		fclose( fp );
+		return result;
+	}
+	return false;
+}
+
+
+bool TiXmlDocument::SaveFile( FILE* fp ) const
+{
+	if ( useMicrosoftBOM ) 
+	{
+		const unsigned char TIXML_UTF_LEAD_0 = 0xefU;
+		const unsigned char TIXML_UTF_LEAD_1 = 0xbbU;
+		const unsigned char TIXML_UTF_LEAD_2 = 0xbfU;
+
+		fputc( TIXML_UTF_LEAD_0, fp );
+		fputc( TIXML_UTF_LEAD_1, fp );
+		fputc( TIXML_UTF_LEAD_2, fp );
+	}
+	Print( fp, 0 );
+	return (ferror(fp) == 0);
+}
+
+
+void TiXmlDocument::CopyTo( TiXmlDocument* target ) const
+{
+	TiXmlNode::CopyTo( target );
+
+	target->error = error;
+	target->errorDesc = errorDesc.c_str ();
+
+	TiXmlNode* node = 0;
+	for ( node = firstChild; node; node = node->NextSibling() )
+	{
+		target->LinkEndChild( node->Clone() );
+	}	
+}
+
+
+TiXmlNode* TiXmlDocument::Clone() const
+{
+	TiXmlDocument* clone = new TiXmlDocument();
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+void TiXmlDocument::Print( FILE* cfile, int depth ) const
+{
+	assert( cfile );
+	for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() )
+	{
+		node->Print( cfile, depth );
+		fprintf( cfile, "\n" );
+	}
+}
+
+
+bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const
+{
+	if ( visitor->VisitEnter( *this ) )
+	{
+		for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() )
+		{
+			if ( !node->Accept( visitor ) )
+				break;
+		}
+	}
+	return visitor->VisitExit( *this );
+}
+
+
+const TiXmlAttribute* TiXmlAttribute::Next() const
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( next->value.empty() && next->name.empty() )
+		return 0;
+	return next;
+}
+
+/*
+TiXmlAttribute* TiXmlAttribute::Next()
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( next->value.empty() && next->name.empty() )
+		return 0;
+	return next;
+}
+*/
+
+const TiXmlAttribute* TiXmlAttribute::Previous() const
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( prev->value.empty() && prev->name.empty() )
+		return 0;
+	return prev;
+}
+
+/*
+TiXmlAttribute* TiXmlAttribute::Previous()
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( prev->value.empty() && prev->name.empty() )
+		return 0;
+	return prev;
+}
+*/
+
+void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const
+{
+	TIXML_STRING n, v;
+
+	PutString( name, &n );
+	PutString( value, &v );
+
+	if (value.find ('\"') == TIXML_STRING::npos) {
+		if ( cfile ) {
+		fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() );
+		}
+		if ( str ) {
+			(*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\"";
+		}
+	}
+	else {
+		if ( cfile ) {
+		fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() );
+		}
+		if ( str ) {
+			(*str) += n; (*str) += "='"; (*str) += v; (*str) += "'";
+		}
+	}
+}
+
+
+int TiXmlAttribute::QueryIntValue( int* ival ) const
+{
+	if ( sscanf( value.c_str(), "%d", ival ) == 1 )
+		return TIXML_SUCCESS;
+	return TIXML_WRONG_TYPE;
+}
+
+int TiXmlAttribute::QueryDoubleValue( double* dval ) const
+{
+	if ( sscanf( value.c_str(), "%lf", dval ) == 1 )
+		return TIXML_SUCCESS;
+	return TIXML_WRONG_TYPE;
+}
+
+void TiXmlAttribute::SetIntValue( int _value )
+{
+	char buf [64];
+	#if defined(TIXML_SNPRINTF)		
+		TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value);
+	#else
+		sprintf (buf, "%d", _value);
+	#endif
+	SetValue (buf);
+}
+
+void TiXmlAttribute::SetDoubleValue( double _value )
+{
+	char buf [256];
+	#if defined(TIXML_SNPRINTF)		
+		TIXML_SNPRINTF( buf, sizeof(buf), "%lf", _value);
+	#else
+		sprintf (buf, "%lf", _value);
+	#endif
+	SetValue (buf);
+}
+
+int TiXmlAttribute::IntValue() const
+{
+	return atoi (value.c_str ());
+}
+
+double  TiXmlAttribute::DoubleValue() const
+{
+	return atof (value.c_str ());
+}
+
+
+TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::COMMENT )
+{
+	copy.CopyTo( this );
+}
+
+
+void TiXmlComment::operator=( const TiXmlComment& base )
+{
+	Clear();
+	base.CopyTo( this );
+}
+
+
+void TiXmlComment::Print( FILE* cfile, int depth ) const
+{
+	assert( cfile );
+	for ( int i=0; i<depth; i++ )
+	{
+		fprintf( cfile,  "    " );
+	}
+	fprintf( cfile, "<!--%s-->", value.c_str() );
+}
+
+
+void TiXmlComment::CopyTo( TiXmlComment* target ) const
+{
+	TiXmlNode::CopyTo( target );
+}
+
+
+bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const
+{
+	return visitor->Visit( *this );
+}
+
+
+TiXmlNode* TiXmlComment::Clone() const
+{
+	TiXmlComment* clone = new TiXmlComment();
+
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+void TiXmlText::Print( FILE* cfile, int depth ) const
+{
+	assert( cfile );
+	if ( cdata )
+	{
+		int i;
+		fprintf( cfile, "\n" );
+		for ( i=0; i<depth; i++ ) {
+			fprintf( cfile, "    " );
+		}
+		fprintf( cfile, "<![CDATA[%s]]>\n", value.c_str() );	// unformatted output
+	}
+	else
+	{
+		TIXML_STRING buffer;
+		PutString( value, &buffer );
+		fprintf( cfile, "%s", buffer.c_str() );
+	}
+}
+
+
+void TiXmlText::CopyTo( TiXmlText* target ) const
+{
+	TiXmlNode::CopyTo( target );
+	target->cdata = cdata;
+}
+
+
+bool TiXmlText::Accept( TiXmlVisitor* visitor ) const
+{
+	return visitor->Visit( *this );
+}
+
+
+TiXmlNode* TiXmlText::Clone() const
+{	
+	TiXmlText* clone = 0;
+	clone = new TiXmlText( "" );
+
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+TiXmlDeclaration::TiXmlDeclaration( const char * _version,
+									const char * _encoding,
+									const char * _standalone )
+	: TiXmlNode( TiXmlNode::DECLARATION )
+{
+	version = _version;
+	encoding = _encoding;
+	standalone = _standalone;
+}
+
+
+#ifdef TIXML_USE_STL
+TiXmlDeclaration::TiXmlDeclaration(	const std::string& _version,
+									const std::string& _encoding,
+									const std::string& _standalone )
+	: TiXmlNode( TiXmlNode::DECLARATION )
+{
+	version = _version;
+	encoding = _encoding;
+	standalone = _standalone;
+}
+#endif
+
+
+TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy )
+	: TiXmlNode( TiXmlNode::DECLARATION )
+{
+	copy.CopyTo( this );	
+}
+
+
+void TiXmlDeclaration::operator=( const TiXmlDeclaration& copy )
+{
+	Clear();
+	copy.CopyTo( this );
+}
+
+
+void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const
+{
+	if ( cfile ) fprintf( cfile, "<?xml " );
+	if ( str )	 (*str) += "<?xml ";
+
+	if ( !version.empty() ) {
+		if ( cfile ) fprintf (cfile, "version=\"%s\" ", version.c_str ());
+		if ( str ) { (*str) += "version=\""; (*str) += version; (*str) += "\" "; }
+	}
+	if ( !encoding.empty() ) {
+		if ( cfile ) fprintf (cfile, "encoding=\"%s\" ", encoding.c_str ());
+		if ( str ) { (*str) += "encoding=\""; (*str) += encoding; (*str) += "\" "; }
+	}
+	if ( !standalone.empty() ) {
+		if ( cfile ) fprintf (cfile, "standalone=\"%s\" ", standalone.c_str ());
+		if ( str ) { (*str) += "standalone=\""; (*str) += standalone; (*str) += "\" "; }
+	}
+	if ( cfile ) fprintf( cfile, "?>" );
+	if ( str )	 (*str) += "?>";
+}
+
+
+void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const
+{
+	TiXmlNode::CopyTo( target );
+
+	target->version = version;
+	target->encoding = encoding;
+	target->standalone = standalone;
+}
+
+
+bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const
+{
+	return visitor->Visit( *this );
+}
+
+
+TiXmlNode* TiXmlDeclaration::Clone() const
+{	
+	TiXmlDeclaration* clone = new TiXmlDeclaration();
+
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+void TiXmlUnknown::Print( FILE* cfile, int depth ) const
+{
+	for ( int i=0; i<depth; i++ )
+		fprintf( cfile, "    " );
+	fprintf( cfile, "<%s>", value.c_str() );
+}
+
+
+void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const
+{
+	TiXmlNode::CopyTo( target );
+}
+
+
+bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const
+{
+	return visitor->Visit( *this );
+}
+
+
+TiXmlNode* TiXmlUnknown::Clone() const
+{
+	TiXmlUnknown* clone = new TiXmlUnknown();
+
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+TiXmlAttributeSet::TiXmlAttributeSet()
+{
+	sentinel.next = &sentinel;
+	sentinel.prev = &sentinel;
+}
+
+
+TiXmlAttributeSet::~TiXmlAttributeSet()
+{
+	assert( sentinel.next == &sentinel );
+	assert( sentinel.prev == &sentinel );
+}
+
+
+void TiXmlAttributeSet::Add( TiXmlAttribute* addMe )
+{
+    #ifdef TIXML_USE_STL
+	assert( !Find( TIXML_STRING( addMe->Name() ) ) );	// Shouldn't be multiply adding to the set.
+	#else
+	assert( !Find( addMe->Name() ) );	// Shouldn't be multiply adding to the set.
+	#endif
+
+	addMe->next = &sentinel;
+	addMe->prev = sentinel.prev;
+
+	sentinel.prev->next = addMe;
+	sentinel.prev      = addMe;
+}
+
+void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe )
+{
+	TiXmlAttribute* node;
+
+	for( node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( node == removeMe )
+		{
+			node->prev->next = node->next;
+			node->next->prev = node->prev;
+			node->next = 0;
+			node->prev = 0;
+			return;
+		}
+	}
+	assert( 0 );		// we tried to remove a non-linked attribute.
+}
+
+
+#ifdef TIXML_USE_STL
+const TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const
+{
+	for( const TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( node->name == name )
+			return node;
+	}
+	return 0;
+}
+
+/*
+TiXmlAttribute*	TiXmlAttributeSet::Find( const std::string& name )
+{
+	for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( node->name == name )
+			return node;
+	}
+	return 0;
+}
+*/
+#endif
+
+
+const TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const
+{
+	for( const TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( strcmp( node->name.c_str(), name ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+/*
+TiXmlAttribute*	TiXmlAttributeSet::Find( const char* name )
+{
+	for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( strcmp( node->name.c_str(), name ) == 0 )
+			return node;
+	}
+	return 0;
+}
+*/
+
+#ifdef TIXML_USE_STL	
+std::istream& operator>> (std::istream & in, TiXmlNode & base)
+{
+	TIXML_STRING tag;
+	tag.reserve( 8 * 1000 );
+	base.StreamIn( &in, &tag );
+
+	base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING );
+	return in;
+}
+#endif
+
+
+#ifdef TIXML_USE_STL	
+std::ostream& operator<< (std::ostream & out, const TiXmlNode & base)
+{
+	TiXmlPrinter printer;
+	printer.SetStreamPrinting();
+	base.Accept( &printer );
+	out << printer.Str();
+
+	return out;
+}
+
+
+std::string& operator<< (std::string& out, const TiXmlNode& base )
+{
+	TiXmlPrinter printer;
+	printer.SetStreamPrinting();
+	base.Accept( &printer );
+	out.append( printer.Str() );
+
+	return out;
+}
+#endif
+
+
+TiXmlHandle TiXmlHandle::FirstChild() const
+{
+	if ( node )
+	{
+		TiXmlNode* child = node->FirstChild();
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const
+{
+	if ( node )
+	{
+		TiXmlNode* child = node->FirstChild( value );
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::FirstChildElement() const
+{
+	if ( node )
+	{
+		TiXmlElement* child = node->FirstChildElement();
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const
+{
+	if ( node )
+	{
+		TiXmlElement* child = node->FirstChildElement( value );
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::Child( int count ) const
+{
+	if ( node )
+	{
+		int i;
+		TiXmlNode* child = node->FirstChild();
+		for (	i=0;
+				child && i<count;
+				child = child->NextSibling(), ++i )
+		{
+			// nothing
+		}
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const
+{
+	if ( node )
+	{
+		int i;
+		TiXmlNode* child = node->FirstChild( value );
+		for (	i=0;
+				child && i<count;
+				child = child->NextSibling( value ), ++i )
+		{
+			// nothing
+		}
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::ChildElement( int count ) const
+{
+	if ( node )
+	{
+		int i;
+		TiXmlElement* child = node->FirstChildElement();
+		for (	i=0;
+				child && i<count;
+				child = child->NextSiblingElement(), ++i )
+		{
+			// nothing
+		}
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const
+{
+	if ( node )
+	{
+		int i;
+		TiXmlElement* child = node->FirstChildElement( value );
+		for (	i=0;
+				child && i<count;
+				child = child->NextSiblingElement( value ), ++i )
+		{
+			// nothing
+		}
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+bool TiXmlPrinter::VisitEnter( const TiXmlDocument& )
+{
+	return true;
+}
+
+bool TiXmlPrinter::VisitExit( const TiXmlDocument& )
+{
+	return true;
+}
+
+bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute )
+{
+	DoIndent();
+	buffer += "<";
+	buffer += element.Value();
+
+	for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() )
+	{
+		buffer += " ";
+		attrib->Print( 0, 0, &buffer );
+	}
+
+	if ( !element.FirstChild() ) 
+	{
+		buffer += " />";
+		DoLineBreak();
+	}
+	else 
+	{
+		buffer += ">";
+		if (    element.FirstChild()->ToText()
+			  && element.LastChild() == element.FirstChild()
+			  && element.FirstChild()->ToText()->CDATA() == false )
+		{
+			simpleTextPrint = true;
+			// no DoLineBreak()!
+		}
+		else
+		{
+			DoLineBreak();
+		}
+	}
+	++depth;	
+	return true;
+}
+
+
+bool TiXmlPrinter::VisitExit( const TiXmlElement& element )
+{
+	--depth;
+	if ( !element.FirstChild() ) 
+	{
+		// nothing.
+	}
+	else 
+	{
+		if ( simpleTextPrint )
+		{
+			simpleTextPrint = false;
+		}
+		else
+		{
+			DoIndent();
+		}
+		buffer += "</";
+		buffer += element.Value();
+		buffer += ">";
+		DoLineBreak();
+	}
+	return true;
+}
+
+
+bool TiXmlPrinter::Visit( const TiXmlText& text )
+{
+	if ( text.CDATA() )
+	{
+		DoIndent();
+		buffer += "<![CDATA[";
+		buffer += text.Value();
+		buffer += "]]>";
+		DoLineBreak();
+	}
+	else if ( simpleTextPrint )
+	{
+		buffer += text.Value();
+	}
+	else
+	{
+		DoIndent();
+		buffer += text.Value();
+		DoLineBreak();
+	}
+	return true;
+}
+
+
+bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration )
+{
+	DoIndent();
+	declaration.Print( 0, 0, &buffer );
+	DoLineBreak();
+	return true;
+}
+
+
+bool TiXmlPrinter::Visit( const TiXmlComment& comment )
+{
+	DoIndent();
+	buffer += "<!--";
+	buffer += comment.Value();
+	buffer += "-->";
+	DoLineBreak();
+	return true;
+}
+
+
+bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown )
+{
+	DoIndent();
+	buffer += "<";
+	buffer += unknown.Value();
+	buffer += ">";
+	DoLineBreak();
+	return true;
+}
+
Index: /ogreode/tinyxml/tinyxml.h
===================================================================
--- /ogreode/tinyxml/tinyxml.h	(revision 21)
+++ /ogreode/tinyxml/tinyxml.h	(revision 21)
@@ -0,0 +1,1776 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+
+#ifndef TINYXML_INCLUDED
+#define TINYXML_INCLUDED
+
+#ifdef _MSC_VER
+#pragma warning( push )
+#pragma warning( disable : 4530 )
+#pragma warning( disable : 4786 )
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+// Help out windows:
+#if defined( _DEBUG ) && !defined( DEBUG )
+#define DEBUG
+#endif
+
+#ifdef TIXML_USE_STL
+	#include <string>
+ 	#include <iostream>
+	#include <sstream>
+	#define TIXML_STRING		std::string
+#else
+	#include "tinystr.h"
+	#define TIXML_STRING		TiXmlString
+#endif
+
+// Deprecated library function hell. Compilers want to use the
+// new safe versions. This probably doesn't fully address the problem,
+// but it gets closer. There are too many compilers for me to fully
+// test. If you get compilation troubles, undefine TIXML_SAFE
+#define TIXML_SAFE
+
+#ifdef TIXML_SAFE
+	#if defined(_MSC_VER) && (_MSC_VER >= 1400 )
+		// Microsoft visual studio, version 2005 and higher.
+		#define TIXML_SNPRINTF _snprintf_s
+		#define TIXML_SNSCANF  _snscanf_s
+	#elif defined(_MSC_VER) && (_MSC_VER >= 1200 )
+		// Microsoft visual studio, version 6 and higher.
+		//#pragma message( "Using _sn* functions." )
+		#define TIXML_SNPRINTF _snprintf
+		#define TIXML_SNSCANF  _snscanf
+	#elif defined(__GNUC__) && (__GNUC__ >= 3 )
+		// GCC version 3 and higher.s
+		//#warning( "Using sn* functions." )
+		#define TIXML_SNPRINTF snprintf
+		#define TIXML_SNSCANF  snscanf
+	#endif
+#endif	
+
+class TiXmlDocument;
+class TiXmlElement;
+class TiXmlComment;
+class TiXmlUnknown;
+class TiXmlAttribute;
+class TiXmlText;
+class TiXmlDeclaration;
+class TiXmlParsingData;
+
+const int TIXML_MAJOR_VERSION = 2;
+const int TIXML_MINOR_VERSION = 5;
+const int TIXML_PATCH_VERSION = 2;
+
+/*	Internal structure for tracking location of items 
+	in the XML file.
+*/
+struct TiXmlCursor
+{
+	TiXmlCursor()		{ Clear(); }
+	void Clear()		{ row = col = -1; }
+
+	int row;	// 0 based.
+	int col;	// 0 based.
+};
+
+
+/**
+	If you call the Accept() method, it requires being passed a TiXmlVisitor
+	class to handle callbacks. For nodes that contain other nodes (Document, Element)
+	you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves
+	are simple called with Visit().
+
+	If you return 'true' from a Visit method, recursive parsing will continue. If you return
+	false, <b>no children of this node or its sibilings</b> will be Visited.
+
+	All flavors of Visit methods have a default implementation that returns 'true' (continue 
+	visiting). You need to only override methods that are interesting to you.
+
+	Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting.
+
+	You should never change the document from a callback.
+
+	@sa TiXmlNode::Accept()
+*/
+class TiXmlVisitor
+{
+public:
+	virtual ~TiXmlVisitor() {}
+
+	/// Visit a document.
+	virtual bool VisitEnter( const TiXmlDocument& doc )	{ return true; }
+	/// Visit a document.
+	virtual bool VisitExit( const TiXmlDocument& doc )	{ return true; }
+
+	/// Visit an element.
+	virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute )	{ return true; }
+	/// Visit an element.
+	virtual bool VisitExit( const TiXmlElement& element )											{ return true; }
+
+	/// Visit a declaration
+	virtual bool Visit( const TiXmlDeclaration& declaration )		{ return true; }
+	/// Visit a text node
+	virtual bool Visit( const TiXmlText& text )						{ return true; }
+	/// Visit a comment node
+	virtual bool Visit( const TiXmlComment& comment )				{ return true; }
+	/// Visit an unknow node
+	virtual bool Visit( const TiXmlUnknown& unknown )				{ return true; }
+};
+
+// Only used by Attribute::Query functions
+enum 
+{ 
+	TIXML_SUCCESS,
+	TIXML_NO_ATTRIBUTE,
+	TIXML_WRONG_TYPE
+};
+
+
+// Used by the parsing routines.
+enum TiXmlEncoding
+{
+	TIXML_ENCODING_UNKNOWN,
+	TIXML_ENCODING_UTF8,
+	TIXML_ENCODING_LEGACY
+};
+
+const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN;
+
+/** TiXmlBase is a base class for every class in TinyXml.
+	It does little except to establish that TinyXml classes
+	can be printed and provide some utility functions.
+
+	In XML, the document and elements can contain
+	other elements and other types of nodes.
+
+	@verbatim
+	A Document can contain:	Element	(container or leaf)
+							Comment (leaf)
+							Unknown (leaf)
+							Declaration( leaf )
+
+	An Element can contain:	Element (container or leaf)
+							Text	(leaf)
+							Attributes (not on tree)
+							Comment (leaf)
+							Unknown (leaf)
+
+	A Decleration contains: Attributes (not on tree)
+	@endverbatim
+*/
+class TiXmlBase
+{
+	friend class TiXmlNode;
+	friend class TiXmlElement;
+	friend class TiXmlDocument;
+
+public:
+	TiXmlBase()	:	userData(0)		{}
+	virtual ~TiXmlBase()			{}
+
+	/**	All TinyXml classes can print themselves to a filestream
+		or the string class (TiXmlString in non-STL mode, std::string
+		in STL mode.) Either or both cfile and str can be null.
+		
+		This is a formatted print, and will insert 
+		tabs and newlines.
+		
+		(For an unformatted stream, use the << operator.)
+	*/
+	virtual void Print( FILE* cfile, int depth ) const = 0;
+
+	/**	The world does not agree on whether white space should be kept or
+		not. In order to make everyone happy, these global, static functions
+		are provided to set whether or not TinyXml will condense all white space
+		into a single space or not. The default is to condense. Note changing this
+		value is not thread safe.
+	*/
+	static void SetCondenseWhiteSpace( bool condense )		{ condenseWhiteSpace = condense; }
+
+	/// Return the current white space setting.
+	static bool IsWhiteSpaceCondensed()						{ return condenseWhiteSpace; }
+
+	/** Return the position, in the original source file, of this node or attribute.
+		The row and column are 1-based. (That is the first row and first column is
+		1,1). If the returns values are 0 or less, then the parser does not have
+		a row and column value.
+
+		Generally, the row and column value will be set when the TiXmlDocument::Load(),
+		TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set
+		when the DOM was created from operator>>.
+
+		The values reflect the initial load. Once the DOM is modified programmatically
+		(by adding or changing nodes and attributes) the new values will NOT update to
+		reflect changes in the document.
+
+		There is a minor performance cost to computing the row and column. Computation
+		can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value.
+
+		@sa TiXmlDocument::SetTabSize()
+	*/
+	int Row() const			{ return location.row + 1; }
+	int Column() const		{ return location.col + 1; }	///< See Row()
+
+	void  SetUserData( void* user )			{ userData = user; }	///< Set a pointer to arbitrary user data.
+	void* GetUserData()						{ return userData; }	///< Get a pointer to arbitrary user data.
+	const void* GetUserData() const 		{ return userData; }	///< Get a pointer to arbitrary user data.
+
+	// Table that returs, for a given lead byte, the total number of bytes
+	// in the UTF-8 sequence.
+	static const int utf8ByteTable[256];
+
+	virtual const char* Parse(	const char* p, 
+								TiXmlParsingData* data, 
+								TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0;
+
+	enum
+	{
+		TIXML_NO_ERROR = 0,
+		TIXML_ERROR,
+		TIXML_ERROR_OPENING_FILE,
+		TIXML_ERROR_OUT_OF_MEMORY,
+		TIXML_ERROR_PARSING_ELEMENT,
+		TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME,
+		TIXML_ERROR_READING_ELEMENT_VALUE,
+		TIXML_ERROR_READING_ATTRIBUTES,
+		TIXML_ERROR_PARSING_EMPTY,
+		TIXML_ERROR_READING_END_TAG,
+		TIXML_ERROR_PARSING_UNKNOWN,
+		TIXML_ERROR_PARSING_COMMENT,
+		TIXML_ERROR_PARSING_DECLARATION,
+		TIXML_ERROR_DOCUMENT_EMPTY,
+		TIXML_ERROR_EMBEDDED_NULL,
+		TIXML_ERROR_PARSING_CDATA,
+		TIXML_ERROR_DOCUMENT_TOP_ONLY,
+
+		TIXML_ERROR_STRING_COUNT
+	};
+
+protected:
+
+	static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding );
+	inline static bool IsWhiteSpace( char c )		
+	{ 
+		return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); 
+	}
+	inline static bool IsWhiteSpace( int c )
+	{
+		if ( c < 256 )
+			return IsWhiteSpace( (char) c );
+		return false;	// Again, only truly correct for English/Latin...but usually works.
+	}
+
+	#ifdef TIXML_USE_STL
+	static bool	StreamWhiteSpace( std::istream * in, TIXML_STRING * tag );
+	static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag );
+	#endif
+
+	/*	Reads an XML name into the string provided. Returns
+		a pointer just past the last character of the name,
+		or 0 if the function has an error.
+	*/
+	static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding );
+
+	/*	Reads text. Returns a pointer past the given end tag.
+		Wickedly complex options, but it keeps the (sensitive) code in one place.
+	*/
+	static const char* ReadText(	const char* in,				// where to start
+									TIXML_STRING* text,			// the string read
+									bool ignoreWhiteSpace,		// whether to keep the white space
+									const char* endTag,			// what ends this text
+									bool ignoreCase,			// whether to ignore case in the end tag
+									TiXmlEncoding encoding );	// the current encoding
+
+	// If an entity has been found, transform it into a character.
+	static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding );
+
+	// Get a character, while interpreting entities.
+	// The length can be from 0 to 4 bytes.
+	inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding )
+	{
+		assert( p );
+		if ( encoding == TIXML_ENCODING_UTF8 )
+		{
+			*length = utf8ByteTable[ *((const unsigned char*)p) ];
+			assert( *length >= 0 && *length < 5 );
+		}
+		else
+		{
+			*length = 1;
+		}
+
+		if ( *length == 1 )
+		{
+			if ( *p == '&' )
+				return GetEntity( p, _value, length, encoding );
+			*_value = *p;
+			return p+1;
+		}
+		else if ( *length )
+		{
+			//strncpy( _value, p, *length );	// lots of compilers don't like this function (unsafe),
+												// and the null terminator isn't needed
+			for( int i=0; p[i] && i<*length; ++i ) {
+				_value[i] = p[i];
+			}
+			return p + (*length);
+		}
+		else
+		{
+			// Not valid text.
+			return 0;
+		}
+	}
+
+	// Puts a string to a stream, expanding entities as it goes.
+	// Note this should not contian the '<', '>', etc, or they will be transformed into entities!
+	static void PutString( const TIXML_STRING& str, TIXML_STRING* out );
+
+	// Return true if the next characters in the stream are any of the endTag sequences.
+	// Ignore case only works for english, and should only be relied on when comparing
+	// to English words: StringEqual( p, "version", true ) is fine.
+	static bool StringEqual(	const char* p,
+								const char* endTag,
+								bool ignoreCase,
+								TiXmlEncoding encoding );
+
+	static const char* errorString[ TIXML_ERROR_STRING_COUNT ];
+
+	TiXmlCursor location;
+
+    /// Field containing a generic user pointer
+	void*			userData;
+	
+	// None of these methods are reliable for any language except English.
+	// Good for approximation, not great for accuracy.
+	static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding );
+	static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding );
+	inline static int ToLower( int v, TiXmlEncoding encoding )
+	{
+		if ( encoding == TIXML_ENCODING_UTF8 )
+		{
+			if ( v < 128 ) return tolower( v );
+			return v;
+		}
+		else
+		{
+			return tolower( v );
+		}
+	}
+	static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length );
+
+private:
+	TiXmlBase( const TiXmlBase& );				// not implemented.
+	void operator=( const TiXmlBase& base );	// not allowed.
+
+	struct Entity
+	{
+		const char*     str;
+		unsigned int	strLength;
+		char		    chr;
+	};
+	enum
+	{
+		NUM_ENTITY = 5,
+		MAX_ENTITY_LENGTH = 6
+
+	};
+	static Entity entity[ NUM_ENTITY ];
+	static bool condenseWhiteSpace;
+};
+
+
+/** The parent class for everything in the Document Object Model.
+	(Except for attributes).
+	Nodes have siblings, a parent, and children. A node can be
+	in a document, or stand on its own. The type of a TiXmlNode
+	can be queried, and it can be cast to its more defined type.
+*/
+class TiXmlNode : public TiXmlBase
+{
+	friend class TiXmlDocument;
+	friend class TiXmlElement;
+
+public:
+	#ifdef TIXML_USE_STL	
+
+	    /** An input stream operator, for every class. Tolerant of newlines and
+		    formatting, but doesn't expect them.
+	    */
+	    friend std::istream& operator >> (std::istream& in, TiXmlNode& base);
+
+	    /** An output stream operator, for every class. Note that this outputs
+		    without any newlines or formatting, as opposed to Print(), which
+		    includes tabs and new lines.
+
+		    The operator<< and operator>> are not completely symmetric. Writing
+		    a node to a stream is very well defined. You'll get a nice stream
+		    of output, without any extra whitespace or newlines.
+		    
+		    But reading is not as well defined. (As it always is.) If you create
+		    a TiXmlElement (for example) and read that from an input stream,
+		    the text needs to define an element or junk will result. This is
+		    true of all input streams, but it's worth keeping in mind.
+
+		    A TiXmlDocument will read nodes until it reads a root element, and
+			all the children of that root element.
+	    */	
+	    friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base);
+
+		/// Appends the XML node or attribute to a std::string.
+		friend std::string& operator<< (std::string& out, const TiXmlNode& base );
+
+	#endif
+
+	/** The types of XML nodes supported by TinyXml. (All the
+			unsupported types are picked up by UNKNOWN.)
+	*/
+	enum NodeType
+	{
+		DOCUMENT,
+		ELEMENT,
+		COMMENT,
+		UNKNOWN,
+		TEXT,
+		DECLARATION,
+		TYPECOUNT
+	};
+
+	virtual ~TiXmlNode();
+
+	/** The meaning of 'value' changes for the specific type of
+		TiXmlNode.
+		@verbatim
+		Document:	filename of the xml file
+		Element:	name of the element
+		Comment:	the comment text
+		Unknown:	the tag contents
+		Text:		the text string
+		@endverbatim
+
+		The subclasses will wrap this function.
+	*/
+	const char *Value() const { return value.c_str (); }
+
+    #ifdef TIXML_USE_STL
+	/** Return Value() as a std::string. If you only use STL,
+	    this is more efficient than calling Value().
+		Only available in STL mode.
+	*/
+	const std::string& ValueStr() const { return value; }
+	#endif
+
+	/** Changes the value of the node. Defined as:
+		@verbatim
+		Document:	filename of the xml file
+		Element:	name of the element
+		Comment:	the comment text
+		Unknown:	the tag contents
+		Text:		the text string
+		@endverbatim
+	*/
+	void SetValue(const char * _value) { value = _value;}
+
+    #ifdef TIXML_USE_STL
+	/// STL std::string form.
+	void SetValue( const std::string& _value )	{ value = _value; }
+	#endif
+
+	/// Delete all the children of this node. Does not affect 'this'.
+	void Clear();
+
+	/// One step up the DOM.
+	TiXmlNode* Parent()							{ return parent; }
+	const TiXmlNode* Parent() const				{ return parent; }
+
+	const TiXmlNode* FirstChild()	const	{ return firstChild; }		///< The first child of this node. Will be null if there are no children.
+	TiXmlNode* FirstChild()					{ return firstChild; }
+	const TiXmlNode* FirstChild( const char * value ) const;			///< The first child of this node with the matching 'value'. Will be null if none found.
+	/// The first child of this node with the matching 'value'. Will be null if none found.
+	TiXmlNode* FirstChild( const char * _value ) {
+		// Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe)
+		// call the method, cast the return back to non-const.
+		return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value ));
+	}
+	const TiXmlNode* LastChild() const	{ return lastChild; }		/// The last child of this node. Will be null if there are no children.
+	TiXmlNode* LastChild()	{ return lastChild; }
+	
+	const TiXmlNode* LastChild( const char * value ) const;			/// The last child of this node matching 'value'. Will be null if there are no children.
+	TiXmlNode* LastChild( const char * _value ) {
+		return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value ));
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlNode* FirstChild( const std::string& _value ) const	{	return FirstChild (_value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* FirstChild( const std::string& _value )				{	return FirstChild (_value.c_str ());	}	///< STL std::string form.
+	const TiXmlNode* LastChild( const std::string& _value ) const	{	return LastChild (_value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* LastChild( const std::string& _value )				{	return LastChild (_value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/** An alternate way to walk the children of a node.
+		One way to iterate over nodes is:
+		@verbatim
+			for( child = parent->FirstChild(); child; child = child->NextSibling() )
+		@endverbatim
+
+		IterateChildren does the same thing with the syntax:
+		@verbatim
+			child = 0;
+			while( child = parent->IterateChildren( child ) )
+		@endverbatim
+
+		IterateChildren takes the previous child as input and finds
+		the next one. If the previous child is null, it returns the
+		first. IterateChildren will return null when done.
+	*/
+	const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const;
+	TiXmlNode* IterateChildren( const TiXmlNode* previous ) {
+		return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) );
+	}
+
+	/// This flavor of IterateChildren searches for children with a particular 'value'
+	const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const;
+	TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) {
+		return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) );
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const	{	return IterateChildren (_value.c_str (), previous);	}	///< STL std::string form.
+	TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) {	return IterateChildren (_value.c_str (), previous);	}	///< STL std::string form.
+	#endif
+
+	/** Add a new node related to this. Adds a child past the LastChild.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertEndChild( const TiXmlNode& addThis );
+
+
+	/** Add a new node related to this. Adds a child past the LastChild.
+
+		NOTE: the node to be added is passed by pointer, and will be
+		henceforth owned (and deleted) by tinyXml. This method is efficient
+		and avoids an extra copy, but should be used with care as it
+		uses a different memory model than the other insert functions.
+
+		@sa InsertEndChild
+	*/
+	TiXmlNode* LinkEndChild( TiXmlNode* addThis );
+
+	/** Add a new node related to this. Adds a child before the specified child.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis );
+
+	/** Add a new node related to this. Adds a child after the specified child.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertAfterChild(  TiXmlNode* afterThis, const TiXmlNode& addThis );
+
+	/** Replace a child of this node.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis );
+
+	/// Delete a child of this node.
+	bool RemoveChild( TiXmlNode* removeThis );
+
+	/// Navigate to a sibling node.
+	const TiXmlNode* PreviousSibling() const			{ return prev; }
+	TiXmlNode* PreviousSibling()						{ return prev; }
+
+	/// Navigate to a sibling node.
+	const TiXmlNode* PreviousSibling( const char * ) const;
+	TiXmlNode* PreviousSibling( const char *_prev ) {
+		return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) );
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlNode* PreviousSibling( const std::string& _value ) const	{	return PreviousSibling (_value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* PreviousSibling( const std::string& _value ) 			{	return PreviousSibling (_value.c_str ());	}	///< STL std::string form.
+	const TiXmlNode* NextSibling( const std::string& _value) const		{	return NextSibling (_value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* NextSibling( const std::string& _value) 					{	return NextSibling (_value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/// Navigate to a sibling node.
+	const TiXmlNode* NextSibling() const				{ return next; }
+	TiXmlNode* NextSibling()							{ return next; }
+
+	/// Navigate to a sibling node with the given 'value'.
+	const TiXmlNode* NextSibling( const char * ) const;
+	TiXmlNode* NextSibling( const char* _next ) {
+		return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) );
+	}
+
+	/** Convenience function to get through elements.
+		Calls NextSibling and ToElement. Will skip all non-Element
+		nodes. Returns 0 if there is not another element.
+	*/
+	const TiXmlElement* NextSiblingElement() const;
+	TiXmlElement* NextSiblingElement() {
+		return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() );
+	}
+
+	/** Convenience function to get through elements.
+		Calls NextSibling and ToElement. Will skip all non-Element
+		nodes. Returns 0 if there is not another element.
+	*/
+	const TiXmlElement* NextSiblingElement( const char * ) const;
+	TiXmlElement* NextSiblingElement( const char *_next ) {
+		return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) );
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlElement* NextSiblingElement( const std::string& _value) const	{	return NextSiblingElement (_value.c_str ());	}	///< STL std::string form.
+	TiXmlElement* NextSiblingElement( const std::string& _value)				{	return NextSiblingElement (_value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/// Convenience function to get through elements.
+	const TiXmlElement* FirstChildElement()	const;
+	TiXmlElement* FirstChildElement() {
+		return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() );
+	}
+
+	/// Convenience function to get through elements.
+	const TiXmlElement* FirstChildElement( const char * _value ) const;
+	TiXmlElement* FirstChildElement( const char * _value ) {
+		return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) );
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlElement* FirstChildElement( const std::string& _value ) const	{	return FirstChildElement (_value.c_str ());	}	///< STL std::string form.
+	TiXmlElement* FirstChildElement( const std::string& _value )				{	return FirstChildElement (_value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/** Query the type (as an enumerated value, above) of this node.
+		The possible types are: DOCUMENT, ELEMENT, COMMENT,
+								UNKNOWN, TEXT, and DECLARATION.
+	*/
+	int Type() const	{ return type; }
+
+	/** Return a pointer to the Document this node lives in.
+		Returns null if not in a document.
+	*/
+	const TiXmlDocument* GetDocument() const;
+	TiXmlDocument* GetDocument() {
+		return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() );
+	}
+
+	/// Returns true if this node has no children.
+	bool NoChildren() const						{ return !firstChild; }
+
+	virtual const TiXmlDocument*    ToDocument()    const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlElement*     ToElement()     const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlComment*     ToComment()     const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlUnknown*     ToUnknown()     const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlText*        ToText()        const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlDeclaration* ToDeclaration() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+
+	virtual TiXmlDocument*          ToDocument()    { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlElement*           ToElement()	    { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlComment*           ToComment()     { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlUnknown*           ToUnknown()	    { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlText*	            ToText()        { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlDeclaration*       ToDeclaration() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+
+	/** Create an exact duplicate of this node and return it. The memory must be deleted
+		by the caller. 
+	*/
+	virtual TiXmlNode* Clone() const = 0;
+
+	/** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the 
+		XML tree will be conditionally visited and the host will be called back
+		via the TiXmlVisitor interface.
+
+		This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse
+		the XML for the callbacks, so the performance of TinyXML is unchanged by using this
+		interface versus any other.)
+
+		The interface has been based on ideas from:
+
+		- http://www.saxproject.org/
+		- http://c2.com/cgi/wiki?HierarchicalVisitorPattern 
+
+		Which are both good references for "visiting".
+
+		An example of using Accept():
+		@verbatim
+		TiXmlPrinter printer;
+		tinyxmlDoc.Accept( &printer );
+		const char* xmlcstr = printer.CStr();
+		@endverbatim
+	*/
+	virtual bool Accept( TiXmlVisitor* visitor ) const = 0;
+
+protected:
+	TiXmlNode( NodeType _type );
+
+	// Copy to the allocated object. Shared functionality between Clone, Copy constructor,
+	// and the assignment operator.
+	void CopyTo( TiXmlNode* target ) const;
+
+	#ifdef TIXML_USE_STL
+	    // The real work of the input operator.
+	virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0;
+	#endif
+
+	// Figure out what is at *p, and parse it. Returns null if it is not an xml node.
+	TiXmlNode* Identify( const char* start, TiXmlEncoding encoding );
+
+	TiXmlNode*		parent;
+	NodeType		type;
+
+	TiXmlNode*		firstChild;
+	TiXmlNode*		lastChild;
+
+	TIXML_STRING	value;
+
+	TiXmlNode*		prev;
+	TiXmlNode*		next;
+
+private:
+	TiXmlNode( const TiXmlNode& );				// not implemented.
+	void operator=( const TiXmlNode& base );	// not allowed.
+};
+
+
+/** An attribute is a name-value pair. Elements have an arbitrary
+	number of attributes, each with a unique name.
+
+	@note The attributes are not TiXmlNodes, since they are not
+		  part of the tinyXML document object model. There are other
+		  suggested ways to look at this problem.
+*/
+class TiXmlAttribute : public TiXmlBase
+{
+	friend class TiXmlAttributeSet;
+
+public:
+	/// Construct an empty attribute.
+	TiXmlAttribute() : TiXmlBase()
+	{
+		document = 0;
+		prev = next = 0;
+	}
+
+	#ifdef TIXML_USE_STL
+	/// std::string constructor.
+	TiXmlAttribute( const std::string& _name, const std::string& _value )
+	{
+		name = _name;
+		value = _value;
+		document = 0;
+		prev = next = 0;
+	}
+	#endif
+
+	/// Construct an attribute with a name and value.
+	TiXmlAttribute( const char * _name, const char * _value )
+	{
+		name = _name;
+		value = _value;
+		document = 0;
+		prev = next = 0;
+	}
+
+	const char*		Name()  const		{ return name.c_str(); }		///< Return the name of this attribute.
+	const char*		Value() const		{ return value.c_str(); }		///< Return the value of this attribute.
+	#ifdef TIXML_USE_STL
+	const std::string& ValueStr() const	{ return value; }				///< Return the value of this attribute.
+	#endif
+	int				IntValue() const;									///< Return the value of this attribute, converted to an integer.
+	double			DoubleValue() const;								///< Return the value of this attribute, converted to a double.
+
+	// Get the tinyxml string representation
+	const TIXML_STRING& NameTStr() const { return name; }
+
+	/** QueryIntValue examines the value string. It is an alternative to the
+		IntValue() method with richer error checking.
+		If the value is an integer, it is stored in 'value' and 
+		the call returns TIXML_SUCCESS. If it is not
+		an integer, it returns TIXML_WRONG_TYPE.
+
+		A specialized but useful call. Note that for success it returns 0,
+		which is the opposite of almost all other TinyXml calls.
+	*/
+	int QueryIntValue( int* _value ) const;
+	/// QueryDoubleValue examines the value string. See QueryIntValue().
+	int QueryDoubleValue( double* _value ) const;
+
+	void SetName( const char* _name )	{ name = _name; }				///< Set the name of this attribute.
+	void SetValue( const char* _value )	{ value = _value; }				///< Set the value.
+
+	void SetIntValue( int _value );										///< Set the value from an integer.
+	void SetDoubleValue( double _value );								///< Set the value from a double.
+
+    #ifdef TIXML_USE_STL
+	/// STL std::string form.
+	void SetName( const std::string& _name )	{ name = _name; }	
+	/// STL std::string form.	
+	void SetValue( const std::string& _value )	{ value = _value; }
+	#endif
+
+	/// Get the next sibling attribute in the DOM. Returns null at end.
+	const TiXmlAttribute* Next() const;
+	TiXmlAttribute* Next() {
+		return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); 
+	}
+
+	/// Get the previous sibling attribute in the DOM. Returns null at beginning.
+	const TiXmlAttribute* Previous() const;
+	TiXmlAttribute* Previous() {
+		return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); 
+	}
+
+	bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; }
+	bool operator<( const TiXmlAttribute& rhs )	 const { return name < rhs.name; }
+	bool operator>( const TiXmlAttribute& rhs )  const { return name > rhs.name; }
+
+	/*	Attribute parsing starts: first letter of the name
+						 returns: the next char after the value end quote
+	*/
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	// Prints this Attribute to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const {
+		Print( cfile, depth, 0 );
+	}
+	void Print( FILE* cfile, int depth, TIXML_STRING* str ) const;
+
+	// [internal use]
+	// Set the document pointer so the attribute can report errors.
+	void SetDocument( TiXmlDocument* doc )	{ document = doc; }
+
+private:
+	TiXmlAttribute( const TiXmlAttribute& );				// not implemented.
+	void operator=( const TiXmlAttribute& base );	// not allowed.
+
+	TiXmlDocument*	document;	// A pointer back to a document, for error reporting.
+	TIXML_STRING name;
+	TIXML_STRING value;
+	TiXmlAttribute*	prev;
+	TiXmlAttribute*	next;
+};
+
+
+/*	A class used to manage a group of attributes.
+	It is only used internally, both by the ELEMENT and the DECLARATION.
+	
+	The set can be changed transparent to the Element and Declaration
+	classes that use it, but NOT transparent to the Attribute
+	which has to implement a next() and previous() method. Which makes
+	it a bit problematic and prevents the use of STL.
+
+	This version is implemented with circular lists because:
+		- I like circular lists
+		- it demonstrates some independence from the (typical) doubly linked list.
+*/
+class TiXmlAttributeSet
+{
+public:
+	TiXmlAttributeSet();
+	~TiXmlAttributeSet();
+
+	void Add( TiXmlAttribute* attribute );
+	void Remove( TiXmlAttribute* attribute );
+
+	const TiXmlAttribute* First()	const	{ return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; }
+	TiXmlAttribute* First()					{ return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; }
+	const TiXmlAttribute* Last() const		{ return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; }
+	TiXmlAttribute* Last()					{ return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; }
+
+	const TiXmlAttribute*	Find( const char* _name ) const;
+	TiXmlAttribute*	Find( const char* _name ) {
+		return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttributeSet* >(this))->Find( _name ) );
+	}
+	#ifdef TIXML_USE_STL
+	const TiXmlAttribute*	Find( const std::string& _name ) const;
+	TiXmlAttribute*	Find( const std::string& _name ) {
+		return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttributeSet* >(this))->Find( _name ) );
+	}
+
+	#endif
+
+private:
+	//*ME:	Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element),
+	//*ME:	this class must be also use a hidden/disabled copy-constructor !!!
+	TiXmlAttributeSet( const TiXmlAttributeSet& );	// not allowed
+	void operator=( const TiXmlAttributeSet& );	// not allowed (as TiXmlAttribute)
+
+	TiXmlAttribute sentinel;
+};
+
+
+/** The element is a container class. It has a value, the element name,
+	and can contain other elements, text, comments, and unknowns.
+	Elements also contain an arbitrary number of attributes.
+*/
+class TiXmlElement : public TiXmlNode
+{
+public:
+	/// Construct an element.
+	TiXmlElement (const char * in_value);
+
+	#ifdef TIXML_USE_STL
+	/// std::string constructor.
+	TiXmlElement( const std::string& _value );
+	#endif
+
+	TiXmlElement( const TiXmlElement& );
+
+	void operator=( const TiXmlElement& base );
+
+	virtual ~TiXmlElement();
+
+	/** Given an attribute name, Attribute() returns the value
+		for the attribute of that name, or null if none exists.
+	*/
+	const char* Attribute( const char* name ) const;
+
+	/** Given an attribute name, Attribute() returns the value
+		for the attribute of that name, or null if none exists.
+		If the attribute exists and can be converted to an integer,
+		the integer value will be put in the return 'i', if 'i'
+		is non-null.
+	*/
+	const char* Attribute( const char* name, int* i ) const;
+
+	/** Given an attribute name, Attribute() returns the value
+		for the attribute of that name, or null if none exists.
+		If the attribute exists and can be converted to an double,
+		the double value will be put in the return 'd', if 'd'
+		is non-null.
+	*/
+	const char* Attribute( const char* name, double* d ) const;
+
+	/** QueryIntAttribute examines the attribute - it is an alternative to the
+		Attribute() method with richer error checking.
+		If the attribute is an integer, it is stored in 'value' and 
+		the call returns TIXML_SUCCESS. If it is not
+		an integer, it returns TIXML_WRONG_TYPE. If the attribute
+		does not exist, then TIXML_NO_ATTRIBUTE is returned.
+	*/	
+	int QueryIntAttribute( const char* name, int* _value ) const;
+	/// QueryDoubleAttribute examines the attribute - see QueryIntAttribute().
+	int QueryDoubleAttribute( const char* name, double* _value ) const;
+	/// QueryFloatAttribute examines the attribute - see QueryIntAttribute().
+	int QueryFloatAttribute( const char* name, float* _value ) const {
+		double d;
+		int result = QueryDoubleAttribute( name, &d );
+		if ( result == TIXML_SUCCESS ) {
+			*_value = (float)d;
+		}
+		return result;
+	}
+    #ifdef TIXML_USE_STL
+	/** Template form of the attribute query which will try to read the
+		attribute into the specified type. Very easy, very powerful, but
+		be careful to make sure to call this with the correct type.
+
+		@return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE
+	*/
+	template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const
+	{
+		const TiXmlAttribute* node = attributeSet.Find( name );
+		if ( !node )
+			return TIXML_NO_ATTRIBUTE;
+
+		std::stringstream sstream( node->ValueStr() );
+		sstream >> *outValue;
+		if ( !sstream.fail() )
+			return TIXML_SUCCESS;
+		return TIXML_WRONG_TYPE;
+	}
+	#endif
+
+	/** Sets an attribute of name to a given value. The attribute
+		will be created if it does not exist, or changed if it does.
+	*/
+	void SetAttribute( const char* name, const char * _value );
+
+    #ifdef TIXML_USE_STL
+	const std::string* Attribute( const std::string& name ) const;
+	const std::string* Attribute( const std::string& name, int* i ) const;
+	const std::string* Attribute( const std::string& name, double* d ) const;
+	int QueryIntAttribute( const std::string& name, int* _value ) const;
+	int QueryDoubleAttribute( const std::string& name, double* _value ) const;
+
+	/// STL std::string form.
+	void SetAttribute( const std::string& name, const std::string& _value );
+	///< STL std::string form.
+	void SetAttribute( const std::string& name, int _value );
+	#endif
+
+	/** Sets an attribute of name to a given value. The attribute
+		will be created if it does not exist, or changed if it does.
+	*/
+	void SetAttribute( const char * name, int value );
+
+	/** Sets an attribute of name to a given value. The attribute
+		will be created if it does not exist, or changed if it does.
+	*/
+	void SetDoubleAttribute( const char * name, double value );
+
+	/** Deletes an attribute with the given name.
+	*/
+	void RemoveAttribute( const char * name );
+    #ifdef TIXML_USE_STL
+	void RemoveAttribute( const std::string& name )	{	RemoveAttribute (name.c_str ());	}	///< STL std::string form.
+	#endif
+
+	const TiXmlAttribute* FirstAttribute() const	{ return attributeSet.First(); }		///< Access the first attribute in this element.
+	TiXmlAttribute* FirstAttribute() 				{ return attributeSet.First(); }
+	const TiXmlAttribute* LastAttribute()	const 	{ return attributeSet.Last(); }		///< Access the last attribute in this element.
+	TiXmlAttribute* LastAttribute()					{ return attributeSet.Last(); }
+
+	/** Convenience function for easy access to the text inside an element. Although easy
+		and concise, GetText() is limited compared to getting the TiXmlText child
+		and accessing it directly.
+	
+		If the first child of 'this' is a TiXmlText, the GetText()
+		returns the character string of the Text node, else null is returned.
+
+		This is a convenient method for getting the text of simple contained text:
+		@verbatim
+		<foo>This is text</foo>
+		const char* str = fooElement->GetText();
+		@endverbatim
+
+		'str' will be a pointer to "This is text". 
+		
+		Note that this function can be misleading. If the element foo was created from
+		this XML:
+		@verbatim
+		<foo><b>This is text</b></foo> 
+		@endverbatim
+
+		then the value of str would be null. The first child node isn't a text node, it is
+		another element. From this XML:
+		@verbatim
+		<foo>This is <b>text</b></foo> 
+		@endverbatim
+		GetText() will return "This is ".
+
+		WARNING: GetText() accesses a child node - don't become confused with the 
+				 similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are 
+				 safe type casts on the referenced node.
+	*/
+	const char* GetText() const;
+
+	/// Creates a new Element and returns it - the returned element is a copy.
+	virtual TiXmlNode* Clone() const;
+	// Print the Element to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	/*	Attribtue parsing starts: next char past '<'
+						 returns: next char past '>'
+	*/
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlElement*     ToElement()     const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlElement*           ToElement()	          { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children. 
+	*/
+	virtual bool Accept( TiXmlVisitor* visitor ) const;
+
+protected:
+
+	void CopyTo( TiXmlElement* target ) const;
+	void ClearThis();	// like clear, but initializes 'this' object as well
+
+	// Used to be public [internal use]
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+	/*	[internal use]
+		Reads the "value" of the element -- another element, or text.
+		This should terminate with the current end tag.
+	*/
+	const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding );
+
+private:
+
+	TiXmlAttributeSet attributeSet;
+};
+
+
+/**	An XML comment.
+*/
+class TiXmlComment : public TiXmlNode
+{
+public:
+	/// Constructs an empty comment.
+	TiXmlComment() : TiXmlNode( TiXmlNode::COMMENT ) {}
+	/// Construct a comment from text.
+	TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::COMMENT ) {
+		SetValue( _value );
+	}
+	TiXmlComment( const TiXmlComment& );
+	void operator=( const TiXmlComment& base );
+
+	virtual ~TiXmlComment()	{}
+
+	/// Returns a copy of this Comment.
+	virtual TiXmlNode* Clone() const;
+	// Write this Comment to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	/*	Attribtue parsing starts: at the ! of the !--
+						 returns: next char past '>'
+	*/
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlComment*  ToComment() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlComment*  ToComment() { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children. 
+	*/
+	virtual bool Accept( TiXmlVisitor* visitor ) const;
+
+protected:
+	void CopyTo( TiXmlComment* target ) const;
+
+	// used to be public
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+//	virtual void StreamOut( TIXML_OSTREAM * out ) const;
+
+private:
+
+};
+
+
+/** XML text. A text node can have 2 ways to output the next. "normal" output 
+	and CDATA. It will default to the mode it was parsed from the XML file and
+	you generally want to leave it alone, but you can change the output mode with 
+	SetCDATA() and query it with CDATA().
+*/
+class TiXmlText : public TiXmlNode
+{
+	friend class TiXmlElement;
+public:
+	/** Constructor for text element. By default, it is treated as 
+		normal, encoded text. If you want it be output as a CDATA text
+		element, set the parameter _cdata to 'true'
+	*/
+	TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TEXT)
+	{
+		SetValue( initValue );
+		cdata = false;
+	}
+	virtual ~TiXmlText() {}
+
+	#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TEXT)
+	{
+		SetValue( initValue );
+		cdata = false;
+	}
+	#endif
+
+	TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TEXT )	{ copy.CopyTo( this ); }
+	void operator=( const TiXmlText& base )							 	{ base.CopyTo( this ); }
+
+	// Write this text object to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	/// Queries whether this represents text using a CDATA section.
+	bool CDATA() const				{ return cdata; }
+	/// Turns on or off a CDATA representation of text.
+	void SetCDATA( bool _cdata )	{ cdata = _cdata; }
+
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlText* ToText() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlText*       ToText()       { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children. 
+	*/
+	virtual bool Accept( TiXmlVisitor* content ) const;
+
+protected :
+	///  [internal use] Creates a new Element and returns it.
+	virtual TiXmlNode* Clone() const;
+	void CopyTo( TiXmlText* target ) const;
+
+	bool Blank() const;	// returns true if all white space and new lines
+	// [internal use]
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+
+private:
+	bool cdata;			// true if this should be input and output as a CDATA style text element
+};
+
+
+/** In correct XML the declaration is the first entry in the file.
+	@verbatim
+		<?xml version="1.0" standalone="yes"?>
+	@endverbatim
+
+	TinyXml will happily read or write files without a declaration,
+	however. There are 3 possible attributes to the declaration:
+	version, encoding, and standalone.
+
+	Note: In this version of the code, the attributes are
+	handled as special cases, not generic attributes, simply
+	because there can only be at most 3 and they are always the same.
+*/
+class TiXmlDeclaration : public TiXmlNode
+{
+public:
+	/// Construct an empty declaration.
+	TiXmlDeclaration()   : TiXmlNode( TiXmlNode::DECLARATION ) {}
+
+#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlDeclaration(	const std::string& _version,
+						const std::string& _encoding,
+						const std::string& _standalone );
+#endif
+
+	/// Construct.
+	TiXmlDeclaration(	const char* _version,
+						const char* _encoding,
+						const char* _standalone );
+
+	TiXmlDeclaration( const TiXmlDeclaration& copy );
+	void operator=( const TiXmlDeclaration& copy );
+
+	virtual ~TiXmlDeclaration()	{}
+
+	/// Version. Will return an empty string if none was found.
+	const char *Version() const			{ return version.c_str (); }
+	/// Encoding. Will return an empty string if none was found.
+	const char *Encoding() const		{ return encoding.c_str (); }
+	/// Is this a standalone document?
+	const char *Standalone() const		{ return standalone.c_str (); }
+
+	/// Creates a copy of this Declaration and returns it.
+	virtual TiXmlNode* Clone() const;
+	// Print this declaration to a FILE stream.
+	virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const;
+	virtual void Print( FILE* cfile, int depth ) const {
+		Print( cfile, depth, 0 );
+	}
+
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlDeclaration* ToDeclaration() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlDeclaration*       ToDeclaration()       { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children. 
+	*/
+	virtual bool Accept( TiXmlVisitor* visitor ) const;
+
+protected:
+	void CopyTo( TiXmlDeclaration* target ) const;
+	// used to be public
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+
+private:
+
+	TIXML_STRING version;
+	TIXML_STRING encoding;
+	TIXML_STRING standalone;
+};
+
+
+/** Any tag that tinyXml doesn't recognize is saved as an
+	unknown. It is a tag of text, but should not be modified.
+	It will be written back to the XML, unchanged, when the file
+	is saved.
+
+	DTD tags get thrown into TiXmlUnknowns.
+*/
+class TiXmlUnknown : public TiXmlNode
+{
+public:
+	TiXmlUnknown() : TiXmlNode( TiXmlNode::UNKNOWN )	{}
+	virtual ~TiXmlUnknown() {}
+
+	TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::UNKNOWN )		{ copy.CopyTo( this ); }
+	void operator=( const TiXmlUnknown& copy )										{ copy.CopyTo( this ); }
+
+	/// Creates a copy of this Unknown and returns it.
+	virtual TiXmlNode* Clone() const;
+	// Print this Unknown to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlUnknown*     ToUnknown()     const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlUnknown*           ToUnknown()	    { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children. 
+	*/
+	virtual bool Accept( TiXmlVisitor* content ) const;
+
+protected:
+	void CopyTo( TiXmlUnknown* target ) const;
+
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+
+private:
+
+};
+
+
+/** Always the top level node. A document binds together all the
+	XML pieces. It can be saved, loaded, and printed to the screen.
+	The 'value' of a document node is the xml file name.
+*/
+class TiXmlDocument : public TiXmlNode
+{
+public:
+	/// Create an empty document, that has no name.
+	TiXmlDocument();
+	/// Create a document with a name. The name of the document is also the filename of the xml.
+	TiXmlDocument( const char * documentName );
+
+	#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlDocument( const std::string& documentName );
+	#endif
+
+	TiXmlDocument( const TiXmlDocument& copy );
+	void operator=( const TiXmlDocument& copy );
+
+	virtual ~TiXmlDocument() {}
+
+	/** Load a file using the current document value.
+		Returns true if successful. Will delete any existing
+		document data before loading.
+	*/
+	bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
+	/// Save a file using the current document value. Returns true if successful.
+	bool SaveFile() const;
+	/// Load a file using the given filename. Returns true if successful.
+	bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
+	/// Save a file using the given filename. Returns true if successful.
+	bool SaveFile( const char * filename ) const;
+	/** Load a file using the given FILE*. Returns true if successful. Note that this method
+		doesn't stream - the entire object pointed at by the FILE*
+		will be interpreted as an XML file. TinyXML doesn't stream in XML from the current
+		file location. Streaming may be added in the future.
+	*/
+	bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
+	/// Save a file using the given FILE*. Returns true if successful.
+	bool SaveFile( FILE* ) const;
+
+	#ifdef TIXML_USE_STL
+	bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING )			///< STL std::string version.
+	{
+//		StringToBuffer f( filename );
+//		return ( f.buffer && LoadFile( f.buffer, encoding ));
+		return LoadFile( filename.c_str(), encoding );
+	}
+	bool SaveFile( const std::string& filename ) const		///< STL std::string version.
+	{
+//		StringToBuffer f( filename );
+//		return ( f.buffer && SaveFile( f.buffer ));
+		return SaveFile( filename.c_str() );
+	}
+	#endif
+
+	/** Parse the given null terminated block of xml data. Passing in an encoding to this
+		method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml
+		to use that encoding, regardless of what TinyXml might otherwise try to detect.
+	*/
+	virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
+
+	/** Get the root element -- the only top level element -- of the document.
+		In well formed XML, there should only be one. TinyXml is tolerant of
+		multiple elements at the document level.
+	*/
+	const TiXmlElement* RootElement() const		{ return FirstChildElement(); }
+	TiXmlElement* RootElement()					{ return FirstChildElement(); }
+
+	/** If an error occurs, Error will be set to true. Also,
+		- The ErrorId() will contain the integer identifier of the error (not generally useful)
+		- The ErrorDesc() method will return the name of the error. (very useful)
+		- The ErrorRow() and ErrorCol() will return the location of the error (if known)
+	*/	
+	bool Error() const						{ return error; }
+
+	/// Contains a textual (english) description of the error if one occurs.
+	const char * ErrorDesc() const	{ return errorDesc.c_str (); }
+
+	/** Generally, you probably want the error string ( ErrorDesc() ). But if you
+		prefer the ErrorId, this function will fetch it.
+	*/
+	int ErrorId()	const				{ return errorId; }
+
+	/** Returns the location (if known) of the error. The first column is column 1, 
+		and the first row is row 1. A value of 0 means the row and column wasn't applicable
+		(memory errors, for example, have no row/column) or the parser lost the error. (An
+		error in the error reporting, in that case.)
+
+		@sa SetTabSize, Row, Column
+	*/
+	int ErrorRow() const	{ return errorLocation.row+1; }
+	int ErrorCol() const	{ return errorLocation.col+1; }	///< The column where the error occured. See ErrorRow()
+
+	/** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol())
+		to report the correct values for row and column. It does not change the output
+		or input in any way.
+		
+		By calling this method, with a tab size
+		greater than 0, the row and column of each node and attribute is stored
+		when the file is loaded. Very useful for tracking the DOM back in to
+		the source file.
+
+		The tab size is required for calculating the location of nodes. If not
+		set, the default of 4 is used. The tabsize is set per document. Setting
+		the tabsize to 0 disables row/column tracking.
+
+		Note that row and column tracking is not supported when using operator>>.
+
+		The tab size needs to be enabled before the parse or load. Correct usage:
+		@verbatim
+		TiXmlDocument doc;
+		doc.SetTabSize( 8 );
+		doc.Load( "myfile.xml" );
+		@endverbatim
+
+		@sa Row, Column
+	*/
+	void SetTabSize( int _tabsize )		{ tabsize = _tabsize; }
+
+	int TabSize() const	{ return tabsize; }
+
+	/** If you have handled the error, it can be reset with this call. The error
+		state is automatically cleared if you Parse a new XML block.
+	*/
+	void ClearError()						{	error = false; 
+												errorId = 0; 
+												errorDesc = ""; 
+												errorLocation.row = errorLocation.col = 0; 
+												//errorLocation.last = 0; 
+											}
+
+	/** Write the document to standard out using formatted printing ("pretty print"). */
+	void Print() const						{ Print( stdout, 0 ); }
+
+	/* Write the document to a string using formatted printing ("pretty print"). This
+		will allocate a character array (new char[]) and return it as a pointer. The
+		calling code pust call delete[] on the return char* to avoid a memory leak.
+	*/
+	//char* PrintToMemory() const; 
+
+	/// Print this Document to a FILE stream.
+	virtual void Print( FILE* cfile, int depth = 0 ) const;
+	// [internal use]
+	void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding );
+
+	virtual const TiXmlDocument*    ToDocument()    const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlDocument*          ToDocument()          { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children. 
+	*/
+	virtual bool Accept( TiXmlVisitor* content ) const;
+
+protected :
+	// [internal use]
+	virtual TiXmlNode* Clone() const;
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+
+private:
+	void CopyTo( TiXmlDocument* target ) const;
+
+	bool error;
+	int  errorId;
+	TIXML_STRING errorDesc;
+	int tabsize;
+	TiXmlCursor errorLocation;
+	bool useMicrosoftBOM;		// the UTF-8 BOM were found when read. Note this, and try to write.
+};
+
+
+/**
+	A TiXmlHandle is a class that wraps a node pointer with null checks; this is
+	an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml
+	DOM structure. It is a separate utility class.
+
+	Take an example:
+	@verbatim
+	<Document>
+		<Element attributeA = "valueA">
+			<Child attributeB = "value1" />
+			<Child attributeB = "value2" />
+		</Element>
+	<Document>
+	@endverbatim
+
+	Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very 
+	easy to write a *lot* of code that looks like:
+
+	@verbatim
+	TiXmlElement* root = document.FirstChildElement( "Document" );
+	if ( root )
+	{
+		TiXmlElement* element = root->FirstChildElement( "Element" );
+		if ( element )
+		{
+			TiXmlElement* child = element->FirstChildElement( "Child" );
+			if ( child )
+			{
+				TiXmlElement* child2 = child->NextSiblingElement( "Child" );
+				if ( child2 )
+				{
+					// Finally do something useful.
+	@endverbatim
+
+	And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity
+	of such code. A TiXmlHandle checks for null	pointers so it is perfectly safe 
+	and correct to use:
+
+	@verbatim
+	TiXmlHandle docHandle( &document );
+	TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement();
+	if ( child2 )
+	{
+		// do something useful
+	@endverbatim
+
+	Which is MUCH more concise and useful.
+
+	It is also safe to copy handles - internally they are nothing more than node pointers.
+	@verbatim
+	TiXmlHandle handleCopy = handle;
+	@endverbatim
+
+	What they should not be used for is iteration:
+
+	@verbatim
+	int i=0; 
+	while ( true )
+	{
+		TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement();
+		if ( !child )
+			break;
+		// do something
+		++i;
+	}
+	@endverbatim
+
+	It seems reasonable, but it is in fact two embedded while loops. The Child method is 
+	a linear walk to find the element, so this code would iterate much more than it needs 
+	to. Instead, prefer:
+
+	@verbatim
+	TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement();
+
+	for( child; child; child=child->NextSiblingElement() )
+	{
+		// do something
+	}
+	@endverbatim
+*/
+class TiXmlHandle
+{
+public:
+	/// Create a handle from any node (at any depth of the tree.) This can be a null pointer.
+	TiXmlHandle( TiXmlNode* _node )					{ this->node = _node; }
+	/// Copy constructor
+	TiXmlHandle( const TiXmlHandle& ref )			{ this->node = ref.node; }
+	TiXmlHandle operator=( const TiXmlHandle& ref ) { this->node = ref.node; return *this; }
+
+	/// Return a handle to the first child node.
+	TiXmlHandle FirstChild() const;
+	/// Return a handle to the first child node with the given name.
+	TiXmlHandle FirstChild( const char * value ) const;
+	/// Return a handle to the first child element.
+	TiXmlHandle FirstChildElement() const;
+	/// Return a handle to the first child element with the given name.
+	TiXmlHandle FirstChildElement( const char * value ) const;
+
+	/** Return a handle to the "index" child with the given name. 
+		The first child is 0, the second 1, etc.
+	*/
+	TiXmlHandle Child( const char* value, int index ) const;
+	/** Return a handle to the "index" child. 
+		The first child is 0, the second 1, etc.
+	*/
+	TiXmlHandle Child( int index ) const;
+	/** Return a handle to the "index" child element with the given name. 
+		The first child element is 0, the second 1, etc. Note that only TiXmlElements
+		are indexed: other types are not counted.
+	*/
+	TiXmlHandle ChildElement( const char* value, int index ) const;
+	/** Return a handle to the "index" child element. 
+		The first child element is 0, the second 1, etc. Note that only TiXmlElements
+		are indexed: other types are not counted.
+	*/
+	TiXmlHandle ChildElement( int index ) const;
+
+	#ifdef TIXML_USE_STL
+	TiXmlHandle FirstChild( const std::string& _value ) const				{ return FirstChild( _value.c_str() ); }
+	TiXmlHandle FirstChildElement( const std::string& _value ) const		{ return FirstChildElement( _value.c_str() ); }
+
+	TiXmlHandle Child( const std::string& _value, int index ) const			{ return Child( _value.c_str(), index ); }
+	TiXmlHandle ChildElement( const std::string& _value, int index ) const	{ return ChildElement( _value.c_str(), index ); }
+	#endif
+
+	/** Return the handle as a TiXmlNode. This may return null.
+	*/
+	TiXmlNode* ToNode() const			{ return node; } 
+	/** Return the handle as a TiXmlElement. This may return null.
+	*/
+	TiXmlElement* ToElement() const		{ return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); }
+	/**	Return the handle as a TiXmlText. This may return null.
+	*/
+	TiXmlText* ToText() const			{ return ( ( node && node->ToText() ) ? node->ToText() : 0 ); }
+	/** Return the handle as a TiXmlUnknown. This may return null.
+	*/
+	TiXmlUnknown* ToUnknown() const		{ return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); }
+
+	/** @deprecated use ToNode. 
+		Return the handle as a TiXmlNode. This may return null.
+	*/
+	TiXmlNode* Node() const			{ return ToNode(); } 
+	/** @deprecated use ToElement. 
+		Return the handle as a TiXmlElement. This may return null.
+	*/
+	TiXmlElement* Element() const	{ return ToElement(); }
+	/**	@deprecated use ToText()
+		Return the handle as a TiXmlText. This may return null.
+	*/
+	TiXmlText* Text() const			{ return ToText(); }
+	/** @deprecated use ToUnknown()
+		Return the handle as a TiXmlUnknown. This may return null.
+	*/
+	TiXmlUnknown* Unknown() const	{ return ToUnknown(); }
+
+private:
+	TiXmlNode* node;
+};
+
+
+/** Print to memory functionality. The TiXmlPrinter is useful when you need to:
+
+	-# Print to memory (especially in non-STL mode)
+	-# Control formatting (line endings, etc.)
+
+	When constructed, the TiXmlPrinter is in its default "pretty printing" mode.
+	Before calling Accept() you can call methods to control the printing
+	of the XML document. After TiXmlNode::Accept() is called, the printed document can
+	be accessed via the CStr(), Str(), and Size() methods.
+
+	TiXmlPrinter uses the Visitor API.
+	@verbatim
+	TiXmlPrinter printer;
+	printer.SetIndent( "\t" );
+
+	doc.Accept( &printer );
+	fprintf( stdout, "%s", printer.CStr() );
+	@endverbatim
+*/
+class TiXmlPrinter : public TiXmlVisitor
+{
+public:
+	TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ),
+					 buffer(), indent( "    " ), lineBreak( "\n" ) {}
+
+	virtual bool VisitEnter( const TiXmlDocument& doc );
+	virtual bool VisitExit( const TiXmlDocument& doc );
+
+	virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute );
+	virtual bool VisitExit( const TiXmlElement& element );
+
+	virtual bool Visit( const TiXmlDeclaration& declaration );
+	virtual bool Visit( const TiXmlText& text );
+	virtual bool Visit( const TiXmlComment& comment );
+	virtual bool Visit( const TiXmlUnknown& unknown );
+
+	/** Set the indent characters for printing. By default 4 spaces
+		but tab (\t) is also useful, or null/empty string for no indentation.
+	*/
+	void SetIndent( const char* _indent )			{ indent = _indent ? _indent : "" ; }
+	/// Query the indention string.
+	const char* Indent()							{ return indent.c_str(); }
+	/** Set the line breaking string. By default set to newline (\n). 
+		Some operating systems prefer other characters, or can be
+		set to the null/empty string for no indenation.
+	*/
+	void SetLineBreak( const char* _lineBreak )		{ lineBreak = _lineBreak ? _lineBreak : ""; }
+	/// Query the current line breaking string.
+	const char* LineBreak()							{ return lineBreak.c_str(); }
+
+	/** Switch over to "stream printing" which is the most dense formatting without 
+		linebreaks. Common when the XML is needed for network transmission.
+	*/
+	void SetStreamPrinting()						{ indent = "";
+													  lineBreak = "";
+													}	
+	/// Return the result.
+	const char* CStr()								{ return buffer.c_str(); }
+	/// Return the length of the result string.
+	size_t Size()									{ return buffer.size(); }
+
+	#ifdef TIXML_USE_STL
+	/// Return the result.
+	const std::string& Str()						{ return buffer; }
+	#endif
+
+private:
+	void DoIndent()	{
+		for( int i=0; i<depth; ++i )
+			buffer += indent;
+	}
+	void DoLineBreak() {
+		buffer += lineBreak;
+	}
+
+	int depth;
+	bool simpleTextPrint;
+	TIXML_STRING buffer;
+	TIXML_STRING indent;
+	TIXML_STRING lineBreak;
+};
+
+
+#ifdef _MSC_VER
+#pragma warning( pop )
+#endif
+
+#endif
+
Index: /ogreode/tinyxml/tinyxml_lib.dsp
===================================================================
--- /ogreode/tinyxml/tinyxml_lib.dsp	(revision 21)
+++ /ogreode/tinyxml/tinyxml_lib.dsp	(revision 21)
@@ -0,0 +1,130 @@
+# Microsoft Developer Studio Project File - Name="tinyxml" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=tinyxml - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "tinyxml_lib.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "tinyxml_lib.mak" CFG="tinyxml - Win32 Release"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "tinyxml - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "tinyxml - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "tinyxml - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Release\tinyxml.lib"
+
+!ELSEIF  "$(CFG)" == "tinyxml - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Debug\tinyxmld.lib"
+
+!ENDIF 
+
+# Begin Target
+
+# Name "tinyxml - Win32 Release"
+# Name "tinyxml - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\tinystr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\tinyxml.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\tinyxmlerror.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\tinyxmlparser.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\tinystr.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\tinyxml.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=.\changes.txt
+# End Source File
+# Begin Source File
+
+SOURCE=.\readme.txt
+# End Source File
+# Begin Source File
+
+SOURCE=.\tutorial_gettingStarted.txt
+# End Source File
+# End Target
+# End Project
Index: /ogreode/tinyxml/tinyxml_lib.vcproj
===================================================================
--- /ogreode/tinyxml/tinyxml_lib.vcproj	(revision 21)
+++ /ogreode/tinyxml/tinyxml_lib.vcproj	(revision 21)
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="tinyxml"
+	ProjectGUID="{0A7B37E4-FBAA-456C-863C-776B52322E00}"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				PrecompiledHeaderFile=".\Release/tinyxml_lib.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1031"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="Release\tinyxml.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+				SuppressStartupBanner="true"
+				OutputFile=".\Release/tinyxml_lib.bsc"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\Debug/tinyxml_lib.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				BrowseInformation="1"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1031"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="Debug\tinyxmld.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+				SuppressStartupBanner="true"
+				OutputFile=".\Debug/tinyxml_lib.bsc"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="tinystr.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxml.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxmlerror.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxmlparser.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="tinystr.h"
+				>
+			</File>
+			<File
+				RelativePath="tinyxml.h"
+				>
+			</File>
+		</Filter>
+		<File
+			RelativePath="changes.txt"
+			>
+		</File>
+		<File
+			RelativePath="readme.txt"
+			>
+		</File>
+		<File
+			RelativePath="tutorial_gettingStarted.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/tinyxml/tinyxml_lib_SDK.cbp
===================================================================
--- /ogreode/tinyxml/tinyxml_lib_SDK.cbp	(revision 21)
+++ /ogreode/tinyxml/tinyxml_lib_SDK.cbp	(revision 21)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="5" />
+	<Project>
+		<Option title="tinyxml" />
+		<Option pch_mode="2" />
+		<Option default_target="" />
+		<Option compiler="gcc" />
+		<Option virtualFolders="" />
+		<Build>
+			<Target title="Release">
+				<Option output="Release\libtinyxml.a" />
+				<Option working_dir="" />
+				<Option object_output="Release" />
+				<Option type="2" />
+				<Option compiler="gcc" />
+				<Option createDefFile="1" />
+				<Compiler>
+					<Add option="-O2" />
+					<Add option="-W" />
+					<Add option="-DWIN32" />
+					<Add option="-DNDEBUG" />
+					<Add option="-D_LIB" />
+					<Add option="-D_CRT_SECURE_NO_DEPRECATE" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+				</Linker>
+			</Target>
+			<Target title="Debug">
+				<Option output="Debug\libtinyxmld.a" />
+				<Option working_dir="" />
+				<Option object_output="Debug" />
+				<Option type="2" />
+				<Option compiler="gcc" />
+				<Option createDefFile="1" />
+				<Compiler>
+					<Add option="-W" />
+					<Add option="-g" />
+					<Add option="-O0" />
+					<Add option="-DWIN32" />
+					<Add option="-D_DEBUG" />
+					<Add option="-D_LIB" />
+					<Add option="-D_CRT_SECURE_NO_DEPRECATE" />
+				</Compiler>
+			</Target>
+		</Build>
+		<Unit filename="changes.txt">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Release" />
+			<Option target="Debug" />
+		</Unit>
+		<Unit filename="readme.txt">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Release" />
+			<Option target="Debug" />
+		</Unit>
+		<Unit filename="tinystr.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Release" />
+			<Option target="Debug" />
+		</Unit>
+		<Unit filename="tinystr.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Release" />
+			<Option target="Debug" />
+		</Unit>
+		<Unit filename="tinyxml.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Release" />
+			<Option target="Debug" />
+		</Unit>
+		<Unit filename="tinyxml.h">
+			<Option compilerVar="CPP" />
+			<Option compile="0" />
+			<Option link="0" />
+			<Option target="Release" />
+			<Option target="Debug" />
+		</Unit>
+		<Unit filename="tinyxmlerror.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Release" />
+			<Option target="Debug" />
+		</Unit>
+		<Unit filename="tinyxmlparser.cpp">
+			<Option compilerVar="CPP" />
+			<Option target="Release" />
+			<Option target="Debug" />
+		</Unit>
+		<Extensions />
+	</Project>
+</CodeBlocks_project_file>
Index: /ogreode/tinyxml/tinyxml_lib_vc8_CVS.vcproj
===================================================================
--- /ogreode/tinyxml/tinyxml_lib_vc8_CVS.vcproj	(revision 21)
+++ /ogreode/tinyxml/tinyxml_lib_vc8_CVS.vcproj	(revision 21)
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="tinyxml"
+	ProjectGUID="{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}"
+	RootNamespace="tinyxml"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="false"
+				WholeProgramOptimization="true"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="false"
+				EnableEnhancedInstructionSet="0"
+				PrecompiledHeaderFile=".\Release/tinyxml_lib.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1031"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="Release\tinyxml.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\Debug/tinyxml_lib.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				BrowseInformation="1"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1031"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="Debug\tinyxmld.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="tinystr.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxml.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxmlerror.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxmlparser.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="tinystr.h"
+				>
+			</File>
+			<File
+				RelativePath="tinyxml.h"
+				>
+			</File>
+		</Filter>
+		<File
+			RelativePath="changes.txt"
+			>
+		</File>
+		<File
+			RelativePath="readme.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/tinyxml/tinyxml_lib_vc8_SDK.vcproj
===================================================================
--- /ogreode/tinyxml/tinyxml_lib_vc8_SDK.vcproj	(revision 21)
+++ /ogreode/tinyxml/tinyxml_lib_vc8_SDK.vcproj	(revision 21)
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="tinyxml"
+	ProjectGUID="{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}"
+	RootNamespace="tinyxml"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="false"
+				WholeProgramOptimization="true"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="false"
+				EnableEnhancedInstructionSet="0"
+				PrecompiledHeaderFile=".\Release/tinyxml_lib.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1031"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="Release\tinyxml.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				StringPooling="true"
+				BasicRuntimeChecks="3"
+				SmallerTypeCheck="true"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\Debug/tinyxml_lib.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1031"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="Debug\tinyxmld.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="tinystr.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxml.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxmlerror.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxmlparser.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="tinystr.h"
+				>
+			</File>
+			<File
+				RelativePath="tinyxml.h"
+				>
+			</File>
+		</Filter>
+		<File
+			RelativePath="changes.txt"
+			>
+		</File>
+		<File
+			RelativePath="readme.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/tinyxml/tinyxml_lib_vc8_Source.vcproj
===================================================================
--- /ogreode/tinyxml/tinyxml_lib_vc8_Source.vcproj	(revision 21)
+++ /ogreode/tinyxml/tinyxml_lib_vc8_Source.vcproj	(revision 21)
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="tinyxml"
+	ProjectGUID="{0FDE607E-F0BA-4BD6-822D-FBDB8738630D}"
+	RootNamespace="tinyxml"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="2"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="false"
+				WholeProgramOptimization="true"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="false"
+				EnableEnhancedInstructionSet="0"
+				PrecompiledHeaderFile=".\Release/tinyxml_lib.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1031"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="Release\tinyxml.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="4"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				PrecompiledHeaderFile=".\Debug/tinyxml_lib.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				BrowseInformation="1"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1031"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="Debug\tinyxmld.lib"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="tinystr.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxml.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxmlerror.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="tinyxmlparser.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						BrowseInformation="1"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="tinystr.h"
+				>
+			</File>
+			<File
+				RelativePath="tinyxml.h"
+				>
+			</File>
+		</Filter>
+		<File
+			RelativePath="changes.txt"
+			>
+		</File>
+		<File
+			RelativePath="readme.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: /ogreode/tinyxml/tinyxmlerror.cpp
===================================================================
--- /ogreode/tinyxml/tinyxmlerror.cpp	(revision 21)
+++ /ogreode/tinyxml/tinyxmlerror.cpp	(revision 21)
@@ -0,0 +1,53 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied 
+warranty. In no event will the authors be held liable for any 
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any 
+purpose, including commercial applications, and to alter it and 
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+#include "tinyxml.h"
+
+// The goal of the seperate error file is to make the first
+// step towards localization. tinyxml (currently) only supports
+// english error messages, but the could now be translated.
+//
+// It also cleans up the code a bit.
+//
+
+const char* TiXmlBase::errorString[ TIXML_ERROR_STRING_COUNT ] =
+{
+	"No error",
+	"Error",
+	"Failed to open file",
+	"Memory allocation failed.",
+	"Error parsing Element.",
+	"Failed to read Element name",
+	"Error reading Element value.",
+	"Error reading Attributes.",
+	"Error: empty tag.",
+	"Error reading end tag.",
+	"Error parsing Unknown.",
+	"Error parsing Comment.",
+	"Error parsing Declaration.",
+	"Error document empty.",
+	"Error null (0) or unexpected EOF found in input stream.",
+	"Error parsing CDATA.",
+	"Error when TiXmlDocument added to document, because TiXmlDocument can only be at the root.",
+};
Index: /ogreode/tinyxml/tinyxmlparser.cpp
===================================================================
--- /ogreode/tinyxml/tinyxmlparser.cpp	(revision 21)
+++ /ogreode/tinyxml/tinyxmlparser.cpp	(revision 21)
@@ -0,0 +1,1606 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied 
+warranty. In no event will the authors be held liable for any 
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any 
+purpose, including commercial applications, and to alter it and 
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must 
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and 
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source 
+distribution.
+*/
+
+#include <ctype.h>
+#include <stddef.h>
+
+#include "tinyxml.h"
+
+//#define DEBUG_PARSER
+#if defined( DEBUG_PARSER )
+#	if defined( DEBUG ) && defined( _MSC_VER )
+#		include <windows.h>
+#		define TIXML_LOG OutputDebugString
+#	else
+#		define TIXML_LOG printf
+#	endif
+#endif
+
+// Note tha "PutString" hardcodes the same list. This
+// is less flexible than it appears. Changing the entries
+// or order will break putstring.	
+TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = 
+{
+	{ "&amp;",  5, '&' },
+	{ "&lt;",   4, '<' },
+	{ "&gt;",   4, '>' },
+	{ "&quot;", 6, '\"' },
+	{ "&apos;", 6, '\'' }
+};
+
+// Bunch of unicode info at:
+//		http://www.unicode.org/faq/utf_bom.html
+// Including the basic of this table, which determines the #bytes in the
+// sequence from the lead byte. 1 placed for invalid sequences --
+// although the result will be junk, pass it through as much as possible.
+// Beware of the non-characters in UTF-8:	
+//				ef bb bf (Microsoft "lead bytes")
+//				ef bf be
+//				ef bf bf 
+
+const unsigned char TIXML_UTF_LEAD_0 = 0xefU;
+const unsigned char TIXML_UTF_LEAD_1 = 0xbbU;
+const unsigned char TIXML_UTF_LEAD_2 = 0xbfU;
+
+const int TiXmlBase::utf8ByteTable[256] = 
+{
+	//	0	1	2	3	4	5	6	7	8	9	a	b	c	d	e	f
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x00
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x10
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x20
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x30
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x40
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x50
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x60
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x70	End of ASCII range
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x80 0x80 to 0xc1 invalid
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x90 
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0xa0 
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0xb0 
+		1,	1,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	// 0xc0 0xc2 to 0xdf 2 byte
+		2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	// 0xd0
+		3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	// 0xe0 0xe0 to 0xef 3 byte
+		4,	4,	4,	4,	4,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1	// 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid
+};
+
+
+void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length )
+{
+	const unsigned long BYTE_MASK = 0xBF;
+	const unsigned long BYTE_MARK = 0x80;
+	const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
+
+	if (input < 0x80) 
+		*length = 1;
+	else if ( input < 0x800 )
+		*length = 2;
+	else if ( input < 0x10000 )
+		*length = 3;
+	else if ( input < 0x200000 )
+		*length = 4;
+	else
+		{ *length = 0; return; }	// This code won't covert this correctly anyway.
+
+	output += *length;
+
+	// Scary scary fall throughs.
+	switch (*length) 
+	{
+		case 4:
+			--output; 
+			*output = (char)((input | BYTE_MARK) & BYTE_MASK); 
+			input >>= 6;
+		case 3:
+			--output; 
+			*output = (char)((input | BYTE_MARK) & BYTE_MASK); 
+			input >>= 6;
+		case 2:
+			--output; 
+			*output = (char)((input | BYTE_MARK) & BYTE_MASK); 
+			input >>= 6;
+		case 1:
+			--output; 
+			*output = (char)(input | FIRST_BYTE_MARK[*length]);
+	}
+}
+
+
+/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ )
+{
+	// This will only work for low-ascii, everything else is assumed to be a valid
+	// letter. I'm not sure this is the best approach, but it is quite tricky trying
+	// to figure out alhabetical vs. not across encoding. So take a very 
+	// conservative approach.
+
+//	if ( encoding == TIXML_ENCODING_UTF8 )
+//	{
+		if ( anyByte < 127 )
+			return isalpha( anyByte );
+		else
+			return 1;	// What else to do? The unicode set is huge...get the english ones right.
+//	}
+//	else
+//	{
+//		return isalpha( anyByte );
+//	}
+}
+
+
+/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ )
+{
+	// This will only work for low-ascii, everything else is assumed to be a valid
+	// letter. I'm not sure this is the best approach, but it is quite tricky trying
+	// to figure out alhabetical vs. not across encoding. So take a very 
+	// conservative approach.
+
+//	if ( encoding == TIXML_ENCODING_UTF8 )
+//	{
+		if ( anyByte < 127 )
+			return isalnum( anyByte );
+		else
+			return 1;	// What else to do? The unicode set is huge...get the english ones right.
+//	}
+//	else
+//	{
+//		return isalnum( anyByte );
+//	}
+}
+
+
+class TiXmlParsingData
+{
+	friend class TiXmlDocument;
+  public:
+	void Stamp( const char* now, TiXmlEncoding encoding );
+
+	const TiXmlCursor& Cursor()	{ return cursor; }
+
+  private:
+	// Only used by the document!
+	TiXmlParsingData( const char* start, int _tabsize, int row, int col )
+	{
+		assert( start );
+		stamp = start;
+		tabsize = _tabsize;
+		cursor.row = row;
+		cursor.col = col;
+	}
+
+	TiXmlCursor		cursor;
+	const char*		stamp;
+	int				tabsize;
+};
+
+
+void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding )
+{
+	assert( now );
+
+	// Do nothing if the tabsize is 0.
+	if ( tabsize < 1 )
+	{
+		return;
+	}
+
+	// Get the current row, column.
+	int row = cursor.row;
+	int col = cursor.col;
+	const char* p = stamp;
+	assert( p );
+
+	while ( p < now )
+	{
+		// Treat p as unsigned, so we have a happy compiler.
+		const unsigned char* pU = (const unsigned char*)p;
+
+		// Code contributed by Fletcher Dunn: (modified by lee)
+		switch (*pU) {
+			case 0:
+				// We *should* never get here, but in case we do, don't
+				// advance past the terminating null character, ever
+				return;
+
+			case '\r':
+				// bump down to the next line
+				++row;
+				col = 0;				
+				// Eat the character
+				++p;
+
+				// Check for \r\n sequence, and treat this as a single character
+				if (*p == '\n') {
+					++p;
+				}
+				break;
+
+			case '\n':
+				// bump down to the next line
+				++row;
+				col = 0;
+
+				// Eat the character
+				++p;
+
+				// Check for \n\r sequence, and treat this as a single
+				// character.  (Yes, this bizarre thing does occur still
+				// on some arcane platforms...)
+				if (*p == '\r') {
+					++p;
+				}
+				break;
+
+			case '\t':
+				// Eat the character
+				++p;
+
+				// Skip to next tab stop
+				col = (col / tabsize + 1) * tabsize;
+				break;
+
+			case TIXML_UTF_LEAD_0:
+				if ( encoding == TIXML_ENCODING_UTF8 )
+				{
+					if ( *(p+1) && *(p+2) )
+					{
+						// In these cases, don't advance the column. These are
+						// 0-width spaces.
+						if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 )
+							p += 3;	
+						else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU )
+							p += 3;	
+						else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU )
+							p += 3;	
+						else
+							{ p +=3; ++col; }	// A normal character.
+					}
+				}
+				else
+				{
+					++p;
+					++col;
+				}
+				break;
+
+			default:
+				if ( encoding == TIXML_ENCODING_UTF8 )
+				{
+					// Eat the 1 to 4 byte utf8 character.
+					int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)];
+					if ( step == 0 )
+						step = 1;		// Error case from bad encoding, but handle gracefully.
+					p += step;
+
+					// Just advance one column, of course.
+					++col;
+				}
+				else
+				{
+					++p;
+					++col;
+				}
+				break;
+		}
+	}
+	cursor.row = row;
+	cursor.col = col;
+	assert( cursor.row >= -1 );
+	assert( cursor.col >= -1 );
+	stamp = p;
+	assert( stamp );
+}
+
+
+const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding )
+{
+	if ( !p || !*p )
+	{
+		return 0;
+	}
+	if ( encoding == TIXML_ENCODING_UTF8 )
+	{
+		while ( *p )
+		{
+			const unsigned char* pU = (const unsigned char*)p;
+			
+			// Skip the stupid Microsoft UTF-8 Byte order marks
+			if (	*(pU+0)==TIXML_UTF_LEAD_0
+				 && *(pU+1)==TIXML_UTF_LEAD_1 
+				 && *(pU+2)==TIXML_UTF_LEAD_2 )
+			{
+				p += 3;
+				continue;
+			}
+			else if(*(pU+0)==TIXML_UTF_LEAD_0
+				 && *(pU+1)==0xbfU
+				 && *(pU+2)==0xbeU )
+			{
+				p += 3;
+				continue;
+			}
+			else if(*(pU+0)==TIXML_UTF_LEAD_0
+				 && *(pU+1)==0xbfU
+				 && *(pU+2)==0xbfU )
+			{
+				p += 3;
+				continue;
+			}
+
+			if ( IsWhiteSpace( *p ) || *p == '\n' || *p =='\r' )		// Still using old rules for white space.
+				++p;
+			else
+				break;
+		}
+	}
+	else
+	{
+		while ( *p && IsWhiteSpace( *p ) || *p == '\n' || *p =='\r' )
+			++p;
+	}
+
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag )
+{
+	for( ;; )
+	{
+		if ( !in->good() ) return false;
+
+		int c = in->peek();
+		// At this scope, we can't get to a document. So fail silently.
+		if ( !IsWhiteSpace( c ) || c <= 0 )
+			return true;
+
+		*tag += (char) in->get();
+	}
+}
+
+/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag )
+{
+	//assert( character > 0 && character < 128 );	// else it won't work in utf-8
+	while ( in->good() )
+	{
+		int c = in->peek();
+		if ( c == character )
+			return true;
+		if ( c <= 0 )		// Silent failure: can't get document at this scope
+			return false;
+
+		in->get();
+		*tag += (char) c;
+	}
+	return false;
+}
+#endif
+
+// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The
+// "assign" optimization removes over 10% of the execution time.
+//
+const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding )
+{
+	// Oddly, not supported on some comilers,
+	//name->clear();
+	// So use this:
+	*name = "";
+	assert( p );
+
+	// Names start with letters or underscores.
+	// Of course, in unicode, tinyxml has no idea what a letter *is*. The
+	// algorithm is generous.
+	//
+	// After that, they can be letters, underscores, numbers,
+	// hyphens, or colons. (Colons are valid ony for namespaces,
+	// but tinyxml can't tell namespaces from names.)
+	if (    p && *p 
+		 && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) )
+	{
+		const char* start = p;
+		while(		p && *p
+				&&	(		IsAlphaNum( (unsigned char ) *p, encoding ) 
+						 || *p == '_'
+						 || *p == '-'
+						 || *p == '.'
+						 || *p == ':' ) )
+		{
+			//(*name) += *p; // expensive
+			++p;
+		}
+		if ( p-start > 0 ) {
+			name->assign( start, p-start );
+		}
+		return p;
+	}
+	return 0;
+}
+
+const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding )
+{
+	// Presume an entity, and pull it out.
+    TIXML_STRING ent;
+	int i;
+	*length = 0;
+
+	if ( *(p+1) && *(p+1) == '#' && *(p+2) )
+	{
+		unsigned long ucs = 0;
+		ptrdiff_t delta = 0;
+		unsigned mult = 1;
+
+		if ( *(p+2) == 'x' )
+		{
+			// Hexadecimal.
+			if ( !*(p+3) ) return 0;
+
+			const char* q = p+3;
+			q = strchr( q, ';' );
+
+			if ( !q || !*q ) return 0;
+
+			delta = q-p;
+			--q;
+
+			while ( *q != 'x' )
+			{
+				if ( *q >= '0' && *q <= '9' )
+					ucs += mult * (*q - '0');
+				else if ( *q >= 'a' && *q <= 'f' )
+					ucs += mult * (*q - 'a' + 10);
+				else if ( *q >= 'A' && *q <= 'F' )
+					ucs += mult * (*q - 'A' + 10 );
+				else 
+					return 0;
+				mult *= 16;
+				--q;
+			}
+		}
+		else
+		{
+			// Decimal.
+			if ( !*(p+2) ) return 0;
+
+			const char* q = p+2;
+			q = strchr( q, ';' );
+
+			if ( !q || !*q ) return 0;
+
+			delta = q-p;
+			--q;
+
+			while ( *q != '#' )
+			{
+				if ( *q >= '0' && *q <= '9' )
+					ucs += mult * (*q - '0');
+				else 
+					return 0;
+				mult *= 10;
+				--q;
+			}
+		}
+		if ( encoding == TIXML_ENCODING_UTF8 )
+		{
+			// convert the UCS to UTF-8
+			ConvertUTF32ToUTF8( ucs, value, length );
+		}
+		else
+		{
+			*value = (char)ucs;
+			*length = 1;
+		}
+		return p + delta + 1;
+	}
+
+	// Now try to match it.
+	for( i=0; i<NUM_ENTITY; ++i )
+	{
+		if ( strncmp( entity[i].str, p, entity[i].strLength ) == 0 )
+		{
+			assert( strlen( entity[i].str ) == entity[i].strLength );
+			*value = entity[i].chr;
+			*length = 1;
+			return ( p + entity[i].strLength );
+		}
+	}
+
+	// So it wasn't an entity, its unrecognized, or something like that.
+	*value = *p;	// Don't put back the last one, since we return it!
+	//*length = 1;	// Leave unrecognized entities - this doesn't really work.
+					// Just writes strange XML.
+	return p+1;
+}
+
+
+bool TiXmlBase::StringEqual( const char* p,
+							 const char* tag,
+							 bool ignoreCase,
+							 TiXmlEncoding encoding )
+{
+	assert( p );
+	assert( tag );
+	if ( !p || !*p )
+	{
+		assert( 0 );
+		return false;
+	}
+
+	const char* q = p;
+
+	if ( ignoreCase )
+	{
+		while ( *q && *tag && ToLower( *q, encoding ) == ToLower( *tag, encoding ) )
+		{
+			++q;
+			++tag;
+		}
+
+		if ( *tag == 0 )
+			return true;
+	}
+	else
+	{
+		while ( *q && *tag && *q == *tag )
+		{
+			++q;
+			++tag;
+		}
+
+		if ( *tag == 0 )		// Have we found the end of the tag, and everything equal?
+			return true;
+	}
+	return false;
+}
+
+const char* TiXmlBase::ReadText(	const char* p, 
+									TIXML_STRING * text, 
+									bool trimWhiteSpace, 
+									const char* endTag, 
+									bool caseInsensitive,
+									TiXmlEncoding encoding )
+{
+    *text = "";
+	if (    !trimWhiteSpace			// certain tags always keep whitespace
+		 || !condenseWhiteSpace )	// if true, whitespace is always kept
+	{
+		// Keep all the white space.
+		while (	   p && *p
+				&& !StringEqual( p, endTag, caseInsensitive, encoding )
+			  )
+		{
+			int len;
+			char cArr[4] = { 0, 0, 0, 0 };
+			p = GetChar( p, cArr, &len, encoding );
+			text->append( cArr, len );
+		}
+	}
+	else
+	{
+		bool whitespace = false;
+
+		// Remove leading white space:
+		p = SkipWhiteSpace( p, encoding );
+		while (	   p && *p
+				&& !StringEqual( p, endTag, caseInsensitive, encoding ) )
+		{
+			if ( *p == '\r' || *p == '\n' )
+			{
+				whitespace = true;
+				++p;
+			}
+			else if ( IsWhiteSpace( *p ) )
+			{
+				whitespace = true;
+				++p;
+			}
+			else
+			{
+				// If we've found whitespace, add it before the
+				// new character. Any whitespace just becomes a space.
+				if ( whitespace )
+				{
+					(*text) += ' ';
+					whitespace = false;
+				}
+				int len;
+				char cArr[4] = { 0, 0, 0, 0 };
+				p = GetChar( p, cArr, &len, encoding );
+				if ( len == 1 )
+					(*text) += cArr[0];	// more efficient
+				else
+					text->append( cArr, len );
+			}
+		}
+	}
+	if ( p ) 
+		p += strlen( endTag );
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+
+void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	// The basic issue with a document is that we don't know what we're
+	// streaming. Read something presumed to be a tag (and hope), then
+	// identify it, and call the appropriate stream method on the tag.
+	//
+	// This "pre-streaming" will never read the closing ">" so the
+	// sub-tag can orient itself.
+
+	if ( !StreamTo( in, '<', tag ) ) 
+	{
+		SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return;
+	}
+
+	while ( in->good() )
+	{
+		int tagIndex = (int) tag->length();
+		while ( in->good() && in->peek() != '>' )
+		{
+			int c = in->get();
+			if ( c <= 0 )
+			{
+				SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+				break;
+			}
+			(*tag) += (char) c;
+		}
+
+		if ( in->good() )
+		{
+			// We now have something we presume to be a node of 
+			// some sort. Identify it, and call the node to
+			// continue streaming.
+			TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING );
+
+			if ( node )
+			{
+				node->StreamIn( in, tag );
+				bool isElement = node->ToElement() != 0;
+				delete node;
+				node = 0;
+
+				// If this is the root element, we're done. Parsing will be
+				// done by the >> operator.
+				if ( isElement )
+				{
+					return;
+				}
+			}
+			else
+			{
+				SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN );
+				return;
+			}
+		}
+	}
+	// We should have returned sooner.
+	SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN );
+}
+
+#endif
+
+const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding )
+{
+	ClearError();
+
+	// Parse away, at the document level. Since a document
+	// contains nothing but other tags, most of what happens
+	// here is skipping white space.
+	if ( !p || !*p )
+	{
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	// Note that, for a document, this needs to come
+	// before the while space skip, so that parsing
+	// starts from the pointer we are given.
+	location.Clear();
+	if ( prevData )
+	{
+		location.row = prevData->cursor.row;
+		location.col = prevData->cursor.col;
+	}
+	else
+	{
+		location.row = 0;
+		location.col = 0;
+	}
+	TiXmlParsingData data( p, TabSize(), location.row, location.col );
+	location = data.Cursor();
+
+	if ( encoding == TIXML_ENCODING_UNKNOWN )
+	{
+		// Check for the Microsoft UTF-8 lead bytes.
+		const unsigned char* pU = (const unsigned char*)p;
+		if (	*(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0
+			 && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1
+			 && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 )
+		{
+			encoding = TIXML_ENCODING_UTF8;
+			useMicrosoftBOM = true;
+		}
+	}
+
+    p = SkipWhiteSpace( p, encoding );
+	if ( !p )
+	{
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	while ( p && *p )
+	{
+		TiXmlNode* node = Identify( p, encoding );
+		if ( node )
+		{
+			p = node->Parse( p, &data, encoding );
+			LinkEndChild( node );
+		}
+		else
+		{
+			break;
+		}
+
+		// Did we get encoding info?
+		if (    encoding == TIXML_ENCODING_UNKNOWN
+			 && node->ToDeclaration() )
+		{
+			TiXmlDeclaration* dec = node->ToDeclaration();
+			const char* enc = dec->Encoding();
+			assert( enc );
+
+			if ( *enc == 0 )
+				encoding = TIXML_ENCODING_UTF8;
+			else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) )
+				encoding = TIXML_ENCODING_UTF8;
+			else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) )
+				encoding = TIXML_ENCODING_UTF8;	// incorrect, but be nice
+			else 
+				encoding = TIXML_ENCODING_LEGACY;
+		}
+
+		p = SkipWhiteSpace( p, encoding );
+	}
+
+	// Was this empty?
+	if ( !firstChild ) {
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, encoding );
+		return 0;
+	}
+
+	// All is well.
+	return p;
+}
+
+void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding )
+{	
+	// The first error in a chain is more accurate - don't set again!
+	if ( error )
+		return;
+
+	assert( err > 0 && err < TIXML_ERROR_STRING_COUNT );
+	error   = true;
+	errorId = err;
+	errorDesc = errorString[ errorId ];
+
+	errorLocation.Clear();
+	if ( pError && data )
+	{
+		data->Stamp( pError, encoding );
+		errorLocation = data->Cursor();
+	}
+}
+
+
+TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding )
+{
+	TiXmlNode* returnNode = 0;
+
+	p = SkipWhiteSpace( p, encoding );
+	if( !p || !*p || *p != '<' )
+	{
+		return 0;
+	}
+
+	TiXmlDocument* doc = GetDocument();
+	p = SkipWhiteSpace( p, encoding );
+
+	if ( !p || !*p )
+	{
+		return 0;
+	}
+
+	// What is this thing? 
+	// - Elements start with a letter or underscore, but xml is reserved.
+	// - Comments: <!--
+	// - Decleration: <?xml
+	// - Everthing else is unknown to tinyxml.
+	//
+
+	const char* xmlHeader = { "<?xml" };
+	const char* commentHeader = { "<!--" };
+	const char* dtdHeader = { "<!" };
+	const char* cdataHeader = { "<![CDATA[" };
+
+	if ( StringEqual( p, xmlHeader, true, encoding ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Declaration\n" );
+		#endif
+		returnNode = new TiXmlDeclaration();
+	}
+	else if ( StringEqual( p, commentHeader, false, encoding ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Comment\n" );
+		#endif
+		returnNode = new TiXmlComment();
+	}
+	else if ( StringEqual( p, cdataHeader, false, encoding ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing CDATA\n" );
+		#endif
+		TiXmlText* text = new TiXmlText( "" );
+		text->SetCDATA( true );
+		returnNode = text;
+	}
+	else if ( StringEqual( p, dtdHeader, false, encoding ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Unknown(1)\n" );
+		#endif
+		returnNode = new TiXmlUnknown();
+	}
+	else if (    IsAlpha( *(p+1), encoding )
+			  || *(p+1) == '_' )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Element\n" );
+		#endif
+		returnNode = new TiXmlElement( "" );
+	}
+	else
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Unknown(2)\n" );
+		#endif
+		returnNode = new TiXmlUnknown();
+	}
+
+	if ( returnNode )
+	{
+		// Set the parent, so it can report errors
+		returnNode->parent = this;
+	}
+	else
+	{
+		if ( doc )
+			doc->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, TIXML_ENCODING_UNKNOWN );
+	}
+	return returnNode;
+}
+
+#ifdef TIXML_USE_STL
+
+void TiXmlElement::StreamIn (std::istream * in, TIXML_STRING * tag)
+{
+	// We're called with some amount of pre-parsing. That is, some of "this"
+	// element is in "tag". Go ahead and stream to the closing ">"
+	while( in->good() )
+	{
+		int c = in->get();
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+		(*tag) += (char) c ;
+		
+		if ( c == '>' )
+			break;
+	}
+
+	if ( tag->length() < 3 ) return;
+
+	// Okay...if we are a "/>" tag, then we're done. We've read a complete tag.
+	// If not, identify and stream.
+
+	if (    tag->at( tag->length() - 1 ) == '>' 
+		 && tag->at( tag->length() - 2 ) == '/' )
+	{
+		// All good!
+		return;
+	}
+	else if ( tag->at( tag->length() - 1 ) == '>' )
+	{
+		// There is more. Could be:
+		//		text
+		//		cdata text (which looks like another node)
+		//		closing tag
+		//		another node.
+		for ( ;; )
+		{
+			StreamWhiteSpace( in, tag );
+
+			// Do we have text?
+			if ( in->good() && in->peek() != '<' ) 
+			{
+				// Yep, text.
+				TiXmlText text( "" );
+				text.StreamIn( in, tag );
+
+				// What follows text is a closing tag or another node.
+				// Go around again and figure it out.
+				continue;
+			}
+
+			// We now have either a closing tag...or another node.
+			// We should be at a "<", regardless.
+			if ( !in->good() ) return;
+			assert( in->peek() == '<' );
+			int tagIndex = (int) tag->length();
+
+			bool closingTag = false;
+			bool firstCharFound = false;
+
+			for( ;; )
+			{
+				if ( !in->good() )
+					return;
+
+				int c = in->peek();
+				if ( c <= 0 )
+				{
+					TiXmlDocument* document = GetDocument();
+					if ( document )
+						document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+					return;
+				}
+				
+				if ( c == '>' )
+					break;
+
+				*tag += (char) c;
+				in->get();
+
+				// Early out if we find the CDATA id.
+				if ( c == '[' && tag->size() >= 9 )
+				{
+					size_t len = tag->size();
+					const char* start = tag->c_str() + len - 9;
+					if ( strcmp( start, "<![CDATA[" ) == 0 ) {
+						assert( !closingTag );
+						break;
+					}
+				}
+
+				if ( !firstCharFound && c != '<' && !IsWhiteSpace( c ) )
+				{
+					firstCharFound = true;
+					if ( c == '/' )
+						closingTag = true;
+				}
+			}
+			// If it was a closing tag, then read in the closing '>' to clean up the input stream.
+			// If it was not, the streaming will be done by the tag.
+			if ( closingTag )
+			{
+				if ( !in->good() )
+					return;
+
+				int c = in->get();
+				if ( c <= 0 )
+				{
+					TiXmlDocument* document = GetDocument();
+					if ( document )
+						document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+					return;
+				}
+				assert( c == '>' );
+				*tag += (char) c;
+
+				// We are done, once we've found our closing tag.
+				return;
+			}
+			else
+			{
+				// If not a closing tag, id it, and stream.
+				const char* tagloc = tag->c_str() + tagIndex;
+				TiXmlNode* node = Identify( tagloc, TIXML_DEFAULT_ENCODING );
+				if ( !node )
+					return;
+				node->StreamIn( in, tag );
+				delete node;
+				node = 0;
+
+				// No return: go around from the beginning: text, closing tag, or node.
+			}
+		}
+	}
+}
+#endif
+
+const char* TiXmlElement::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	p = SkipWhiteSpace( p, encoding );
+	TiXmlDocument* document = GetDocument();
+
+	if ( !p || !*p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT, 0, 0, encoding );
+		return 0;
+	}
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+
+	if ( *p != '<' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT, p, data, encoding );
+		return 0;
+	}
+
+	p = SkipWhiteSpace( p+1, encoding );
+
+	// Read the name.
+	const char* pErr = p;
+
+    p = ReadName( p, &value, encoding );
+	if ( !p || !*p )
+	{
+		if ( document )	document->SetError( TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, pErr, data, encoding );
+		return 0;
+	}
+
+    TIXML_STRING endTag ("</");
+	endTag += value;
+	endTag += ">";
+
+	// Check for and read attributes. Also look for an empty
+	// tag or an end tag.
+	while ( p && *p )
+	{
+		pErr = p;
+		p = SkipWhiteSpace( p, encoding );
+		if ( !p || !*p )
+		{
+			if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding );
+			return 0;
+		}
+		if ( *p == '/' )
+		{
+			++p;
+			// Empty tag.
+			if ( *p  != '>' )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_PARSING_EMPTY, p, data, encoding );		
+				return 0;
+			}
+			return (p+1);
+		}
+		else if ( *p == '>' )
+		{
+			// Done with attributes (if there were any.)
+			// Read the value -- which can include other
+			// elements -- read the end tag, and return.
+			++p;
+			p = ReadValue( p, data, encoding );		// Note this is an Element method, and will set the error if one happens.
+			if ( !p || !*p )
+				return 0;
+
+			// We should find the end tag now
+			if ( StringEqual( p, endTag.c_str(), false, encoding ) )
+			{
+				p += endTag.length();
+				return p;
+			}
+			else
+			{
+				if ( document ) document->SetError( TIXML_ERROR_READING_END_TAG, p, data, encoding );
+				return 0;
+			}
+		}
+		else
+		{
+			// Try to read an attribute:
+			TiXmlAttribute* attrib = new TiXmlAttribute();
+			if ( !attrib )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, pErr, data, encoding );
+				return 0;
+			}
+
+			attrib->SetDocument( document );
+			pErr = p;
+			p = attrib->Parse( p, data, encoding );
+
+			if ( !p || !*p )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT, pErr, data, encoding );
+				delete attrib;
+				return 0;
+			}
+
+			// Handle the strange case of double attributes:
+			#ifdef TIXML_USE_STL
+			TiXmlAttribute* node = attributeSet.Find( attrib->NameTStr() );
+			#else
+			TiXmlAttribute* node = attributeSet.Find( attrib->Name() );
+			#endif
+			if ( node )
+			{
+				node->SetValue( attrib->Value() );
+				delete attrib;
+				return 0;
+			}
+
+			attributeSet.Add( attrib );
+		}
+	}
+	return p;
+}
+
+
+const char* TiXmlElement::ReadValue( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	TiXmlDocument* document = GetDocument();
+
+	// Read in text and elements in any order.
+	const char* pWithWhiteSpace = p;
+	p = SkipWhiteSpace( p, encoding );
+
+	while ( p && *p )
+	{
+		if ( *p != '<' )
+		{
+			// Take what we have, make a text element.
+			TiXmlText* textNode = new TiXmlText( "" );
+
+			if ( !textNode )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, encoding );
+				    return 0;
+			}
+
+			if ( TiXmlBase::IsWhiteSpaceCondensed() )
+			{
+				p = textNode->Parse( p, data, encoding );
+			}
+			else
+			{
+				// Special case: we want to keep the white space
+				// so that leading spaces aren't removed.
+				p = textNode->Parse( pWithWhiteSpace, data, encoding );
+			}
+
+			if ( !textNode->Blank() )
+				LinkEndChild( textNode );
+			else
+				delete textNode;
+		} 
+		else 
+		{
+			// We hit a '<'
+			// Have we hit a new element or an end tag? This could also be
+			// a TiXmlText in the "CDATA" style.
+			if ( StringEqual( p, "</", false, encoding ) )
+			{
+				return p;
+			}
+			else
+			{
+				TiXmlNode* node = Identify( p, encoding );
+				if ( node )
+				{
+					p = node->Parse( p, data, encoding );
+					LinkEndChild( node );
+				}				
+				else
+				{
+					return 0;
+				}
+			}
+		}
+		pWithWhiteSpace = p;
+		p = SkipWhiteSpace( p, encoding );
+	}
+
+	if ( !p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ELEMENT_VALUE, 0, 0, encoding );
+	}	
+	return p;
+}
+
+
+#ifdef TIXML_USE_STL
+void TiXmlUnknown::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();	
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+		(*tag) += (char) c;
+
+		if ( c == '>' )
+		{
+			// All is well.
+			return;		
+		}
+	}
+}
+#endif
+
+
+const char* TiXmlUnknown::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	TiXmlDocument* document = GetDocument();
+	p = SkipWhiteSpace( p, encoding );
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+	if ( !p || !*p || *p != '<' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_UNKNOWN, p, data, encoding );
+		return 0;
+	}
+	++p;
+    value = "";
+
+	while ( p && *p && *p != '>' )
+	{
+		value += *p;
+		++p;
+	}
+
+	if ( !p )
+	{
+		if ( document )	document->SetError( TIXML_ERROR_PARSING_UNKNOWN, 0, 0, encoding );
+	}
+	if ( *p == '>' )
+		return p+1;
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlComment::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();	
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+
+		(*tag) += (char) c;
+
+		if ( c == '>' 
+			 && tag->at( tag->length() - 2 ) == '-'
+			 && tag->at( tag->length() - 3 ) == '-' )
+		{
+			// All is well.
+			return;		
+		}
+	}
+}
+#endif
+
+
+const char* TiXmlComment::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	TiXmlDocument* document = GetDocument();
+	value = "";
+
+	p = SkipWhiteSpace( p, encoding );
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+	const char* startTag = "<!--";
+	const char* endTag   = "-->";
+
+	if ( !StringEqual( p, startTag, false, encoding ) )
+	{
+		document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding );
+		return 0;
+	}
+	p += strlen( startTag );
+	p = ReadText( p, &value, false, endTag, false, encoding );
+	return p;
+}
+
+
+const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	p = SkipWhiteSpace( p, encoding );
+	if ( !p || !*p ) return 0;
+
+//	int tabsize = 4;
+//	if ( document )
+//		tabsize = document->TabSize();
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+	// Read the name, the '=' and the value.
+	const char* pErr = p;
+	p = ReadName( p, &name, encoding );
+	if ( !p || !*p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding );
+		return 0;
+	}
+	p = SkipWhiteSpace( p, encoding );
+	if ( !p || !*p || *p != '=' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
+		return 0;
+	}
+
+	++p;	// skip '='
+	p = SkipWhiteSpace( p, encoding );
+	if ( !p || !*p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
+		return 0;
+	}
+	
+	const char* end;
+	const char SINGLE_QUOTE = '\'';
+	const char DOUBLE_QUOTE = '\"';
+
+	if ( *p == SINGLE_QUOTE )
+	{
+		++p;
+		end = "\'";		// single quote in string
+		p = ReadText( p, &value, false, end, false, encoding );
+	}
+	else if ( *p == DOUBLE_QUOTE )
+	{
+		++p;
+		end = "\"";		// double quote in string
+		p = ReadText( p, &value, false, end, false, encoding );
+	}
+	else
+	{
+		// All attribute values should be in single or double quotes.
+		// But this is such a common error that the parser will try
+		// its best, even without them.
+		value = "";
+		while (    p && *p											// existence
+				&& !IsWhiteSpace( *p ) && *p != '\n' && *p != '\r'	// whitespace
+				&& *p != '/' && *p != '>' )							// tag end
+		{
+			if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) {
+				// [ 1451649 ] Attribute values with trailing quotes not handled correctly
+				// We did not have an opening quote but seem to have a 
+				// closing one. Give up and throw an error.
+				if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
+				return 0;
+			}
+			value += *p;
+			++p;
+		}
+	}
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->peek();	
+		if ( !cdata && (c == '<' ) ) 
+		{
+			return;
+		}
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+
+		(*tag) += (char) c;
+		in->get();	// "commits" the peek made above
+
+		if ( cdata && c == '>' && tag->size() >= 3 ) {
+			size_t len = tag->size();
+			if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) {
+				// terminator of cdata.
+				return;
+			}
+		}    
+	}
+}
+#endif
+
+const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	value = "";
+	TiXmlDocument* document = GetDocument();
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+
+	const char* const startTag = "<![CDATA[";
+	const char* const endTag   = "]]>";
+
+	if ( cdata || StringEqual( p, startTag, false, encoding ) )
+	{
+		cdata = true;
+
+		if ( !StringEqual( p, startTag, false, encoding ) )
+		{
+			document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding );
+			return 0;
+		}
+		p += strlen( startTag );
+
+		// Keep all the white space, ignore the encoding, etc.
+		while (	   p && *p
+				&& !StringEqual( p, endTag, false, encoding )
+			  )
+		{
+			value += *p;
+			++p;
+		}
+
+		TIXML_STRING dummy; 
+		p = ReadText( p, &dummy, false, endTag, false, encoding );
+		return p;
+	}
+	else
+	{
+		bool ignoreWhite = true;
+
+		const char* end = "<";
+		p = ReadText( p, &value, ignoreWhite, end, false, encoding );
+		if ( p )
+			return p-1;	// don't truncate the '<'
+		return 0;
+	}
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+		(*tag) += (char) c;
+
+		if ( c == '>' )
+		{
+			// All is well.
+			return;
+		}
+	}
+}
+#endif
+
+const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding )
+{
+	p = SkipWhiteSpace( p, _encoding );
+	// Find the beginning, find the end, and look for
+	// the stuff in-between.
+	TiXmlDocument* document = GetDocument();
+	if ( !p || !*p || !StringEqual( p, "<?xml", true, _encoding ) )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding );
+		return 0;
+	}
+	if ( data )
+	{
+		data->Stamp( p, _encoding );
+		location = data->Cursor();
+	}
+	p += 5;
+
+	version = "";
+	encoding = "";
+	standalone = "";
+
+	while ( p && *p )
+	{
+		if ( *p == '>' )
+		{
+			++p;
+			return p;
+		}
+
+		p = SkipWhiteSpace( p, _encoding );
+		if ( StringEqual( p, "version", true, _encoding ) )
+		{
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p, data, _encoding );		
+			version = attrib.Value();
+		}
+		else if ( StringEqual( p, "encoding", true, _encoding ) )
+		{
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p, data, _encoding );		
+			encoding = attrib.Value();
+		}
+		else if ( StringEqual( p, "standalone", true, _encoding ) )
+		{
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p, data, _encoding );		
+			standalone = attrib.Value();
+		}
+		else
+		{
+			// Read over whatever it is.
+			while( p && *p && *p != '>' && !IsWhiteSpace( *p ) )
+				++p;
+		}
+	}
+	return 0;
+}
+
+bool TiXmlText::Blank() const
+{
+	for ( unsigned i=0; i<value.length(); i++ )
+		if ( !IsWhiteSpace( value[i] ) )
+			return false;
+	return true;
+}
+
Index: /ogreode/tinyxml/xmltest.cpp
===================================================================
--- /ogreode/tinyxml/xmltest.cpp	(revision 21)
+++ /ogreode/tinyxml/xmltest.cpp	(revision 21)
@@ -0,0 +1,1227 @@
+/*
+   Test program for TinyXML.
+*/
+
+
+#ifdef TIXML_USE_STL
+	#include <iostream>
+	#include <sstream>
+	using namespace std;
+#else
+	#include <stdio.h>
+#endif
+
+#if defined( WIN32 ) && defined( TUNE )
+	#include <crtdbg.h>
+	_CrtMemState startMemState;
+	_CrtMemState endMemState;
+#endif
+
+#include "tinyxml.h"
+
+static int gPass = 0;
+static int gFail = 0;
+
+
+bool XmlTest (const char* testString, const char* expected, const char* found, bool noEcho = false)
+{
+	bool pass = !strcmp( expected, found );
+	if ( pass )
+		printf ("[pass]");
+	else
+		printf ("[fail]");
+
+	if ( noEcho )
+		printf (" %s\n", testString);
+	else
+		printf (" %s [%s][%s]\n", testString, expected, found);
+
+	if ( pass )
+		++gPass;
+	else
+		++gFail;
+	return pass;
+}
+
+
+bool XmlTest( const char* testString, int expected, int found, bool noEcho = false )
+{
+	bool pass = ( expected == found );
+	if ( pass )
+		printf ("[pass]");
+	else
+		printf ("[fail]");
+
+	if ( noEcho )
+		printf (" %s\n", testString);
+	else
+		printf (" %s [%d][%d]\n", testString, expected, found);
+
+	if ( pass )
+		++gPass;
+	else
+		++gFail;
+	return pass;
+}
+
+
+//
+// This file demonstrates some basic functionality of TinyXml.
+// Note that the example is very contrived. It presumes you know
+// what is in the XML file. But it does test the basic operations,
+// and show how to add and remove nodes.
+//
+
+int main()
+{
+	//
+	// We start with the 'demoStart' todo list. Process it. And
+	// should hopefully end up with the todo list as illustrated.
+	//
+	const char* demoStart =
+		"<?xml version=\"1.0\"  standalone='no' >\n"
+		"<!-- Our to do list data -->"
+		"<ToDo>\n"
+		"<!-- Do I need a secure PDA? -->\n"
+		"<Item priority=\"1\" distance='close'> Go to the <bold>Toy store!</bold></Item>"
+		"<Item priority=\"2\" distance='none'> Do bills   </Item>"
+		"<Item priority=\"2\" distance='far &amp; back'> Look for Evil Dinosaurs! </Item>"
+		"</ToDo>";
+		
+	{
+
+	#ifdef TIXML_USE_STL
+		/*	What the todo list should look like after processing.
+			In stream (no formatting) representation. */
+		const char* demoEnd =
+			"<?xml version=\"1.0\" standalone=\"no\" ?>"
+			"<!-- Our to do list data -->"
+			"<ToDo>"
+			"<!-- Do I need a secure PDA? -->"
+			"<Item priority=\"2\" distance=\"close\">Go to the"
+			"<bold>Toy store!"
+			"</bold>"
+			"</Item>"
+			"<Item priority=\"1\" distance=\"far\">Talk to:"
+			"<Meeting where=\"School\">"
+			"<Attendee name=\"Marple\" position=\"teacher\" />"
+			"<Attendee name=\"Voel\" position=\"counselor\" />"
+			"</Meeting>"
+			"<Meeting where=\"Lunch\" />"
+			"</Item>"
+			"<Item priority=\"2\" distance=\"here\">Do bills"
+			"</Item>"
+			"</ToDo>";
+	#endif
+
+		// The example parses from the character string (above):
+		#if defined( WIN32 ) && defined( TUNE )
+		_CrtMemCheckpoint( &startMemState );
+		#endif	
+
+		{
+			// Write to a file and read it back, to check file I/O.
+
+			TiXmlDocument doc( "demotest.xml" );
+			doc.Parse( demoStart );
+
+			if ( doc.Error() )
+			{
+				printf( "Error in %s: %s\n", doc.Value(), doc.ErrorDesc() );
+				exit( 1 );
+			}
+			doc.SaveFile();
+		}
+
+		TiXmlDocument doc( "demotest.xml" );
+		bool loadOkay = doc.LoadFile();
+
+		if ( !loadOkay )
+		{
+			printf( "Could not load test file 'demotest.xml'. Error='%s'. Exiting.\n", doc.ErrorDesc() );
+			exit( 1 );
+		}
+
+		printf( "** Demo doc read from disk: ** \n\n" );
+		printf( "** Printing via doc.Print **\n" );
+		doc.Print( stdout );
+
+		{
+			printf( "** Printing via TiXmlPrinter **\n" );
+			TiXmlPrinter printer;
+			doc.Accept( &printer );
+			fprintf( stdout, "%s", printer.CStr() );
+		}
+		#ifdef TIXML_USE_STL	
+		{
+			printf( "** Printing via operator<< **\n" );
+			std::cout << doc;
+		}
+		#endif
+		TiXmlNode* node = 0;
+		TiXmlElement* todoElement = 0;
+		TiXmlElement* itemElement = 0;
+
+
+		// --------------------------------------------------------
+		// An example of changing existing attributes, and removing
+		// an element from the document.
+		// --------------------------------------------------------
+
+		// Get the "ToDo" element.
+		// It is a child of the document, and can be selected by name.
+		node = doc.FirstChild( "ToDo" );
+		assert( node );
+		todoElement = node->ToElement();
+		assert( todoElement  );
+
+		// Going to the toy store is now our second priority...
+		// So set the "priority" attribute of the first item in the list.
+		node = todoElement->FirstChildElement();	// This skips the "PDA" comment.
+		assert( node );
+		itemElement = node->ToElement();
+		assert( itemElement  );
+		itemElement->SetAttribute( "priority", 2 );
+
+		// Change the distance to "doing bills" from
+		// "none" to "here". It's the next sibling element.
+		itemElement = itemElement->NextSiblingElement();
+		assert( itemElement );
+		itemElement->SetAttribute( "distance", "here" );
+
+		// Remove the "Look for Evil Dinosaurs!" item.
+		// It is 1 more sibling away. We ask the parent to remove
+		// a particular child.
+		itemElement = itemElement->NextSiblingElement();
+		todoElement->RemoveChild( itemElement );
+
+		itemElement = 0;
+
+		// --------------------------------------------------------
+		// What follows is an example of created elements and text
+		// nodes and adding them to the document.
+		// --------------------------------------------------------
+
+		// Add some meetings.
+		TiXmlElement item( "Item" );
+		item.SetAttribute( "priority", "1" );
+		item.SetAttribute( "distance", "far" );
+
+		TiXmlText text( "Talk to:" );
+
+		TiXmlElement meeting1( "Meeting" );
+		meeting1.SetAttribute( "where", "School" );
+
+		TiXmlElement meeting2( "Meeting" );
+		meeting2.SetAttribute( "where", "Lunch" );
+
+		TiXmlElement attendee1( "Attendee" );
+		attendee1.SetAttribute( "name", "Marple" );
+		attendee1.SetAttribute( "position", "teacher" );
+
+		TiXmlElement attendee2( "Attendee" );
+		attendee2.SetAttribute( "name", "Voel" );
+		attendee2.SetAttribute( "position", "counselor" );
+
+		// Assemble the nodes we've created:
+		meeting1.InsertEndChild( attendee1 );
+		meeting1.InsertEndChild( attendee2 );
+
+		item.InsertEndChild( text );
+		item.InsertEndChild( meeting1 );
+		item.InsertEndChild( meeting2 );
+
+		// And add the node to the existing list after the first child.
+		node = todoElement->FirstChild( "Item" );
+		assert( node );
+		itemElement = node->ToElement();
+		assert( itemElement );
+
+		todoElement->InsertAfterChild( itemElement, item );
+
+		printf( "\n** Demo doc processed: ** \n\n" );
+		doc.Print( stdout );
+
+
+	#ifdef TIXML_USE_STL
+		printf( "** Demo doc processed to stream: ** \n\n" );
+		cout << doc << endl << endl;
+	#endif
+
+		// --------------------------------------------------------
+		// Different tests...do we have what we expect?
+		// --------------------------------------------------------
+
+		int count = 0;
+		TiXmlElement*	element;
+
+		//////////////////////////////////////////////////////
+
+	#ifdef TIXML_USE_STL
+		cout << "** Basic structure. **\n";
+		ostringstream outputStream( ostringstream::out );
+		outputStream << doc;
+		XmlTest( "Output stream correct.",	string( demoEnd ).c_str(),
+											outputStream.str().c_str(), true );
+	#endif
+
+		node = doc.RootElement();
+		XmlTest( "Root element exists.", true, ( node != 0 && node->ToElement() ) );
+		XmlTest ( "Root element value is 'ToDo'.", "ToDo",  node->Value());
+
+		node = node->FirstChild();
+		XmlTest( "First child exists & is a comment.", true, ( node != 0 && node->ToComment() ) );
+		node = node->NextSibling();
+		XmlTest( "Sibling element exists & is an element.", true, ( node != 0 && node->ToElement() ) );
+		XmlTest ( "Value is 'Item'.", "Item", node->Value() );
+
+		node = node->FirstChild();
+		XmlTest ( "First child exists.", true, ( node != 0 && node->ToText() ) );
+		XmlTest ( "Value is 'Go to the'.", "Go to the", node->Value() );
+
+
+		//////////////////////////////////////////////////////
+		printf ("\n** Iterators. **\n");
+
+		// Walk all the top level nodes of the document.
+		count = 0;
+		for( node = doc.FirstChild();
+			 node;
+			 node = node->NextSibling() )
+		{
+			count++;
+		}
+		XmlTest( "Top level nodes, using First / Next.", 3, count );
+
+		count = 0;
+		for( node = doc.LastChild();
+			 node;
+			 node = node->PreviousSibling() )
+		{
+			count++;
+		}
+		XmlTest( "Top level nodes, using Last / Previous.", 3, count );
+
+		// Walk all the top level nodes of the document,
+		// using a different syntax.
+		count = 0;
+		for( node = doc.IterateChildren( 0 );
+			 node;
+			 node = doc.IterateChildren( node ) )
+		{
+			count++;
+		}
+		XmlTest( "Top level nodes, using IterateChildren.", 3, count );
+
+		// Walk all the elements in a node.
+		count = 0;
+		for( element = todoElement->FirstChildElement();
+			 element;
+			 element = element->NextSiblingElement() )
+		{
+			count++;
+		}
+		XmlTest( "Children of the 'ToDo' element, using First / Next.",
+			3, count );
+
+		// Walk all the elements in a node by value.
+		count = 0;
+		for( node = todoElement->FirstChild( "Item" );
+			 node;
+			 node = node->NextSibling( "Item" ) )
+		{
+			count++;
+		}
+		XmlTest( "'Item' children of the 'ToDo' element, using First/Next.", 3, count );
+
+		count = 0;
+		for( node = todoElement->LastChild( "Item" );
+			 node;
+			 node = node->PreviousSibling( "Item" ) )
+		{
+			count++;
+		}
+		XmlTest( "'Item' children of the 'ToDo' element, using Last/Previous.", 3, count );
+
+	#ifdef TIXML_USE_STL
+		{
+			cout << "\n** Parsing. **\n";
+			istringstream parse0( "<Element0 attribute0='foo0' attribute1= noquotes attribute2 = '&gt;' />" );
+			TiXmlElement element0( "default" );
+			parse0 >> element0;
+
+			XmlTest ( "Element parsed, value is 'Element0'.", "Element0", element0.Value() );
+			XmlTest ( "Reads attribute 'attribute0=\"foo0\"'.", "foo0", element0.Attribute( "attribute0" ));
+			XmlTest ( "Reads incorrectly formatted 'attribute1=noquotes'.", "noquotes", element0.Attribute( "attribute1" ) );
+			XmlTest ( "Read attribute with entity value '>'.", ">", element0.Attribute( "attribute2" ) );
+		}
+	#endif
+
+		{
+			const char* error =	"<?xml version=\"1.0\" standalone=\"no\" ?>\n"
+								"<passages count=\"006\" formatversion=\"20020620\">\n"
+								"    <wrong error>\n"
+								"</passages>";
+
+			TiXmlDocument docTest;
+			docTest.Parse( error );
+			XmlTest( "Error row", docTest.ErrorRow(), 3 );
+			XmlTest( "Error column", docTest.ErrorCol(), 17 );
+			//printf( "error=%d id='%s' row %d col%d\n", (int) doc.Error(), doc.ErrorDesc(), doc.ErrorRow()+1, doc.ErrorCol() + 1 );
+
+		}
+
+	#ifdef TIXML_USE_STL
+		{
+			//////////////////////////////////////////////////////
+			cout << "\n** Streaming. **\n";
+
+			// Round trip check: stream in, then stream back out to verify. The stream
+			// out has already been checked, above. We use the output
+
+			istringstream inputStringStream( outputStream.str() );
+			TiXmlDocument document0;
+
+			inputStringStream >> document0;
+
+			ostringstream outputStream0( ostringstream::out );
+			outputStream0 << document0;
+
+			XmlTest( "Stream round trip correct.",	string( demoEnd ).c_str(), 
+													outputStream0.str().c_str(), true );
+
+			std::string str;
+			str << document0;
+
+			XmlTest( "String printing correct.", string( demoEnd ).c_str(), 
+												 str.c_str(), true );
+		}
+	#endif
+	}
+	
+	{
+		const char* str = "<doc attr0='1' attr1='2.0' attr2='foo' />";
+
+		TiXmlDocument doc;
+		doc.Parse( str );
+
+		TiXmlElement* ele = doc.FirstChildElement();
+
+		int iVal, result;
+		double dVal;
+
+		result = ele->QueryDoubleAttribute( "attr0", &dVal );
+		XmlTest( "Query attribute: int as double", result, TIXML_SUCCESS );
+		XmlTest( "Query attribute: int as double", (int)dVal, 1 );
+		result = ele->QueryDoubleAttribute( "attr1", &dVal );
+		XmlTest( "Query attribute: double as double", (int)dVal, 2 );
+		result = ele->QueryIntAttribute( "attr1", &iVal );
+		XmlTest( "Query attribute: double as int", result, TIXML_SUCCESS );
+		XmlTest( "Query attribute: double as int", iVal, 2 );
+		result = ele->QueryIntAttribute( "attr2", &iVal );
+		XmlTest( "Query attribute: not a number", result, TIXML_WRONG_TYPE );
+		result = ele->QueryIntAttribute( "bar", &iVal );
+		XmlTest( "Query attribute: does not exist", result, TIXML_NO_ATTRIBUTE );
+	}
+	
+	{
+		const char* str =	"\t<?xml version=\"1.0\" standalone=\"no\" ?>\t<room doors='2'>\n"
+							"</room>";
+
+		TiXmlDocument doc;
+		doc.SetTabSize( 8 );
+		doc.Parse( str );
+
+		TiXmlHandle docHandle( &doc );
+		TiXmlHandle roomHandle = docHandle.FirstChildElement( "room" );
+
+		assert( docHandle.Node() );
+		assert( roomHandle.Element() );
+
+		TiXmlElement* room = roomHandle.Element();
+		assert( room );
+		TiXmlAttribute* doors = room->FirstAttribute();
+		assert( doors );
+
+		XmlTest( "Location tracking: Tab 8: room row", room->Row(), 1 );
+		XmlTest( "Location tracking: Tab 8: room col", room->Column(), 49 );
+		XmlTest( "Location tracking: Tab 8: doors row", doors->Row(), 1 );
+		XmlTest( "Location tracking: Tab 8: doors col", doors->Column(), 55 );
+	}
+	
+	{
+		const char* str =	"\t<?xml version=\"1.0\" standalone=\"no\" ?>\t<room doors='2'>\n"
+							"  <!-- Silly example -->\n"
+							"    <door wall='north'>A great door!</door>\n"
+							"\t<door wall='east'/>"
+							"</room>";
+
+		TiXmlDocument doc;
+		doc.Parse( str );
+
+		TiXmlHandle docHandle( &doc );
+		TiXmlHandle roomHandle = docHandle.FirstChildElement( "room" );
+		TiXmlHandle commentHandle = docHandle.FirstChildElement( "room" ).FirstChild();
+		TiXmlHandle textHandle = docHandle.FirstChildElement( "room" ).ChildElement( "door", 0 ).FirstChild();
+		TiXmlHandle door0Handle = docHandle.FirstChildElement( "room" ).ChildElement( 0 );
+		TiXmlHandle door1Handle = docHandle.FirstChildElement( "room" ).ChildElement( 1 );
+
+		assert( docHandle.Node() );
+		assert( roomHandle.Element() );
+		assert( commentHandle.Node() );
+		assert( textHandle.Text() );
+		assert( door0Handle.Element() );
+		assert( door1Handle.Element() );
+
+		TiXmlDeclaration* declaration = doc.FirstChild()->ToDeclaration();
+		assert( declaration );
+		TiXmlElement* room = roomHandle.Element();
+		assert( room );
+		TiXmlAttribute* doors = room->FirstAttribute();
+		assert( doors );
+		TiXmlText* text = textHandle.Text();
+		TiXmlComment* comment = commentHandle.Node()->ToComment();
+		assert( comment );
+		TiXmlElement* door0 = door0Handle.Element();
+		TiXmlElement* door1 = door1Handle.Element();
+
+		XmlTest( "Location tracking: Declaration row", declaration->Row(), 1 );
+		XmlTest( "Location tracking: Declaration col", declaration->Column(), 5 );
+		XmlTest( "Location tracking: room row", room->Row(), 1 );
+		XmlTest( "Location tracking: room col", room->Column(), 45 );
+		XmlTest( "Location tracking: doors row", doors->Row(), 1 );
+		XmlTest( "Location tracking: doors col", doors->Column(), 51 );
+		XmlTest( "Location tracking: Comment row", comment->Row(), 2 );
+		XmlTest( "Location tracking: Comment col", comment->Column(), 3 );
+		XmlTest( "Location tracking: text row", text->Row(), 3 ); 
+		XmlTest( "Location tracking: text col", text->Column(), 24 );
+		XmlTest( "Location tracking: door0 row", door0->Row(), 3 );
+		XmlTest( "Location tracking: door0 col", door0->Column(), 5 );
+		XmlTest( "Location tracking: door1 row", door1->Row(), 4 );
+		XmlTest( "Location tracking: door1 col", door1->Column(), 5 );
+	}
+
+
+	// --------------------------------------------------------
+	// UTF-8 testing. It is important to test:
+	//	1. Making sure name, value, and text read correctly
+	//	2. Row, Col functionality
+	//	3. Correct output
+	// --------------------------------------------------------
+	printf ("\n** UTF-8 **\n");
+	{
+		TiXmlDocument doc( "utf8test.xml" );
+		doc.LoadFile();
+		if ( doc.Error() && doc.ErrorId() == TiXmlBase::TIXML_ERROR_OPENING_FILE ) {
+			printf( "WARNING: File 'utf8test.xml' not found.\n"
+					"(Are you running the test from the wrong directory?)\n"
+				    "Could not test UTF-8 functionality.\n" );
+		}
+		else
+		{
+			TiXmlHandle docH( &doc );
+			// Get the attribute "value" from the "Russian" element and check it.
+			TiXmlElement* element = docH.FirstChildElement( "document" ).FirstChildElement( "Russian" ).Element();
+			const unsigned char correctValue[] = {	0xd1U, 0x86U, 0xd0U, 0xb5U, 0xd0U, 0xbdU, 0xd0U, 0xbdU, 
+													0xd0U, 0xbeU, 0xd1U, 0x81U, 0xd1U, 0x82U, 0xd1U, 0x8cU, 0 };
+
+			XmlTest( "UTF-8: Russian value.", (const char*)correctValue, element->Attribute( "value" ), true );
+			XmlTest( "UTF-8: Russian value row.", 4, element->Row() );
+			XmlTest( "UTF-8: Russian value column.", 5, element->Column() );
+
+			const unsigned char russianElementName[] = {	0xd0U, 0xa0U, 0xd1U, 0x83U,
+															0xd1U, 0x81U, 0xd1U, 0x81U,
+															0xd0U, 0xbaU, 0xd0U, 0xb8U,
+															0xd0U, 0xb9U, 0 };
+			const char russianText[] = "<\xD0\xB8\xD0\xBC\xD0\xB5\xD0\xB5\xD1\x82>";
+
+			TiXmlText* text = docH.FirstChildElement( "document" ).FirstChildElement( (const char*) russianElementName ).Child( 0 ).Text();
+			XmlTest( "UTF-8: Browsing russian element name.",
+					 russianText,
+					 text->Value(),
+					 true );
+			XmlTest( "UTF-8: Russian element name row.", 7, text->Row() );
+			XmlTest( "UTF-8: Russian element name column.", 47, text->Column() );
+
+			TiXmlDeclaration* dec = docH.Child( 0 ).Node()->ToDeclaration();
+			XmlTest( "UTF-8: Declaration column.", 1, dec->Column() );
+			XmlTest( "UTF-8: Document column.", 1, doc.Column() );
+
+			// Now try for a round trip.
+			doc.SaveFile( "utf8testout.xml" );
+
+			// Check the round trip.
+			char savedBuf[256];
+			char verifyBuf[256];
+			int okay = 1;
+
+			FILE* saved  = fopen( "utf8testout.xml", "r" );
+			FILE* verify = fopen( "utf8testverify.xml", "r" );
+			if ( saved && verify )
+			{
+				while ( fgets( verifyBuf, 256, verify ) )
+				{
+					fgets( savedBuf, 256, saved );
+					if ( strcmp( verifyBuf, savedBuf ) )
+					{
+						okay = 0;
+						break;
+					}
+				}
+				fclose( saved );
+				fclose( verify );
+			}
+			XmlTest( "UTF-8: Verified multi-language round trip.", 1, okay );
+
+			// On most Western machines, this is an element that contains
+			// the word "resume" with the correct accents, in a latin encoding.
+			// It will be something else completely on non-wester machines,
+			// which is why TinyXml is switching to UTF-8.
+			const char latin[] = "<element>r\x82sum\x82</element>";
+
+			TiXmlDocument latinDoc;
+			latinDoc.Parse( latin, 0, TIXML_ENCODING_LEGACY );
+
+			text = latinDoc.FirstChildElement()->FirstChild()->ToText();
+			XmlTest( "Legacy encoding: Verify text element.", "r\x82sum\x82", text->Value() );
+		}
+	}		
+
+	//////////////////////
+	// Copy and assignment
+	//////////////////////
+	printf ("\n** Copy and Assignment **\n");
+	{
+		TiXmlElement element( "foo" );
+		element.Parse( "<element name='value' />", 0, TIXML_ENCODING_UNKNOWN );
+
+		TiXmlElement elementCopy( element );
+		TiXmlElement elementAssign( "foo" );
+		elementAssign.Parse( "<incorrect foo='bar'/>", 0, TIXML_ENCODING_UNKNOWN );
+		elementAssign = element;
+
+		XmlTest( "Copy/Assign: element copy #1.", "element", elementCopy.Value() );
+		XmlTest( "Copy/Assign: element copy #2.", "value", elementCopy.Attribute( "name" ) );
+		XmlTest( "Copy/Assign: element assign #1.", "element", elementAssign.Value() );
+		XmlTest( "Copy/Assign: element assign #2.", "value", elementAssign.Attribute( "name" ) );
+		XmlTest( "Copy/Assign: element assign #3.", true, ( 0 == elementAssign.Attribute( "foo" )) );
+
+		TiXmlComment comment;
+		comment.Parse( "<!--comment-->", 0, TIXML_ENCODING_UNKNOWN );
+		TiXmlComment commentCopy( comment );
+		TiXmlComment commentAssign;
+		commentAssign = commentCopy;
+		XmlTest( "Copy/Assign: comment copy.", "comment", commentCopy.Value() );
+		XmlTest( "Copy/Assign: comment assign.", "comment", commentAssign.Value() );
+
+		TiXmlUnknown unknown;
+		unknown.Parse( "<[unknown]>", 0, TIXML_ENCODING_UNKNOWN );
+		TiXmlUnknown unknownCopy( unknown );
+		TiXmlUnknown unknownAssign;
+		unknownAssign.Parse( "incorrect", 0, TIXML_ENCODING_UNKNOWN );
+		unknownAssign = unknownCopy;
+		XmlTest( "Copy/Assign: unknown copy.", "[unknown]", unknownCopy.Value() );
+		XmlTest( "Copy/Assign: unknown assign.", "[unknown]", unknownAssign.Value() );
+		
+		TiXmlText text( "TextNode" );
+		TiXmlText textCopy( text );
+		TiXmlText textAssign( "incorrect" );
+		textAssign = text;
+		XmlTest( "Copy/Assign: text copy.", "TextNode", textCopy.Value() );
+		XmlTest( "Copy/Assign: text assign.", "TextNode", textAssign.Value() );
+
+		TiXmlDeclaration dec;
+		dec.Parse( "<?xml version='1.0' encoding='UTF-8'?>", 0, TIXML_ENCODING_UNKNOWN );
+		TiXmlDeclaration decCopy( dec );
+		TiXmlDeclaration decAssign;
+		decAssign = dec;
+
+		XmlTest( "Copy/Assign: declaration copy.", "UTF-8", decCopy.Encoding() );
+		XmlTest( "Copy/Assign: text assign.", "UTF-8", decAssign.Encoding() );
+
+		TiXmlDocument doc;
+		elementCopy.InsertEndChild( textCopy );
+		doc.InsertEndChild( decAssign );
+		doc.InsertEndChild( elementCopy );
+		doc.InsertEndChild( unknownAssign );
+
+		TiXmlDocument docCopy( doc );
+		TiXmlDocument docAssign;
+		docAssign = docCopy;
+
+		#ifdef TIXML_USE_STL
+		std::string original, copy, assign;
+		original << doc;
+		copy << docCopy;
+		assign << docAssign;
+		XmlTest( "Copy/Assign: document copy.", original.c_str(), copy.c_str(), true );
+		XmlTest( "Copy/Assign: document assign.", original.c_str(), assign.c_str(), true );
+
+		#endif
+	}	
+
+	//////////////////////////////////////////////////////
+#ifdef TIXML_USE_STL
+	printf ("\n** Parsing, no Condense Whitespace **\n");
+	TiXmlBase::SetCondenseWhiteSpace( false );
+	{
+		istringstream parse1( "<start>This  is    \ntext</start>" );
+		TiXmlElement text1( "text" );
+		parse1 >> text1;
+
+		XmlTest ( "Condense white space OFF.", "This  is    \ntext",
+					text1.FirstChild()->Value(),
+					true );
+	}
+	TiXmlBase::SetCondenseWhiteSpace( true );
+#endif
+
+	//////////////////////////////////////////////////////
+	// GetText();
+	{
+		const char* str = "<foo>This is text</foo>";
+		TiXmlDocument doc;
+		doc.Parse( str );
+		const TiXmlElement* element = doc.RootElement();
+
+		XmlTest( "GetText() normal use.", "This is text", element->GetText() );
+
+		str = "<foo><b>This is text</b></foo>";
+		doc.Clear();
+		doc.Parse( str );
+		element = doc.RootElement();
+
+		XmlTest( "GetText() contained element.", element->GetText() == 0, true );
+
+		str = "<foo>This is <b>text</b></foo>";
+		doc.Clear();
+		TiXmlBase::SetCondenseWhiteSpace( false );
+		doc.Parse( str );
+		TiXmlBase::SetCondenseWhiteSpace( true );
+		element = doc.RootElement();
+
+		XmlTest( "GetText() partial.", "This is ", element->GetText() );
+	}
+
+
+	//////////////////////////////////////////////////////
+	// CDATA
+	{
+		const char* str =	"<xmlElement>"
+								"<![CDATA["
+									"I am > the rules!\n"
+									"...since I make symbolic puns"
+								"]]>"
+							"</xmlElement>";
+		TiXmlDocument doc;
+		doc.Parse( str );
+		doc.Print();
+
+		XmlTest( "CDATA parse.", doc.FirstChildElement()->FirstChild()->Value(), 
+								 "I am > the rules!\n...since I make symbolic puns",
+								 true );
+
+		#ifdef TIXML_USE_STL
+		//cout << doc << '\n';
+
+		doc.Clear();
+
+		istringstream parse0( str );
+		parse0 >> doc;
+		//cout << doc << '\n';
+
+		XmlTest( "CDATA stream.", doc.FirstChildElement()->FirstChild()->Value(), 
+								 "I am > the rules!\n...since I make symbolic puns",
+								 true );
+		#endif
+
+		TiXmlDocument doc1 = doc;
+		//doc.Print();
+
+		XmlTest( "CDATA copy.", doc1.FirstChildElement()->FirstChild()->Value(), 
+								 "I am > the rules!\n...since I make symbolic puns",
+								 true );
+	}
+	{
+		// [ 1482728 ] Wrong wide char parsing
+		char buf[256];
+		buf[255] = 0;
+		for( int i=0; i<255; ++i ) buf[i] = i>=32 ? i : 32;
+		TIXML_STRING str( "<xmlElement><![CDATA[" );
+		str += buf;
+		str += "]]></xmlElement>";
+
+		TiXmlDocument doc;
+		doc.Parse( str.c_str() );
+
+		TiXmlPrinter printer;
+		printer.SetStreamPrinting();
+		doc.Accept( &printer );
+
+		XmlTest( "CDATA with all bytes #1.", str.c_str(), printer.CStr(), true );
+
+		#ifdef TIXML_USE_STL
+		doc.Clear();
+		istringstream iss( printer.Str() );
+		iss >> doc;
+		std::string out;
+		out << doc;
+		XmlTest( "CDATA with all bytes #2.", out.c_str(), printer.CStr(), true );
+		#endif
+	}
+	{
+		// [ 1480107 ] Bug-fix for STL-streaming of CDATA that contains tags
+		// CDATA streaming had a couple of bugs, that this tests for.
+		const char* str =	"<xmlElement>"
+								"<![CDATA["
+									"<b>I am > the rules!</b>\n"
+									"...since I make symbolic puns"
+								"]]>"
+							"</xmlElement>";
+		TiXmlDocument doc;
+		doc.Parse( str );
+		doc.Print();
+
+		XmlTest( "CDATA parse. [ 1480107 ]", doc.FirstChildElement()->FirstChild()->Value(), 
+								 "<b>I am > the rules!</b>\n...since I make symbolic puns",
+								 true );
+
+		#ifdef TIXML_USE_STL
+
+		doc.Clear();
+
+		istringstream parse0( str );
+		parse0 >> doc;
+
+		XmlTest( "CDATA stream. [ 1480107 ]", doc.FirstChildElement()->FirstChild()->Value(), 
+								 "<b>I am > the rules!</b>\n...since I make symbolic puns",
+								 true );
+		#endif
+
+		TiXmlDocument doc1 = doc;
+		//doc.Print();
+
+		XmlTest( "CDATA copy. [ 1480107 ]", doc1.FirstChildElement()->FirstChild()->Value(), 
+								 "<b>I am > the rules!</b>\n...since I make symbolic puns",
+								 true );
+	}
+	//////////////////////////////////////////////////////
+	// Visit()
+
+
+
+	//////////////////////////////////////////////////////
+	printf( "\n** Fuzzing... **\n" );
+
+	const int FUZZ_ITERATION = 300;
+
+	// The only goal is not to crash on bad input.
+	int len = (int) strlen( demoStart );
+	for( int i=0; i<FUZZ_ITERATION; ++i ) 
+	{
+		char* demoCopy = new char[ len+1 ];
+		strcpy( demoCopy, demoStart );
+
+		demoCopy[ i%len ] = (char)((i+1)*3);
+		demoCopy[ (i*7)%len ] = '>';
+		demoCopy[ (i*11)%len ] = '<';
+
+		TiXmlDocument xml;
+		xml.Parse( demoCopy );
+
+		delete [] demoCopy;
+	}
+	printf( "** Fuzzing Complete. **\n" );
+	
+	//////////////////////////////////////////////////////
+	printf ("\n** Bug regression tests **\n");
+
+	// InsertBeforeChild and InsertAfterChild causes crash.
+	{
+		TiXmlElement parent( "Parent" );
+		TiXmlElement childText0( "childText0" );
+		TiXmlElement childText1( "childText1" );
+		TiXmlNode* childNode0 = parent.InsertEndChild( childText0 );
+		TiXmlNode* childNode1 = parent.InsertBeforeChild( childNode0, childText1 );
+
+		XmlTest( "Test InsertBeforeChild on empty node.", ( childNode1 == parent.FirstChild() ), true );
+	}
+
+	{
+		// InsertBeforeChild and InsertAfterChild causes crash.
+		TiXmlElement parent( "Parent" );
+		TiXmlElement childText0( "childText0" );
+		TiXmlElement childText1( "childText1" );
+		TiXmlNode* childNode0 = parent.InsertEndChild( childText0 );
+		TiXmlNode* childNode1 = parent.InsertAfterChild( childNode0, childText1 );
+
+		XmlTest( "Test InsertAfterChild on empty node. ", ( childNode1 == parent.LastChild() ), true );
+	}
+
+	// Reports of missing constructors, irregular string problems.
+	{
+		// Missing constructor implementation. No test -- just compiles.
+		TiXmlText text( "Missing" );
+
+		#ifdef TIXML_USE_STL
+			// Missing implementation:
+			TiXmlDocument doc;
+			string name = "missing";
+			doc.LoadFile( name );
+
+			TiXmlText textSTL( name );
+		#else
+			// verifying some basic string functions:
+			TiXmlString a;
+			TiXmlString b( "Hello" );
+			TiXmlString c( "ooga" );
+
+			c = " World!";
+			a = b;
+			a += c;
+			a = a;
+
+			XmlTest( "Basic TiXmlString test. ", "Hello World!", a.c_str() );
+		#endif
+ 	}
+
+	// Long filenames crashing STL version
+	{
+		TiXmlDocument doc( "midsummerNightsDreamWithAVeryLongFilenameToConfuseTheStringHandlingRoutines.xml" );
+		bool loadOkay = doc.LoadFile();
+		loadOkay = true;	// get rid of compiler warning.
+		// Won't pass on non-dev systems. Just a "no crash" check.
+		//XmlTest( "Long filename. ", true, loadOkay );
+	}
+
+	{
+		// Entities not being written correctly.
+		// From Lynn Allen
+
+		const char* passages =
+			"<?xml version=\"1.0\" standalone=\"no\" ?>"
+			"<passages count=\"006\" formatversion=\"20020620\">"
+				"<psg context=\"Line 5 has &quot;quotation marks&quot; and &apos;apostrophe marks&apos;."
+				" It also has &lt;, &gt;, and &amp;, as well as a fake copyright &#xA9;.\"> </psg>"
+			"</passages>";
+
+		TiXmlDocument doc( "passages.xml" );
+		doc.Parse( passages );
+		TiXmlElement* psg = doc.RootElement()->FirstChildElement();
+		const char* context = psg->Attribute( "context" );
+		const char* expected = "Line 5 has \"quotation marks\" and 'apostrophe marks'. It also has <, >, and &, as well as a fake copyright \xC2\xA9.";
+
+		XmlTest( "Entity transformation: read. ", expected, context, true );
+
+		FILE* textfile = fopen( "textfile.txt", "w" );
+		if ( textfile )
+		{
+			psg->Print( textfile, 0 );
+			fclose( textfile );
+		}
+		textfile = fopen( "textfile.txt", "r" );
+		assert( textfile );
+		if ( textfile )
+		{
+			char buf[ 1024 ];
+			fgets( buf, 1024, textfile );
+			XmlTest( "Entity transformation: write. ",
+					 "<psg context=\'Line 5 has &quot;quotation marks&quot; and &apos;apostrophe marks&apos;."
+					 " It also has &lt;, &gt;, and &amp;, as well as a fake copyright \xC2\xA9.' />",
+					 buf,
+					 true );
+		}
+		fclose( textfile );
+	}
+
+    {
+		FILE* textfile = fopen( "test5.xml", "w" );
+		if ( textfile )
+		{
+            fputs("<?xml version='1.0'?><a.elem xmi.version='2.0'/>", textfile);
+            fclose(textfile);
+
+			TiXmlDocument doc;
+            doc.LoadFile( "test5.xml" );
+            XmlTest( "dot in element attributes and names", doc.Error(), 0);
+		}
+    }
+
+	{
+		FILE* textfile = fopen( "test6.xml", "w" );
+		if ( textfile )
+		{
+            fputs("<element><Name>1.1 Start easy ignore fin thickness&#xA;</Name></element>", textfile );
+            fclose(textfile);
+
+            TiXmlDocument doc;
+            bool result = doc.LoadFile( "test6.xml" );
+            XmlTest( "Entity with one digit.", result, true );
+
+			TiXmlText* text = doc.FirstChildElement()->FirstChildElement()->FirstChild()->ToText();
+			XmlTest( "Entity with one digit.",
+						text->Value(), "1.1 Start easy ignore fin thickness\n" );
+		}
+    }
+
+	{
+		// DOCTYPE not preserved (950171)
+		// 
+		const char* doctype =
+			"<?xml version=\"1.0\" ?>"
+			"<!DOCTYPE PLAY SYSTEM 'play.dtd'>"
+			"<!ELEMENT title (#PCDATA)>"
+			"<!ELEMENT books (title,authors)>"
+			"<element />";
+
+		TiXmlDocument doc;
+		doc.Parse( doctype );
+		doc.SaveFile( "test7.xml" );
+		doc.Clear();
+		doc.LoadFile( "test7.xml" );
+		
+		TiXmlHandle docH( &doc );
+		TiXmlUnknown* unknown = docH.Child( 1 ).Unknown();
+		XmlTest( "Correct value of unknown.", "!DOCTYPE PLAY SYSTEM 'play.dtd'", unknown->Value() );
+		#ifdef TIXML_USE_STL
+		TiXmlNode* node = docH.Child( 2 ).Node();
+		std::string str;
+		str << (*node);
+		XmlTest( "Correct streaming of unknown.", "<!ELEMENT title (#PCDATA)>", str.c_str() );
+		#endif
+	}
+
+	{
+		// [ 791411 ] Formatting bug
+		// Comments do not stream out correctly.
+		const char* doctype = 
+			"<!-- Somewhat<evil> -->";
+		TiXmlDocument doc;
+		doc.Parse( doctype );
+
+		TiXmlHandle docH( &doc );
+		TiXmlComment* comment = docH.Child( 0 ).Node()->ToComment();
+
+		XmlTest( "Comment formatting.", " Somewhat<evil> ", comment->Value() );
+		#ifdef TIXML_USE_STL
+		std::string str;
+		str << (*comment);
+		XmlTest( "Comment streaming.", "<!-- Somewhat<evil> -->", str.c_str() );
+		#endif
+	}
+
+	{
+		// [ 870502 ] White space issues
+		TiXmlDocument doc;
+		TiXmlText* text;
+		TiXmlHandle docH( &doc );
+	
+		const char* doctype0 = "<element> This has leading and trailing space </element>";
+		const char* doctype1 = "<element>This has  internal space</element>";
+		const char* doctype2 = "<element> This has leading, trailing, and  internal space </element>";
+
+		TiXmlBase::SetCondenseWhiteSpace( false );
+		doc.Clear();
+		doc.Parse( doctype0 );
+		text = docH.FirstChildElement( "element" ).Child( 0 ).Text();
+		XmlTest( "White space kept.", " This has leading and trailing space ", text->Value() );
+
+		doc.Clear();
+		doc.Parse( doctype1 );
+		text = docH.FirstChildElement( "element" ).Child( 0 ).Text();
+		XmlTest( "White space kept.", "This has  internal space", text->Value() );
+
+		doc.Clear();
+		doc.Parse( doctype2 );
+		text = docH.FirstChildElement( "element" ).Child( 0 ).Text();
+		XmlTest( "White space kept.", " This has leading, trailing, and  internal space ", text->Value() );
+
+		TiXmlBase::SetCondenseWhiteSpace( true );
+		doc.Clear();
+		doc.Parse( doctype0 );
+		text = docH.FirstChildElement( "element" ).Child( 0 ).Text();
+		XmlTest( "White space condensed.", "This has leading and trailing space", text->Value() );
+
+		doc.Clear();
+		doc.Parse( doctype1 );
+		text = docH.FirstChildElement( "element" ).Child( 0 ).Text();
+		XmlTest( "White space condensed.", "This has internal space", text->Value() );
+
+		doc.Clear();
+		doc.Parse( doctype2 );
+		text = docH.FirstChildElement( "element" ).Child( 0 ).Text();
+		XmlTest( "White space condensed.", "This has leading, trailing, and internal space", text->Value() );
+	}
+
+	{
+		// Double attributes
+		const char* doctype = "<element attr='red' attr='blue' />";
+
+		TiXmlDocument doc;
+		doc.Parse( doctype );
+		
+		XmlTest( "Parsing repeated attributes.", 0, (int)doc.Error() );	// not an  error to tinyxml
+		XmlTest( "Parsing repeated attributes.", "blue", doc.FirstChildElement( "element" )->Attribute( "attr" ) );
+	}
+
+	{
+		// Embedded null in stream.
+		const char* doctype = "<element att\0r='red' attr='blue' />";
+
+		TiXmlDocument doc;
+		doc.Parse( doctype );
+		XmlTest( "Embedded null throws error.", true, doc.Error() );
+
+		#ifdef TIXML_USE_STL
+		istringstream strm( doctype );
+		doc.Clear();
+		doc.ClearError();
+		strm >> doc;
+		XmlTest( "Embedded null throws error.", true, doc.Error() );
+		#endif
+	}
+
+    {
+            // Legacy mode test. (This test may only pass on a western system)
+            const char* str =
+                        "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"
+                        "<ä>"
+                        "CöntäntßäöüÄÖÜ"
+                        "</ä>";
+
+            TiXmlDocument doc;
+            doc.Parse( str );
+
+            TiXmlHandle docHandle( &doc );
+            TiXmlHandle aHandle = docHandle.FirstChildElement( "ä" );
+            TiXmlHandle tHandle = aHandle.Child( 0 );
+            assert( aHandle.Element() );
+            assert( tHandle.Text() );
+            XmlTest( "ISO-8859-1 Parsing.", "CöntäntßäöüÄÖÜ", tHandle.Text()->Value() );
+    }
+
+	{
+		// Empty documents should return TIXML_ERROR_PARSING_EMPTY, bug 1070717
+		const char* str = "    ";
+		TiXmlDocument doc;
+		doc.Parse( str );
+		XmlTest( "Empty document error TIXML_ERROR_DOCUMENT_EMPTY", TiXmlBase::TIXML_ERROR_DOCUMENT_EMPTY, doc.ErrorId() );
+	}
+	#ifndef TIXML_USE_STL
+	{
+		// String equality. [ 1006409 ] string operator==/!= no worky in all cases
+		TiXmlString temp;
+		XmlTest( "Empty tinyxml string compare equal", ( temp == "" ), true );
+
+		TiXmlString    foo;
+		TiXmlString    bar( "" );
+		XmlTest( "Empty tinyxml string compare equal", ( foo == bar ), true );
+	}
+
+	#endif
+	{
+		// Bug [ 1195696 ] from marlonism
+		TiXmlBase::SetCondenseWhiteSpace(false); 
+		TiXmlDocument xml; 
+		xml.Parse("<text><break/>This hangs</text>"); 
+		XmlTest( "Test safe error return.", xml.Error(), false );
+	}
+
+	{
+		// Bug [ 1243992 ] - another infinite loop
+		TiXmlDocument doc;
+		doc.SetCondenseWhiteSpace(false);
+		doc.Parse("<p><pb></pb>test</p>");
+	} 
+	{
+		// Low entities
+		TiXmlDocument xml;
+		xml.Parse( "<test>&#x0e;</test>" );
+		const char result[] = { 0x0e, 0 };
+		XmlTest( "Low entities.", xml.FirstChildElement()->GetText(), result );
+		xml.Print();
+	}
+	{
+		// Bug [ 1451649 ] Attribute values with trailing quotes not handled correctly
+		TiXmlDocument xml;
+		xml.Parse( "<foo attribute=bar\" />" );
+		XmlTest( "Throw error with bad end quotes.", xml.Error(), true );
+	}
+	#ifdef TIXML_USE_STL
+	{
+		// Bug [ 1449463 ] Consider generic query
+		TiXmlDocument xml;
+		xml.Parse( "<foo bar='3' />" );
+		TiXmlElement* ele = xml.FirstChildElement();
+		double d;
+		int i;
+		float f;
+		bool b;
+
+		XmlTest( "QueryValueAttribute", ele->QueryValueAttribute( "bar", &d ), TIXML_SUCCESS );
+		XmlTest( "QueryValueAttribute", ele->QueryValueAttribute( "bar", &i ), TIXML_SUCCESS );
+		XmlTest( "QueryValueAttribute", ele->QueryValueAttribute( "bar", &f ), TIXML_SUCCESS );
+		XmlTest( "QueryValueAttribute", ele->QueryValueAttribute( "bar", &b ), TIXML_WRONG_TYPE );
+		XmlTest( "QueryValueAttribute", ele->QueryValueAttribute( "nobar", &b ), TIXML_NO_ATTRIBUTE );
+
+		XmlTest( "QueryValueAttribute", (d==3.0), true );
+		XmlTest( "QueryValueAttribute", (i==3), true );
+		XmlTest( "QueryValueAttribute", (f==3.0f), true );
+	}
+	#endif
+
+	#ifdef TIXML_USE_STL
+	{
+		// [ 1505267 ] redundant malloc in TiXmlElement::Attribute
+		TiXmlDocument xml;
+		xml.Parse( "<foo bar='3' />" );
+		TiXmlElement* ele = xml.FirstChildElement();
+		double d;
+		int i;
+
+		std::string bar = "bar";
+
+		const std::string* atrrib = ele->Attribute( bar );
+		ele->Attribute( bar, &d );
+		ele->Attribute( bar, &i );
+
+		XmlTest( "Attribute", atrrib->empty(), false );
+		XmlTest( "Attribute", (d==3.0), true );
+		XmlTest( "Attribute", (i==3), true );
+	}
+	#endif
+
+	{
+		// [ 1356059 ] Allow TiXMLDocument to only be at the top level
+		TiXmlDocument xml, xml2;
+		xml.InsertEndChild( xml2 );
+		XmlTest( "Document only at top level.", xml.Error(), true );
+		XmlTest( "Document only at top level.", xml.ErrorId(), TiXmlBase::TIXML_ERROR_DOCUMENT_TOP_ONLY );
+	}
+
+	/*  1417717 experiment
+	{
+		TiXmlDocument xml;
+		xml.Parse("<text>Dan & Tracie</text>");
+		xml.Print(stdout);
+	}
+	{
+		TiXmlDocument xml;
+		xml.Parse("<text>Dan &foo; Tracie</text>");
+		xml.Print(stdout);
+	}
+	*/
+	#if defined( WIN32 ) && defined( TUNE )
+	_CrtMemCheckpoint( &endMemState );
+	//_CrtMemDumpStatistics( &endMemState );
+
+	_CrtMemState diffMemState;
+	_CrtMemDifference( &diffMemState, &startMemState, &endMemState );
+	_CrtMemDumpStatistics( &diffMemState );
+	#endif
+
+	printf ("\nPass %d, Fail %d\n", gPass, gFail);
+	return gFail;
+}
+
+
