Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • amagad/t-engine4
  • HirumaKai/t-engine4
  • Hogulus/t-engine4
  • Inkie/t-engine4
  • Liberty/t-engine4
  • Lokean/t-engine4
  • Mawootad/t-engine4
  • Michelle/t-engine4
  • MrFrog/t-engine4
  • Nagyhal/t-engine4
  • Recaiden/t-engine4
  • RootOfAllThings/t-engine4
  • Sebsebeleb/t-engine4
  • Sheila/t-engine4
  • Shibari/t-engine4
  • Stof/t-engine4
  • Umbral/t-engine4
  • tome/t-engine4
  • 0player/t-engine4
  • BreezyIdiot/t-engine4
  • Bunny/t-engine4
  • Effigy/t-engine4
  • Hachem_Muche/t-engine4
  • razakai/t-engine4
  • Zireael/t-engine4
  • cinornu/t-engine4
  • edge2054/t-engine4
  • gordaxx727/t-engine4
  • grayswandir/t-engine4
  • helminthauge/t-engine4
  • housepet/t-engine4
  • minqmay/t-engine4
  • nsrr/t-engine4
  • orange/t-engine4
  • otowakotori/t-engine4
  • purequestion/t-engine4
  • rexorcorum/t-engine4
  • rgeens/t-engine4
  • sageacrin/t-engine4
  • stuntofthelitter/t-engine4
  • tiger_eye/t-engine4
  • xelivous/t-engine4
  • yutio888/t-engine4
43 results
Show changes
Commits on Source (13137)
Showing
with 1959 additions and 15 deletions
cef3spawn
build/*.make
libte4-web.so
Makefile
bin
divx2pass.log
game/addons/**
game/dlcs/**
obj/**
/lib64
/t-engine64
/tmp
/diff.diff
out.avi
out.ogv
te4_log_web.txt
t-engine
tengine_doc
game/modules/pits/
game/modules/uaws/
game/modules/bare_minimum/
game/modules/bone/
game/modules/demo/
game/modules/unused/
game/modules/particles_editor/
steam_appid.txt
oprofile_data/
game/modules/tome/data/gfx/ts-gfx*
game/engines/default/modules/boot/data/gfx/ts-gfx*
debug-recompile.sh
profiling-recompile.sh
recompile.sh
*.exe
*.dll
/*.so
te4_log.txt
debug.log
/.idea/
/*.log
.vscode
__autosave__.pc
......@@ -5,7 +5,7 @@ To contribute I'll ask people that contribute to release copyright to me,
or to give me right to relicense the code as I see fit .
(You can add a "as long as its opensource" if you wish, it'll never change :)
The reason for that is to avoid the headhache that angband had with it's
The reason for that is to avoid the headhache that angband had with its
free-but-not-modern licence. This way if a better licence pops up I can
use it easily without having to hunt everybody that contributed and that
might have since then disappeared.
......
All the medias located in all the "/data/gfx" folders are granted to use with the Tales of Maj'Eyal game only.
Please contact darkgod@te4.org for more informations.
General:
- Shoob for many NPCs, much playtesting and ideas
- Madmonk for much playtesting and ideas
- Jules Bean for his help on the OpenGL code and quite a few other things
- Jules Bean for his help on the OpenGL code and quite a few other things, mac builds & support
- Neil Stevens for a Mac build
- Brian Jeffears for texts revisions
- Ralph Versteegen for texts revisions
- Greg Wooledge for texts revisions
- Shani for various code
- Antagonist for OpenGL support and opengl shaders
- Reenen Laurie for work on the musics, locating and choosing them
- Graziel for many patches, notably great UI improvments
- Susramanian for many ego items, quests, ...
- Eric Wykoff for classes, items, ...
- Yufra for all his AI work and various other things
- Benli for classes, zones, ...
- Hetdegon for Arena and other such nice things
- Tiger Eye for auto-explore and FOV code
- PureQuestion for npcs and artifacts
- Hachem Muche for many patches and scaling issues
- Dekar for artifacts, debug help (slave? ;> ), icons, ...
- Shibari for artifacts and talents balancing
- Sage Acrin
Lore:
- Darren Grey
- Burb Lulls
- Gwai
- Ron Billingsley
Graphics:
- David Gervais tiles
- Andreas Kosh for more tiles
- Shockbolt (Raymond Gaustadnes) http://shockbolt.deviantart.com
- Rexorcorum (Assen Kanev)
- Suslik (Alex Sannikov) for his awesome shaders
Musics:
- "A lomos del dragón blanco" by Carlos Saura (http://www.jamendo.com/en/artist/carlosaura)
- "Anne_van_Schothorst_-_Passed_Tense.ogg" by Anne van Schothorst (http://freemusicarchive.org/music/Anne_van_Schothorst)
- Nearly every other songs by Celestial Aeon Project (http://www.jamendo.com/en/artist/celestial.aeon.project)
Sounds:
- Mike Koenig for 'breaking' sound effects
- Mark DiAngelo for 'whooshing' sound effects
- Marianne Gragnon for 'mystic chanting' sound effects
Fonts:
- Vera*: http://www.gnome.org/fonts/
- INSULA, USENET: http://www.dafont.com/fr/apostrophic-labs.d128
- SVBasicManual: http://www.dafont.com/fr/johan-winge.d757 // http://home.student.uu.se/j/jowi4905/fonts/
- FSEX300: http://www.fixedsysexcelsior.com/
- square: Wouter van Oortmerssen: http://strlen.com/square
Others:
- My dear wife who is not bothered by my coding frenzy :)
- The good people at lua.org who made the world a better place
- J.R.R. Tolkien who made the world an interresting place
- J.R.R. Tolkien who made the (real) world an interesting place
Also a big general thanks to the whole ToME community which is always very nice, polite, supporting, full of marvelous ideas and great people!
......@@ -2,6 +2,11 @@
-- It will be called before anything else is setup, including paths
-- Usualy it will be put inside a zip that is concatenated to the executable itself
--[[ Example to move the saves somewhere else
local old = fs.getHomePath()
function fs.getHomePath() return old:gsub("T%-Engine", "BoneToBeWild"):gsub("t%-engine", "bone-to-be-wild") end
]]
print("Booting T-Engine from: "..tostring(__SELFEXE))
-- Mount the engine, either from a path guessed from SELFEXE, or directly from current dir
......@@ -14,24 +19,68 @@ if __SELFEXE then
if not __APPLE__ then
-- Now remove executable name
dir = dir:gsub("(.*"..fs.getPathSeparator()..").+", "%1")
else
-- This is a little un-OSX like: we grab our data from the folder containing T-Engine.app
-- It is a bit strange but way way better for people to install addons and such
dir = dir:gsub("(.*"..fs.getPathSeparator()..").+", "%1"):gsub("(.*"..fs.getPathSeparator()..").+", "%1"):gsub("(.*"..fs.getPathSeparator()..").+", "%1")
-- dir = dir:gsub("(.*"..fs.getPathSeparator()..").+", "%1")..fs.getPathSeparator().."Resources"..fs.getPathSeparator()
end
print("SelfExe gave us app directory of:", dir)
fs.mount(dir..fs.getPathSeparator().."game"..fs.getPathSeparator().."thirdparty", "/", true)
fs.mount(dir..fs.getPathSeparator().."game", "/", true)
if fs.exists("/engine.teae") and fs.exists("/thirdparty.teae") then
fs.mount(dir..fs.getPathSeparator().."game/engine.teae", "/", true)
fs.mount(dir..fs.getPathSeparator().."game/thirdparty.teae", "/", true)
print("Using engine.teae")
end
fs.setPathAllowed(dir..fs.getPathSeparator().."game", false)
else
print("No SelfExe, using basic path")
fs.mount("game"..fs.getPathSeparator().."thirdparty", "/", true)
fs.mount("game", "/", true)
if fs.exists("/engine.teae") and fs.exists("/thirdparty.teae") then
fs.mount(dir..fs.getPathSeparator().."game/engine.teae", "/", true)
fs.mount(dir..fs.getPathSeparator().."game/thirdparty.teae", "/", true)
print("Using engine.teae")
end
fs.setPathAllowed(fs.getRealPath("/engines/"), false)
fs.setPathAllowed(fs.getRealPath("/thirdparty/"), false)
fs.setPathAllowed(fs.getRealPath("/addons/"), true)
if fs.getRealPath("/dlcs/") then fs.setPathAllowed(fs.getRealPath("/dlcs/"), true) end
fs.setPathAllowed(fs.getRealPath("/modules/"), true)
-- Look for a core
function get_core(coretype, id)
coretype = coretype or "te4core"
local homepath = fs.getUserPath()..fs.getPathSeparator()..fs.getHomePath()..fs.getPathSeparator().."4.0"
fs.mount(homepath, "/", 1)
-- Look for possible cores - if id is -1 then check all the ones matching the given type and use the newest one
local usable = {}
for i, file in ipairs(fs.list("/engines/cores/")) do
if file:find("%.tec$") then
print("Looking for cores", coretype, id, " <=> ", file)
if id > 0 and file == coretype.."-"..id..".tec" then
usable[#usable+1] = {file=file, id=id}
print("Possible engine core", file)
elseif id == -1 and file:find(coretype) then
local _, _, cid = file:find("%-([0-9]+)%.tec$")
cid = tonumber(cid)
if cid then
usable[#usable+1] = {file=file, id=cid}
print("Possible engine core", file)
end
end
end
end
-- Order the cores to find the newest
table.sort(usable, function(a, b) return b.id < a.id end)
for i, file in ipairs(usable) do print("Selected cores:", file.id, file.file) end
-- Check for sanity and tell the runner to use it
local core = "/engines/cores/"..usable[1].file
if fs.exists(core) then
local rcore = fs.getRealPath(core)
print("Using TE4CORE: ", core, rcore)
fs.umount(homepath)
return rcore
end
fs.umount(homepath)
return "NO CORE"
end
-- We need it no more, lets forget about it just it case some malovelant script tried something silly
......
-- T-Engine4
-- Copyright (C) 2009, 2010, 2011, 2012, 2013 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 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 General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
TE4CORE_VERSION = 17
corename = "te4core-"..TE4CORE_VERSION
newoption {
trigger = "lua",
value = "VM_Type",
description = "Virtual Machine to use for Lua, either the default one or a JIT",
allowed = {
{ "default", "Default Lua Virtual Machine" },
{ "jit2", "LuaJIT2" },
}
}
newoption {
trigger = "force32bits",
description = "Forces compilation in 32bits mode, allowing to use the lua jit",
}
newoption {
trigger = "relpath",
description = "Links libraries relative to the application path for redistribution",
allowed = {
{ "32", "32 bits location" },
{ "64", "64 bits location" },
}
}
newoption {
trigger = "luaassert",
description = "Enable lua asserts to debug lua C code",
}
newoption {
trigger = "pedantic",
description = "Enables compiling with all pedantic options",
}
newoption {
trigger = "no-cleanup-jit2",
description = "Doesnt remove jit2 build files",
}
newoption {
trigger = "no_rwops_size",
description = "Compat for old SDL2 dev verions"
}
newoption {
trigger = "steam",
description = "Steam integration"
}
newoption {
trigger = "discord",
description = "Discord integration"
}
newoption {
trigger = "discord-nolib",
description = "Dont build discord lib"
}
newoption {
trigger = "web-awesomium",
description = "Use awesomium embedded browser as the webcore"
}
newoption {
trigger = "web-cef3",
description = "Use CEF3 embedded browser as the webcore"
}
newoption {
trigger = "wincross",
description = "Enables cross-compilation for windows (from linux)"
}
_OPTIONS.lua = _OPTIONS.lua or "jit2"
-- T-Engine4
-- Copyright (C) 2009, 2010, 2011, 2012, 2013 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 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 General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
project "TEngineRunner"
kind "WindowedApp"
language "C"
targetname "t-engine"
files { "../src/runner/main.c", "../src/getself.c" }
links { "m" }
configuration "linux"
links { "dl", "SDL", "SDL_ttf", "SDL_image", "SDL_mixer", "GL", "GLU", "m", "pthread" }
defines { [[TENGINE_HOME_PATH='".t-engine"']], 'SELFEXE_LINUX' }
configuration "bsd"
links { "SDL", "SDL_ttf", "SDL_image", "SDL_mixer", "GL", "GLU", "m", "pthread" }
defines { [[TENGINE_HOME_PATH='".t-engine"']], 'SELFEXE_BSD' }
configuration "windows"
links { "mingw32", "SDLmain", "SDL", "SDL_ttf", "SDL_image", "SDL_mixer", "OPENGL32", "GLU32", "wsock32" }
defines { [[TENGINE_HOME_PATH='"T-Engine"']], 'SELFEXE_WINDOWS' }
prebuildcommands { "windres ../src/windows/icon.rc -O coff -o ../src/windows/icon.res" }
linkoptions { "../src/windows/icon.res" }
configuration "macosx"
defines { [[TENGINE_HOME_PATH='".t-engine"']], "USE_TENGINE_MAIN", 'SELFEXE_MACOSX' }
linkoptions { "-framework SDL", "-framework SDL_image", "-framework SDL_ttf", "-framework SDL_mixer", "-framework Cocoa", "-framework OpenGL" }
links { "IOKit" }
configuration {"Debug"}
postbuildcommands { "cp ../bin/Debug/t-engine ../t-engine", }
configuration {"Release"}
postbuildcommands { "cp ../bin/Release/t-engine ../t-engine", }
project "te4runner"
kind "SharedLib"
language "C"
targetname "te4runner"
targetprefix ""
targetextension ".tec"
files { "../src/runner/runner.c", "../src/physfs.c", "../src/auxiliar.c" }
links { "runner-physfs", "runner-lua", "m" }
configuration "linux"
defines { [[TENGINE_HOME_PATH='".t-engine"']], 'SELFEXE_LINUX' }
configuration "bsd"
defines { [[TENGINE_HOME_PATH='".t-engine"']], 'SELFEXE_BSD' }
configuration "windows"
defines { [[TENGINE_HOME_PATH='"T-Engine"']], 'SELFEXE_WINDOWS' }
configuration "macosx"
defines { [[TENGINE_HOME_PATH='".t-engine"']], "USE_TENGINE_MAIN", 'SELFEXE_MACOSX' }
configuration {"Debug"}
postbuildcommands { "cp ../bin/Debug/te4runner.tec ../", }
configuration {"Release"}
postbuildcommands { "cp ../bin/Release/te4runner.tec ../", }
project "runner-physfs"
kind "StaticLib"
language "C"
targetname "runner-physfs"
buildoptions { "-fPIC" }
defines {"PHYSFS_SUPPORTS_ZIP"}
files { "../src/physfs/*.c", "../src/zlib/*.c", "../src/physfs/archivers/*.c", }
configuration "linux"
files { "../src/physfs/platform/unix.c", "../src/physfs/platform/posix.c", }
configuration "bsd"
files { "../src/physfs/platform/unix.c", "../src/physfs/platform/posix.c", }
configuration "windows"
files { "../src/physfs/platform/windows.c", }
configuration "macosx"
files { "../src/physfs/platform/macosx.c", "../src/physfs/platform/posix.c", }
includedirs { "/Library/Frameworks/SDL.framework/Headers" }
project "runner-lua"
kind "StaticLib"
language "C"
targetname "runner-lua"
buildoptions { "-fPIC" }
files { "../src/lua/*.c", }
This diff is collapsed.
Building
========
Building the documentation requires [LDoc](https://github.com/stevedonovan/LDoc)
It has a dependency of [Penlight](https://github.com/stevedonovan/Penlight)
And optionally you can install [lua-discount](https://github.com/craigbarnes/lua-discount) for better markdown processing of comments
Both dependencies can be found with luarocks if you have that
Just point ldoc.lua at the directory this README file is contained in and it will handle the rest:
t-engine-source $ cd documentation
t-engine-source/documentation $ lua /path/to/ldoc.lua .
After building the documentation, it will output into `tengine_doc` one directory below
You can alter this path by including `-d path` when calling ldoc
\ No newline at end of file
project='T-Engine 4 v1.4.0'
title='TE4 1.4.0 Documentation'
description='Documentation for T-Engine 4 - version 1.4.0'
file={'../game/engines/default/engine', '../game/engines/default/data', 'readme_files'}
kind_names={topic='Manual'}
style='!fixed'
all=true
prettify_files=show
sort=false
package=engine
merge=true
format = 'discount'
readme={'readme_files'}
convert_opt=true
custom_tags={"inherit","Inherits"}
style='style'
template='style'
dir='../tengine_doc'
full_description=[[<a href="manual/index.md.html">View the Manual</a> | <a href="http://git.net-core.org/tome/t-engine4/">T-Engine Git Repository</a>
]]
# Colors
Implementation: @{engine.colors}
## Usage
T-Engine provides a number of predefined colors. There are two ways to refer to these:
<ul>
<li>In your Lua code. For example: <code>color.DARK_GREEN</code></li>
<li>Embedded within strings (using # signs to mark them). For example: <code>"Hello, #BLUE#world#LAST#!"</code></li>
</ul>
You can add your own colours to the list for your module by adding in a line like the following to the <code>/load.lua</code> file:
<pre>defineColor('MAUVE', 204, 153, 255)</pre>
References to "MAUVE" will then result in this colour. You can define as many colours with as many names as you like. It can sometimes to helpful to name the colours based on what they're used for rather than the colours themselves. Eg, a colour for lightning attacks could be called "LIGHTNING".
## Presets
The following colors are defined by T-Engine 4:
<!-- Useful with: http://regexr.com/
REGEX for table generation for HEX Values:
/defineColor\('(\S+)',\s*((?:0x)(\S+)),\s*((?:0x)(\S+)),\s*((?:0x)(\S+))\)/g
Substitution for HEX values:
<tr><td>$1</td><td>$2</td><td>$4</td><td>$6</td><td class="color" style="background: #$3$5$7;"></td></tr>
REGEX for table generation for RGB values:
/defineColor\('(\S+)',\s*(\d+),\s*(\d+),\s*(\d+)\)/g
Substitution for RGB values:
<tr><td>$1</td><td>$2</td><td>$3</td><td>$3</td><td class="color" style="background: rgb($2,$3,$4);"></td></tr>
-->
<table class="colortable">
<thead>
<tr><th>Name</th><th>Red</th><th>Green</th><th>Blue</th><th>Demo</th></tr>
</thead>
<tbody>
<tr><td>BLACK</td><td>0</td><td>0</td><td>0</td><td class="color" style="background: rgb(0,0,0);"></td></tr>
<tr><td>WHITE</td><td>0xFF</td><td>0xFF</td><td>0xFF</td><td class="color" style="background: #FFFFFF;"></td></tr>
<tr><td>SLATE</td><td>0x8C</td><td>0x8C</td><td>0x8C</td><td class="color" style="background: #8C8C8C;"></td></tr>
<tr><td>ORANGE</td><td>0xFF</td><td>0x77</td><td>0x00</td><td class="color" style="background: #FF7700;"></td></tr>
<tr><td>RED</td><td>0xC9</td><td>0x00</td><td>0x00</td><td class="color" style="background: #C90000;"></td></tr>
<tr><td>GREEN</td><td>0x00</td><td>0x86</td><td>0x45</td><td class="color" style="background: #008645;"></td></tr>
<tr><td>BLUE</td><td>0x00</td><td>0x00</td><td>0xE3</td><td class="color" style="background: #0000E3;"></td></tr>
<tr><td>UMBER</td><td>0x8E</td><td>0x45</td><td>0x00</td><td class="color" style="background: #8E4500;"></td></tr>
<tr><td>LIGHT_DARK</td><td>0x50</td><td>0x50</td><td>0x50</td><td class="color" style="background: #505050;"></td></tr>
<tr><td>LIGHT_SLATE</td><td>0xD1</td><td>0xD1</td><td>0xD1</td><td class="color" style="background: #D1D1D1;"></td></tr>
<tr><td>VIOLET</td><td>0xC0</td><td>0x00</td><td>0xAF</td><td class="color" style="background: #C000AF;"></td></tr>
<tr><td>YELLOW</td><td>0xFF</td><td>0xFF</td><td>0x00</td><td class="color" style="background: #FFFF00;"></td></tr>
<tr><td>LIGHT_RED</td><td>0xFF</td><td>0x00</td><td>0x68</td><td class="color" style="background: #FF0068;"></td></tr>
<tr><td>LIGHT_GREEN</td><td>0x00</td><td>0xFF</td><td>0x00</td><td class="color" style="background: #00FF00;"></td></tr>
<tr><td>LIGHT_BLUE</td><td>0x51</td><td>0xDD</td><td>0xFF</td><td class="color" style="background: #51DDFF;"></td></tr>
<tr><td>LIGHT_UMBER</td><td>0xD7</td><td>0x8E</td><td>0x45</td><td class="color" style="background: #D78E45;"></td></tr>
<tr><td>DARK_UMBER</td><td>0x57</td><td>0x5E</td><td>0x25</td><td class="color" style="background: #575E25;"></td></tr>
<tr><td>DARK_GREY</td><td>67</td><td>67</td><td>67</td><td class="color" style="background: rgb(67,67,67);"></td></tr>
<tr><td>GREY</td><td>127</td><td>127</td><td>127</td><td class="color" style="background: rgb(127,127,127);"></td></tr>
<tr><td>ROYAL_BLUE</td><td>65</td><td>105</td><td>105</td><td class="color" style="background: rgb(65,105,225);"></td></tr>
<tr><td>AQUAMARINE</td><td>127</td><td>255</td><td>255</td><td class="color" style="background: rgb(127,255,212);"></td></tr>
<tr><td>CADET_BLUE</td><td>95</td><td>158</td><td>158</td><td class="color" style="background: rgb(95,158,160);"></td></tr>
<tr><td>STEEL_BLUE</td><td>70</td><td>130</td><td>130</td><td class="color" style="background: rgb(70,130,180);"></td></tr>
<tr><td>TEAL</td><td>0</td><td>128</td><td>128</td><td class="color" style="background: rgb(0,128,128);"></td></tr>
<tr><td>LIGHT_STEEL_BLUE</td><td>176</td><td>196</td><td>196</td><td class="color" style="background: rgb(176,196,222);"></td></tr>
<tr><td>DARK_BLUE</td><td>0x00</td><td>0x00</td><td>0x93</td><td class="color" style="background: #000093;"></td></tr>
<tr><td>ROYAL_BLUE</td><td>0x00</td><td>0x6C</td><td>0xFF</td><td class="color" style="background: #006CFF;"></td></tr>
<tr><td>PINK</td><td>255</td><td>192</td><td>192</td><td class="color" style="background: rgb(255,192,203);"></td></tr>
<tr><td>GOLD</td><td>255</td><td>215</td><td>215</td><td class="color" style="background: rgb(255,215,0);"></td></tr>
<tr><td>FIREBRICK</td><td>178</td><td>34</td><td>34</td><td class="color" style="background: rgb(178,34,34);"></td></tr>
<tr><td>DARK_RED</td><td>100</td><td>0</td><td>0</td><td class="color" style="background: rgb(100,0,0);"></td></tr>
<tr><td>VERY_DARK_RED</td><td>50</td><td>0</td><td>0</td><td class="color" style="background: rgb(50,0,0);"></td></tr>
<tr><td>CRIMSON</td><td>220</td><td>20</td><td>20</td><td class="color" style="background: rgb(220,20,60);"></td></tr>
<tr><td>MOCCASIN</td><td>255</td><td>228</td><td>228</td><td class="color" style="background: rgb(255,228,181);"></td></tr>
<tr><td>KHAKI</td><td>240</td><td>230</td><td>230</td><td class="color" style="background: rgb(240,230,130);"></td></tr>
<tr><td>SANDY_BROWN</td><td>244</td><td>164</td><td>164</td><td class="color" style="background: rgb(244,164,96);"></td></tr>
<tr><td>SALMON</td><td>250</td><td>128</td><td>128</td><td class="color" style="background: rgb(250,128,114);"></td></tr>
<tr><td>DARK_ORCHID</td><td>153</td><td>50</td><td>50</td><td class="color" style="background: rgb(153,50,204);"></td></tr>
<tr><td>ORCHID</td><td>218</td><td>112</td><td>112</td><td class="color" style="background: rgb(218,112,214);"></td></tr>
<tr><td>PURPLE</td><td>128</td><td>0</td><td>0</td><td class="color" style="background: rgb(128,0,139);"></td></tr>
<tr><td>CHOCOLATE</td><td>210</td><td>105</td><td>105</td><td class="color" style="background: rgb(210,105,30);"></td></tr>
<tr><td>DARK_KHAKI</td><td>189</td><td>183</td><td>183</td><td class="color" style="background: rgb(189,183,107);"></td></tr>
<tr><td>TAN</td><td>210</td><td>180</td><td>180</td><td class="color" style="background: rgb(210,180,140);"></td></tr>
<tr><td>DARK_TAN</td><td>110</td><td>80</td><td>80</td><td class="color" style="background: rgb(110,80,40);"></td></tr>
<tr><td>HONEYDEW</td><td>240</td><td>255</td><td>255</td><td class="color" style="background: rgb(240,255,240);"></td></tr>
<tr><td>ANTIQUE_WHITE</td><td>250</td><td>235</td><td>235</td><td class="color" style="background: rgb(250,235,215);"></td></tr>
<tr><td>OLD_LACE</td><td>253</td><td>245</td><td>245</td><td class="color" style="background: rgb(253,245,230);"></td></tr>
<tr><td>DARK_SLATE_GRAY</td><td>47</td><td>79</td><td>79</td><td class="color" style="background: rgb(47,79,79);"></td></tr>
<tr><td>OLIVE_DRAB</td><td>107</td><td>142</td><td>142</td><td class="color" style="background: rgb(107,142,35);"></td></tr>
<tr><td>DARK_SEA_GREEN</td><td>143</td><td>188</td><td>188</td><td class="color" style="background: rgb(143,188,143);"></td></tr>
<tr><td>YELLOW_GREEN</td><td>154</td><td>205</td><td>205</td><td class="color" style="background: rgb(154,205,50);"></td></tr>
<tr><td>DARK_GREEN</td><td>50</td><td>77</td><td>77</td><td class="color" style="background: rgb(50,77,12);"></td></tr>
</tbody>
</table>
\ No newline at end of file
# T-Engine 4 Manual
## External Information
* <a href="http://www.lua.org/manual/5.1/index.html">Lua 5.1 manual</a>
* <a href="http://lua-users.org/wiki/LuaDirectory">Lua Users Wiki</a>
* <strong>IRC:</strong> <code>irc.rizon.net #tome</code>
## Topics
* @{colors.md|Understanding the COLOR System}
\ No newline at end of file
/* BEGIN RESET
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
version: 2.8.2r1
*/
html {
color: #000;
background: #FFF;
}
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td {
margin: 0;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
fieldset,img {
border: 0;
}
address,caption,cite,code,dfn,em,strong,th,var,optgroup {
font-style: inherit;
font-weight: inherit;
}
del,ins {
text-decoration: none;
}
li {
list-style: disc;
margin-left: 20px;
}
caption,th {
text-align: left;
}
h1,h2,h3,h4,h5,h6 {
font-size: 100%;
font-weight: bold;
}
q:before,q:after {
content: '';
}
abbr,acronym {
border: 0;
font-variant: normal;
}
sup {
vertical-align: baseline;
}
sub {
vertical-align: baseline;
}
legend {
color: #000;
}
input,button,textarea,select,optgroup,option {
font-family: inherit;
font-size: inherit;
font-style: inherit;
font-weight: inherit;
}
input,button,textarea,select {*font-size:100%;
}
/* END RESET */
/* MAIN STYLE */
body {
margin-left: 1em;
margin-right: 1em;
font-family: arial, helvetica, geneva, sans-serif;
background-color: #ffffff; margin: 0px;
}
code, tt { font-family: monospace; font-size: 1.1em; }
span.parameter { font-family:monospace; }
span.parameter:after { content:":"; }
span.types:before { content:"("; }
span.types:after { content:")"; }
.type { font-weight: bold; font-style:italic }
body, p, td, th { font-size: .95em; line-height: 1.2em;}
th { font-weight: bold; }
p, ul { margin: 10px 0 0 0px;}
strong { font-weight: bold;}
em { font-style: italic;}
h1 {
font-size: 1.5em;
margin: 0 0 20px 0;
}
h2, h3, h4 { margin: 15px 0 10px 0; }
h2 { font-size: 1.25em; }
h3 { font-size: 1.15em; }
h4 { font-size: 1.06em; }
a:link { font-weight: bold; color: #004080; text-decoration: none; }
a:visited { font-weight: bold; color: #006699; text-decoration: none; }
a:link:hover { text-decoration: underline; }
hr {
color:#cccccc;
background: #00007f;
height: 1px;
}
blockquote { margin-left: 3em; }
ul { list-style-type: disc; }
li { list-style: none; }
p.name {
font-family: "Andale Mono", monospace;
padding-top: 1em;
}
pre {
background-color: rgb(245, 245, 245);
border: 1px solid #C0C0C0; /* silver */
padding: 10px;
margin: 10px 0 10px 0;
overflow: auto;
font-family: "Andale Mono", monospace;
}
pre.example {
font-size: .85em;
}
table.index { border: 1px #00007f; }
table.index td { text-align: left; vertical-align: top; }
#container {
margin-left: 1em;
margin-right: 1em;
background-color: #ffffff;
}
#product {
text-align: center;
border-bottom: 1px solid #cccccc;
background-color: #ffffff;
}
#product big {
font-size: 2em;
}
#main {
background-color:#FFFFFF; // #f0f0f0;
border-left: 1px solid #cccccc;
}
#navigation {
position: fixed;
top: 0;
left: 0;
float: left;
width: 20em;
vertical-align: top;
background-color:#FFFFFF; // #f0f0f0;
border-right: 2px solid #cccccc;
overflow: visible;
overflow-y: scroll;
height: 100%;
padding-left: 1em;
}
#navigation h2 {
background-color:#FFFFFF;//:#e7e7e7;
font-size:1.1em;
color:#000000;
text-align: left;
padding:0.2em;
border-bottom:1px solid #dddddd;
}
#navigation ul
{
font-size:1em;
list-style-type: none;
margin: 1px 1px 10px 1px;
}
#navigation li {
text-indent: -1em;
display: block;
margin: 3px 0px 0px 22px;
}
#navigation li li a {
margin: 0px 3px 0px -1em;
}
#content {
margin-left: 20em;
padding: 1em;
padding-left: 2em;
width: 700px;
border-left: 2px solid #cccccc;
// border-right: 2px solid #cccccc;
background-color: #ffffff;
}
#about {
clear: both;
padding-left: 1em;
margin-left: 20em; // avoid the damn sidebar!
border-top: 2px solid #cccccc;
border-left: 2px solid #cccccc;
background-color: #ffffff;
}
@media print {
body {
font: 12pt "Times New Roman", "TimeNR", Times, serif;
}
a { font-weight: bold; color: #004080; text-decoration: underline; }
#main {
background-color: #ffffff;
border-left: 0px;
}
#container {
margin-left: 2%;
margin-right: 2%;
background-color: #ffffff;
}
#content {
padding: 1em;
background-color: #ffffff;
}
#navigation {
display: none;
}
pre.example {
font-family: "Andale Mono", monospace;
font-size: 10pt;
page-break-inside: avoid;
}
}
.module_list {
border-width: 1px;
border-style: solid;
border-color: #cccccc;
border-collapse: collapse;
}
.module_list td {
border-width: 1px;
padding: 3px;
border-style: solid;
border-color: #cccccc;
}
.module_list .name { background-color: #f0f0f0; ; min-width: 200px; }
.module_list .summary { width: 100%; }
.function_list {
margin-left: 1em;
font-size: 80%;
}
.function_list .name { background-color: #f6f6ff; ; min-width: 200px; margin-bottom: .2em; }
.function_list .summary { width: 100%; margin-top:.2em; margin-left: 1em;}
dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;}
dl.table h3, dl.function h3 {font-size: .95em;}
ul.nowrap {
overflow:auto;
whitespace:nowrap;
}
/* stop sublists from having initial vertical space */
ul ul { margin-top: 0px; }
ol ul { margin-top: 0px; }
ol ol { margin-top: 0px; }
ul ol { margin-top: 0px; }
/* make the target distinct; helps when we're navigating to a function */
a:target + * {
background-color: #FF9;
}
/* styles for prettification of source */
pre .comment { color: #558817; }
pre .constant { color: #a8660d; }
pre .escape { color: #844631; }
pre .keyword { color: #aa5050; font-weight: bold; }
pre .library { color: #0e7c6b; }
pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; }
pre .string { color: #8080ff; }
pre .number { color: #f8660d; }
pre .operator { color: #2239a8; font-weight: bold; }
pre .preprocessor, pre .prepro { color: #a33243; }
pre .global { color: #800080; }
pre .user-keyword { color: #800080; }
pre .prompt { color: #558817; }
pre .url { color: #272fc2; text-decoration: underline; }
/* Extra stuff */
.colortable { margin: 1em; }
.colortable td { padding: .3em; }
.color { display:block; width: 1em; height: 1em; border: 1px solid #000; }
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=$(ldoc.doc_charset)"/>
<head>
<title>$(ldoc.title)</title>
<link rel="stylesheet" href="$(ldoc.css)" type="text/css" />
</head>
<body>
<div id="container">
<div id="main">
# local no_spaces = ldoc.no_spaces
# local use_li = ldoc.use_li
# local display_name = ldoc.display_name
# local iter = ldoc.modules.iter
# local function M(txt,item) return ldoc.markup(txt,item,ldoc.plain) end
# local nowrap = ldoc.wrap and '' or 'nowrap'
<!-- Menu -->
<div id="navigation">
<br/>
<h1>
# if not ldoc.single and module then -- reference back to project index
<a title="Index" href="../$(ldoc.output).html">
#end
$(ldoc.project)
# if not ldoc.single and module then
</a>
# end
</h1>
# --------- contents of module -------------
# if module and not ldoc.no_summary and #module.items > 0 then
<h2>Contents</h2>
<ul>
# for kind,items in module.kinds() do
<li><a href="#$(no_spaces(kind))">$(kind)</a></li>
# end
</ul>
# end
# if ldoc.no_summary and module and not ldoc.one then -- bang out the functions on the side
# for kind, items in module.kinds() do
<h2>$(kind)</h2>
<ul class="nowrap">
# for item in items() do
<li><a href="#$(item.name)">$(display_name(item))</a></li>
# end
</ul>
# end
# end
# -------- contents of project ----------
# local this_mod = module and module.name
# for kind, mods, type in ldoc.kinds() do
# if ldoc.allowed_in_contents(type,module) then
<h2>$(kind)</h2>
<ul class="$(kind=='Topics' and '' or 'nowrap')">
# for mod in mods() do local name = display_name(mod)
# if mod.name == this_mod then
<li><strong>$(name)</strong></li>
# else
<li><a href="$(ldoc.ref_to_module(mod))">$(name)</a></li>
# end
# end
# end
</ul>
# end
</div>
<div id="content">
# if ldoc.body then -- verbatim HTML as contents; 'non-code' entries'
# if (module.name ~= "index.md") then
<a title="Index" href="../manual/index.md.html">Return to Manual Index</a>
<hr>
# end
$(ldoc.body)
# elseif module then -- module documentation
<h1>$(ldoc.module_typename(module)) <code>$(module.name)</code></h1>
<p>$(M(module.summary,module))</p>
<p>$(M(module.description,module))</p>
# if module.tags.include then
$(M(ldoc.include_file(module.tags.include)))
# end
# if module.usage then
# local li,il = use_li(module.usage)
<h3>Usage:</h3>
<ul>
# for usage in iter(module.usage) do
$(li)<pre class="example">$(ldoc.escape(usage))</pre>$(il)
# end -- for
</ul>
# end -- if usage
# if module.info then
<h3>Info:</h3>
<ul>
# for tag, value in module.info:iter() do
<li><strong>$(tag)</strong>: $(M(value,module))</li>
# end
</ul>
# end -- if module.info
# if not ldoc.no_summary then
# -- bang out the tables of item types for this module (e.g Functions, Tables, etc)
# for kind,items in module.kinds() do
<h2><a href="#$(no_spaces(kind))">$(kind)</a></h2>
<div class="function_list">
# for item in items() do
<h3 class="name" $(nowrap)><a href="#$(item.name)">$(display_name(item))</a></h3>
<p class="summary">$(M(item.summary,item))</p>
# end -- for items
</div>
# end -- for kinds
<br/>
<br/>
#end -- if not no_summary
# --- currently works for both Functions and Tables. The params field either contains
# --- function parameters or table fields.
# local show_return = not ldoc.no_return_or_parms
# local show_parms = show_return
# for kind, items in module.kinds() do
# local kitem = module.kinds:get_item(kind)
# local has_description = kitem and ldoc.descript(kitem) ~= ""
<h2 class="section-header $(has_description and 'has-description')"><a name="$(no_spaces(kind))"></a>$(kind)</h2>
$(M(module.kinds:get_section_description(kind),nil))
# if kitem then
# if has_description then
<div class="section-description">
$(M(ldoc.descript(kitem),kitem))
</div>
# end
# if kitem.usage then
<h3>Usage:</h3>
<pre class="example">$(ldoc.prettify(kitem.usage[1]))</pre>
# end
# end
<dl class="function">
# for item in items() do
<dt>
<a name = "$(item.name)"></a>
<strong>$(display_name(item))
# if item.tags.static then
<small>STATIC</small>
# end
</strong>
# if ldoc.prettify_files then
<a style="float:right;" href="$(ldoc.source_ref(item))">line $(item.lineno)</a>
# end
</dt>
<dd>
$(M(ldoc.descript(item),item))
# if ldoc.custom_tags then
# for custom in iter(ldoc.custom_tags) do
# local tag = item.tags[custom[1]]
# if tag and not custom.hidden then
# local li,il = use_li(tag)
<h3>$(custom.title or custom[1]):</h3>
<ul>
# for value in iter(tag) do
$(li)$(custom.format and custom.format(value) or M(value))$(il)
# end -- for
# end -- if tag
</ul>
# end -- iter tags
# end
# if show_parms and item.params and #item.params > 0 then
# local subnames = module.kinds:type_of(item).subnames
# if subnames then
<h3>$(subnames):</h3>
# end
<ul>
# for parm in iter(item.params) do
# local param,sublist = item:subparam(parm)
# if sublist then
<li><span class="parameter">$(sublist)</span>$(M(item.params.map[sublist],item))
<ul>
# end
# for p in iter(param) do
# local name,tp,def = item:display_name_of(p), ldoc.typename(item:type_of_param(p)), item:default_of_param(p)
<li><span class="parameter">$(name)</span>
# if tp ~= '' then
<span class="types">$(tp)</span>
# end
$(M(item.params.map[p],item))
# if def == true then
(<em>optional</em>)
# elseif def then
(<em>default</em> $(def))
# end
# if item:readonly(p) then
<em>readonly</em>
# end
</li>
# end
# if sublist then
</li></ul>
# end
# end -- for
</ul>
# end -- if params
# if show_return and item.retgroups then local groups = item.retgroups
<h3>Returns:</h3>
# for i,group in ldoc.ipairs(groups) do local li,il = use_li(group)
<ol>
# for r in group:iter() do local type, ctypes = item:return_type(r); local rt = ldoc.typename(type)
$(li)
# if rt ~= '' then
<span class="types">$(rt)</span>
# end
$(M(r.text,item))$(il)
# if ctypes then
<ul>
# for c in ctypes:iter() do
<li><span class="parameter">$(c.name)</span>
<span class="types">$(ldoc.typename(c.type))</span>
$(M(c.comment,item))</li>
# end
</ul>
# end -- if ctypes
# end -- for r
</ol>
# if i < #groups then
<h3>Or</h3>
# end
# end -- for group
# end -- if returns
# if show_return and item.raise then
<h3>Raises:</h3>
$(M(item.raise,item))
# end
# if item.see then
# local li,il = use_li(item.see)
<h3>See also:</h3>
<ul>
# for see in iter(item.see) do
$(li)<a href="$(ldoc.href(see))">$(see.label)</a>$(il)
# end -- for
</ul>
# end -- if see
# if item.usage then
# local li,il = use_li(item.usage)
<h3>Usage:</h3>
<ul>
# for usage in iter(item.usage) do
$(li)<pre class="example">$(ldoc.prettify(usage))</pre>$(il)
# end -- for
</ul>
# end -- if usage
</dd>
# end -- for items
</dl>
# end -- for kinds
# else -- if module; project-level contents
# if ldoc.description then
<h2>$(M(ldoc.description,nil))</h2>
# end
# if ldoc.full_description then
<p>$(M(ldoc.full_description,nil))</p>
# end
# for kind, mods in ldoc.kinds() do
<h2>$(kind)</h2>
# kind = kind:lower()
<table class="module_list">
# for m in mods() do
<tr>
<td class="name" $(nowrap)><a href="$(no_spaces(kind))/$(m.name).html">$(m.name)</a></td>
<td class="summary">$(M(ldoc.strip_header(m.summary),m))</td>
</tr>
# end -- for modules
</table>
# end -- for kinds
# end -- if module
</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.3</a></i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
</body>
</html>
\ No newline at end of file
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
File added
File added
File added